简述TCP三次握手,四次挥手

前言:

通常大多数认为三次握手、四次挥手是HTTP协议产生的。这是一个错误的认知,实际上HTTP协议并不参与握手以及挥手过程,三次握手四次挥手均是在TCP协议层上进行的,而HTTP协议只是在已建立 TCP连接的基础上,进行通信的。

握手过程:

【第一次握手】:

客户端向服务端发送一个带有SYN(同步序列编号)标致的数据包给服务器,表示客户端请求连接,此时客户端进入SYN_SENT 状态。

SYN数据包中,seq表示初始序列号,SYN=1,表示客户端希望建立连接。

【第二次握手】:

服务端在收到客户端建立连接的SYN请求之后,会发送一个带有SYN/ACK(同步/确认序列编号)标致的数据包给客户端。此时服务端进入SYN_RECIVED 状态。

SYN/ACK包中,seq代表服务器的初始序列号;ack代表的是确认号,具体值为客户端发送的SYN数据包的初始序列号加1,表示服务器已经成功接受到了客户端的SYN请求,并且准备好建立连接。SYN标志为1,表示服务端愿意建立连接。ACK标志为1,表示对客户端的 SYN请求进行确认。

【第三次握手】:

客户端在收到服务端发送的SYN/ACK(同步/确认序列编号)标致的数据包后,会发送一个带有ACK(确认序列编号)标志的数据包给服务器,表示客户端接受连接。服务器接收到客户端发送的ACK(确认序列编号)的包后,双方建立连接。服务器进入ESTABLISHED状态,客户端也进入ESTABLISHED状态。

ACK数据包中,seq代表序列号 ,表示客户端期望从该序列号发送数据;ack表示确认号 ,具体值为服务端发送的SYN/ACK数据包中的序列号+1;ACK标志为1,表示对服务器的SYN/ACK响应进行确认。

挥手过程:

【第一次挥手】:

客户端向服务器发送一个FIN(结束)标志数据包,表示客户端不再发送数据,但是仍可以接收数据。客户端进入"FIN_WAIT_1"状态。

FIN包中ACK标志为1,表示发送方不再发送数据,希望关闭连接,ACK标志为1表示希望接收方确认收到FIN包。seq表示发送方当前发送数据的最后一个字节的序列号。

【第二次挥手】:

服务器收到客户端发送的FIN结束包后,发送一个带有ACK(确认)标志的包给客户端,表示服务端已经收到了客户端要关闭连接的请求。服务端进入"CLOSE_WAIT"状态,客户端进入"FIN_WAIT_2"状态。

ACK包中seq,表示接收方当前发送数据的最后一个字节的序列号,ACK标志为1,表示确认收到了客户端发送的FIN包,ack表示确认号,具体值为FIN包的初始序列号+1

【第三次挥手】:

服务器决定关闭连接,会在发送一个FIN标志的数据包给客户端,表示服务器不在接收数据,进入"LAST_ACK"状态

FIN包中seq表示发送方当前发送数据的最后一个字节的序列号。ACK标志为1,表示确认收到了客户端发送的FIN包,FIN为1,表示不再发送数据,ack为确认号,为客户端发送的FIN包的初始序列号+1

【第四次挥手】:

客户端收到服务器的FIN包后,会发送一个ACK标志的数据包给服务器,表示客户端确认收到了服务器的关闭请求。客户端进入"TIME_WAIT"状态,等待服务器端收到ACK包之后,进入"CLOSED"状态,此时服务器端也进入"CLOSED"状态

ACK中seq表示序列号,接收方当前发送数据的最后一个字节的序列号。ACK标志为1,表示确认收到了服务端的FIN包,ack表示确认号,值为客户端的初始序列号+1

复制代码
                                                                                   学海无涯
相关推荐
qq_171538851 小时前
TCP/IP协议精解:IP协议——互联网世界的邮政编码系统
网络·网络协议·tcp/ip
珹洺1 小时前
计算机网络:(七)网络层(上)网络层中重要的概念与网际协议 IP
网络·tcp/ip·计算机网络
兮动人2 小时前
获取终端外网IP地址
java·网络·网络协议·tcp/ip·获取终端外网ip地址
怦然星动_2 小时前
eNSP中实现vlan间路由通信(路由器)
网络·智能路由器
海外空间恒创科技3 小时前
一台香港原生ip站群服务器多少钱?
服务器·网络协议·tcp/ip
zyx没烦恼4 小时前
TCP相关实验
服务器·网络·tcp/ip
DemonAvenger4 小时前
TCP连接池设计与实现:提升Go应用网络性能
网络协议·架构·go
游戏开发爱好者810 小时前
iOS重构期调试实战:架构升级中的性能与数据保障策略
websocket·网络协议·tcp/ip·http·网络安全·https·udp
(:满天星:)13 小时前
第31篇:块设备与字符设备管理深度解析(基于OpenEuler 24.03)
linux·运维·服务器·网络·centos
野蛮人6号15 小时前
虚拟机网络编译器还原默认设置后VMnet8和VMnet1消失了
网络·vmware·虚拟机网络编译器·vmnet8消失