TCP/TCP 实现:TCP 输入处理-完成被动与同时打开
需积分: 49 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连接的性能至关重要。
2022-04-03 上传
2022-12-03 上传
188 浏览量
点击了解资源详情
2021-03-31 上传
2021-03-11 上传
2015-09-22 上传
2015-09-22 上传
2021-06-06 上传
黎小葱
- 粉丝: 24
- 资源: 3961
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