关于TCP协议的三次握手四次断开

TCP三次握手:

第一次握手:客户端发送一个TCP包(SYN包)到服务器,并指明客户端使用的端口,以及初始序列号(ISN)。TCP包中的SYN标志位被置为1。此时客户端进入SYN_SEND状态。

第二次握手:服务器收到客户端的SYN包后,会对客户端的SYN包进行确认。发回的TCP包中的SYN和ACK标志位被置为1,同时包含服务器的初始序列号(ISN)和对客户端SYN包的确认号。此时服务器进入SYN_RECV状态。

第三次握手:客户端收到服务器的SYN+ACK包后,再向服务器发送一个确认包(ACK包),此包发送完毕后,客户端和服务器进入ESTABLISHED状态,完成三次握手,开始传送数据。

TCP四次断开:

第一次断开:客户端发送一个断开连接的请求,FIN标志位被置为1。此时客户端进入FIN_WAIT_1状态。

第二次断开:服务器收到客户端的断开请求后,发送一个确认包,ACK标志位被置为1,并包含对客户端FIN包的确认号。此时服务器进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态。

第三次断开:服务器确认所有数据都已发送完毕后,向客户端发送断开连接请求,FIN标志位被置为1。此时服务器进入LAST_ACK状态。

第四次断开:客户端收到服务器的断开请求后,发送一个确认包,ACK标志位被置为1,并包含对服务器FIN包的确认号。然后客户端进入TIME_WAIT状态,等待2MSL(最大报文段生存时间)后,连接正式关闭。服务器在收到客户端的确认后,立即关闭连接。

注意:实际中,四次挥手的过程可能因为需要等待2MSL而被延迟。

为什么TCP连接需要三次握手?两次不行吗?

因为三次握手可以确保双方都能够发送和接收数据,防止因网络延迟导致的问题。两次握手可能会导致服务器资源被浪费。

在TCP三次握手中,客户端和服务器分别扮演什么角色?

因为客户端发送连接请求,服务器接收并回复确认。

如果在TCP连接过程中,客户端发送的SYN包丢失了,会发生什么情况?

因为服务器会超时等待,然后重新发送SYN+ACK包,进行连接。

四次断开:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值