TCP/TCP 实现:TCP 输入处理-完成被动与同时打开

需积分: 49 20 下载量 40 浏览量 更新于2024-08-09 收藏 6.93MB PDF 举报
"完成被动打开和同时打开-mike21教程" 本文档主要探讨了TCP协议中的ACK处理和完成被动打开及同时打开的过程,特别关注了TCP连接建立阶段的细节。在TCP协议中,ACK标志对于确认数据传输的成功至关重要。通常,如果一个报文段没有开启ACK标志,它会被丢弃,这是TCP的标准处理方式。然而,T/TCP(一种增强的TCP实现)对此有所改变。 在图11-13所示的tcp_input处理流程中,如果ACK标志关闭,但状态是SYN_RECEIVED或TF_SENDSYN(半同步状态),报文段不会被丢弃,而是按照step6分支处理。这种情况通常发生在连接建立前,即在第一个SYN之后,但未携带ACK的数据报文段到达时。 接着,文档进入了11.8章节,详细说明了完成被动打开和同时打开的步骤。在SYN_RECEIVED状态下,当接收到完成三次握手的最后一个ACK时,会进行以下操作: 1. 如果缓存的CC值未定义,即接收到来自对等端的CC值,那么更新该值。CC(Congestion Control)值用于TCP的拥塞控制,只有在缓存值未定义时才会更新。之前在图11-6中,如果没有CC选项,会将tao_cc设置为0,以便在三次握手完成后进行更新。但如果TCP的TAO(TCP Additive Increase/Multiplicative Decrease)测试失败,tao_cc的值不会改变,这表示接收到一个失序的SYN,不应该更新tao_cc。 2. 状态变迁。从SYN_RECEIVED状态过渡到ESTABLISHED状态,这是服务器完成三次握手的常规TCP状态迁移。由于发送端已经使用MSG_EOF关闭了连接,状态会从SYN_RECEIVED*变为FIN_WAIT_1。 图11-14展示了被动打开或同时打开完成的具体代码片段。整个文档提供了对TCP连接建立过程的深入理解,特别是T/TCP如何优化标准TCP的行为。 此外,文档还提到了TCP/IP协议的基本概念,包括客户-服务器事务模型,以及使用TCP和T/TCP进行通信的优势。通过对比UDP和TCP的客户-服务器应用,展示了T/TCP如何减少分组数量,提高效率。书中还简述了Internet上常见TCP应用的事务处理,并回顾了事务协议的发展历史和T/TCP的实现概况。 总结来说,这篇教程详细阐述了TCP连接建立过程中的关键点,特别是T/TCP对标准TCP协议的改进,以及如何处理ACK标志和完成被动打开与同时打开的连接。这对于理解和优化TCP连接的性能至关重要。