第1部分 網絡棧總體架構
第0章 網絡棧總體架構分析 2
0.1 網絡棧本質及其分層架構 3
0.2 係統調用接口到內核的請求傳遞 6
0.2.1 第一層入口:accept.s文件 10
0.2.2 第二層入口:socket.s文件 10
0.2.3 第三層入口:entry.s文件 15
第2部分 網絡協議
第1章 網絡協議頭文件分析 18
1.1 etherdevice.h頭文件 20
1.2 icmp.h頭文件 21
1.3 if.h頭文件 28
1.4 if_arp.h頭文件 31
1.5 if_ether.h頭文件 34
1.6 if_plip.h頭文件 36
1.7 if_slip.h頭文件 37
1.8 igmp.h頭文件 38
1.9 in.h頭文件 41
1.10 inet.h頭文件 45
1.11 interrupt.h頭文件 46
.1.12 ip.h頭文件 49
1.13 ip_fw.h頭文件 57
1.14 ipx.h頭文件 62
1.15 net.h頭文件 67
1.16 netdevice.h頭文件 73
1.17 notifier.h頭文件 85
1.18 ppp.h頭文件 89
1.19 route.h頭文件 112
1.20 skbuff.h頭文件 115
1.21 socket.h頭文件 122
1.22 sockios.h頭文件 125
1.23 tcp.h頭文件 127
1.24 timer.h頭文件 136
1.25 udp.h頭文件 138
1.26 un.h頭文件 140
1.27 本章小結 140
第3部分 網絡棧實現分析
第2章 bsd socket層實現分析 144
2.1 protocols.c文件 145
2.2 socket.c文件 146
2.2.1 頭文件聲明、全局變量定義、相關函數聲明 148
2.2.2 move_addr_to_kernel和move_addr_to_user函數 150
2.2.3 get_fd函數 150
2.2.4 socki_lookup和sockfd_lookup函數 151
2.2.5 sock_alloc函數 153
2.2.6 sock_release_peer、sock_release和sock_close函數 153
2.2.7 網絡套接字普通文件接口函數 158
2.2.8 sock_awaitconn函數 160
2.2.9 sock_socket函數 162
2.2.10 sock_socketpair函數 164
2.2.11 sock_bind函數 165
2.2.12 sock_listen函數 166
2.2.13 sock_accept函數 167
2.2.14 sock_connect函數 168
2.2.15 sock_getsockname和sock_getpeername函數 170
2.2.16 sock_send和sock_sendto函數 171
2.2.17 sock_recv和sock_recvfrom函數 172
2.2.18 sock_setsockopt和sock_getsockopt函數 173
2.2.19 sock_shutdown函數 174
2.2.20 sock_fcntl函數 175
2.2.21 sys_socketcall函數 175
2.2.22 sock_register和sock_unregister函數 178
2.2.23 proto_init函數 179
2.2.24 sock_init函數 179
2.2.25 socket_get_info函數 180
2.2.26 socket.c文件小結 181
第3章 inet socket層實現分析 182
3.1 af_inet.c文件 183
3.1.1 頭文件聲明、相關宏及變量定義 189
3.1.2 sk_inuse函數 190
3.1.3 get_new_socknum函數 192
3.1.4 put_sock和remove_sock函數 194
3.1.5 destroy_sock函數 196
3.1.6 inet_fcntl函數 198
3.1.7 inet_setsockopt和inet_getsockopt函數 199
3.1.8 inet_autobind函數 200
3.1.9 inet_listen函數 201
3.1.10 def_callback1、def_callback2和def_callback3函數 202
3.1.11 inet_create和inet_dup函數 202
3.1.12 closing和inet_release函數 207
3.1.13 inet_bind函數 209
3.1.14 inet_error函數 212
3.1.15 inet_connect函數 212
3.1.16 inet_socketpair函數 216
3.1.17 inet_accept函數 217
3.1.18 inet_getname函數 219
3.1.19 inet_recvfrom、inet_recv和inet_read函數 221
3.1.20 inet_send、inet_write和inet_sendto函數 222
3.1.21 inet_shutdown函數 223
3.1.22 inet_select和inet_ioctl函數 224
3.1.23 get_sock和get_sock_raw函數 226
3.1.24 inet層操作函數集定義 230
3.1.25 inet_proto_init函數 231
3.1.26 af_inet.c文件小結 233
第4章 傳輸層實現分析 234
4.1 tcp.c文件 235
4.1.1 頭文件聲明、相關變量及宏定義 241
4.1.2 tcp_set_state函數 242
4.1.3 tcp_select_window函數 243
4.1.4 tcp_find_established、tcp_dequeue_established和tcp_accept函數 244
4.1.5 tcp_close_pending函數 247
4.1.6 tcp_time_wait函數 248
4.1.7 tcp協議超時重傳處理函數集 248
4.1.8 tcp_err函數 258
4.1.9 tcp_readable函數 260
4.1.10 tcp_listen_select函數 262
4.1.11 tcp_select函數 263
4.1.12 tcp_ioctl函數 265
4.1.13 tcp_check和tcp_send_check函數 266
4.1.14 tcp_send_skb函數 268
4.1.15 tcp_dequeue_partial、tcp_send_partial和tcp_enqueue_partial函數 272
4.1.16 tcp_send_ack函數 274
4.1.17 tcp_build_header函數 276
4.1.18 tcp_write函數 277
4.1.19 tcp_sendto函數 286
4.1.20 tcp_read_wakeup和tcp_write_wakeup函數 287
4.1.21 cleanup_rbuf函數 291
4.1.22 tcp_read_urg函數 293
4.1.23 tcp_read函數 295
4.1.24 tcp_close_state函數 305
4.1.25 tcp_send_fin函數 307
4.1.26 tcp_shutdown函數 309
4.1.27 tcp_recvfrom函數 311
4.1.28 tcp_reset函數 312
4.1.29 tcp_options函數 314
4.1.30 default_mask和tcp_init_seq函數 316
4.1.31 tcp_conn_request函數 318
4.1.32 tcp_close函數 326
4.1.33 tcp_write_xmit函數 328
4.1.34 tcp_ack函數 331
4.1.35 tcp_fin函數 349
4.1.36 tcp_data函數 355
4.1.37 tcp_check_urg和tcp_urg函數 365
4.1.38 tcp_accept函數 368
4.1.39 tcp_connect函數 369
4.1.40 tcp_sequence函數 372
4.1.41 tcp_std_reset函數 374
4.1.42 tcp_send_probe0函數 375
4.1.43 tcp_setsockopt和tcp_getsockopt函數 376
4.1.44 tcp_rcv函數 378
4.1.45 tcp協議操作函數集定義 391
4.1.46 tcp.c文件小結 392
4.2 tcp.h頭文件 393
4.3 udp.c文件 397
4.3.1 頭文件聲明、變量及宏定義和函數聲明 398
4.3.2 udp_err函數 399
4.3.3 udp_check和udp_send_check函數 401
4.3.4 udp_send、udp_sendto和udp_write函數 403
4.3.5 udp_ioctl函數 407
4.3.6 udp_recvfrom和udp_read函數 408
4.3.7 udp_connect函數 411
4.3.8 udp_close函數 411
4.3.9 udp_rcv函數 412
4.3.10 udp_deliver函數 416
4.3.11 udp協議操作函數集定義 417
4.4 udp.h頭文件 417
4.5 sock.h頭文件 419
4.6 sock.c文件 427
4.6.1 頭文件聲明、相關宏定義 429
4.6.2 sock_setsockopt和sock_getsockopt函數 430
4.6.3 sock_wmalloc和sock_rmalloc函數 434
4.6.4 sock_rspace和sock_wspace函數 436
4.6.5 sock_wfree和sock_rfree函數 437
4.6.6 sock_alloc_send_skb函數 438
4.6.7 sock_queue_rcv_skb函數 440
4.6.8 release_sock函數 440
4.7 datagram.c文件 442
4.7.1 skb_recv_datagram函數 443
4.7.2 skb_free_datagram函數 446
4.7.3 skb_copy_datagram函數 447
4.7.4 datagram_select函數 447
4.8 icmp.c文件 449
4.8.1 頭文件聲明、變量定義 450
4.8.2 icmp_send函數 451
4.8.3 icmp_unreach函數 456
4.8.4 icmp_redirect函數 458
4.8.5 icmp_echo函數 461
4.8.6 icmp_timestamp函數 463
4.8.7 icmp_info函數 467
4.8.8 icmp_address函數 467
4.8.9 icmp_rcv函數 469
4.8.10 icmp_ioctl函數 473
4.8.11 icmp.c文件小結 473
4.9 icmp.h頭文件 474
4.10 igmp.c文件* 475
4.10.1 igmp_stop_timer、igmp_start_timer、igmp_timer_exp ire、igmp_init_timer和random函數 481
4.10.2 igmp_send_report函數 483
4.10.3 igmp_heard_report和igmp_heard_query函數 483
4.10.4 ip_mc_map函數 484
4.10.5 ip_mc_filter_add和ip_mc_filter_del函數 484
4.10.6 igmp_group_dropped和igmp_group_added函數 485
4.10.7 igmp_rcv函數 486
4.10.8 ip_mc_inc_group和ip_mc_dec_group函數 487
4.10.9 ip_mc_join_group和ip_mc_leave_group函數 489
4.10.10 ip_mc_drop_device函數 491
4.10.11 ip_mc_allhost函數 492
4.10.12 ip_mc_drop_socket函數 492
4.10.13 igmp.c文件小結 493
4.11 snmp.h頭文件 493
4.12 protocol.h頭文件 496
4.13 protocol.c文件 498
4.14 proc.c文件 503
第5章 網絡層實現分析 509
5.1 route.h頭文件 510
5.2 route.c文件 512
5.2.1 頭文件聲明、係統變量定義 512
5.2.2 rt_del函數 513
5.2.3 ip_rt_flush函數 514
5.2.4 default_mask和guess_mask函數 515
5.2.5 get_gw_dev函數 516
5.2.6 ip_rt_add函數 517
5.2.7 bad_mask函數 521
5.2.8 rt_new函數 522
5.2.9 rt_kill函數 525
5.2.10 rt_get_info函數 526
5.2.11 ip_rt_route和ip_rt_local函數 527
5.2.12 ip_get_old_rtent函數 530
5.2.13 ip_rt_ioctl函數 530
5.2.14 route.c文件小結 531
5.3 ip.h頭文件 532
5.4 ip.c文件 535
5.4.1 頭文件聲明、變量定義 537
5.4.2 ip_ioctl函數 538
5.4.3 strict_route、loose_route和ip_route_check函數 539
5.4.4 build_options函數 539
5.4.5 ip_send和ip_build_header函數 540
5.4.6 do_options函數 546
5.4.7 ip_compute_csum和ip_send_check函數 550
5.4.8 ip_frag_create函數 554
5.4.9 ip_find函數 554
5.4.10 ip_free函數 555
5.4.11 ip_expire函數 556
5.4.12 ip_create函數 557
5.4.13 ip_done函數 559
5.4.14 ip_glue函數 560
5.4.15 ip_defrag函數 564
5.4.16 ip_fragment函數 570
5.4.17 ip_forward函數 577
5.4.18 ip_rcv函數 584
5.4.19 ip_loopback函數 595
5.4.20 ip_queue_xmit函數 596
5.4.21 ip_mc_procinfo函數 603
5.4.22 ip_setsockopt和ip_getsockopt函數 604
5.4.23 ip_rt_event函數 611
5.4.24 ip_init函數 612
5.4.25 ip.c文件小結 612
5.5 ip_fw.c文件 613
5.5.1 頭文件聲明、宏及係統變量定義 614
5.5.2 port_match函數 616
5.5.3 ip_fw_chk函數 616
5.5.4 zero_fw_chain函數 625
5.5.5 free_fw_chain函數 626
5.5.6 add_to_chain和del_from_chain函數 626
5.5.7 check_ipfw_struct函數 634
5.5.8 ip_acct_cnt函數 635
5.5.9 ip_acct_ctl,ip_fw_ctl函數 636
5.5.10 ip_chain_procinfo函數 640
5.5.11 ip_acct_procinfo、ip_fw_blk_procinfo和ip_fw_fwd_pro cinfo函數 642
5.5.12 ip_fw.c文件小結 643
5.6 raw.c文件 645
5.6.1 raw_err函數 646
5.6.2 raw_rcv函數 647
5.6.3 raw_sendto和raw_write函數 648
5.6.4 raw_close函數 652
5.6.5 raw_init函數 652
5.6.6 raw_recvfrom和raw_read函數 652
5.6.7 raw協議操作函數集定義 654
5.6.8 raw.c文件小結 654
5.7 raw.h頭文件 655
5.8 packet.c文件 656
5.8.1 packet_rcv函數 659
5.8.2 packet_sendto和packet_write函數 660
5.8.3 packet_close函數 663
5.8.4 packet_init函數 664
5.8.5 packet_recvfrom和packet_read函數 665
5.8.6 packet協議操作函數集定義 667
5.8.7 packet.c文件小結 667
第6章 鏈路層實現分析 669
6.1 dev_mcast.c文件 671
6.1.1 dev_mc_add函數 673
6.1.2 dev_mc_upload函數 674
6.1.3 dev_mc_delete函數 676
6.1.4 dev_mc_discard函數 676
6.2 p8022.h頭文件 677
6.3 p8022call.h頭文件 677
6.4 datalink.h頭文件 680
6.5 p8022.c文件 680
6.5.1 find_8022_client函數 681
6.5.2 p8022_rcv函數 681
6.5.3 p8022_datalink_header函數 682
6.5.4 802.2協議模塊注冊 683
6.5.5 register_8022_client函數 683
6.5.6 p8022.c文件小結 684
6.6 psnap.h頭文件 685
6.7 psnapcall.h頭文件 686
6.8 psnap.c文件 686
6.8.1 find_snap_client函數 687
6.8.2 snap_rcv函數 687
6.8.3 snap_datalink_header函數 688
6.8.4 snap_proto_init函數 689
6.8.5 register_snap_client函數 690
6.9 eth.c文件 691
6.9.1 eth_setup函數 693
6.9.2 eth_header和eth_rebuild_header函數 693
6.9.3 eth_type_trans函數 697
6.9.4 eth.c文件小結 698
6.10 eth.h頭文件 698
6.11 p8023.c文件 699
6.11.1 p8023_datalink_header函數 700
6.11.2 make_8023_client函數 700
6.12 arp.c文件 703
6.12.1 arp緩存錶項錶示結構及係統變(常)量定義 705
6.12.2 arp_check_expire函數 708
6.12.3 arp_release_entry函數 710
6.12.4 arp_device_event函數 711
6.12.5 arp_send函數 712
6.12.6 arp_expire_request函數 713
6.12.7 arp_send_q函數 716
6.12.8 arp_destroy函數 718
6.12.9 arp_rcv函數 719
6.12.10 arp_find函數 729
6.12.11 arp_get_info函數 732
6.12.12 arp_lookup函數 734
6.12.13 arp_req_set和arp_req_get函數 735
6.12.14 arp_ioctl函數 739
6.12.15 arp協議注冊、初始化 741
6.12.16 arp.c文件小結 741
6.13 arp.h頭文件 742
6.14 devinit.c文件 742
6.14.1 ip_get_mask函數 744
6.14.2 ip_chk_addr函數 744
6.14.3 ip_my_addr函數 747
6.14.4 ip_dev_check函數 748
6.14.5 devinit.c文件小結 749
6.15 dev.c文件 749
6.15.1 頭文件聲明、係統變量定義 750
6.15.2 dev_add_pack和dev_remove_pack函數 753
6.15.3 dev_get、dev_open和dev_close函數 754
6.15.4 register_netdevice_notifier和unregister_netdevice_notifier函數 757
6.15.5 dev_queue_xmit函數 759
6.15.6 netif_rx和dev_rint函數 764
6.15.7 dev_transmit和dev_tint函數 768
6.15.8 in_net_bh和net_bh函數 769
6.15.9 dev_ifconf函數 773
6.15.10 sprintf_stats和dev_get_info函數 774
6.15.11 bad_mask函數 776
6.15.12 dev_ifsioc函數 776
6.15.13 dev_ioctl函數 783
6.15.14 dev_init函數 784
6.15.15 dev.c文件小結 785
網絡棧實現小結 785
第4部分 網絡設備驅動程序
第7章 網絡設備驅動程序分析 788
7.1 關鍵變量、函數定義及網絡設備驅動初始化 789
7.2 網絡設備驅動程序結構 795
7.3 本章小結 796
第5部分 係統網絡棧初始化
第8章 係統網絡棧初始化 798
8.1 網絡棧初始化流程 799
8.2 數據包傳送通道解析 800
8.3 本章小結 802
附錄a tcp協議可靠性數據傳輸實現原理分析 803
主要參考文獻 810
· · · · · · (
收起)