- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络算法学:第九章 协议处理
对TCP头的观察 连接完成后,目的端口和源端口是固定的 大部分情况下IP包顺序到达,因此序号域通常等于预期接收的下一个序号 连接建立后,ACK标志总为1,其它标志一般为0 大多数情况下,接收窗口大小不变 当URG标志为0时,紧急指针域不用 变数较大的域只有两个:确认序号,检查和 预期情形 大多数时候,TCP连接上的数据传输是单向的: 客户从服务器下载一个文件,或客户向服务器上载一个文件。 两种预期的情形: 收到一个纯ACK段(无数据) 收到一个纯数据段(确认序号无更新) 其它预期情形: 标志位常规设置 无窗口更新 接收端头部预测的伪代码 接收端头部预测伪代码(续) 第一个子句检查标志位设置是否符合预期 第二个子句检查是否无窗口更新 第三个子句检查是否是预期接收的段(不是乱序到达或重发的) 若以上条件判断为真,这是预期接收的TCP段,再区分是纯ACK段还是纯数据段 若以上条件判断为假,不是预期接收的TCP段,执行常规的处理过程(慢路径) 标志域以及窗口大小组成一个32位的字,可将这个字的预期值保存到PCB中,头两个子句的检查只需用TCP头的第4个字与PCB中保存的字进行一次比较即可。 发送端头部预测 在发送端发送的一系列 TCP 段中,TCP头部有变化的域只有少数几个。 发送端头部预测: 发送端在PCB中建立一个TCP头模板 每当需要发送一个TCP段时 ,将模板拷贝到相应的包缓冲区中,填写少数几个有变化的域 9.3 IP分片重组 分片重组的经典实现: 各分片按照分片偏移量保存在一个有序链表中 一个分片到达时,顺序查找链表,插入到合适的位置 在寻找插入位置的过程中,检查分片之前的数据是否全部到达;如果是, 在插入分片后继续沿链表向下查找,检查是否全部数据已到达;如果是, 重新扫描链表,将数据拷贝到另一个缓冲区中 优化预期情形 重组过程复杂的原因: 考虑到IP分片可能乱序到达,且分片之间可能有重叠 预期情形: IP分片按序到达,且没有重叠 优化预期情形: 若判断为预期情形,只需将到来的分片添加到链表尾部(一个常数时间操作) 优化的IP分片重组算法 在有序链表的基础上,增加一个指向链表尾部的指针。 分片到来时,用分片的起始字节偏移量与链表上最后一个分片的末字节偏移量(存在一个变量中)进行比较。 若分片顺序到达且无重叠,将分片添加到链表的尾部,更新指向链表尾部的指针,更新末字节偏移量。 如果这是最后一个分片(MF=0),重组结束。 寻找插入位置及检查重组是否结束,只需要常数时间。 假设与实际相符吗? 分片重组优化算法隐含的假设: IP分片按照偏移量从小到大的顺序发送 多数情况下IP包顺序到达 实际测量: 许多较新的实现(包括Linux),发送端按照分片偏移量从大到小的顺序发送IP分片! 原因:最后一个分片携带了IP包总长度的信息,让最后一个分片最先到达接收端,方便接收端为数据包分配适当大小的缓冲区。 算法调整 使用第一个到来的分片,判断发送端按照什么顺序发送IP分片。 如果第一个到来的分片是第一个分片,使用前述实现。 如果第一个到来的分片是最后一个分片,跳转到按逆序处理的程序: 最后一个分片放在链表头部,其余分片按偏移量降序排列 用分片的末字节偏移量与链表尾部分片的起始偏移量进行比较 9.4 总结 缓冲区分配: 空间利用率 VS 合并不连续空闲区域的难度 缓冲区共享: 缓冲区窃取,动态门限 TCP输入处理、IP分片重组: 通过优化预期情形的处理,提高大多数情况下的算法性能。 第九章 协议处理 主要内容 缓冲区管理 检错(CRC,Checksum) 分片重组 常规协议(TCP/UDP)处理 9.1 缓冲区管理 数据包到达后,首先要分配一个缓冲区 操作系统必须提供分配和释放缓冲区的服务,包括: 管理空闲缓冲区 为数据包找到合适大小的缓冲空间 如果多个连接或用户共享一个缓存空间,还需提供某种形式的公平性 困难:包缓冲区分配必须实时完成 9.1.1 缓冲区分配 经典的BSD UNIX包缓冲区实现称为mbufs: 使用一个缓冲区链来存放一个包,每个缓冲区为一段连续的存储空间 BSD定义了三种大小的缓冲区:100字节、108字节、2048字节(称cluster) Mbufs设计的出发点: 使用一个缓冲区链来存放一个包:允许动态扩展包的缓冲空间;适应各种协议栈 定义不同大小的缓冲区:充分利用内存空间 缺点:访问数据和拷贝数据的开销大 Sk_buf Linux操作系统的包缓冲区实现是sk_buf: 每个包缓冲区都是一块连续地址空间,提前为路径上需要添加的各种协议头预留了空间 用空间换时间(P4b): 包缓冲区必须满足最大包长,有时会浪费空间,但实现简化了。 避免不必要的一般性(P7): 放宽对支持任意协议栈的要求,以提高速度。 如何为不同大
您可能关注的文档
- 管理学3 简史.ppt
- 管理学PPT课件6.ppt
- 管壳式换热器的构件50.ppt
- 管理学原理_07_激励.pptx
- 管理学综合复习题 2016.6.16.doc
- 管理学思想研究第1章.ppt
- 管理会计原理.ppt
- 管理沟通第三章 沟通客体分析.ppt
- 管理知识和工作方法.ppt
- 管理经济学 11定价实践.ppt
- 岸基供电系统 第4部分:工频电源.pdf
- 人教版八下英语Unit 5 What were you doing when the rainstorm came_测试卷.docx
- 热带作物品种区域试验技术规程 木薯.pdf
- 草原防火阻隔带建设技术规程.pdf
- 渔用气胀救生筏技术要求和试验方法-.pdf
- 浙江省杭州市2024-2025学年八年级下学期期中考试英语试卷(含答案).docx
- 重庆市渝北区六校联盟2024-2025学年九年级下学期期中教学大练兵语文试卷.docx
- 食品安全-花椒籽油 (2).pdf
- 2025年海博思创分析报告:储能集成“小巨人”,国内外业务进展可期.pdf
- 地理标志产品 宽城板栗.pdf
文档评论(0)