三次握手四次挥手,简单易懂。

三次握手四次挥手

了解三次握手四次挥手之气那需要先先了解几个基本知识点

1、FIN=1表示此报文段的发送方的数据已经发送完毕,请求释放传输连接。
2、确认字段号(ACK):期望接收报文段的数据的第一个字节的序号,ack=N表示序号N-1为止的所有数据都正确接收到。
3、确认位:只有ACK=1时确认号字段才有效,ACK=0时无效

连接状态:

1、CLOSE_WAIT状态下只能发送数据,不能接收数据
2、LAST_ACK状态:被动断开连接的一端在缓冲区数据发送完成后发送FIN=1
3、TME_WAIT:此状态下连接已经断开,断开后保留2MSL后进入CLOSE(起始状态)状态
注:MSL:报文最大存在时间,2MSL为两倍MSL,1MSL为2分钟

为什么最后一次挥手要等是2MSL:

防止最后一个ack丢失
如果不等待直接关闭的话,服务端之前发送的消息可能还没有完全到达客户端。关闭了则会导致发送失败
如果不等待,最后一次发送的SYN可能网络滞后,这样服务端的FIN包可能重新发送出现错误了
为啥要等两次MSL == 一次为了等待ACK包到达==,一次为了等待二次重新发送第三次的FIN包到达

三次握手

三次握手是指建立TCP连接,需要在客户端和服务器之间发送三个包,握手的过程传送的包里不包含数据,三次握手完毕后,客户端与服务器开始传送数据。

第一次握手:客户端发送一个包,尝试建立连接
第二次握手:服务器接受到这个包后发送第二个包,告诉客户端收到连接请求,可以连接了
第三次握手:客户端接受到服务器传来的包后,向服务器发送第三个包,至此客户端与服务器确认连接,接下来开始传送数据

为什么要多次确认呢?

因为传输协议式建立在网络层之上的,而底层网络存在不确定性,可能网线会出问题,可能路由出问题,没办法保服务发送的数据客户端一定能接收到,就跟我们打电话一下,先要喂一下,确定信号好好不好,对方是否能听到我们讲话。总之,握手的最终目的就是确保双方都准备就绪

四次挥手

所谓四次挥手就是种植TCP连接,但是终止前需要客服端和服务器发四次包来确认

第一次挥手:客户端准备关闭连接,向TCP发送释放报文段,报文段的FIN=1。
第二次挥手:服务器接受到释放报文段后,发送一个ACK给客户端,服务器进入CLOSE_WAIT状态。
第三次挥手:服务器进入LAST_ACK状态,发送FIN=1,用来关闭服务器到客户端的数据传送
第四次挥手:客户端接受到FIN后客户端进入TME_WAIT状态,并发送一个ACK给服务器,服务器接收到ACK后进入CLOSED状态,至此完成四次挥手。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值