图解TCP三次握手四次挥手

图解TCP三次握手四次挥手

三次握手

在这里插入图片描述

以上就是三次握手的具体过程,下面再来从状态,以及每一次握手发送双方的状态转变来看一看。
在这里插入图片描述

三次握手是为了确认发送双方的通信正常,也就是保证双方的接受、发送能力都没有问题。

第一次握手:

客户端向服务器发送带有 SYN 标志的数据包,请求建立客户端与服务器间的通信,客户端的状态由CLOSED转换为SYN_SENT,服务器接收到数据后,可以明确自己的接受能力正常,客户端的发送能力正常。状态由LISTEN转换为SYN_RCVD。

第二次握手:

服务器发送带有 SYN/ACK 标志的数据包,ACK表明客户端所发送的数据就是服务器接收的数据,SYN请求建立服务器与客户端间的通信。客户端收到应答后,可以明确自己的接收、发送能力正常,而且对方的发送和接收也正常。状态由SYN_SENT转换为ESTABLISHED。

第三次握手:

客户端向服务器发送带有 ACK 标志的数据包,服务器收到应答后,就可以确定自己的发送正常,对方的接收正常,状态由SYN_RCVD转换为ESTABLISHED。

四次挥手

在这里插入图片描述

四次挥手的过程和打电话特别相似,A和B打电话,A说我说完了,我要挂电话了,B听到了,但是B可能还有话要说,等B把该说的说完了,B说我也要挂电话了,A说好的,通话结束。

第一次挥手:

客户端发送带有 FIN 标志的数据包,请求断开客户端与服务器的连接,状态转换为FIN_WAIT_1 。

第二次挥手:

服务器收到数据,但服务器可能还有数据没有发送完,服务器发送ACK确认应答,状态转换为CLOSE_WAIT,进入准备关闭状态。

第三次挥手:

当服务器把该发的数据都发完了后,发送带有 FIN 标志的数据包,请求断开服务器与客户端的连接,状态转换为LAST_ACK。

第四次挥手:

客户端收到FIN后,发送ACK确认应答,服务端收到数据后状态转换为CLOSED,关闭连接。客户端要等待一个2MSL(Max Segment Life, 报文最大生存时间)的时间, 才会进入CLOSED状态 。因为ACK可能会发生丢包,服务器会重新发送FIN,还有一个原因是等待之前因为网络原因没有到达的数据包消失,避免服务器重启后,收到来自上一个进程的迟到的数据 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值