回答
我一直认为它是保持会话建立阶段与数据传输阶段分开,以便传输实际数据,直到会话的两端都就序列号和会话选项达成一致,尤其是因为到达的数据包可能来自完全不同的前一个会话,而这些会话恰好具有相同的端点。
但是,在进一步调查中,我并不完全确定使用握手数据包传输数据是不允许的。在我互联与TCP/IP 本书包含下面的代码片段上建立TCP连接的部分:
由于协议设计的,有可能与在初始序列号一起发送数据握手细分。在这种情况下,TCP软件必须保存数据直到握手完成。建立连接后,TCP软件可以释放正在保存的数据并将其快速传送到等待的应用程序。
由于它肯定可以构建一个TCP包与SYN
(或ACK
)和数据,这很可能被允许。我已经从来没有看到它发生在野外,但是,我再也没有见过野生毛茸茸的矮人狐猴,但我确信它们存在。
这可能是它的套接字软件可以防止数据在会话完全建立之前发生,但TCP似乎认为它是有效的。看起来您可以使用SYN-ACK
数据包(连接建立的第2阶段)发送数据,因为您拥有另一端的序列号和选项。同样,发送包含阶段3 ACK
数据包的数据似乎也是可能的。
TCP握手软件保持数据直到握手完全完成的原因可能是由于上面提到的原因 - 只有一旦两端同意序列号,您可以确信数据不是来自前一届会议。
Internetworking with TCP/IP Volume 1 Principles, Protocols and Architecture, 3rd edition, Douglas E. Comer, ISBN 0-13-216987-8.
让你想知道这样的数据是否会潜伏在那些不需要初始握手中的数据的深度包检测过滤器中! – caf 2010-08-10 00:40:14
- 1. TCP三次握手
- 2. TCP三次握手问题
- 3. TCP三次握手失败
- 4. 三次握手后HTTP请求
- 5. 如何识别TCP三次握手中的初始包?
- 6. openWrt上的freeradius 4次握手失败?
- 7. 如何在三次握手中检测第一个SYN数据包
- 8. 如果三次握手的最终ACK被丢弃会发生什么?
- 9. ROAuth握手
- 10. 握手HTML 5
- 11. AS3 Websocket握手
- 12. websocket握手问题
- 13. PyCURL:TLS握手错误
- 14. SSL握手失败
- 15. openssl握手失败
- 16. 执行Telnet握手
- 17. CURLpp:TLS握手错误
- 18. TCP握手延迟
- 19. 与WPF握手MVVM
- 20. 协议握手Python
- 21. 与Google Guice握手
- 22. SSL握手超时
- 23. SSL握手异常
- 24. TCP握手过程
- 25. SSL握手问题
- 26. Android SSL握手例外
- 27. SSL无法进行握手
- 28. HTML5 Web套接字握手
- 29. 手柄/握杠约定
- 30. android asynchttpclient javax.net.ssl.SSLHandshakeException:握手失败
我不明白为什么它不能...该协议规定,在建立连接后* * B收到ACK,虽然。 – Borealid 2010-08-09 05:41:27