一 使用wireshark抓包来看TCP三次握手:
(1)客户端→【FLAG:SYN】→服务端
顺序号seq:3301e5be(随机 不固定值)
确认号ack:0
标志位flag:8002(SYN)

(2)客户端←【FLAG:SYN,ACK】←服务器
顺序号seq:4c16de05
确认号ack:3301e5bf(值为第一个包的顺序号+1)
标志位flag:8012(SYN ACK)

(3)客户端→【FLAG:ACK】→服务端
顺序号seq:3301e5bf
(这是客户端第二个包,顺序号当然是第一个包3301e5be+1)
确认号ack:4c16de06(第2个包的顺序号+1)
标志位flag:5010(ACK)

二 总结:
1.整个过程:
(1)C请求连接
(2)S回复答应
(3)C要让S知道它已收到回复,S才建立连接。
2.三个不同的FLAG:
FLAG:SYN
FLAG:SYN/ACK
FLAG:ACK
3.号码规律:
第一个包:顺序号1000 确认号0
第二个包:顺序号9000 确认号1001
第三个包:顺序号1001 确认号9001
4.知乎关于为什么的回答:
https://www.zhihu.com/question/24853633
网友评论