标签: tcp

tcp的ping替代品?

检查网络“质量”是一项常见任务 - 延迟、丢弃的数据包数量等。但是“ping”有许多缺点: - 它使用 ICMP。许多 ISP 对 ICMP 和 TCP 流量有不同的整形器,因此“ping”将显示 10 毫秒的延迟,但 TCP 连接将经历 1000 毫秒以上。- 它发送非常少量的数据包。默认情况下,每秒一个数据包。由于 TCP 协议容忍丢包(它可以很好地运行,丢失一半的数据包 - 这是正常的),因此完全不清楚 ping 的“30%丢包”是否会杀死连接或是否绝对正常。

那么,使用 TCP 连接而不是 ICMP 并检查 Internet 连接质量的 ping 是否有任何替代方法?

networking tcp

12
推荐指数
1
解决办法
11万
查看次数

服务器上的 TCP 监控:比较 netstat 与 lsof?

我正在监视服务器上的 TCP 堆栈,希望能够推断出盒子上的应用程序存在的问题。

我的第一个倾向是测量所有报告状态(LISTEN、ESTABLISHED、FIN_WAIT2、TIME_WAIT 等)中的套接字数量并检测一些异常情况。

一位队友建议“lsof”将是一个更好的工具来查看 TCP 堆栈处于什么状态。

服务器故障人群的任何偏好或经验提示?

linux unix netstat tcp lsof

12
推荐指数
1
解决办法
7764
查看次数

如何发现网络中机器的MAC地址?

如何发现网络中机器的 MAC 地址?

我需要发现只安装了 BIOS(没有操作系统)的机器。

我需要找到正在运行的机器的 MAC 地址。

networking bios tcp mac-address

12
推荐指数
3
解决办法
4万
查看次数

每个主机的 TCP 源端口是否必须是唯一的?

我了解到 TCP 连接由元组(源 IP、源端口、目标 ip、目标端口)标识。从理论上讲,因此应该可以让一个来自 host1:port1 的客户端连接到 server1:port1,同时另一个客户端(在 host1 上运行)从 host1:port1 连接到 server2:port1。

我已经在 J​​ava 中进行了一些测试,到目前为止似乎是可能的。

但是,我多次阅读到主机地址的源端口必须是唯一的,这基本上意味着最多有 65536 个并发传出 TCP 连接的硬限制。真的吗?

更新:这是我的 Java 代码。这似乎有效,并且 netstat -t 清楚地显示来自端口 9990(一个到 9997,一个到 9998)的两个活动的传出连接。至少在现代 Linux 上,这似乎是可能的?

Socket s1 = new Socket();
s1.setReuseAddress(true);
SocketAddress saremote = new InetSocketAddress("localhost",9999);
SocketAddress salocal = new InetSocketAddress("localhost",9990);
s1.bind(salocal);
s1.connect(saremote);


Socket s2 = new Socket();
s2.setReuseAddress(true);
SocketAddress saremote2 = new InetSocketAddress("localhost",9998);
SocketAddress salocal2 = new InetSocketAddress("localhost",9990);
s2.bind(salocal2);
s2.connect(saremote2);
Run Code Online (Sandbox Code Playgroud)

和 netstat -t 输出(截断):

tcp6       0      0 localhost:9990 …
Run Code Online (Sandbox Code Playgroud)

tcp socket

12
推荐指数
2
解决办法
1万
查看次数

iptables 中的 tcp 标志:RST SYN 和 RST 和 SYN RST 之间有什么区别?什么时候使用 ALL?

我正在为虚拟专用服务器开发防火墙,我正在研究的一件事是端口扫描仪。TCP 标志用于保护。我有2个问题。
规则:

-p tcp --tcp-flags SYN,ACK,FIN,RST SYN -j DROP
Run Code Online (Sandbox Code Playgroud)

第一个参数表示检查带有 SYN 标志的数据包 第二个参数表示确保设置了标志 ACK、FIN、RST SYN
并且在这种情况下(有匹配项),丢弃 tcp 数据包

