互联网协议控制块管理与优化
需积分: 50 22 浏览量
更新于2024-08-05
收藏 36.37MB PDF 举报
"TCP/IP详解-实现求精及网络编程接口"
在《TCP/IP详解 卷2:实现》中,作者探讨了如何优化网络协议控制块(PCB)的查找算法,特别是针对TCP和UDP的实现。22.12章节集中讨论了减少`in_pcblookup`函数的线性搜索耗时的问题,这是分用IP数据报时的一个关键步骤。作者指出,原始的线性搜索方法在处理大量连接时效率低下,特别是在面对如联机交易处理系统这类不遵循分组列模型的数据时。
为改善这一情况,书中提到了几种优化策略。首先,TCP和UDP协议维护一个指向最近使用的PCB的指针,形成一个单入口高速缓存,如果收到的数据报匹配这个高速缓存中的信息,就无需进行线性搜索。然而,这种简单的高速缓存对于不规律的数据流可能效果不佳。因此,书中引用了McKenny和Dove (1992) 的建议,即当一个PCB被引用时将其移动到PCB表的前端,以提高后续查找的效率。这种方式被称为"移到最前面"启发式算法。
此外,书中还比较了散列链方法,这种方法通过计算散列函数将PCB组织成散列表,大大提高了查找速度,性能提升了大约一个数量级。同时,Hutchinson和Peterson (1991)的研究表明,相对于线性搜索,散列表在插入接口数量增加时,分用UDP数据报的时间保持常量,而线性搜索则随接口数量增加而增长。
小结部分强调了每个Internet插口与一个相关的Internet PCB关联,其中包含了诸如本地和外部IP地址、路由结构指针等信息。TCP、UDP和原始IP的PCB都存储在各自协议维护的双向链表中。本章深入分析了几个处理PCB的函数,包括`in_pcblookup`、`in_pcbbind`和`in_pcbconnect`,并对它们的作用和应用场景进行了详细阐述。
在第1章的概述中,作者介绍了伯克利联网程序代码的基础,包括源代码的表示方式、代码版本的历史以及两种主要的编程接口——用于编写TCP/IP协议的Unix和非Unix系统接口。通过一个简单的UDP日期/时间服务器交互示例,展示了协议栈的工作原理,引出了核心数据结构和概念,为后续章节的深入讨论奠定了基础。最后,作者提到了本书中源代码的组织结构及其在整体代码库中的位置。
274 浏览量
2011-02-24 上传
2018-08-10 上传
2023-08-01 上传
2024-01-15 上传
2023-07-30 上传
2023-09-29 上传
2023-09-06 上传
2023-08-17 上传
羊牮
- 粉丝: 41
- 资源: 3871
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码