关于tcp握手的理解

tcp三次握手。

关于tcp三次握手举例。

首先, 在尝试建立链接时,tcp client先发送请求synserver,这是第一次。

然后server收到此syn,并进行ack相应,并发送synclient确认对方状态,这是第二次。

最后client收到serversyn并返回ack,这是第三次,然后数据就开始传输。

总结一下其实就是,

client:你准备好接受和我链接了吗(syn)(第一次)

server:我现在是可以的(ack)你呢(syn)(第二次)

client:我也可以(ack)(第三次)


在建立连接时是三次握手,可是在关闭连接时是四次握手。(四次挥手)

之所以这样的理由是server并不能保证即时关闭,例如还在提供数据。

因此,此时。变成了这样:

client:你准备好关闭了吗(syn)(第一次)

server:收到了你的消息可是还需要准备一下(ack)(第二次)

client:(等待)

(一段时间后,server发送完了报文)

server:现在我准备好了(syn)(第三次)

client:好的,那就断开连接(ack)(第四次)


关于为什么要使用三次握手,或者为什么三次握手显示了tcp协议可靠性?

这一点我们可以通过假设举例来看。

因为网络存在拥塞,丢包等复杂的情况,因此,很有可能在连接时client发向server的syn被阻塞了。

而client因为长时间没有收到server的ack于是重新发送syn请求,可能就连上了或者怎么样。

自此第一次发出的syn被client遗忘了,也就是,client可能已经不想连接了。

若干时间后,阻塞的syn终于到达了server,于是server回响ack,如果不是三次握手,则本次发送后,server默认与client已经建立了连接,但client本身可能毫不知情。于是server为了等待他所认为可能存在的数据交互,与维护他认为存在的数据传输通道付出了本不必付出的资源和额外的等待时间。

这就是不采用三次的坏处,或者说是三次握手所避免的情况。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值