TCP三次挥手和四次挥手学习
文章目录
1. TCP中一些简写的含义
参考文章https://blog.****.net/qq_25948717/article/details/80382766
TCP(Transmission Control Protocol)传输控制协议,有六种标识位,分别为
- SYN(synchronous建立联机)
- ACK(acknowledgement 确认)
- PSH(push传送)
- FIN(finish结束)
- RST(reset重置)
- URG(urgent紧急)
- Sequence number(顺序号码)
- Acknowledge number(确认号码)
2. 三次挥手
2.1 三次挥手过程
简写名称 | 含义 |
---|---|
CLOSED | 链接关闭状态 |
LISTEN | 监听 |
SYN-SENT | 发送SYN |
SYN-RCVE | 接受SYN |
ESTABLISHED | 建立链接 |
客户端–发送带有 SYN 标志的数据包–一次握手–服务端
服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端
客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端
2.2 ACK和ack的区别
ACK是Acknowledgement,确认值,常为1,用来确认建立链接
ack是Acknowledgement Number,为接收到seq+1,发送回去后表示已经成功接受之前的数据
2.3 为什么第二次还要把SYN发送回去?
直接用ACK表示链接成功不行吗?不行
回传的相同SYN可以让client证实server收到的信息确实是client发送过来的
2.4 为什么要三次挥手
第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常
第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常
只有三次挥手后,才能让双方都确信自己与对方的发送和接受功能是正常的
3. 四次挥手
3.1 四次挥手过程
- 客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送
- 服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号
- 服务器-关闭与客户端的连接,发送一个FIN给客户端
- 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1
任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。
举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。