TCP 可以使用两次握手建立连接吗?

2018-02-07 11:46:41 +08:00
 scriptB0y
最近在想这个问题,研究了一下,写了一篇博客总结了自己查到的资料和结论。不知道有没有错误,请 V 友讨论。

https://www.kawabangga.com/posts/2722
6600 次点击
所在节点    程序员
26 条回复
Thiece
2018-02-07 16:59:34 +08:00
@scriptB0y 那有这种需求,为什么不上 QUIC 呢?
goofool
2018-02-07 17:38:55 +08:00
不可以啊,协议规定的东西,不按照协议来就不是 TCP 了
print
2018-02-07 19:32:26 +08:00
@eeljiang 同学 扥
pusidun
2018-02-08 09:07:09 +08:00
原来楼主就是那个写怎么学 python 的大神

我看你的博客,意思是想让第三次握手的 ACK 连着下一次的数据一起发送,对吧?
但是为什么要三次握手?现在假设 A 是客户端,B 是服务器。
第一次:A->B 这个过程,B 确定了 A 的发送没问题
第二次:B->A 这个过程,A 确定了 B 的接收没问题,同时确定了 A 自己第一个过程里面发送的 ACK,B 确实收到了,即自己的发送没问题。
第三次:A->B 这个过程,同样道理,B 确定了自己发送没问题,A 的接收也没问题。
经过这 3 次,A,B 双方互相确认了对方的发送和接收都没问题,所以保证了这是一个可靠传输。才开始传输数据

自己的看法,错了轻喷
scriptB0y
2018-02-08 09:33:46 +08:00
@pusidun 额 不是大神…… 也是在学习

我觉得“保证了这是一个可靠传输”这个不太准确。因为 TCP 的可靠性是靠 ACK 确认保证的。所以即使不建立链接呢,只要每一次发送都有 ACK,没有 ACK 就重传也可以保证是可靠传输。

我博客可能没说明白…… 我最后的结论是第三次 ACK 带数据发送是没有问题的,甚至第一次发送的 SYN 也是可以带数据的。
joyful
2018-02-09 12:31:21 +08:00
三次握手初始化连接; ACK、交验和等保证可靠传输。各司其职。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/429138

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX