TCP为什么要三次握手(3分钟你看不懂找我)

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 TCP为什么要三次握手(3分钟你看不懂找我),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

TCP为什么要三次握手(3分钟你看不懂找我)

注意是TCP三次握手,不是http三次握手,http基于tcp实现。

第一次:client给server发送SYN

如果server接收到了client的消息,则可以确认:(注意,如果接收不到就达不到建立连接的要求,至此中断,意思就是没后面步骤的事情了)

  • client:什么都不知道(有人会问:自己发送的自己的发送功能是否正常都不清楚吗? 是的)

  • server:对方发送功能正常,自己接收功能正常

自己发送 自己接收 对方发送 对方接收
client 未知 未知 未知 未知
server 未知 OK OK 未知
第二次:server给client回复 SYN/ACK

如果client接收到了,则可以在第一次的基础上补充了一点信息

  • client:自己发送正常,自己接收正常,对方发送正常

  • server:(暂无法补充信息)

自己发送 自己接收 对方发送 对方接收
client OK OK OK OK
server 未知 OK OK 未知
第三次:client给server回复ACK

如果server收到了,则在第二步的基础上再一次补充信息

  • client:(此步骤没能补充什么)

  • server:自己发送正常,对方接收正常

自己发送 自己接收 对方发送 对方接收
client OK OK OK OK
server OK OK OK OK

至此,所有的都绿了,client和server完全能够知晓对方和自己是完全ready的状态。

貌似一般最后一次会开始带有额外的用户数据了,为了节省一次发送嘛,所以最后一次不单止是 “三次握手” 这种功能性的,还带有 “业务性” 的(顺便把即将要开始运输的包括带了一些过来)。

为什么要3次,1次不行吗? 2次不行吗?

1次为什么不行,没办法确定对方是否能收到,即没办法确定链路是否通了。

打个比方你给微信给别人发了个信息说要去他家,然后就直接去了吗? 他有没有看到你不用确认了吗?

2次为什么不行?正常来说或2次按理应该是可以的。比如你给朋友发微信说去他家,他回复说可以,然后你就去了,按常理来说是可以。但是你要想下TCP协议是双向传输协议,客户端给服务端传数据,服务端也可能会需要给客户端传。

如果只有2次,如果没有最后客户端那次回复,则服务端没办法确认 “自己发送给客户端” 这个链路是否通的,即没办法确定自己是否发送成功且没办法确定对方是否能接收成功。

只有3步,双向传输的TCP才算建立起来。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/135165.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!