sig*_*ice 16
可以使用套接字API同时打开TCP.正如尼古拉所提到的,这是一个执行以下序列的问题,其时间使得初始SYN彼此交叉.
bind addr1, port1
connect addr2, port2
bind addr2, port2
connect addr1, port1
Run Code Online (Sandbox Code Playgroud)
以下是我使用单个Linux主机同时打开的方法.
使用netem减慢环回接口
tc qdisc add dev lo root handle 1:0 netem delay 5sec
Run Code Online (Sandbox Code Playgroud)跑netcat两次
netcat -p 3000 127.0.0.1 2000
netcat -p 2000 127.0.0.1 3000
Run Code Online (Sandbox Code Playgroud)两个netcat进程相互连接,从而形成单个TCP连接
$ lsof -nP -c netcat -a -i # some columns removed
COMMAND PID NAME
netcat 27911 127.0.0.1:2000->127.0.0.1:3000 (ESTABLISHED)
netcat 27912 127.0.0.1:3000->127.0.0.1:2000 (ESTABLISHED)
Run Code Online (Sandbox Code Playgroud)
这是tcpdump向我展示的内容(为清晰起见编辑了输出)
127.0.0.1.2000 > 127.0.0.1.3000: Flags [S], seq 1139279069
127.0.0.1.3000 > 127.0.0.1.2000: Flags [S], seq 1170088782
127.0.0.1.3000 > 127.0.0.1.2000: Flags [S.], seq 1170088782, ack 1139279070
127.0.0.1.2000 > 127.0.0.1.3000: Flags [S.], seq 1139279069, ack 1170088783
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7887 次 |
| 最近记录: |