CTP链接的细节问题

在这里插入图片描述

#1.因为网络延迟等原因导致第三次握手数据包丢失的解决办法:
客户端与服务器第二次握手后,服务器会把该客户端放在半开队列并设置一个计时器,计时器归零之前若第三次握手成功,服务器将会把该客户端从半开队列移入全连队列(连接成功);若在计时器归零第三次握手没有成功,服务器则会忽略此次连接请求并把该客户端从半开队列中移除。

#2.需要三次握手的原因:
##2.1从生活的角度来看:
你(客户端)用微信给你朋友(服务器)发消息:今晚去你家玩,你方便吗?(第一次握手)
你朋友回复:好的。(第二次握手)
这时候你的手机没信号了,你朋友一直也联系不到你,这时在你朋友就不能完全确定你晚上到底去不去他家玩。
如果你也回复了:好的(第三次握手)。那就不存在这种问题了。
## 2.2从tcp角度看
### 2.2.1如果只有两次握手:
只能确定客户端收到了服务端的序列号起始值,但不能确定客户端能收到服务端的序列号起始值。
只能确认服务端能收到消息,但不能确定客户端是否能正常接收数据。
网络环境混乱时,服务端同时收到同一客户重复发送的连接请求时(例如:客户端第一次链接请求时恰好网络延迟较高,导致服务端同时接收到第一次与后来的请求连接数据包),如果没有第三次握手就无法分辨哪一次请求是有效的(每一次请求的数据包序列号都是不一样的)。如果都通过就会造成端口浪费。
### 2.2.2为什么不是四次握手
三次就能完美解决所有问题,没必要更多次。

#3.关于SYN以及序号

前两次握手发送的数据包SYN置1,虽然SYN报文段不能携带数据,但仍需要消耗一个序号,第三次握手发送的数据包中SYN不唯一,不消耗序号,所以下一个数据包的序号seq也等于x+1.
ACK可以携带数据,但不携带数据时不消耗序列号。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值