linux tcp源码内核源码剖析 tcp ip实现 不出版了么

《Linux内核源码剖析:TCP/IP实现(套装上下册)》【摘要 书评 试读】- 京东图书
Linux内核源码剖析:TCP/IP实现(套装上下册)
与行业相比
该商品已下柜,非常抱歉!
商品介绍加载中...
扫一扫,精彩好书免费看
权利声明:京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
印刷版次不同,印刷时间和版次以实物为准。
价格说明:
京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。
划线价:商品展示的划横线价格为参考价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品在京东平台上曾经展示过的销售价;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:如无特殊说明,折扣指销售商在原价、或划线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。
异常问题:商品促销信息以商品详情页“促销”栏中的信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。
iframe(src='//www.googletagmanager.com/ns.html?id=GTM-T947SH', height='0', width='0', style='display: visibility:')&>&linux内核源码剖析,TCP/IP实现
linux内核源码剖析,TCP/IP实现
上传大小:18.32MB
linux内核远吗剖析,TCP/IP实现
想学习linux内核协议栈的朋友还是可以读读的
综合评分:5
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有10条
谢谢分享,看看.
太感谢了,仔细分析源码,学习很多。
源码分析很实用,谢谢分享。
yjwffgip456
综合评分:
积分/C币:11
综合评分:
积分/C币:10
peterfuture
综合评分:
积分/C币:12
综合评分:
积分/C币:18
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
linux内核源码剖析,TCP/IP实现
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
linux内核源码剖析,TCP/IP实现新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
丰衣足食, 积分 649, 距离下一级还需 351 积分
论坛徽章:0
本帖最后由 lmarsin 于
22:56 编辑
经过两年半深入的研究,已完成《Linux内核源码剖析--TCP/IP实现》一书,此书的框架参照了大师级作品《TCP/IP详解-卷2》,近期由机械工业出版社出版,年底上架。
附上样章:
(247.26 KB, 下载次数: 6828)
17:12 上传
点击文件名下载附件
(209.69 KB, 下载次数: 6201)
11:50 上传
点击文件名下载附件
(730.61 KB, 下载次数: 6682)
17:12 上传
点击文件名下载附件
(1017.71 KB, 下载次数: 8722)
11:51 上传
点击文件名下载附件
(658.33 KB, 下载次数: 4801)
15:35 上传
点击文件名下载附件
& & 本书完整而详细的论述了Linux内核2.6.20版本中TCP/IP协议是如何实现的。书中给出了大量的源代码,通过对源代码的详细的论述,帮助你掌握TCP/IP的实现。本书根据协议栈层次,从驱动层逐步论述到传输层,包括驱动的实现、接口层的输入输出、IP层的输入输出以及IP选项的处理、邻居子系统、路由、套接口及传输层等内容,全书基本涵盖了网络体系架构全部的知识点。特别是TCP,包括TCP连接的建立和终止、输入与输出、以及拥塞控制的实现。
& & 本书的适用于那些熟悉Linux的基本使用方法,对Linux内核工作原理以及网络知识有一定的了解,而又极想更深入地理解各个机制在Linux中是怎样来实现的人们,包括应用程序员和嵌入式程序员等。也适合那些做相关研究和开发的科研人员在通篇阅读本书之外,当工作中遇到问题时查阅本书来帮助理解相关内核部分是怎样实现的。此外对于计算机相关专业的本科高年级学生和研究生,在学习相关课程(如操作系统、计算机网络等)时,作为辅助教程,与理论相结合以便于更好得理解相应的知识点。对于初学者,可能会在阅读中遇到诸多的障碍,本书中会尽量对一些基本知识点加以简单的描述,但限于篇幅,不可能在这上面作过多的逗留,读者可以查阅相关的资料。
& & 有人宣称Linux人才是未来20年IT职场中的王者,无论这种说法有多夸张,但有一个事实是不可否认的,那就是,近年来Linux的市场份额不断增长,Linux正在受到越来越多人的关注乃至推崇。由于Linux可广泛地应用到各种系统,包括很多嵌入式系统上,以及其自身其它的诸多优点,如开放性、高效性、丰富的网络功能等,这种趋势在可预计的未来还将持续。
& & 目前,国内对Linux各方面的研究工作相对没有国外那样广泛和深入,相关的出版物水准参差不齐。别是在网络的实现方面,有些著作针对性不强,有些则缺少了重要的传输层协议实现的论述,还有一些虽然有比较全面的介绍,然后欠缺在深入程度不够,选用的Linux版本比较旧。
& & 针对以上情况,选择了较新的2.6.20版本内核来作详细的论述,在重要的细节处甚至逐行分析,并在此基础上,对于代码背后的机制和原理作了深入的阐述,将各关键点连成一个整体,帮助读者理清整个Linux网络部分的脉络。作者本着严谨的态度,在写作过程中参阅了大量的中英文资料以及相关的文档。本书与上述书籍还有一个显著优点,没有翻译折损,行文更符合中文的习惯,便于读者理解。相信本书将可以成为那些想要深入了解Linux的TCP/IP协议栈、网络部分实现的人们一个有用的工具。
& & 本书是通过自底向上的方法来论述TCP/IP的实现,从数据链路层开始,然后是网络层(IP、ICMP、IGMP、路由以及邻居子系统和IP组播),接下来是套接口,最后是传输层(TCP和UDP)。当然在学习的时候也可以自顶向下的方法(从传输层开始向下),或者结合以上两种的方法。要理解一个系统的运行机制,对于一个专业人员来说,代码是最为直接也最为可靠的资源。Linux普及面不断扩展,越来越多的人会想通过研读内核代码来了解Linux系统,一来是更好地解决具体工作中的相关问题,二来从Linux这个顶级质量的操作系统中学习到更多的编程、架构等技术。本书的读点如下:
1.选择的内核版本新,这就保证了不会在短期内出现内容过时的可能。
2.对代码作了详细的论述,在此基础上进一步分析了代码背后的机制和原理,为读者理清了整个框架的脉络,避免了读者“不识芦山真面目,只缘身在此山中”迷失在细节中。
3.写作过程中参阅大量资料中英文资料和相关的文档,对内核代码更是作了长时间深入细致的研究和分析,在细节处反复推敲,以确保本书有一个较高的质量。
4.书中有大量的图表,用来帮助读者直观地理解各个数据结构之间的联系,各个函数的调用关系等。
& & Linux内核中的网络模块虽然是一个比较独立的模块,但仍运行内核中一些常用的技术和算法,因此希望读者在阅读本书之前需要掌握一些基础知识。包括对TCP/IP协议有一定的了解,了解Linux内核的运行,包括进程管理、内存管理、文件系统、系统调用、netlink、内核中多种锁(自旋锁、读写锁、RCU)等。当然在学习过程中,免不了要做些实验,因此也需要熟悉Linux提供的多种工具,包括ip、ifconfig等命令。
& & 本书针对的Linux内核版本为2.6.20,也许读者想知道为什么选择这个版本,实际上开始分析TCP/IP代码时,选择是最新版本。正是因为Linux内核快速的更新,只是经过二年多的分析后,最新版本已经是2.6.3x了,即便如此,如果读者能领悟了2.6.20版本的代码,则再读最新版本的代码时,应该不会有多少难度。由于内容繁多,不足和漏洞之处可能还会存在,请读者谅解并提出修改建议,建议和意见留言到作者的博客:。
& & 在此,还要特别感谢网友衫秋南,对本书提出宝贵的意见和建议。
目录第1章 预备知识& & 1
1.1 应用层配置诊断工具& & 1
1.1.1 iputils& & 2
1.1.2 net-tools& & 2
1.1.3 IPROUTE2& & 2
1.2 内核空间与用户空间的接口& & 2
1.2.1 procfs& & 2
1.2.2 sysctl(/proc/sys目录)& & 3
1.2.3 sysfs(/sys文件系统)& & 5
1.2.4 ioctl系统调用& & 6
1.2.5 netlink套接口& & 6
1.3 网络I/O加速& & 6
1.3.1 TSO/GSO& & 7
1.3.2 I/O AT& & 8
1.4 其他& & 8
1.4.1 slab分配器& & 9
1.4.2 RCU& & 9
第2章 网络体系结构概述& & 10
2.1 引言& & 10
2.2 协议简介& & 10
2.3 网络架构& & 11
2.4 系统调用接口& & 11
2.5 协议无关接口& & 12
2.6 传输层协议& & 12
2.7 套接口缓存& & 13
2.8 设备无关接口& & 14
2.9 设备驱动程序& & 15
2.10 网络模块源代码组织& & 15
第3章 套接口缓存& & 16
3.1 引言& & 16
3.2 sk_buff结构& & 16
3.2.1 网络参数和内核数据结构& & 17
3.2.2 SKB组织相关的变量& & 20
3.2.3 数据存储相关的变量& & 21
3.2.4 通用的成员变量& & 22
3.2.5 标志性变量& & 25
3.2.6 特性相关的成员变量& & 26
3.3 skb_shared_info结构& & 26
3.3.1 “零拷贝”技术& & 27
3.3.2 对聚合分散I/O数据的支持& & 28
3.3.3 对GSO的支持& & 31
3.3.4 访问skb_shared_info结构& & 32
3.4 管理函数& & 32
3.4.1 SKB的缓存池& & 33
3.4.2 分配SKB& & 33
3.4.3 释放SKB& & 36
3.4.4 数据预留和对齐& & 38
3.4.5 克隆和复制SKB& & 40
3.4.6 链表管理函数& & 45
3.4.7 添加或删除尾部数据& & 45
3.4.8 拆分数据:skb_split()& & 47
3.4.9 重新分配SKB的线性数据区:pskb_expand_head()& & 49
3.4.10 其他函数& & 49
第4章 网络模块初始化& & 51
4.1 引言& & 51
4.2 网络模块初始化顺序& & 51
4.3 优化基于宏的标记& & 52
4.4 网络设备处理层初始化& & 55
第5章 网络设备& & 58
5.1 PCI设备& & 58
5.1.1 PCI驱动程序相关结构& & 58
5.1.2 注册PCI驱动程序& & 60
5.2 网络设备有关的数据结构& & 62
5.2.1 net_device结构& & 62
5.2.2 网络设备有关结构的组织& & 74
5.2.3 相关函数& & 76
5.3 网络设备的注册& & 76
5.3.1 设备注册的时机& & 76
5.3.2 分配net_device结构空间& & 76
5.3.3 网络设备注册过程& & 78
5.3.4 注册设备的状态迁移& & 82
5.3.5 设备注册状态通知& & 83
5.3.6 引用计数& & 84
5.4 网络设备的注销& & 84
5.4.1 设备注销的时机& & 84
5.4.2 网络设备注销过程& & 85
5.5 网络设备的启用& & 91
5.6 网络设备的禁用& & 92
5.7 与电源管理交互& & 94
5.7.1 挂起设备& & 94
5.7.2 唤醒设备& & 95
5.8 侦测连接状态改变& & 96
5.8.1 调度处理连接状态改变事件& & 96
5.8.2 linkwatch标志& & 100
5.9 从用户空间配置设备相关信息& & 100
5.9.1 ethtool& & 100
5.9.2 媒体独立接口& & 102
5.10 虚拟网络设备& & 102
第6章 IP编址& & 105
6.1 接口和IP地址& & 105
6.1.1 主IP地址、从属IP地址和IP别名& & 105
6.1.2 IP地址的组织& & 105
6.1.3 in_device结构& & 106
6.1.4 in_ifaddr结构& & 107
6.2 函数& & 109
6.2.1 inetdev_init()& & 109
6.2.2 inetdev_destroy()& & 110
6.2.3 inet_select_addr()& & 111
6.2.4 inet_confirm_addr()& & 112
6.2.5 inet_addr_onlink()& & 113
6.2.6 inetdev_by_index()& & 114
6.2.7 inet_ifa_byprefix()& & 114
6.2.8 inet_abc_len()& & 114
6.3 IP地址的设置& & 115
6.3.1 netlink接口& & 115
6.3.2 inet_insert_ifa()& & 118
6.3.3 inet_del_ifa()& & 119
6.4 IOCTL& & 122
6.5 inetaddr_chain通知链& & 128
第7章 接口层的输入& & 129
7.1 系统参数& & 129
7.2 接口层的IOCTL& & 130
7.2.1 SIOCxIFxxx类命令& & 130
7.2.2 SIOCETHTOOL& & 134
7.2.3 私有命令& & 135
7.3 初始化& & 135
7.4 softnet_data结构& & 136
7.5 NAPI方式& & 138
7.5.1 网络设备中断例程& & 139
7.5.2 网络输入软中断& & 139
7.5.3 轮询处理& & 141
7.6 非NAPI方式& & 142
7.7 接口层输入报文的处理& & 145
7.7.1 报文接收例程& & 145
7.7.2 netif_receive_skb()& & 146
7.7.3 dev_queue_xmit_nit()& & 148
7.8 响应CPU状态的变化& & 150
7.9 netpoll& & 151
7.9.1 netpoll相关结构& & 151
7.9.2 注册netpoll实例& & 153
7.9.3 netpoll的输入& & 156
7.9.4 netpoll的输出& & 165
7.9.5 tx_work工作队列& & 167
7.9.6 netpoll实例:netconsole& & 168
第8章 接口层的输出& & 172
8.1 输出接口& & 172
8.1.1 dev_queue_xmit()& & 172
8.1.2 dev_hard_start_xmit()& & 176
8.1.3 e100的输出接口:e100_xmit_frame()& & 177
8.2 网络输出软中断& & 177
8.2.1 netif_schedule()& & 177
8.2.2 net_tx_action()& & 178
8.3 网络设备不支持GSO的处理& & 179
8.3.1 dev_gso_cb私有控制块& & 180
8.3.2 dev_gso_segment()& & 181
8.3.3 skb_gso_segment()& & 181
第9章 流量控制& & 183
9.1 通过流量控制后输出& & 183
9.1.1 dev_queue_xmit()& & 184
9.1.2 qdisc_restart()& & 185
9.2 构成流量控制的三种元素& & 187
9.2.1 排队规则& & 189
9.2.2 类& & 196
9.2.3 过滤器& & 200
9.3 缺省的FIFO排队规则& & 203
9.3.1 pfifo_fast_init()& & 205
9.3.2 pfifo_fast_reset()& & 206
9.3.3 pfifo_fast_enqueue()& & 206
9.3.4 pfifo_fast_dequeue()& & 207
9.3.5 pfifo_fast_requeue()& & 208
9.4 netlink的tc接口& & 208
9.5 排队规则的创建接口& & 210
9.5.1 类的创建接口& & 214
9.5.2 过滤器的创建接口& & 217
第10章 Internet协议族& & 222
10.1 net_proto_family结构& & 222
10.2 inet_protosw结构& & 223
10.3 net_protocol结构& & 225
10.4 Internet协议族的初始化& & 227
第11章 IP:网际协议& & 231
11.1 引言& & 231
11.1.1 IP首部& & 232
11.1.2 IP数据报的输入与输出& & 233
11.2 IP的私有信息控制块& & 234
11.3 系统参数& & 235
11.4 初始化& & 238
11.5 IP层套接口选项& & 238
11.6 ipv4_devconf结构& & 242
11.7 套接口的错误队列& & 244
11.7.1 添加ICMP差错信息& & 246
11.7.2 添加由本地产生的差错信息& & 247
11.7.3 读取错误信息& & 248
11.8 报文控制信息& & 250
11.8.1 IP控制信息块& & 250
11.8.2 报文控制信息的输出& & 251
11.8.3 报文控制信息的输入& & 252
11.9 对端信息块& & 253
11.9.1 系统参数& & 254
11.9.2 对端信息块的创建和查找& & 255
11.9.3 对端信息块的删除& & 257
11.9.4 垃圾回收& & 257
11.10 IP数据报的输入处理& & 260
11.10.1 IP数据报输入到本地& & 263
11.10.2 IP数据报的转发& & 265
11.11 IP数据报的输出处理& & 269
11.11.1 IP数据报输出到设备& & 269
11.11.2 TCP输出的接口& & 271
11.11.3 UDP输出的接口& & 277
11.12 IP层对GSO的支持& & 292
11.12.1 inet_gso_segment()& & 292
11.12.2 inet_gso_send_check()& & 294
第12章 IP选项处理& & 295
12.1 IP选项& & 295
12.1.1 选项列表的结束符& & 296
12.1.2 空操作& & 296
12.1.3 安全选项& & 296
12.1.4 严格源路由选项& & 297
12.1.5 宽松源路由选项& & 299
12.1.6 记录路由选项& & 299
12.1.7 流标识选项& & 300
12.1.8 时间戳选项& & 300
12.1.9 路由器警告选项& & 301
12.2 ip_options结构& & 301
12.3 在IP数据报中构建IP选项& & 303
12.4 复制IP数据报中选项到指定的ip_options结构& & 304
12.5 处理待发送IP分片中的选项& & 307
12.6 解析IP选项& & 308
12.7 还原在校验IP选项时修改的IP选项& & 314
12.8 处理转发IP数据报中的IP选项& & 315
12.9 处理IP数据报的源路由选项& & 316
12.10 解析并处理IP首部中的IP选项& & 318
12.11 路由警告选项的处理& & 319
12.12 由控制信息生成IP选项信息块& & 319
第13章 IP的分片与组装& & 321
13.1 系统参数& & 321
13.2 分片& & 321
13.2.1 快速分片& & 324
13.2.2 慢速分片& & 327
13.3 组装& & 330
13.3.1 ipq结构& & 330
13.3.2 ipq散列表和链表的维护& & 333
13.3.3 ipq散列表的重组& & 334
13.3.4 超时IP分片的清除& & 335
13.3.5 垃圾收集& & 337
13.3.6 相关分片组装函数& & 338
13.3.7 分片组装& & 346
第14章 ICMP:Internet控制报文协议& & 349
14.1 ICMP报文结构& & 349
14.2 注册ICMP报文类型& & 349
14.3 系统参数& & 349
14.4 ICMP的初始化& & 351
14.5 输入处理& & 352
14.5.1 差错处理& & 356
14.5.2 重定向处理& & 361
14.5.3 请求回显& & 362
14.5.4 时间戳请求& & 363
14.5.5 地址掩码请求和应答& & 365
14.6 输出处理& & 365
14.6.1 发送ICMP报文& & 365
14.6.2 发送回显应答和时间戳应答报文& & 369
第15章 IP组播& & 372
15.1 初始化& & 372
15.2 虚拟接口& & 373
15.2.1 虚拟接口的添加& & 374
15.2.2 虚拟接口的删除:vif_delete()& & 376
15.2.3 查找虚拟接口:ipmr_find_vif()& & 377
15.3 组播转发缓存& & 377
15.3.1 组播转发缓存的创建& & 380
15.3.2 组播转发缓存的删除& & 380
15.3.3 组播转发缓存的查找& & 380
15.3.4 向组播路由守护进程发送报告& & 380
15.4 临时组播转发缓存& & 383
15.4.1 临时组播转发缓存队列& & 384
15.4.2 创建临时组播转发缓存& & 384
15.4.3 用于超时而删除临时组播转发缓存的定时器& & 386
15.4.4 释放临时组播缓存项中保存的临时组播报文& & 387
15.5 外部事件& & 388
15.6 组播套接口选项& & 388
15.6.1 IP_MULTICAST_TTL& & 388
15.6.2 IP_MULTICAST_LOOP& & 389
15.6.3 IP_MULTICAST_IF& & 389
15.6.4 IP_ADD_MEMBERSHIP& & 391
15.6.5 IP_DROP_MEMBERSHIP& & 391
15.6.6 IP_MSFILTER& & 392
15.6.7 IP_BLOCK_SOURCE和IP_UNBLOCK_SOURCE& & 393
15.6.8 IP_ADD_SOURCE_MEMBERSHIP和IP_DROP_SOURCE_MEMBERSHIP& & 394
15.6.9 MCAST_JOIN_GROUP& & 395
15.6.10 MCAST_LEAVE_GROUP& & 395
15.6.11 MCAST_BLOCK_SOURCE和MCAST_UNBLOCK_SOURCE& & 396
15.6.12 MCAST_JOIN_SOURCE_GROUP和MCAST_LEAVE_SOURCE_GROUP& & 396
15.6.13 MCAST_MSFILTER& & 397
15.7 组播选路套接口选项& & 397
15.7.1 MRT_INIT& & 397
15.7.2 MRT_DONE& & 398
15.7.3 MRT_ADD_VIF和MRT_DEL_VIF& & 398
15.7.4 MRT_ADD_MFC和MRT_DEL_MFC& & 399
15.7.5 MRT_ASSERT& & 399
15.8 组播的IOCTLS& & 399
15.8.1 SIOCGETVIFCNT& & 399
15.8.2 SIOCGETSGCNT& & 399
15.9 组播报文的输入& & 400
15.10 组播报文的转发& & 402
15.10.1 ip_mr_forward()& & 402
15.10.2 ipmr_queue_xmit()& & 404
15.11 组播报文的输出& & 407
第16章 IGMP:Internet组管理协议& & 409
16.1 in_device结构中的组播参数& & 409
16.2 ip_mc_list结构& & 410
16.3 系统参数& & 412
16.4 IGMP的版本与协议结构& & 412
16.4.1 IGMP的版本& & 412
16.4.2 第一版和第二版的IGMP报文结构& & 413
16.4.3 第三版的IGMP查询报文结构& & 414
16.4.4 第三版的IGMP报告结构& & 415
16.5 IGMP报文的输入& & 417
16.6 函数& & 419
16.6.1 ip_mc_find_dev()& & 419
16.6.2 ip_check_mc()& & 419
16.7 成员关系查询& & 419
16.8 成员关系报告& & 423
16.8.1 最近离开组播组列表的维护& & 423
16.8.2 is_in()& & 423
16.8.3 add_grec()& & 425
16.8.4 普通查询的报告& & 428
16.8.5 V1和V2的报告以及V3的当前状态记录报告& & 430
16.8.6 主动发送组关系报告& & 433
16.9 维护套接口组播状态& & 436
16.9.1 套接口加入组播组& & 437
16.9.2 套接口离开组播组& & 439
16.10 维护网络设备组播状态& & 439
16.10.1 被阻止的组播源列表的维护& & 441
16.10.2 网络设备加入组播组& & 441
16.10.3 网络设备离开组播组& & 446
16.11 ip_mc_source()& & 451
16.12 ip_mc_msfilter()& & 455
16.13 网络设备组播硬件地址的管理& & 457
第17章 邻居子系统& & 459
17.1 邻居子系统概念& & 459
17.2 系统参数& & 459
17.3 邻居子系统的结构& & 460
17.3.1 neigh_table结构& & 461
17.3.2 neighbour结构& & 464
17.3.3 neigh_ops结构& & 466
17.3.4 neigh_parms结构& & 467
17.3.5 pneigh_entry结构& & 469
17.3.6 neigh_statistics结构& & 469
17.3.7 hh_cache结构& & 470
17.4 邻居表的初始化& & 471
17.5 邻居项的状态机& & 472
17.6 邻居项的添加与删除& & 474
17.6.1 netlink接口& & 474
17.6.2 ioctl& & 478
17.6.3 路由表项与邻居项的绑定& & 478
17.6.4 接收到的并非请求的应答& & 478
17.7 邻居项的创建与初始化& & 478
17.7.1 neigh_alloc()& & 478
17.7.2 neigh_create()& & 479
17.8 邻居项散列表的扩容& & 481
17.9 邻居项的查找& & 482
17.9.1 neigh_lookup()& & 482
17.9.2 neigh_lookup_nodev()& & 483
17.9.3 __neigh_looku()和neigh_lookup_errno()& & 483
17.10 邻居项的更新& & 483
17.11 垃圾回收& & 488
17.11.1 同步回收& & 488
17.11.2 异步回收& & 489
17.12 外部事件& & 491
17.13 邻居项状态处理定时器& & 491
17.14 代理项& & 494
17.14.1 代理项的查找、添加和删除& & 494
17.14.2 延时处理代理的请求报文& & 494
17.15 输出函数& & 496
17.15.1 丢弃& & 496
17.15.2 慢速发送& & 497
17.15.3 快速发送& & 500
第18章 ARP-地址解析协议& & 502
18.1 ARP报文格式& & 502
18.2 系统参数& & 503
18.3 注册ARP报文类型& & 505
18.4 ARP初始化& & 505
18.5 ARP的邻居项函数指针表& & 505
18.6 ARP表& & 506
18.7 函数& & 507
18.7.1 arp_error_report()& & 507
18.7.2 arp_solicit()& & 507
18.7.3 arp_ignore()& & 509
18.7.4 arp_filter()& & 510
18.8 IPv4中邻居项的初始化& & 510
18.9 ARP报文的创建& & 512
18.10 ARP的输出& & 513
18.11 ARP的输入& & 514
18.11.1 arp_rcv()& & 514
18.11.2 arp_process()& & 515
18.12 ARP代理& & 521
18.12.1 arp_process()& & 521
18.12.2 arp_fwd_proxy()& & 522
18.12.3 parp_redo()& & 523
18.13 ARP的IOCTLS& & 523
18.14 外部事件& & 524
18.15 路由表项与邻居项的绑定& & 525
丰衣足食, 积分 649, 距离下一级还需 351 积分
论坛徽章:0
本帖最后由 lmarsin 于
10:22 编辑
第19章 路由表& & 526
19.1 概念& & 526
19.1.1 构成的路由的要素& & 526
19.1.2 特殊路由& & 528
19.1.3 路由缓存& & 528
19.2 系统参数& & 529
19.3 路由表组成结构& & 529
19.3.1 fib_table结构& & 532
19.3.2 fn_zone结构& & 533
19.3.3 fib_node结构& & 534
19.3.4 fib_alias结构& & 534
19.3.5 fib_info结构& & 535
19.3.6 fib_nh结构& & 537
19.4 路由表的初始化& & 538
19.5 netlink接口& & 539
19.5.1 netlink路由表项消息结构& & 540
19.5.2 inet_rtm_newroute()& & 542
19.5.3 inet_rtm_delroute()& & 542
19.6 获取指定的路由表& & 543
19.7 路由表项的添加& & 543
19.8 路由表项的删除& & 549
19.9 外部事件& & 550
19.9.1 网络设备状态变化事件& & 551
19.9.2 IP地址变化事件& & 552
19.9.3 fib_add_ifaddr()& & 552
19.9.4 fib_del_ifaddr()& & 554
19.9.5 fib_disable_ip()& & 557
19.9.6 fib_magic()& & 557
19.10 选路& & 558
19.10.1 输入选路:ip_route_input_slow()& & 558
19.10.2 组播输入选路:ip_route_input_mc()& & 563
19.10.3 输出选路:ip_route_output_slow()& & 565
19.10.4 fib_lookup()& & 570
19.10.5 fn_hash_lookup()& & 571
19.11 ICMP重定向消息的发送& & 572
第20章 路由缓存& & 574
20.1 系统参数& & 574
20.2 路由缓存的组织结构& & 575
20.2.1 rtable结构& & 575
20.2.2 flowi结构& & 578
20.2.3 dst_entry结构& & 580
20.2.4 dst_ops结构& & 582
20.3 初始化& & 584
20.4 创建路由缓存项& & 586
20.4.1 创建输入路由缓存项& & 586
20.4.2 创建输出路由缓存项& & 589
20.5 添加路由表项到缓存中:rt_intern_hash()& & 592
20.6 输入路由缓存查询:ip_route_input()& & 594
20.7 输出路由缓存查询& & 596
20.7.1 ip_route_output_key& & 597
20.7.2 __ip_route_output_key()& & 597
20.8 垃圾回收& & 598
20.8.1 路由缓存项的过期& & 598
20.8.2 判断缓存路由表项是否可被删除& & 599
20.8.3 同步清理& & 599
20.8.4 异步清理& & 605
20.8.5 路由缓存项的释放& & 607
20.9 刷新缓存& & 607
20.9.1 通过定时器定时刷新& & 608
20.9.2 网络设备的硬件地址发生改变& & 608
20.9.3 网络设备状态发生变化& & 608
20.9.4 给设备添加或删除一个IP地址& & 609
20.9.5 全局转发状态或设备的转发状态发生变化& & 609
20.9.6 一条路由被删除& & 609
20.9.7 通过写/proc的flush文件& & 609
20.10 ICMP重定向消息的处理& & 609
20.11 ICMP目的不可达,需要分片消息的处理& & 613
第21章 路由策略& & 615
21.1 路由策略组织结构& & 615
21.1.1 fib_rules_op结构& & 616
21.1.2 fib_rule结构& & 617
21.1.3 fib4_rule结构& & 619
21.2 三个缺省路由策略& & 620
21.3 IPv4协议族的fib_rules_ops结构实例& & 620
21.3.1 fib4_rule_action()& & 620
21.3.2 fib4_rule_match()& & 621
21.3.3 fib4_rule_configure()& & 622
21.3.4 fib4_rule_compare()& & 623
21.3.5 fib4_rule_fill()& & 623
21.3.6 fib4_rule_default_pref()& & 624
21.4 netlink接口& & 624
21.4.1 netlink路由策略消息结构& & 625
21.4.2 fib_nl_newrule()& & 626
21.4.3 fib_nl_delrule()& & 628
21.5 受网络设备状态改变的影响& & 629
21.6 策略路由的查找& & 630
第22章 套接口层& & 632
22.1 socket结构& & 633
22.2 proto_ops结构& & 635
22.3 套接口文件系统& & 636
22.3.1 套接口文件系统类型& & 637
22.3.2 套接口文件系统超级块操作接口& & 637
22.3.3 套接口文件的inode& & 637
22.3.4 sock_alloc_inode()& & 637
22.3.5 sock_destroy_inode()& & 638
22.4 套接口文件& & 638
22.4.1 套接口文件与套接口的绑定& & 639
22.4.2 根据文件描述符获取套接口& & 641
22.5 进程、文件描述符和套接口& & 642
22.6 套接口层的系统初始化& & 643
22.7 套接口系统调用& & 644
22.7.1 套接口系统调用入口& & 645
22.7.2 socket系统调用& & 648
22.7.3 bind系统调用& & 656
22.7.4 listen系统调用& & 660
22.7.5 accept系统调用& & 660
22.7.6 connect系统调用& & 662
22.7.7 shutdown系统调用.& & 664
22.7.8 close系统调用& & 666
22.7.9 select系统调用的实现& & 668
第23章 套接口I/O& & 670
23.1 输出/输入数据的组织& & 670
23.1.1 msghdr结构& & 670
23.1.2 verify_iovec()& & 672
23.1.3 memcpy_toiovec()& & 673
23.1.4 memcpy_fromiovec()& & 673
23.1.5 memcpy_fromiovecend()& & 673
23.1.6 csum_partial_copy_fromiovecend()& & 673
23.2 输出系统调用& & 674
23.2.1 sock_sendmsg()& & 674
23.2.2 sendto系统调用& & 674
23.2.3 send系统调用& & 675
23.2.4 sendmsg系统调用& & 675
23.3 输入系统调用& & 678
第24章 套接口选项& & 680
24.1 setsockopt系统调用& & 680
24.2 ioctl系统调用& & 685
24.2.1 ioctl在文件系统内的调用过程& & 685
24.2.2 套接口文件ioctl调用接口的实现& & 686
24.2.3 套接口层的实现& & 688
24.3 getsockname系统调用& & 689
24.4 getpeername系统调用& & 691
第25章 传输控制块& & 692
25.1 系统参数& & 693
25.2 传输描述块结构& & 693
25.2.1 sock_common结构& & 693
25.2.2 sock结构& & 694
25.2.3 inet_sock结构& & 701
25.3 proto结构& & 705
25.3.1 proto实例组织结构& & 708
25.3.2 proto_register()& & 708
25.3.3 proto_unregister()& & 710
25.4 传输控制块的内存管理& & 711
25.4.1 传输控制块的分配和释放& & 711
25.4.2 普通的发送缓存区的分配& & 713
25.4.3 发送缓存的分配与释放& & 717
25.4.4 接收缓存的分配与释放& & 718
25.4.5 辅助缓存的分配与释放& & 719
25.5 异步IO机制& & 720
25.5.1 sk_wake_async()& & 721
25.5.2 sock_def_wakeup()& & 722
25.5.3 sock_def_error_report()& & 723
25.5.4 sock_def_readable()& & 723
25.5.5 sock_def_write_space()和sk_stream_write_space()& & 723
25.5.6 sk_send_sigurg()& & 724
25.5.7 接收到FIN段后通知进程& & 724
25.5.8 sock_fasync()& & 725
25.6 传输控制块的同步锁& & 726
25.6.1 socket_lock_t结构& & 726
25.6.2 控制用户进程和下半部间同步锁& & 727
25.6.3 控制下半部间同步锁& & 731
第26章 TCP:传输控制协议& & 732
26.1 系统参数& & 732
26.2 TCP的inet_protosw实例& & 738
26.3 TCP的net_protocol结构& & 739
26.4 TCP传输控制块& & 739
26.4.1 inet_connection_sock结构& & 739
26.4.2 inet_connection_sock_af_ops结构& & 743
26.4.3 tcp_sock结构& & 745
26.4.4 tcp_options_received结构& & 754
26.4.5 tcp_skb_cb结构& & 756
26.5 TCP的proto结构和proto_ops结构的实例& & 757
26.6 TCP状态迁移图& & 758
26.7 TCP首部& & 759
26.8 TCP校验和& & 760
26.8.1 输入TCP段的校验和检测& & 761
26.8.2 输出TCP段校验和的计算& & 762
26.9 TCP的初始化& & 762
26.10 TCP传输控制块的管理& & 765
26.10.1 inet_hashinfo结构& & 765
26.10.2 管理除LISTEN状态之外的TCP传输控制块& & 767
26.10.3 管理LISTEN状态的TCP传输控制块& & 768
26.11 TCP层的套接口选项& & 768
26.12 TCP的IOCTL& & 770
26.13 TCP传输控制块的初始化& & 770
26.14 TCP的差错处理& & 771
26.15 TCP传输控制块层的缓存管理& & 774
26.15.1 缓存管理的算法& & 775
26.15.2 发送缓存的管理& & 778
26.15.3 接收缓存的管理& & 779
第27章 TCP的定时器& & 780
27.1 初始化& & 780
27.2 连接建立定时器& & 781
27.2.1 连接建立定时器处理函数& & 781
27.2.2 连接建立定时器的激活& & 785
27.3 重传定时器& & 785
27.3.1 重传定时器处理函数& & 785
27.3.2 重传定时器的激活& & 790
27.4 延迟确认定时器& & 790
27.4.1 延时确认定时器的处理函数& & 790
27.4.2 延时确认定时器的激活& & 792
27.5 持续定时器& & 792
27.5.1 持续定时器处理函数& & 792
27.5.2 激活持续定时器& & 796
27.6 保活定时器& & 797
27.6.1 保活定时器处理函数& & 797
27.6.2 激活保活定时器& & 799
27.7 FIN_WAIT_2定时器& & 799
27.7.1 FIN_WAIT_2定时器处理函数& & 799
27.7.2 激活FIN_WAIT_2定时器& & 800
27.8 TIME_WAIT定时器& & 800
第28章 TCP连接的建立& & 801
28.1 服务端建立连接过程& & 801
28.2 连接相关的数据结构& & 804
28.2.1 request_sock_queue结构& & 804
28.2.2 listen_sock结构& & 805
28.2.3 tcp_request_sock结构& & 806
28.2.4 request_sock_ops结构& & 809
28.3 bind系统调用的实现& & 809
28.3.1 bind端口散列表& & 809
28.3.2 传输接口层的实现& & 810
28.4 listen系统调用的实现& & 813
28.4.1 inet_listen()& & 813
28.4.2 实现侦听:inet_csk_listen_start()& & 814
28.4.3 分配连接请求块散列表:reqsk_queue_alloc()& & 815
28.5 accept系统调用的实现& & 817
28.5.1 套接口层的实现:inet_accept()& & 817
28.5.2 传输接口层的实现:inet_csk_accept()& & 817
28.6 被动打开& & 820
28.6.1 SYN cookies& & 820
28.6.2 第一次握手:接收SYN段& & 820
28.6.3 第二次握手:发送SYN+ACK段& & 829
28.6.4 第三次握手:接收ACK段& & 833
28.7 connect系统调用的实现& & 849
28.7.1 套接口层的实现:inet_stream_connect()& & 849
28.7.2 传输接口层的实现& & 852
28.8 主动打开& & 852
28.8.1 第一次握手:发送SYN段& & 852
28.8.2 第二次握手:接收SYN+ACK段& & 860
28.8.3 第三次握手:发送ACK段& & 865
28.9 同时打开& & 865
28.9.1 SYN_SENT状态接收SYN段& & 866
28.9.2 SYN_RECV状态接收SYN+ACK段& & 867
第29章 TCP拥塞控制的实现& & 868
29.1 拥塞控制引擎& & 868
29.2 拥塞控制状态机& & 869
29.2.1 Open状态& & 870
29.2.2 Disorder状态& & 870
29.2.3 CWR状态& & 870
29.2.4 Recovery状态& & 871
29.2.5 Loss状态& & 871
29.3 拥塞窗口调整撤销& & 873
29.3.1 撤销拥塞窗口的检测& & 874
29.3.2 tcp_undo_cwr()& & 874
29.3.3 从Disorder拥塞状态撤销& & 875
29.3.4 从Recovery状态撤销& & 875
29.3.5 从Recovery拥塞状态撤销& & 876
29.3.6 从Loss拥塞状态撤销& & 876
29.4 显式通塞通知& & 877
29.4.1 IP对ECN的支持& & 877
29.4.2 TCP对ECN的支持& & 878
29.5 拥塞控制状态的处理及转换& & 879
29.5.1 拥塞控制状态的处理:tcp_fastretrans_alert()& & 880
29.5.2 拥塞避免& & 889
29.6 拥塞窗口的检测:tcp_cwnd_test()& & 889
29.7 F-RTO算法& & 890
29.7.1 进入F-RTO算法处理阶段& & 890
29.7.2 进行F-RTO算法处理& & 892
29.8 拥塞窗口的检验& & 894
29.8.1 tcp_event_data_sent()& & 895
29.8.2 tcp_cwnd_validate()& & 895
29.9 支持多拥塞控制算法的机制& & 896
29.9.1 接口& & 896
29.9.2 注册拥塞控制算法:tcp_register_congestion_control()& & 898
29.9.3 注销拥塞控制算法:tcp_unregister_congestion_control()& & 898
29.9.4 选取某种拥塞控制算法: tcp_set_congestion_control()& & 899
29.9.5 Linux支持的拥塞控制算法& & 900
第30章 TCP的输出& & 901
30.1 引言& & 901
30.2 最大段长度(MSS)& & 904
30.3 sendmsg系统调用在TCP中的实现& & 907
30.3.1 分割TCP段& & 907
30.3.2 套接口层的实现& & 908
30.3.3 传输接口层的实现& & 908
30.4 对TCP选项的处理& & 926
30.4.1 构建SYN段的选项& & 926
30.4.2 构建非SYN段的选项& & 928
30.5 Nagle算法& & 930
30.6 ACK的接收& & 930
30.6.1 tcp_ack()& & 931
30.6.2 发送窗口的更新& & 936
30.6.3 根据SACK选项标记重传队列中段的记分牌& & 937
30.6.4 重传队列中已经确认段的删除& & 948
30.7 往返时间测量和RTO的计算& & 951
30.8 路径MTU发现& & 953
30.8.1 路径MTU发现原理& & 953
30.8.2 路径MTU发现时的黑洞& & 954
30.8.3 有关数据结构的初始化& & 954
30.8.4 创建路径MTU发现TCP段并发送& & 954
30.8.5 路径MTU发现失败后处理& & 958
30.8.6 处理需要分片ICMP目的不可达报文& & 958
30.8.7 更新当前有效的MSS& & 959
30.8.8 路径MTU发现成功后处理& & 960
30.9 TCP重传接口& & 960
第31章 TCP的输入& & 964
31.1 引言& & 964
31.2 TCP接收的总入口& & 965
31.2.1 接收到prequeue队列& & 968
31.2.2 有效TCP段的处理& & 969
31.3 报文的过滤& & 970
31.3.1 过滤器的数据结构& & 971
31.3.2 安装过滤器& & 973
31.3.3 卸载过滤器& & 975
31.3.4 过滤执行& & 976
31.4 ESTABLISHED状态的接收& & 976
31.4.1 首部预测& & 977
31.4.2 接收处理无负荷的ACK段& & 979
31.4.3 执行快速路径& & 980
31.4.4 执行慢速路径& & 984
31.4.5 数据从内核空间复制到用户空间& & 987
31.4.6 通过调节接收窗口来进行流量控制& & 991
31.4.7 确定是否需要发送ACK段(用于接收的数据从内核空间复制到用户空间时)& & 995
31.5 TCP选项的处理& & 996
31.5.1 慢速路径中快速解析TCP选项& & 996
31.5.2 全面解析TCP选项& & 997
31.6 慢速路径的数据处理& & 1000
31.6.1 接收处理预期的段& & 1002
31.6.2 接收处理在接收窗口之外的段& & 1004
31.6.3 接收处理乱序的段& & 1005
31.6.4 tcp_ofo_queue()& & 1008
31.7 带外数据处理& & 1009
31.7.1 检测紧急指针& & 1010
31.7.2 读取带外数据& & 1011
31.8 SACK选项& & 1012
31.8.1 SACK允许选项& & 1013
31.8.2 SACK选项& & 1013
31.8.3 SACK的产生& & 1013
31.8.4 发送方对SACK的响应& & 1014
31.8.5 实现& & 1014
31.9 确认的发送& & 1015
31.9.1 快速确认模式& & 1015
31.9.2 处理数据接收事件& & 1016
31.9.3 发送确认紧急程度和状态& & 1017
31.9.4 延迟或快速确认& & 1019
31.10 recvmsg系统调用在TCP中的实现& & 1020
31.10.1 套接口层的实现& & 1020
31.10.2 传输接口层的实现& & 1020
31.11 sk_backlog_rcv接口& & 1031
第32章 TCP连接的终止& & 1032
32.1 连接终止过程& & 1033
32.1.1 正常关闭& & 1033
32.1.2 同时关闭& & 1034
32.2 shutdown传输接口层的实现& & 1034
32.2.1 tcp_shutdown()& & 1034
32.2.2 tcp_send_fin()& & 1035
32.3 close传输接口层的实现:tcp_close()& & 1035
32.4 被动关闭:FIN段的接收处理& & 1040
32.5 主动关闭& & 1042
32.5.1 timewait控制块的数据结构& & 1042
32.5.2 timewait控制块取代TCP传输控制块& & 1046
32.5.3 启动FIN_WAIT_2或TIME_WAIT定时器& & 1049
32.5.4 CLOSE_WAIT、LAST_ACK 、FIN_WAIT1、FIN_WAIT2、CLOSING状态处理& & 1051
32.5.5 FIN_WAIT2和TIME_WAIT状态处理& & 1054
32.5.6 timewait控制块的2MSL超时处理& & 1061
第33章 UDP:用户数据报& & 1065
33.1 引言& & 1065
33.1.1 UDP首部& & 1065
33.1.2 UDP的输入与输出& & 1066
33.2 UDP的inet_protosw结构& & 1067
33.3 UDP的传输控制块& & 1067
33.4 UDP的proto结构和proto_ops结构的实例& & 1069
33.5 UDP的状态& & 1069
33.6 UDP传输控制块的管理& & 1069
33.7 bind系统调用的实现& & 1070
33.8 UDP套接口的关闭& & 1073
33.9 connect系统调用的实现& & 1074
33.9.1 udp_disconnect()& & 1075
33.9.2 ip4_datagram_connect()& & 1075
33.10 select系统调用的实现& & 1077
33.11 UDP的IOCTL& & 1079
33.12 UDP的套接口选项& & 1079
33.13 UDP校验和& & 1080
33.13.1 输入UDP数据报的校验和检测& & 1081
33.13.2 输出UDP数据报校验和的计算& & 1082
33.14 UDP的输出:sendmsg系统调用& & 1082
33.14.1 udp_sendmsg()& & 1083
33.14.2 udp_push_pending_frames()& & 1090
33.15 UDP的输入& & 1092
33.15.1 UDP接收的入口:udp_rcv()& & 1092
33.15.2 UDP组播数据报输入:__udp4_lib_mcast_deliver()& & 1096
33.15.3 udp_queue_rcv_skb()& & 1097
33.16 recvmsg系统调用的实现& & 1099
33.17 UDP的差错处理:udp_err()& & 1103
33.18 轻量级UDP& & 1105
小富即安, 积分 2140, 距离下一级还需 2860 积分
论坛徽章:0
看来搞技术的,出书也是一条路。
有没有电子无码版放出?
白手起家, 积分 197, 距离下一级还需 3 积分
论坛徽章:0
这个真不错&&比前面的几本要好 比国外那本写2.4的还要全一些了
白手起家, 积分 197, 距离下一级还需 3 积分
论坛徽章:0
最好能加入一章 写研究方法,调试方法,心得体会 毕竟研究了两年半 应该可以得出些方法论的东西
论坛徽章:36
该书和《追踪LINUX TCP/IP代码运行》不是同一个吧。
最近分析内核网络的书不少啊。多谢各位高手分享自己的经验和总结。
大富大贵, 积分 13787, 距离下一级还需 6213 积分
论坛徽章:0
支持一下,出来的时候买一本!
白手起家, 积分 40, 距离下一级还需 160 积分
论坛徽章:0
期待中,不知道要多少钱啊?
论坛徽章:36
网上搜不到这本书。LZ能否给个连接。。。
丰衣足食, 积分 649, 距离下一级还需 351 积分
论坛徽章:0
样章提供了完整的《TCP的输出》
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处

我要回帖

更多关于 linux 内核修改tcp包 的文章

 

随机推荐