The Linux Networking Architecture

The Linux Networking Architecture

This unique Linux networking tutorial/reference by experts provides readers with a practical overview and understanding of the implementation of networking protocols in the Linux kernel. The book shows how networking behavior and protocols can be implemented within the Linux operating system. Introduction to the Linux kernel, mainly focusing on the upcoming kernel version 2.4 but also valid for version 2.2 kernels. The organization of the book follows the TCP/IP layering model, beginning with the kernel’s network device drivers, continuing with link-layer protocols such as PPP, and finally giving a description of all core protocols of the TCP/IP protocol family. Additional supplementary protocols such as RSVP, IP Security, and Mobile IP are also covered. For anyone interested in Linux or networking, including network programmers and administrators.

Copyright ii
     Preface xiii
        Organization of this Book xiv
        Additional Sources of Information xv
        Conventions Used in this Book xvi
        Acknowledgments xvii
     Part I:  The Linux Kernel 1
        Chapter 1.  Motivation 3
        Section 1.1.  The Linux Operating System 4
        Section 1.2.  What is Linux? 5
        Section 1.3.  Reasons for Using Linux 6
        Chapter 2.  The Kernel Structure 9
        Section 2.1.  Monolithic Architectures and Microkernels 11
        Section 2.2.  Activities in the Linux Kernel 12
        Section 2.3.  Locking—Atomic Operations 17
        Section 2.4.  Kernel Modules 23
        Section 2.5.  Device Drivers 29
        Section 2.6.  Memory Management in the Kernel 31
        Section 2.7.  Timing in the Linux Kernel 35
        Section 2.8.  The Proc File System 40
        Section 2.9.  Versioning 43
     Part II:  Architecture of Network Implementation 45
        Chapter 3.  The Architecture of Communication Systems 47
        Section 3.1.  Layer-Based Communication Models 47
        Section 3.2.  Services and Protocols 52
        Chapter 4.  Managing Network Packets in the Kernel 55
        Section 4.1.  Socket Buffers 55
        Section 4.2.  Socket-Buffer Queues 66
        Chapter 5.  Network Devices 71
        Section 5.1.  The net_device Interface 73
        Section 5.2.  Managing Network Devices 82
        Section 5.3.  Network Drivers 92
     Part III:  Layer I + II—Medium Access and Logical Link Layer 115
        Chapter 6.  Introduction to the Data-Link Layer 117
        Section 6.1.  Structure of the Data-Link Layer 117
        Section 6.2.  Processes on the Data-Link Layer 119
        Section 6.3.  Managing Layer-3 Protocols 127
        Chapter 7.  The Serial-Line Internet Protocol (SLIP) 132
        Section 7.1.  Introduction 132
        Section 7.2.  Slip Implementation in the Linux Kernel 134
        Chapter 8.  The Point-to-Point Protocol (PPP) 145
        Section 8.1.  Introduction 145
        Section 8.2.  PPP Configuration in Linux 148
        Section 8.3.  PPP Implementation in the Linux Kernel 150
        Section 8.4.  Implementing the PPP Daemon 158
        Chapter 9.  PPP over Ethernet 161
        Section 9.1.  Introduction 161
        Section 9.2.  PPPOE Specification in RFC 2516 161
        Section 9.3.  Implementation in the User Space 163
        Section 9.4.  Implementation in the Linux Kernel 164
        Chapter 10.  Asynchronous Transfer Mode—ATM 168
        Section 10.1.  Introduction 168
        Section 10.2.  Implementing ATM in Linux 169
        Section 10.3.  Configuration 177
        Chapter 11.  Bluetooth in Linux 179
        Section 11.1.  Host Controller Interface (HCI) 181
        Section 11.2.  L2CAP 185
        Section 11.3.  Other Protocols 188
        Chapter 12.  Transparent Bridges 189
        Section 12.1.  Introduction 189
        Section 12.2.  Basics 190
        Section 12.3.  Configuring a Bridge in Linux 199
        Section 12.4.  Implementation 202
     Part IV:  Network Layer 221
        Chapter 13.  The TCP/IP Protocols 223
        Section 13.1.  The Internet Protocol Suite 224
        Chapter 14.  The Internet Protocol V4 227
        Section 14.1.  Properties of the Internet Protocol 228
        Section 14.2.  Implementing the Internet Protocol 233
        Section 14.3.  IP Options 250
        Section 14.4.  Internet Control Message Protocol (ICMP) 262
        Chapter 15.  Address Resolution Protocol (ARP) 273
        Section 15.1.  Using the Address Resolution Protocol 274
        Section 15.2.  The ARP Command 276
        Section 15.3.  Implementing the ARP Instance in the Linux Kernel 277
        Chapter 16.  IP Routing 293
        Section 16.1.  Introduction 293
        Section 16.2.  Configuration 301
        Section 16.3.  Implementation 309
        Chapter 17.  IP Multicast for Group Communication 330
        Section 17.1.  Group Communication 331
        Section 17.2.  IP Multicast 333
        Section 17.3.  Internet Group Management Protocol (IGMP) 339
        Section 17.4.  Multicast Data Path in the Linux Kernel 345
        Section 17.5.  Multicasting in Today’s Internet 355
        Section 17.6.  Multicast Transport Protocols 364
        Chapter 18.  Using Traffic Control to Support Quality of Service (QoS) 366
        Section 18.1.  Introduction 366
        Section 18.2.  Basic Structure of Traffic Control in Linux 367
        Section 18.3.  Traffic Control in the Outgoing Direction 367
        Section 18.4.  Kernel Structures and Interfaces 369
        Section 18.5.  Ingress Policing 378
        Section 18.6.  Implementing a Queuing Discipline 378
        Section 18.7.  Configuration 381
        Chapter 19.  Packet Filters and Firewalls 383
        Section 19.1.  Introduction 383
        Section 19.2.  The Ipchains Architecture of Linux 2.2 386
        Section 19.3.  The Netfilter Architecture of Linux 2.4 391
        Chapter 20.  Connection Tracking 399
        Section 20.1.  Introduction 399
        Section 20.2.  Implementation 400
        Chapter 21.  Network Address Translation (NAT) 410
        Section 21.1.  Introduction 410
        Section 21.2.  Configuring NAT in Linux 414
        Section 21.3.  Implementing the NAT Module 416
        Section 21.4.  Interfaces to Extend the NAT Module 422
        Chapter 22.  Extending the Linux Network Architecture Functionality—KIDS 426
        Section 22.1.  Managing Dynamically Extendable Functionalities 426
        Section 22.2.  Structure of the KIDS Construction System 428
        Section 22.3.  Using the KIDS Example to Extend the Linux Network Architecture 431
        Chapter 23.  IPv6—Internet Protocol Version 6 443
        Section 23.1.  Introduction 443
        Section 23.2.  IPv6 Features 443
        Section 23.3.  IPv6 Implementation 450
     Part V:  Layer IV—Transport Layer 455
        Chapter 24.  Transmission Control Protocol (TCP) 457
        Section 24.1.  Overview 457
        Section 24.2.  Implementing The TCP Protocol Instance 460
        Section 24.3.  Connection Management 476
        Section 24.4.  Protocol Mechanisms For Data Exchange 486
        Section 24.5.  Timer Management In TCP 508
        Chapter 25.  User Datagram Protocol (UDP) 513
        Section 25.1.  Introduction 513
        Section 25.2.  Data Structures 514
        Section 25.3.  Sending and Receiving UDP Datagrams 519
        Chapter 26.  The Concept of Sockets 522
        Section 26.1.  Introduction 522
        Section 26.2.  BSD Sockets 522
        Section 26.3.  Protocol-Specific Sockets 526
     Part VI:  Layer V—Application Layer 533
        Chapter 27.  Network Programming With Sockets 535
        Section 27.1.  Introduction 535
        Section 27.2.  Functions of the Socket API 538
        Section 27.3.  Examples 548
     Part VII:  Appendices 549
        Appendix A.  The LXR Source-Code Browser 551
        Section A.1.  Functionality 551
        Section A.2.  Installation 555
        Appendix B.  Debugging in the Linux Kernel 557
        Section B.1.  Log Outputs From the Linux Kernel 557
        Section B.2.  Creating Strings in the Kernel 561
        Section B.3.  Information in the /proc Directory 564
        Section B.4.  Using a Debugger with the Linux Kernel 569
        Appendix C.  Tools and Commands for Network Operation 572
        Section C.1.  Using ifconfig to Manage Network Devices 572
        Section C.2.  Using ping to Test the Reachability 575
        Section C.3.  Using netstat to View the Network State 576
        Section C.4.  Using route for Routing Information 578
        Section C.5.  Using tcpdump for Network Analysis 579
        Section C.6.  USING traceroute TO TRACE PACKETS 582
        Section C.7.  Other Tools 584
        Appendix D.  Example for a Kernel Module 588
        Appendix E.  Example for a Network-Layer Protocol 591
        Appendix F.  Example for a Transport Protocol 593
        Appendix G.  Example for Communication over Sockets 595
        Section G.1.  SERVER 595
        Section G.2.  CLIENT 598
        Bibliography  
     Index 

Download: The Linux Networking Architecture

This entry was posted in Ebook, Linux.

发表评论

邮箱地址不会被公开。 必填项已用*标注


*

在线客服系统