第一个问题:
我理解 RST 和 RST/ACK 的含义,但在第二个参数中使用了 RST SYN。
RST SYN 和 RST 和 SYN RST 有什么区别?
3 次握手中是否有“SYN RST”标志?

第二个问题是关于两者之间的区别

-p tcp --tcp-flags SYN,ACK,FIN,RST SYN -j DROP    
Run Code Online (Sandbox Code Playgroud)

-p tcp --tcp-flags ALL SYN,ACK,FIN,RST SYN -j DROP    
Run Code Online (Sandbox Code Playgroud)

什么时候应该使用 ALL ?
当我使用ALL时,这是否意味着如果带有syn标志的tcp数据包没有设置ACK“和”FIN“和”RST SYN标志,就不会有匹配?

firewall iptables tcp flags

11
推荐指数
2
解决办法
3万
查看次数

低延迟 10GbE -> 1GbE 网络的 TCP 拥塞控制?

我有一台与交换机有 10GbE 连接的服务器,以及 10 个客户端,每个客户端与同一交换机有 1GbE 连接。

在每个客户端上并行运行 nuttcp,我可以将 10 个 TCP 数据流以接近线速的速度同时推送到服务器(即,所有 10 个客户端同时每秒传输 100 兆字节)。

然而,当我改变方向并将数据从服务器发送到客户端时——即 10 个 TCP 流,一个发送到每个客户端——TCP 重传会猛增,性能下降到每秒 30、20 甚至 10 兆字节每个客户。我想提高这些数字,因为这种流量模式代表了我关心的某些应用程序。

我已经通过在与类似服务器的 10GbE 连接上执行相同的实验来验证我的服务器能够使 10GbE 链路饱和。我已经确认我的任何端口都没有错误。

最后,当我强行限制(限制)接收方的 TCP 窗口大小时,我可以获得更高的带宽(30-40 兆字节/秒);如果我把它限制得非常低,我可以让重传为零(带宽低得离谱)。

因此,我有理由相信我正在超限交换机中的缓冲区,从而导致由于拥塞而导致数据包丢失。然而,我认为 TCP 的拥塞控制应该可以很好地处理这个问题,最终稳定在 50% 以上的线速。

所以我的第一个问题很简单:哪种 TCP 拥塞控制算法最适合我的情况?有很多可用的,但它们似乎主要针对有损网络或高带宽高延迟网络或无线网络......这些都不适用于我的情况。

第二个问题:还有什么我可以尝试的吗?

networking linux tcp

11
推荐指数
1
解决办法
1902
查看次数

NAT 网关 - 最大连接限制

我知道足够的网络是危险的。NAT 的底层细节并不是我特别了解的。

今天早些时候,我无意中发现自己参与了关于将一堆节点置于 NAT 网关后面的讨论。(1 个公共 IP 地址和 X 个私有 LAN 地址)。我调用了 TCP 协议中源和目标端口字段的 16 位限制(http://www.ietf.org/rfc/rfc793.txt - 第 15 页)并提到它会将我们限制为大约 65,000 个连接( 65536)。——我对那个答案不再那么有信心了。你能帮我提供一些细节吗?

我知道我们这边的传入端口(服务器端口)可以接受与 sourceIP x SourcePort 组合一样多的连接。让我们暂时忽略这些,重点关注源自 LAN、通过 NAT 网关并在随机端口的随机主机上结束的连接。

在普通的 [Linux] 系统上,我认为每个源 IP 的每个端口只能有 1 个传出连接。如果我们假设我们生活在一个简单的世界中,其中每个系统只有 1 个 IP 地址,那么“正常系统”将被限制为绝对最大 65536 个连接。

1) 在 TCP 中是单源 IP 限制为 65536 MAX 理论传出连接?

2) 还是每个远程主机的限制实际上是 65536 个连接?

2) [Written another way]:同一个源端口可以用于不同的remoteHostIP:RemotePort组合吗?

例如:(以下可以吗?)

Source IP   |Source Port |Remote IP|Remote Port   
192.168.0.20:36500   -->    8.8.8.8:23
192.168.0.20:36500   -->    8.8.4.4:23
Run Code Online (Sandbox Code Playgroud)

