【计算机网络】TCP三次握手和四次挥手

  • 客户端--发送带有 SYN 标志的数据包--一次握手--服务端
  • 服务端--发送带有 SYN/ACK 标志的数据包--二次握手--客户端
  • 客户端--发送带有带有 ACK 标志的数据包--三次握手--服务端

为什么是三次握手而不是两次握手?

在不可靠的网络中,可能会出现包传输延迟变化大,存在重传的报文段、存在保温重排序等现象,三次握手可以防止因为已经失效的请求报文突然又传到服务器引起错误。

三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的

第一次握手:客户端什么都不能确认;服务端确认了对方发送正常,自己接收正常

第二次握手:客户端确认了:自己发送、接收正常,对方发送、接收正常;服务端确认了:对方发送正常,自己接收正常

第三次握手:客户端确认了:自己发送、接收正常,对方发送、接收正常;服务端确认了:自己发送、接收正常,对方发送、接收正常

所以三次握手就能确认双发收发功能都正常,缺一不可。

第2次握手传回了ACK,为什么还要传回SYN?

接收端传回发送端所发送的ACK是为了告诉客户端,我接收到的信息确实就是你所发送的信号了,这表明从客户端到服务端的通信是正常的。而回传SYN则是为了建立并确认从服务端到客户端的通信。

为什么要四次挥手?

客户端和服务端都可以发起关闭连接请求,此时需要四次挥手来进行连接关闭。这里以客户端主动发起连接关闭请求:

第一次挥手:他需要向服务端发起FIn包表示要关闭连接,自己进入终止等待1状态。

第二次挥手:服务端收到FIN包发送一个ACK包,表示资金进入关闭等待状态 ,客户端进入终止等待2状态。服务端此时还可以发送未发送的数据,客户端还可以接受数据。

第三次挥手:待上述服务端发送完数据后,发送一个FIN包,进入最后确认状态。

第四次挥手:客户端收到FIN包后,回复ACK包,进入超时等待状态,经过超时时间后关闭连接。而服务端收到ACK后,立即关闭连接。

为什么客户端需要等待超时时间?为了保证接收端已收到ACK包。假设客户端发出ACK包后就释放连接,万一ACK包在网络上丢失,服务端会停留在最后确认状态。而等待时间内,服务端没有接收到ACK包,会重发FIN包,客户端响应FIN包重发ACK包并刷新超时时间,保证在不可靠的网络中进行可靠的断开连接确认。

相关推荐
汤姆yu1 小时前
Gemini 4 Argon模型综述:技术、能力与实际使用指南
网络·安全·web安全·ai·大模型
Seraphina361 小时前
SQL注入(二)盲注
网络·数据库·经验分享·笔记·sql
2401_868534782 小时前
无线网络规划设计
服务器·网络
螺蛳粉 螺蛳粉2 小时前
第二篇:keepalived VRRP 原理篇:协议与 VIP 漂移机制深入解析
网络·智能路由器·负载均衡·keepalived·高可用
盟接之桥3 小时前
AI助手:你的7×24小时智能管家——让异常预警无处不在
大数据·网络·数据库·人工智能·制造·ai编程
2603_969579284 小时前
内网数据自动备份工具:隔离网络下的数据保护方案
网络
逗脑IDE5 小时前
零基础学ESP32:RFID无线射频卡——让ESP32拥有“刷卡“能力!
开发语言·网络·人工智能·python·esp32·硬件开发
流浪0015 小时前
计算机网络篇3:端口号与 socket:数据到达主机后,如何找到目标进程?
计算机网络·udp·tcp·端口·网络字节序
cws2004015 小时前
监控摄像头选型指南
运维·网络·监控
和裕5 小时前
定制纸箱刀模费全解析:费用定义与可减免合作场景
大数据·运维·网络·人工智能·算法