图书介绍

LINUX内核源码剖析 TCP/IP实现 下2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

LINUX内核源码剖析 TCP/IP实现 下
  • 樊东东,莫澜编著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111323734
  • 出版时间:2011
  • 标注页数:1063页
  • 文件大小:47MB
  • 文件页数:522页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

LINUX内核源码剖析 TCP/IP实现 下PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第20章 路由缓存551

20.1 系统参数551

20.2 路由缓存的组织结构552

20.2.1 rtable结构552

20.2.2 flowi结构555

20.2.3 dst_entry结构556

20.2.4 dst_ops结构559

20.3 初始化561

20.4 创建路由缓存项563

20.4.1 创建输入路由缓存项563

20.4.2 创建输出路由缓存项565

20.5 添加路由表项到缓存中:rt_intern_hash()568

20.6 输入路由缓存查询:ip_route_input()571

20.7 输出路由缓存查询573

20.7.1 ip_route_output_key()573

20.7.2 _ip_route_output_key()573

20.8 垃圾回收575

20.8.1 路由缓存项的过期575

20.8.2 判断缓存路由表项是否可被删除575

20.8.3 同步清理576

20.8.4 异步清理580

20.8.5 路由缓存项的释放582

20.9 刷新缓存582

20.9.1 通过定时器定时刷新584

20.9.2 网络设备的硬件地址发生改变584

20.9.3 网络设备状态发生变化584

20.9.4 给设备添加或删除一个IP地址584

20.9.5 全局转发状态或设备的转发状态发生变化584

20.9.6 一条路由被删除585

20.9.7 通过写/proc的flush文件585

20.10 ICMP重定向消息的处理585

20.11 ICMP目的不可达,需要分片消息的处理588

第21章 路由策略590

21.1 路由策略组织结构590

21.1.1 fib_rules_ops结构590

21.1.2 fib_rule结构592

21.1.3 fib4_rule结构594

21.2 三个默认路由策略595

21.3 IPv4协议族的fib_rules_ops结构实例595

21.3.1 fib4_rule_action()595

21.3.2 fib4_rule_match()596

21.3.3 fib4_rule_configure()596

21.3.4 fib4_rule_compare()598

21.3.5 fib4_rule_fill()598

21.3.6 fib4_rule_default_pref()599

21.4 netlink接口599

21.4.1 netlink路由策略消息结构599

21.4.2 fib_nl_newrule()600

21.4.3 fib_nl_delrule()602

21.5 受网络设备状态改变的影响604

21.6 策略路由的查找604

第22章 套接口层606

22.1 socket结构607

22.2 proto_ops结构608

22.3 套接口文件系统610

22.3.1 套接口文件系统类型610

22.3.2 套接口文件系统超级块操作接口610

22.3.3 套接口文件的inode611

22.3.4 sock_alloc_inode()611

22.3.5 sock_destroy_inode()612

22.4 套接口文件612

22.4.1 套接口文件与套接口的绑定612

22.4.2 根据文件描述符获取套接口614

22.5 进程、文件描述符和套接口615

22.6 套接口层的系统初始化616

22.7 套接口系统调用617

22.7.1 套接口系统调用入口617

22.7.2 socket系统调用621

22.7.3 bind系统调用629

22.7.4 listen系统调用632

22.7.5 accept系统调用633

22.7.6 connect系统调用635

22.7.7 shutdown系统调用636

22.7.8 close系统调用638

22.7.9 select系统调用的实现640

第23章 套接口I/O641

23.1 输出/输入数据的组织641

23.1.1 msghdr结构641

23.1.2 verify_iovec()643

23.1.3 memcpy_toiovec()644

23.1.4 memcpy_fromiovec()644

23.1.5 memcpy_fromiovecend()644

23.1.6 csum_partial_copy_fromiovecend()644

23.2 输出系统调用644

23.2.1 sock_sendmsg()644

23.2.2 sendto系统调用645

23.2.3 send系统调用646

23.2.4 sendmsg系统调用646

23.3 输入系统调用649

