nc -p 9987 127.0.0.1 9987
tcpdump
捕获了连接建立17:52:33.980137 IP 127.0.0.1.9987 > 127.0.0.1.9987: Flags [S], seq 4215993872, win 43690, options [mss 65495,sackOK,TS val 10050427 ecr 0,nop,wscale 7], length 0
17:52:33.980162 IP 127.0.0.1.9987 > 127.0.0.1.9987: Flags [S.], seq 4215993872, ack 4215993873, win 43690, options [mss 65495,sackOK,TS val 10050427 ecr 10050427,nop,wscale 7], length 0
17:52:33.980174 IP 127.0.0.1.9987 > 127.0.0.1.9987: Flags [.], ack 1, win 342, options [nop,nop,TS val 10050427 ecr 10050427], length 0
就像普通的TCP建立一样,但是dst addr和src addr相同。
对于自连接情况,TCP状态转换应为:
自连接和同时打开之间的过程完全不同(由tcpdump显示)。我有什么想念的吗?
从自身接收SYN + ACK,SYN_RECD->已建立
TCP状态转换图中未显示此转换。怎么解释?
答案 0 :(得分:0)
不,它不是同时打开的。同步开放是经过理论化并写入标准的内容,但是从不在实践中会发生。
在同时打开中,理论上是两个主机同时(或距离足够近,以至于每个端在尝试打开连接之前都没有看到另一端的初始SYN)试图建立连接,但是有特殊条件
主机A从连接到B上端口Y的端口X打开。 主机B从端口Y打开到主机A上的端口X。
在这种情况下,您将看到似乎是四向握手。如果您想向自己证明这可行,则可以使用Scapy进行尝试。 Here is a Scapy script that you can run on a host。 您必须使用iptables禁用来自主机的出站RST数据包,否则它将失败
如果您运行该脚本,然后从任何其他客户端主机进行连接,则将看到四种方式的握手!