据我所知,在三次握手中,有时接收端会在建立连接时发送一个SYNACK数据包(捎带),但什么时候会发送一个SYN然后发送一个ACK数据包?
例如:
- > SYN
< -SYN_ACK
- > ACK
与
- > SYN
< -SYN
- > SYN_ACK
谢谢!
答案 0 :(得分:4)
不,它不会 - 这就是
的原因SYN通常由'客户端发送。 (例如,您的浏览器)当它想要打开到服务器(例如您的Web服务器)的TCP连接时。服务器无法知道'事先哪个客户端想要打开一个连接(并因此发送一个SYN)。所以它不能发送未经请求的SYN。
SYN和ACK是标志,因此来自服务器的SYN-ACK是对客户端SYN(以及它自己的SYN)的ACK。从技术上讲,它可以单独发送它们,但是,单独发送SYN和ACK将涉及额外的半往返。 ' cos那么它将是一个四向握手((c)SYN - >,< - SYN(s),< -ACK(s),(c)ACK - >),它们不是' ; t实现比三次握手提供更多的可靠性。因此,这样做是没有意义的。
话虽如此,理论上你可以设计一个4路握手的协议,但TCP并没有这样设计。
希望有所帮助。