第24章 套接口选项650

24.1 setsockopt系统调用650

24.2 ioctl系统调用655

24.2.1 ioctl在文件系统内的调用过程655

24.2.2 套接口文件ioctl调用接口的实现655

24.2.3 套接口层的实现658

24.3 getsockname系统调用659

24.4 getpeemame系统调用660

第25章 传输控制块661

25.1 系统参数662

25.2 传输描述块结构662

25.2.1 sock_common结构662

25.2.2 sock结构663

25.2.3 inet_sock结构670

25.3 proto结构674

25.3.1 proto实例组织结构677

25.3.2 proto_register()677

25.3.3 proto_unregister()679

25.4 传输控制块的内存管理680

25.4.1 传输控制块的分配和释放680

25.4.2 普通的发送缓存区的分配682

25.4.3 发送缓存的分配与释放685

25.4.4 接收缓存的分配与释放686

25.4.5 辅助缓存的分配与释放688

25.5 异步IO机制688

25.5.1 sk_wake_async()689

25.5.2 sock_def_wakeup()690

25.5.3 sock_def_error_report()690

25.5.4 sock_def_readable()691

25.5.5 sock_def_write_space()和sk_stream_write_space()691

25.5.6 sk_send_sigurg()692

25.5.7 接收到FIN段后通知进程692

25.5.8 sock_fasync()693

25.6 传输控制块的同步锁694

25.6.1 socket_lock_t结构694

25.6.2 控制用户进程和下半部间同步锁695

25.6.3 控制下半部间同步锁698

第26章 TCP:传输控制协议699

26.1 系统参数699

26.2 TCP的inet_protosw实例705

26.3 TCP的net_protocol结构705

26.4 TCP传输控制块706

26.4.1 inet_connection_sock结构706

26.4.2 inet_connection_sock_af_ops结构710

26.4.3 tcp_sock结构711

26.4.4 tcp_options_received结构721

26.4.5 tcp_skb_cb结构723

26.5 TCP的proto结构和proto_ops结构的实例725

26.6 TCP状态迁移图725

26.7 TCP首部726

26.8 TCP校验和727

26.8.1 输入TCP段的校验和检测728

26.8.2 输出TCP段校验和的计算729

26.9 TCP的初始化729

26.10 TCP传输控制块的管理731

26.10.1 inet_hashinfo结构732

26.10.2 管理除LISTEN状态之外的TCP传输控制块733

26.10.3 管理LISTEN状态的TCP传输控制块734

26.11 TCP层的套接口选项735

26.12 TCP的ioctl736

26.13 TCP传输控制块的初始化737

26.14 TCP的差错处理737

26.15 TCP传输控制块层的缓存管理741

26.15.1 缓存管理的算法741

26.15.2 发送缓存的管理744

26.15.3 接收缓存的管理745

第27章 TCP的定时器746

27.1 初始化746

27.2 连接建立定时器747

27.2.1 连接建立定时器处理函数747

27.2.2 连接建立定时器的激活751

27.3 重传定时器751

27.3.1 重传定时器处理函数751

27.3.2 重传定时器的激活756

27.4 延迟确认定时器756

27.4.1 延时确认定时器的处理函数756

27.4.2 延时确认定时器的激活758

27.5 持续定时器758

27.5.1 持续定时器处理函数758

27.5.2 激活持续定时器762

27.6 保活定时器763

27.6.1 保活定时器处理函数763

27.6.2 激活保活定时器764

27.7 FIN_WAIT_2定时器764

27.7.1 FIN_WAIT_2定时器处理函数765

27.7.2 激活FIN_WAIT_2定时器765

27.8 TIME_WAIT定时器766

第28章 TCP连接的建立767

28.1 服务端建立连接过程767

28.2 连接相关的数据结构770

28.2.1 request_sock_queue结构770

28.2.2 listen_sock结构771

28.2.3 tcp_request_sock结构771

28.2.4 request_sock_ops结构774

28.3 bind系统调用的实现775

28.3.1 bind端口散列表775

