LINUX内核源码剖析 TCP/IP实现 下PDF电子书下载
- 电子书积分:27 积分如何计算积分?
- 作 者:樊东东,莫澜编著
- 出 版 社:北京:机械工业出版社
- 出版年份:2011
- ISBN:9787111323734
- 页数:1063 页
第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 套接口文件的inode 611
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/O 641
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的ioctl 736
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 cookies 785
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 更新当前有效的MSS 921
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的ioctl 1037
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 轻量级UDP 1061
参考文献 1063
- 《英汉翻译理论的多维阐释及应用剖析》常瑞娟著 2019
- 《区块链DAPP开发入门、代码实现、场景应用》李万胜著 2019
- 《大数据项目管理 从规划到实现》(美)特德·马拉斯卡(Ted Malaska),(美)乔纳森·塞德 2020
- 《新时代背景下碳泄漏的法律规制 理论逻辑与实现路径》姜明 2019
- 《先进模糊智能复合经典PID控制理论与应用及其Matlab实现》刘经纬,朱敏玲,周瑞 2016
- 《数字信号处理原理与实现》刘泉,郭志强主编 2020
- 《AI时代重新定义精益管理 企业如何实现爆发式增长》李科,王润五,肖明涛,张林 2019
- 《如何高效学习 建立你的简单有效学习系统,实现人生跃迁》沙牛著 2019
- 《加密货币与区块链所预见的世界 科技将为我们实现怎样的梦想》田宇韬译;(日本)栗山贤秋,辻川智也,铃木起史 2019
- 《深入理解Linux内核 第3版 影印版》Daniel P.Bovet,Marco Cesati 2019
- 《市政工程基础》杨岚编著 2009
- 《家畜百宝 猪、牛、羊、鸡的综合利用》山西省商业厅组织技术处编著 1959
- 《《道德经》200句》崇贤书院编著 2018
- 《高级英语阅读与听说教程》刘秀梅编著 2019
- 《计算机网络与通信基础》谢雨飞,田启川编著 2019
- 《看图自学吉他弹唱教程》陈飞编著 2019
- 《法语词汇认知联想记忆法》刘莲编著 2020
- 《培智学校义务教育实验教科书教师教学用书 生活适应 二年级 上》人民教育出版社,课程教材研究所,特殊教育课程教材研究中心编著 2019
- 《国家社科基金项目申报规范 技巧与案例 第3版 2020》文传浩,夏宇编著 2019
- 《流体力学》张扬军,彭杰,诸葛伟林编著 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017
- 《新工业时代 世界级工业家张毓强和他的“新石头记”》秦朔 2019
- 《智能制造高技能人才培养规划丛书 ABB工业机器人虚拟仿真教程》(中国)工控帮教研组 2019
- 《AutoCAD机械设计实例精解 2019中文版》北京兆迪科技有限公司编著 2019