3) 问题 1 …

networking nat tcp

11
推荐指数
1
解决办法
2万
查看次数

通过“telnet 到端口”测试测量延迟的最佳方法是什么,最好使用内置的 Linux 工具?

我正在编写一个测量网络延迟的 Graphite/Diamond 收集器。具体来说,它应该测量打开与远程服务器上端口的连接所需的时间。它需要通过脚本工作,即键盘上没有人以交互方式运行。

举个例子,给 telnet 提供一个虚构的参数,它可以完全满足我的需要。

time telnet --close-connection-immediately-after-established somehost.somedomain.com 1234

Trying somehost.somedomain.com...
Connected to somehost.somedomain.com.
Escape character is '^]'.
Connection closed automatically after established.

real    0m3.978s
user    0m0.001s
sys 0m0.003s
Run Code Online (Sandbox Code Playgroud)

基本上,在上面的示例中,仅使用内置工具输出 3.978 的命令行方式是什么?

您可以将 telnet 包装在我想的预期脚本中并使其出现问题:

^]
close
Run Code Online (Sandbox Code Playgroud)

……但那看起来相当丑陋。有任何想法吗?

linux time port tcp test

11
推荐指数
1
解决办法
2万
查看次数

有没有办法查看实际过滤 TCP 端口通信的内容?

nmap -p 7000-7020 10.1.1.1
Run Code Online (Sandbox Code Playgroud)

将输出所有过滤的端口

Starting Nmap 6.40 ( http://nmap.org ) at 2015-03-04 12:18 EET
Nmap scan report for 10.1.1.1
Host is up (0.00091s latency).
PORT     STATE    SERVICE
7000/tcp filtered afs3-fileserver
7001/tcp filtered afs3-callback
7002/tcp filtered afs3-prserver
7003/tcp filtered afs3-vlserver
7004/tcp filtered afs3-kaserver
7005/tcp filtered afs3-volser
7006/tcp filtered afs3-errors
7007/tcp filtered afs3-bos
7008/tcp filtered afs3-update
7009/tcp filtered afs3-rmtsys
7010/tcp filtered ups-onlinet
7011/tcp filtered unknown
7012/tcp filtered unknown
7013/tcp filtered unknown
7014/tcp filtered unknown
7015/tcp filtered unknown
7016/tcp filtered unknown
7017/tcp …
Run Code Online (Sandbox Code Playgroud)

firewall tcp port-scanning nmap

11
推荐指数
3
解决办法
4万
查看次数

如何设置持久的 TCP 性别更改代理?

我有一个提供程序 (A),它想通过传入的 TCP 连接向我们发送数据。不幸的是,消费服务 (B) 无法接收入站 TCP 连接。此外,它没有静态 IP,这是另一个要求。

解决此问题的一种方法是将传入 TCP A 端口连接到另一个 TCP 端口 B 的服务,以便消费者可以与 B 建立出站连接。

这不是一个独特的问题[1] [2],使用 socat 我可以做出非常接近我想要的东西:

socat -d -d -d -u TCP4-LISTEN:PORT-A,reuseaddr TCP4-LISTEN:PORT-B,reuseaddr

但是,这存在以下问题:

  • 如果 B 断开连接,则无法重新连接。使用TCP4-LISTEN:PORT-B,reuseaddr,fork,可以连接但不接收数据。
  • 在 A 建立连接之前 B 无法连接(可克服)
  • 只能建立一个连接到PORT-B(可克服的)

有没有办法调整命令,使其成为“永久”并抵抗失败?

proxy tcp socat

11
推荐指数
1
解决办法
2108
查看次数

标签 统计

tcp ×10

networking ×4

linux ×3

firewall ×2

bios ×1

flags ×1

iptables ×1

lsof ×1

mac-address ×1

nat ×1

netstat ×1

nmap ×1

port ×1

port-scanning ×1

proxy ×1

socat ×1

socket ×1

test ×1

time ×1

unix ×1