28.3.2 传输接口层的实现775

28.4 listen系统调用的实现779

28.4.1 inet_listen()779

28.4.2 实现侦听:inet_csk_listen_start()780

28.4.3 分配连接请求块散列表:reqsk_queue_alloc()781

28.5 accept系统调用的实现782

28.5.1 套接口层的实现:inet_accept()782

28.5.2 传输接口层的实现:inet_csk_accept()783

28.6 被动打开785

28.6.1 SYN cookies785

28.6.2 第一次握手:接收SYN段786

28.6.3 第二次握手:发送SYN+ACK段793

28.6.4 第三次握手:接收ACK段798

28.7 connect系统调用的实现813

28.7.1 套接口层的实现:inet_stream_connect()813

28.7.2 传输接口层的实现815

28.8 主动打开816

28.8.1 第一次握手:发送SYN段816

28.8.2 第二次握手:接收SYN+ACK段823

28.8.3 第三次握手:发送ACK段828

28.9 同时打开828

28.9.1 SYN_SENT状态接收SYN段828

28.9.2 SYN_RECV状态接收SYN+ACK段830

第29章 TCP拥塞控制的实现831

29.1 拥塞控制引擎831

29.2 拥塞控制状态机832

29.2.1 Open状态833

29.2.2 Disorder状态833

29.2.3 CWR状态833

29.2.4 Recovery状态834

29.2.5 Loss状态834

29.3 拥塞窗口调整撤销836

29.3.1 撤销拥塞窗口的检测837

29.3.2 tcp_undo_cwr()837

29.3.3 从Disorder拥塞状态撤销838

29.3.4 从Recovery状态撤销838

29.3.5 从Recovery拥塞状态撤销839

29.3.6 从Loss拥塞状态撤销839

29.4 显式拥塞通知840

29.4.1 IP对ECN的支持841

29.4.2 TCP对ECN的支持841

29.5 拥塞控制状态的处理及转换843

29.5.1 拥塞控制状态的处理:tcp_fastretrans_alert()843

29.5.2 拥塞避免852

29.6 拥塞窗口的检测:tcp_cwnd_test()852

29.7 F-RTO算法853

29.7.1 进入F-RTO算法处理阶段853

29.7.2 进行F-RTO算法处理855

29.8 拥塞窗口的检验857

29.8.1 tcp_event_data_sent()857

29.8.2 tcp_cwnd_validate()858

29.9 支持多拥塞控制算法的机制859

29.9.1 接口859

29.9.2 注册拥塞控制算法:tcp_register_congestion_control()861

29.9.3 注销拥塞控制算法:tcp_unregister_congestion_control()861

29.9.4 选取某种拥塞控制算法:tcp_set_congestion_control()861

29.9.5 Linux支持的拥塞控制算法862

第30章 TCP的输出864

30.1 引言864

30.2 最大段长度(MSS)867

30.3 sendmsg系统调用在TCP中的实现870

30.3.1 分割TCP段871

30.3.2 套接口层的实现871

30.3.3 传输接口层的实现871

30.4 对TCP选项的处理889

30.4.1 构建SYN段的选项889

30.4.2 构建非SYN段的选项892

30.5 Nagle算法893

30.6 ACK的接收894

30.6.1 tep_ack()894

30.6.2 发送窗口的更新899

30.6.3 根据SACK选项标记重传队列中段的记分牌900

30.6.4 重传队列中已经确认段的删除910

30.7 往返时间测量和RTO的计算913

30.8 路径MTU发现915

30.8.1 路径MTU发现原理915

30.8.2 路径MTU发现时的黑洞916

30.8.3 有关数据结构的初始化916

30.8.4 创建路径MTU发现TCP段并发送916

30.8.5 路径MTU发现失败后处理920

30.8.6 处理需要分片ICMP目的不可达报文920

30.8.7 更新当前有效的MSS921

30.8.8 路径MTU发现成功后处理922

30.9 TCP重传接口922

第31章 TCP的输入926

31.1 引言926

31.2 TCP接收的总入口927

