sequenceDiagram participant C as Client participant S as Server C->>S: relative_seq=0, raw_seq=n1 S->>C: relative_seq=0, raw_seq=n2, relative_ack=1, raw_ack=n1+1 C->>S: relative_seq=1, raw_seq=raw_ack, relative_ack=1, raw_ack=n2+1
在浏览器内发起网址请求,不考虑网络层通信细节,只对于 TCP
进行三次握手建立链接的过程,抓包具体分析如下
seq
与ack
均分为relative
和raw
,即相对值与实际值。
第一次握手
1 | Transmission Control Protocol, Src Port: 55879, Dst Port: 80, Seq: 0, Len: 0 |
客户端请求,相对seq
值为 0,实际为 3271402248。ack
值为 0
Flags
中设置 Syn
。
第二次握手
1 | Transmission Control Protocol, Src Port: 80, Dst Port: 55879, Seq: 0, Ack: 1, Len: 0 |
服务端应答,ack
值为上一步的seq
值+1
,所以相对ack
值为 0+1=1
,ack
值为3271402248+1=3271402249
。相对seq
值为 0,实际seq
值为 2899824743。
Flags
中设置 Syn
和Acknowledgment
。
第三次握手
1 | Transmission Control Protocol, Src Port: 55879, Dst Port: 80, Seq: 1, Ack: 1, Len: 0 |
客户端应答,相对seq
值为 1,实际seq
值为上一步服务端响应的实际ack
值,相对ack
值为 1,实际ack
值为上一步服务端响应的实际seq
值+1
。
Flags
中设置 Syn
和Acknowledgment
。
至此,TCP
链接建立完毕。