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

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

https://www.kawabangga.com/posts/2722
6410 次点击
所在节点    程序员
26 条回复
rensuperk
2018-02-07 11:50:54 +08:00
UDP 协议,可以了解下
scriptB0y
2018-02-07 11:56:47 +08:00
@rensuperk

好的,不过是哪部分? UDP 好像没有握手和确认之类的机制,包发出去就不管了吧。好像跟我的问题没有什么关系的样子……
zhengxiaowai
2018-02-07 11:57:58 +08:00
看看 tcp fast open
lhx2008
2018-02-07 12:01:24 +08:00
第三个包带数据好像是可以的,但是必须也要有 ack,就是三次握手和第四次数据合并在一起了而已
feather12315
2018-02-07 12:03:10 +08:00
这是一个数学问题,大于 3 次与 3 次效果一样,小于 3 次就不一样了
scriptB0y
2018-02-07 12:03:56 +08:00
@lhx2008 嗯我也是这么理解的。
hjc4869
2018-02-07 12:10:39 +08:00
TFO,SYN 包可以设 PSH bit 并且带上 data (也可以不带 PSH 但是带 data ),直接一来一回就建立连接顺便还能发点数据。
Shura
2018-02-07 12:42:36 +08:00
https://zh.wikipedia.org/wiki/TCP%E5%BF%AB%E9%80%9F%E6%89%93%E5%BC%80
利用三次握手的 SYN 报文来传输应用数据,更加实用。
honeycomb
2018-02-07 13:19:30 +08:00
@scriptB0y TCP 有一个 fast open 特性
hxndg
2018-02-07 13:25:11 +08:00
我觉得这个没必要说的那么麻烦,打个比喻:
登山的时候,上面一个人拉着绳子,你在下面准备登山,你不知道他好没好,他不知道你好没好,你们必须得两个人各自扥一下绳子来告诉对方,这个是通知作用。

除非你知道对方好了,直接爬上去告诉他:我要爬上去了。
cloverii
2018-02-07 13:29:29 +08:00
所以你没解释两次为啥不行?
eeljiang
2018-02-07 13:36:54 +08:00
握手没学到,学到了 扥[dèn]
scriptB0y
2018-02-07 13:37:15 +08:00
@cloverii 解释了啊,引用的那段话,server 浪费资源。如果发起端将第三次和数据一起发是可以的。
LGA1150
2018-02-07 13:47:37 +08:00
HTTP 响应可以放在 FIN 里面
GjriFeu
2018-02-07 14:06:36 +08:00
假设 A 端发起关闭连接请求, 四次挥手中第二次的作用是通知 A 端,我收到了你的关闭请求,我也准备关闭;这时 B 端写缓冲区如果有数据的话会将这些数据发送完成再发 FIN 给 A 端。 这么说是不是 B 端写缓冲区没有数据 所以将第二次和第三次挥手合并到一个报文中了
ai277014717
2018-02-07 14:22:29 +08:00
用 UDP 假装 TCP
scriptB0y
2018-02-07 14:57:23 +08:00
@GjriFeu 我的理解是这样的,而且这是一个通常的做法——将 2,3 合并。

> It is also possible to terminate the connection by a 3-way handshake, when host A sends a FIN and host B replies with a FIN & ACK (merely combines 2 steps into one) and host A replies with an ACK.[12] This is perhaps the most common method.

https://en.wikipedia.org/wiki/Transmission_Control_Protocol
BXLR
2018-02-07 15:32:10 +08:00
总想搞个大新闻
gstqc
2018-02-07 16:18:25 +08:00
如果两次握手就能建立连接,那 DDoS 的高兴死了
kaiser1992
2018-02-07 16:58:07 +08:00
双方互相确认的机制,保证连接建立。

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

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

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

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

© 2021 V2EX