TCP三次握手,四次挥手
2023-12-23 13:18:46 21 举报
TCP三次握手,四次挥手
作者其他创作
大纲/内容
等待2msl
四次挥手 TCP 建立连接要进行三次握手,而断开连接要进行四次。这是由于 TCP 的半关闭造成的。因为 TCP 连接是全双工的(即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭。这个单方向的关闭就叫半关闭。当一方完成它的数据发送任务,就发送一个 FIN 来向另一方通告将要终止这个方向的连接。 • 第一次挥手:客户端发送一个FIN=1,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。意思是说\"我客户端没有数据要发给你了,但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。\"\t• 第二次挥手:服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN_WAIT_2 状态,继续等待服务器端的FIN报文。\t• 第三次挥手:当服务器端确定数据已发送完成,则向客户端发送FIN=1报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状态。第四次挥手:客户端收到FIN=1报文后,就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。
被动打开
主动打开
time_wait时间等待
主动关闭
Closed
seq(发送序号)=500ack(确认序号)=201确认ACK=1同步SYN=1(请求连接(响应请求连接)
客户
CLOSED
服务器
四次挥手
listen监听
estab_lished已建立连接
三次握手
close_wait终止等待
fin_wait终止等待2
syn_send同步已发送
seq(发送序号)=201ack(确认序号)=601确认ACK=1(响应彻底释放)
数据传输
seq(发送序号)=200确认ACK=0同步SYN=1(请求连接
last_ack最后确认
syn_rcvd同步收到
FIN_WAIT_1终止等待1
seq(发送序号)=200ack(确认序号)=500确认ACK=1终止FIN=1(请求释放)
0 条评论
下一页