| 摘要 | 第1-6页 |
| ABSTRACT | 第6-8页 |
| 目录 | 第8-11页 |
| 第一章 引言 | 第11-15页 |
| ·课题背景 | 第11页 |
| ·Windows下TCP协议栈的开发之路 | 第11-14页 |
| ·如何开发Windows下的TCP协议栈 | 第11-13页 |
| ·主要技术及原理 | 第13-14页 |
| ·论文各个部分的主要内容 | 第14-15页 |
| 第二章 Windows下的的网络协议驱动开发 | 第15-25页 |
| ·网络驱动程序 | 第15-16页 |
| ·NDIS协议驱动程序 | 第16-25页 |
| ·协议DriverEntry及其初始化 | 第17-18页 |
| ·下边界面向无连接的协议驱动程序的ProtocolXxx函数 | 第18-20页 |
| ·协议驱动程序查询和设置操作 | 第20页 |
| ·协议驱动程序数据包管理 | 第20-22页 |
| ·下边界面向无连接的中间层驱动程序接收数据 | 第22-23页 |
| ·从面向无连接协议驱动程序发送数据包 | 第23-25页 |
| 第三章 传输驱动接口(TDI) | 第25-32页 |
| ·传输驱动接口(TDI) | 第25-26页 |
| ·TDI文件对象 | 第26-28页 |
| ·代表传输地址的文件对象 | 第26-28页 |
| ·代表连接端点的文件对象 | 第28页 |
| ·代表控制信道的文件对象 | 第28页 |
| ·TDI传输驱动程序例程 | 第28-29页 |
| ·核心模式客户交互 | 第29-31页 |
| ·TDI请求及事件 | 第31-32页 |
| 第四章 TCP协议 | 第32-42页 |
| ·前言 | 第32页 |
| ·TCP协议 | 第32-35页 |
| ·TCP通过以下方式提供可靠性 | 第32-33页 |
| ·TCP首部 | 第33-35页 |
| ·TCP连接的建立和终止 | 第35-38页 |
| ·建立连接协议 | 第35页 |
| ·连接终止协议 | 第35-36页 |
| ·连接建立的超时 | 第36页 |
| ·最大报文段长度MSS | 第36页 |
| ·TCP的半关闭 | 第36页 |
| ·2MSL连接 | 第36页 |
| ·平静时间 | 第36-37页 |
| ·FIN WAIT 2状态 | 第37页 |
| ·复位报文段 | 第37页 |
| ·同时打开 | 第37页 |
| ·同时关闭 | 第37页 |
| ·TCP选项 | 第37-38页 |
| ·TCP的超时和重传 | 第38-39页 |
| ·往返时间测量 | 第38页 |
| ·拥塞避免算法 | 第38-39页 |
| ·快速重传和快速恢复算法 | 第39页 |
| ·ICMP差错 | 第39页 |
| ·重新分组 | 第39页 |
| ·TCP的坚持定时器 | 第39-40页 |
| ·TCP的保活定时器 | 第40页 |
| ·TCP的一些性能 | 第40-42页 |
| ·路径MTU发现 | 第40页 |
| ·长肥管道 | 第40页 |
| ·窗口扩大选项 | 第40-41页 |
| ·时间戳选项 | 第41-42页 |
| 第五章 Windows下的TCP协议开发 | 第42-61页 |
| ·前言 | 第42页 |
| ·NDIS接口实现 | 第42-46页 |
| ·注册协议驱动 | 第43-44页 |
| ·ProtocolXxx函数实现 | 第44-46页 |
| ·TDI接口 | 第46-53页 |
| ·注册TDI传输驱动程序 | 第47页 |
| ·TdiDispatchXxx函数 | 第47-50页 |
| ·核心模式请求与TdiDispatchInternelDeviceControl | 第50-53页 |
| ·TCP协议流程设计 | 第53-59页 |
| ·主要数据结构设计 | 第53-55页 |
| ·接口设计 | 第55-57页 |
| ·功能设计 | 第57-59页 |
| ·测试工具 | 第59-61页 |
| ·TDI客户端 | 第59-60页 |
| ·测试用应用程序 | 第60-61页 |
| 第六章 从Linux下的TCP协议栈到Windows下的TCP协议栈 | 第61-75页 |
| ·前言 | 第61页 |
| ·数据结构设计 | 第61-63页 |
| ·当前连接状态结构 | 第61-62页 |
| ·请求状态信息结构 | 第62页 |
| ·缓存管理结构 | 第62页 |
| ·连接管理结构 | 第62-63页 |
| ·其它数据结构 | 第63页 |
| ·接口实现 | 第63-68页 |
| ·建立连接接口 | 第63-65页 |
| ·断开连接接口 | 第65页 |
| ·设置监听接口 | 第65-66页 |
| ·接受外部连接接口 | 第66页 |
| ·发送数据接口 | 第66-67页 |
| ·接收数据接口 | 第67-68页 |
| ·下层接收数据接口 | 第68页 |
| ·发送模块实现 | 第68-70页 |
| ·判断是否发送一个数据包 | 第68-69页 |
| ·添加TCP首部 | 第69页 |
| ·处理TCP选项 | 第69页 |
| ·发送一个数据包 | 第69-70页 |
| ·重传 | 第70页 |
| ·其它发送相关操作 | 第70页 |
| ·接收模块实现 | 第70页 |
| ·定时器实现 | 第70-72页 |
| ·定时器初始化 | 第71页 |
| ·定时器设置 | 第71页 |
| ·取消定时器 | 第71-72页 |
| ·管理定时器 | 第72页 |
| ·缓存管理 | 第72-75页 |
| ·分配内存 | 第73页 |
| ·释放内存 | 第73-74页 |
| ·内存拷贝 | 第74页 |
| ·管理内存 | 第74-75页 |
| 第七章 总结和期望 | 第75-78页 |
| ·发送/接收数据测试 | 第76页 |
| ·存在问题与期望 | 第76-78页 |
| 参考文献 | 第78-79页 |
| 致谢 | 第79页 |