31.2.1 接收到prequeue队列930

31.2.2 有效TCP段的处理931

31.3 报文的过滤932

31.3.1 过滤器的数据结构933

31.3.2 安装过滤器935

31.3.3 卸载过滤器937

31.3.4 过滤执行938

31.4 ESTABLISHED状态的接收938

31.4.1 首部预测939

31.4.2 接收处理无负荷的ACK段941

31.4.3 执行快速路径942

31.4.4 执行慢速路径945

31.4.5 数据从内核空间复制到用户空间948

31.4.6 通过调节接收窗口进行流量控制952

31.4.7 确定是否需要发送ACK段(用于接收的数据从内核空间复制到用户空间时)956

31.5 TCP选项的处理957

31.5.1 慢速路径中快速解析TCP选项957

31.5.2 全面解析TCP选项958

31.6 慢速路径的数据处理961

31.6.1 接收处理预期的段963

31.6.2 接收处理在接收窗口之外的段965

31.6.3 接收处理乱序的段966

31.6.4 tcp_ofo_queue()969

31.7 带外数据处理970

31.7.1 检测紧急指针970

31.7.2 读取带外数据972

31.8 SACK信息973

31.8.1 SACK允许选项973

31.8.2 SACK选项974

31.8.3 SACK的产生974

31.8.4 发送方对SACK的响应975

31.8.5 实现975

31.9 确认的发送975

31.9.1 快速确认模式976

31.9.2 处理数据接收事件977

31.9.3 发送确认紧急程度和状态978

31.9.4 延迟或快速确认979

31.10 recvmsg系统调用在TCP中的实现980

31.10.1 套接口层的实现980

31.10.2 传输接口层的实现980

31.11 sk_backlog_rcv接口991

第32章 TCP连接的终止992

32.1 连接终止过程993

32.1.1 正常关闭993

32.1.2 同时关闭994

32.2 shutdown传输接口层的实现994

32.2.1 tcp_shutdown()994

32.2.2 tcp_send_fin()995

32.3 close传输接口层的实现:tcp_close()995

32.4 被动关闭:FIN段的接收处理999

32.5 主动关闭1002

32.5.1 timewait控制块的数据结构1002

32.5.2 timewait控制块取代TCP传输控制块1006

32.5.3 启动FIN_WAIT_2或TIME_WAIT定时器1008

32.5.4 CLOSE_WAIT、LAST_ACK、FIN_WAIT1、FIN_WAIT2与CLOSING状态处理1010

32.5.5 FIN_WAIT2和TIME_WAIT状态处理1013

32.5.6 timewait控制块的2MSL超时处理1020

第33章 UDP:用户数据报1023

33.1 引言1023

33.1.1 UDP首部1023

33.1.2 UDP的输入与输出1024

33.2 UDP的inet_protosw结构1024

33.3 UDP的传输控制块1025

33.4 UDP的proto结构和proto_ops结构的实例1027

33.5 UDP的状态1027

33.6 UDP传输控制块的管理1027

33.7 bind系统调用的实现1028

33.8 UDP套接口的关闭1031

33.9 connect系统调用的实现1032

33.9.1 udp_disconnect()1033

33.9.2 ip4_datagram_connect()1033

33.10 select系统调用的实现1034

33.11 UDP的ioctl1037

33.12 UDP的套接口选项1037

33.13 UDP校验和1038

33.13.1 输入UDP数据报校验和的计算1038

33.13.2 输出UDP数据报校验和的计算1039

33.14 UDP的输出:sendmsg系统调用1040

33.14.1 udp_sendmsg()1040

33.14.2 udp_push_pending_frames()1047

33.15 UDP的输入1048

33.15.1 UDP接收的入口:udp_rcv()1048

33.15.2 UDP组播数据报输入:_udp4_lib_mcast_deliver()1052

33.15.3 udp_queue_rcv_skb()1053

33.16 recvmsg系统调用的实现1055

33.17 UDP的差错处理:udp_err()1059

33.18 轻量级UDP1061

参考文献1063

热门推荐