【发布时间】:2015-06-05 06:47:49
【问题描述】:
我知道在三次握手中,有时接收端会在建立连接时发送一个 SYNACK 数据包(捎带),但它什么时候会发送一个 SYN 然后一个 ACK 数据包?
例如:
->同步
->确认
对比:
->同步
->SYN_ACK
谢谢!
【问题讨论】:
标签: networking tcp protocols handshake
我知道在三次握手中,有时接收端会在建立连接时发送一个 SYNACK 数据包(捎带),但它什么时候会发送一个 SYN 然后一个 ACK 数据包?
例如:
->同步
->确认
对比:
->同步
->SYN_ACK
谢谢!
【问题讨论】:
标签: networking tcp protocols handshake
不,它不会 - 这就是原因
SYN 通常由“客户端”(例如您的浏览器)在想要打开与服务器(例如您的 Web 服务器)的 TCP 连接时发送。服务器无法事先“知道”哪个客户端想要打开一个连接(并因此发送一个 SYN)给它。所以它不能发送一个不请自来的SYN。
SYN 和 ACK 是标志,因此来自服务器的 SYN-ACK 是对客户端 SYN 的 ACK(它是自己的 SYN)。从技术上讲,它可以单独发送它们,但是单独发送 SYN 和 ACK 会涉及额外的半往返。 'cos 那么这将是四路握手 ((c)SYN -> , ) 不会比三路更可靠握手提议。因此,这样做是没有意义的。
话虽如此,理论上您可以设计一个具有 4 次握手的协议,但 TCP 不是这样设计的。
希望对您有所帮助。
【讨论】: