The Linux Networking Architecture: Design and Implementation of Network Protocols in the Linux Kernel

The Linux® Networking Architecture: Design and Implementation of Network Protocols in the Linux Kernel
By Klaus Wehrle, Frank Pählke, Hartmut Ritter, Daniel Müller, Marc Bechler
Publisher: Prentice Hall
Pub Date: August 01, 2004
ISBN: 0-13-177720-3
Pages: 648
Supplier :Team FLY  

The most complete book on Linux networking by leading experts.


• Table of Contents
• Index
The Linux® Networking Architecture: Design and Implementation of Network Protocols in the Linux Kernel
By Klaus Wehrle, Frank Pählke, Hartmut Ritter, Daniel Müller, Marc Bechler
Publisher: Prentice Hall
Pub Date: August 01, 2004
ISBN: 0-13-177720-3
Pages: 648

     Organization of this Bookxiv
     Additional Sources of Informationxv
     Conventions Used in this Bookxvi
    Part I:  The Linux Kernel1
     Chapter 1.  Motivation3
     Section 1.1.  The Linux Operating System4
     Section 1.2.  What is Linux?5
     Section 1.3.  Reasons for Using Linux6
     Chapter 2.  The Kernel Structure9
     Section 2.1.  Monolithic Architectures and Microkernels11
     Section 2.2.  Activities in the Linux Kernel12
     Section 2.3.  Locking—Atomic Operations17
     Section 2.4.  Kernel Modules23
     Section 2.5.  Device Drivers29
     Section 2.6.  Memory Management in the Kernel31
     Section 2.7.  Timing in the Linux Kernel35
     Section 2.8.  The Proc File System40
     Section 2.9.  Versioning43
    Part II:  Architecture of Network Implementation45
     Chapter 3.  The Architecture of Communication Systems47
     Section 3.1.  Layer-Based Communication Models47
     Section 3.2.  Services and Protocols52
     Chapter 4.  Managing Network Packets in the Kernel55
     Section 4.1.  Socket Buffers55
     Section 4.2.  Socket-Buffer Queues66
     Chapter 5.  Network Devices71
     Section 5.1.  The net_device Interface73
     Section 5.2.  Managing Network Devices82
     Section 5.3.  Network Drivers92
    Part III:  Layer I + II—Medium Access and Logical Link Layer115
     Chapter 6.  Introduction to the Data-Link Layer117
     Section 6.1.  Structure of the Data-Link Layer117
     Section 6.2.  Processes on the Data-Link Layer119
     Section 6.3.  Managing Layer-3 Protocols127
     Chapter 7.  The Serial-Line Internet Protocol (SLIP)132
     Section 7.1.  Introduction132
     Section 7.2.  Slip Implementation in the Linux Kernel134
     Chapter 8.  The Point-to-Point Protocol (PPP)145
     Section 8.1.  Introduction145
     Section 8.2.  PPP Configuration in Linux148
     Section 8.3.  PPP Implementation in the Linux Kernel150
     Section 8.4.  Implementing the PPP Daemon158
     Chapter 9.  PPP over Ethernet161
     Section 9.1.  Introduction161
     Section 9.2.  PPPOE Specification in RFC 2516161
     Section 9.3.  Implementation in the User Space163
     Section 9.4.  Implementation in the Linux Kernel164
     Chapter 10.  Asynchronous Transfer Mode—ATM168
     Section 10.1.  Introduction168
     Section 10.2.  Implementing ATM in Linux169
     Section 10.3.  Configuration177
     Chapter 11.  Bluetooth in Linux179
     Section 11.1.  Host Controller Interface (HCI)181
     Section 11.2.  L2CAP185
     Section 11.3.  Other Protocols188
     Chapter 12.  Transparent Bridges189
     Section 12.1.  Introduction189
     Section 12.2.  Basics190
     Section 12.3.  Configuring a Bridge in Linux199
     Section 12.4.  Implementation202
    Part IV:  Network Layer221
     Chapter 13.  The TCP/IP Protocols223
     Section 13.1.  The Internet Protocol Suite224
     Chapter 14.  The Internet Protocol V4227
     Section 14.1.  Properties of the Internet Protocol228
     Section 14.2.  Implementing the Internet Protocol233
     Section 14.3.  IP Options250
     Section 14.4.  Internet Control Message Protocol (ICMP)262
     Chapter 15.  Address Resolution Protocol (ARP)273
     Section 15.1.  Using the Address Resolution Protocol274
     Section 15.2.  The ARP Command276
     Section 15.3.  Implementing the ARP Instance in the Linux Kernel277
     Chapter 16.  IP Routing293
     Section 16.1.  Introduction293
     Section 16.2.  Configuration301
     Section 16.3.  Implementation309
     Chapter 17.  IP Multicast for Group Communication330
     Section 17.1.  Group Communication331
     Section 17.2.  IP Multicast333
     Section 17.3.  Internet Group Management Protocol (IGMP)339
     Section 17.4.  Multicast Data Path in the Linux Kernel345
     Section 17.5.  Multicasting in Today's Internet355
     Section 17.6.  Multicast Transport Protocols364
     Chapter 18.  Using Traffic Control to Support Quality of Service (QoS)366
     Section 18.1.  Introduction366
     Section 18.2.  Basic Structure of Traffic Control in Linux367
     Section 18.3.  Traffic Control in the Outgoing Direction367
     Section 18.4.  Kernel Structures and Interfaces369
     Section 18.5.  Ingress Policing378
     Section 18.6.  Implementing a Queuing Discipline378
     Section 18.7.  Configuration381
     Chapter 19.  Packet Filters and Firewalls383
     Section 19.1.  Introduction383
     Section 19.2.  The Ipchains Architecture of Linux 2.2386
     Section 19.3.  The Netfilter Architecture of Linux 2.4391
     Chapter 20.  Connection Tracking399
     Section 20.1.  Introduction399
     Section 20.2.  Implementation400
     Chapter 21.  Network Address Translation (NAT)410
     Section 21.1.  Introduction410
     Section 21.2.  Configuring NAT in Linux414
     Section 21.3.  Implementing the NAT Module416
     Section 21.4.  Interfaces to Extend the NAT Module422
     Chapter 22.  Extending the Linux Network Architecture Functionality—KIDS426
     Section 22.1.  Managing Dynamically Extendable Functionalities426
     Section 22.2.  Structure of the KIDS Construction System428
     Section 22.3.  Using the KIDS Example to Extend the Linux Network Architecture431
     Chapter 23.  IPv6—Internet Protocol Version 6443
     Section 23.1.  Introduction443
     Section 23.2.  IPv6 Features443
     Section 23.3.  IPv6 Implementation450
    Part V:  Layer IV—Transport Layer455
     Chapter 24.  Transmission Control Protocol (TCP)457
     Section 24.1.  Overview457
     Section 24.2.  Implementing The TCP Protocol Instance460
     Section 24.3.  Connection Management476
     Section 24.4.  Protocol Mechanisms For Data Exchange486
     Section 24.5.  Timer Management In TCP508
     Chapter 25.  User Datagram Protocol (UDP)513
     Section 25.1.  Introduction513
     Section 25.2.  Data Structures514
     Section 25.3.  Sending and Receiving UDP Datagrams519
     Chapter 26.  The Concept of Sockets522
     Section 26.1.  Introduction522
     Section 26.2.  BSD Sockets522
     Section 26.3.  Protocol-Specific Sockets526
    Part VI:  Layer V—Application Layer533
     Chapter 27.  Network Programming With Sockets535
     Section 27.1.  Introduction535
     Section 27.2.  Functions of the Socket API538
     Section 27.3.  Examples548
    Part VII:  Appendices549
     Appendix A.  The LXR Source-Code Browser551
     Section A.1.  Functionality551
     Section A.2.  Installation555
     Appendix B.  Debugging in the Linux Kernel557
     Section B.1.  Log Outputs From the Linux Kernel557
     Section B.2.  Creating Strings in the Kernel561
     Section B.3.  Information in the /proc Directory564
     Section B.4.  Using a Debugger with the Linux Kernel569
     Appendix C.  Tools and Commands for Network Operation572
     Section C.1.  Using ifconfig to Manage Network Devices572
     Section C.2.  Using ping to Test the Reachability575
     Section C.3.  Using netstat to View the Network State576
     Section C.4.  Using route for Routing Information578
     Section C.5.  Using tcpdump for Network Analysis579
     Section C.6.  USING traceroute TO TRACE PACKETS582
     Section C.7.  Other Tools584
     Appendix D.  Example for a Kernel Module588
     Appendix E.  Example for a Network-Layer Protocol591
     Appendix F.  Example for a Transport Protocol593
     Appendix G.  Example for Communication over Sockets595
     Section G.1.  SERVER595
     Section G.2.  CLIENT598