《TCP/IP详解 卷2:实现》 —1.2 源代码表示

举报
华章计算机 发表于 2019/11/20 15:33:07 2019/11/20
【摘要】 本节书摘来自华章计算机《TCP/IP详解 卷2:实现》一书中第1章,第1.2.1节,作者是[美]加里R.赖特(Gary R.Wright),W. 理查德史蒂文斯(W.Richard Stevens),陆雪莹 蒋慧 等译 谢希仁 校。

1.2   源代码表示

不考虑主题,列举15 000行源代码本身就是一件难事。下面是所有源代码都使用的文本格式:

image.png

1.2.1   将拥塞窗口设置为1

387-388   这是文件tcp_subr.c中的函数tcp_quench。这些源文件名引用4.4BSD-Lite发布的文件,它们在1.13节中讨论。每个非空白行都有编号。正文所描述的代码的起始和结束位置的行号记于行开始处,如本段所示。有时在段前有一个简短的描述性题头,对所描述的代码提供一个概述。

这些源代码同4.4BSD-Lite发行版一样,偶尔包含一些错误,在遇到时我们会提出来并加以讨论,偶尔还包括一些原作者的编者评论。这些代码已通过了GNU缩进程序的运行,使它们从版面上看起来具有一致性。制表符的位置被设置成4个栏的界线使得这些行在一个页面中显示得很合适。在定义常量时,有些#ifdef语句和它们的对应语句#endif被删去(如:GATEWAY和MROUTING,因为我们假设系统作为一个路由器或多播路由器)。所有register说明符被删去了。有些地方加了一些注释,并且对一些注释中的印刷错误做了修改,但代码的其他部分被保留下来。

这些函数大小不一,从几行(如前面的tcp_quench)到最大1100行(tcp_input)。超过40行的函数一般被分成段,一段一段地显示。虽然尽量使代码和相应的描述文字放在同一页或对开的两页上,但为了节约版面,不可能完全做到这样。

本书中有很多对其他函数的交叉引用。为了避免给每个引用都添加一个图号和页码,文前插页中有一个本书中描述的所有函数和宏的字母交叉引用表和描述的起始页码。由于本书的源代码来自公开的4.4BSD_Lite版,因此很容易获得它的一个拷贝:附录B详细说明了各种方法。当你阅读文章时,有时也能帮助你搜索一个在线拷贝[例如Unix程序grep(1)]。

描述每个源代码模块的各章通常以所讨论的源文件的列表开始,接着是全局变量、代码维护的相关统计以及一个实际系统的一些例子统计,最后是与所描述协议相关的SNMP变量。全局变量的定义通常跨越各种源文件和头文件,因此我们将它们集中到的一个表中以便于参考。这样显示所有的统计,简化了后面当统计更新时对代码的讨论。卷1的第25章提供了SNMP的所有细节。我们在本文中关心的是由内核中的TCP/IP例程维护的、支持在系统上运行的SNMP代理的信息。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。