SYN: synchronize sequence numbers 同步序列号, 两端数据传输时, 所传递每个报文段都有一个序列号, 真是由于这个序列号才能保证传输的报文段在接收方能够按照顺序恢复成原来的报文.
ACK: acknowledgment 确认, 当某一端接收到报文包, 通过回传ACK来确认接收到报文这件事.
三次握手
- 客户端发送SYN包+一个随机序列号seq1
- 服务端接收到报文, 发送SYN/ACK包+随机序列号seq2+确认号ack1(seq1+1)
- 客户端接收到报文, 发送ACK包+确认号ack2(seq2+1)
数据传输
当三次握手建立连接以后, 就开始传输数据通讯了.
在通讯的过程中发送端会发送seq代表序列号, 序列号和当前已经发送的字节总数相关.
中间还有一些复杂的过程, 比如数据丢失处理 流量控制等.
四次挥手
在上图用wireshark抓包中, 只抓到了三次挥手
- 主动方发送FIN/ACK包+随机序列号seq1
- 被动方接收到数据包, 发送ACK包+随机序列号seq2+确认序列号ack(seq1+1)
- 被动方发送FIN/ACK包+随机序列号seq3+确认序列号ack(seq1+1)
- 主动方接收到数据包, 发送ACK包+随机序列号seq4+确认序列号ack(seq3+1)