说说TCP 3次握?和4次握手

发布时间:2024年01月14日

三次握手过程

在这里插入图片描述

  1. client端建?连接,发送?个SYN同步包,发送之后状态变成SYN_SENT
  2. server端收到SYN之后,同意建?连接,返回?个ACK响应,同时也会给client发送?个SYN包,发送完成之后状态变为SYN_RCVD
  3. client端收到server的ACK之后,状态变为ESTABLISHED,返回ACK给server端。server收到之后状态也变为ESTABLISHED,连接建?完成。

思考: 为什么要3次?2次,4次不?吗?

? 因为TCP是双?传输模式,不区分客户端和服务端,连接的建?是双向的过程。
如果只有两次,?法做到双向连接的建?,从建?连接server回复的SYN和ACK合并成?次可以看出 来他也不需要4次。
挥?为什么要四次?因为挥?的ACK和FIN不能同时发送,因为数据发送的截?时间不同

四次握手过程

在这里插入图片描述

  1. client端向server发送FIN包,进?FIN_WAIT_1状态,这代表client端已经没有数据要发送了
  2. server端收到之后,返回?个ACK,进?CLOSE_WAIT等待关闭的状态,因为server端可能还有没有发送完成的数据
  3. 等到server端数据都发送完毕之后,server端就向client发送FIN,进?LAST_ACK状态
  4. client收到ACK之后,进?TIME_WAIT的状态,同时回复ACK,server收到之后直接进?CLOSED状态,连接关闭。但是client要等待2MSL(报?最??存时间)的时间,才会进?CLOSED状态

思考: 为什么要等待2MSL的时间才关闭?

  1. ? 为了保证连接的可靠关闭。如果server没有收到最后?个ACK,那么就会重发FIN

  2. 为了避免端?重?带来的数据混淆。如果client直接进?CLOSED状态,??相同端?号向server建??个连接,上?次连接的部分数据在?络中延迟到达server,数据就可能发?混淆了

文章来源:https://blog.csdn.net/weixin_50087960/article/details/118198374
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。