计算机网络基础

问题一:为什么三次握手能保证可靠连接?

问题二:tcp服务端怎么感知到丢包?

 

 

要弄清TCP建立连接需要几次交互才行,我们需要弄清建立连接进行初始化的目标是什么。TCP进行握手初始化一个连接的目标是:分配资源、初始化序列号(通知peer对端我的初始序列号是多少),知道初始化连接的目标,那么要达成这个目标的过程就简单了,握手过程可以简化为下面的四次交互:

  1. 1)client端首先发送一个SYN包告诉Server端我的初始序列号是X。
  2. 2)Server端收到SYN包后回复给client一个ACK确认包,告诉client说我收到了。
  3. 3)接着Server端也需要告诉client端自己的初始序列号,于是Server也发送一个SYN包告诉client我的初始序列号是Y。
  4. 4)Client收到后,回复Server一个ACK确认包说我知道了。

整个过程4次交互即可完成初始化,但是,细心的同学会发现两个问题:

 

[1]. Server发送SYN包是作为发起连接的SYN包,还是作为响应发起者的SYN包呢?怎么区分?比较容易引起混淆

 

[2].Server的ACK确认包和接下来的SYN包可以合成一个SYN ACK包一起发送的,没必要分别单独发送,这样省了一次交互同时也解决了问题[1]. 这样TCP建立一个连接,三次握手在进行最少次交互的情况下完成了Peer两端的资源分配和初始化序列号的交换。

问题一回答:为什么三次握手能保证可靠连接?

2018、12、5:从交互形式来看,要想建立可靠的连接,应该是四次握手,也就是双方确定一个初始的序号,并把序号传递给对方,并需要响应对方的序号操作。但是服务端将回答和确认操作放在了一个包中上,所以可以进行单独的三次。

 

问题二回答:tcp服务端怎么感知到丢包?

 

 2018、12、5:目前能看到的情况来看上,可以通过对方传递的ack的号码能不能和服务端上一次发送的seq+1对上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值