TCP的三次握手和四次挥手理解

本文详细解析了TCP/IP协议中建立连接的三次握手过程和终止连接的四次挥手机制,包括序号、确认号和标志位的作用。三次握手确保了连接的可靠性,防止了资源浪费。四次挥手则允许双方有序地关闭连接,处理可能存在的未发送数据。
摘要由CSDN通过智能技术生成

在说这两个东西之前先来了解一些名词
(1) 序号(sequence number):Seq序号,当前发送数据包的客户端/服务端自己的序号
(2) 确认号(acknowledgement number):ack序号,当前服务端/客户端接收到对方发送过来的数据包进行确认,一般值是对方传递过来的seq+1作为Ack
(3) 标志位(Flags):共6个,即URG、ACK、PSH、RST、SYN、FIN等。具体含义如下:
URG:紧急指针(urgent pointer)有效。
ACK:确认序号有效。
PSH:接收方应该尽快将这个报文交给应用层。
RST:重置连接。
SYN:发起一个新连接。
FIN:释放一个连接。
注意: 标志位的ACK和确认序号的Ack不一样,标志位的ACK一般值为1而确认序号的Ack一般值是对方发送过来的seq+1

  1. 三次握手
    在这里插入图片描述

连接必须是一方主动打开另一方被动打开
1. 这里先是客户端主动开启发送标志位SYN=1建立新连接,并且发送自己的序好seq=x
2. 服务端接收到seq将其+1作为确认序号ack,和自己的seq序号y并且发送标志位本次序号有效ACK=1和建立连接SYN=1
3. 客户端收到服务端的seq将其+1=y+1作为ack并且将服务端发送的ack作为自己新的序号seq=x+1进行发送
到这连接就创建完成了,值得注意的是为什么不是2次握手?
试想一下如果两次握手那么如果客户端发送了一次创建连接因为网络问题暂时没有传递到服务端,客户端等待超时后又发送了一次到服务端这次正常创建了连接,但是第一次发送的请求突然好了发送到了服务端而客户端却不对其进行操作了导致服务端的端口一直开着导致资源浪费

  1. 四次挥手
    在这里插入图片描述

四次挥手也是一方主动关闭另一方被动关闭
1. 客户端发起主动关闭标志FIN=1并且发送自己的seq=u
2. 服务端接收到后响应本次序号有效ACK并且将客户端seq+1作为ack=u+1和自身序号seq=v
3. 注意,因为客户端主动关闭所以服务端可能会存在数据包没发送结束的情况,所以这里没有立马关闭,而是等待服务端数据发送接收后给客户端响应标志位FIN=1,自己本身序号为seq=w,ack的值还是第一次客户端发送过来的seq+1=u+1
4. 最后客户端将服务端传递过来的ack的值作为自己新的seq(u+1)值并且将服务端的seq值+1作为ack的值(w+1),发送给服务端,本次连接结束.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值