The Linux Networking Architecture: Design and Implementation of Network Protocols in the Linux Kernel
Table of Contents
Copyright
Preface
Organization of this Book
Additional Sources of Information
Conventions
Acknowledgments
Part I: The Linux Kernel
Chapter 1. Motivation
1.1 The Linux Operating System
1.2 What is Linux?
1.3 Reasons for Using Linux
Chapter 2. The Kernel Structure
2.1 Monolithic Architectures and Microkernels
2.2 Activities in the Linux Kernel
2.3 Locking--Atomic Operations
2.4 Kernel Modules
2.5 Device Drivers
2.6 Memory Management in the Kernel
2.7 Timing in the Linux Kernel
2.8 The Proc File System
2.9 Versioning
Part II: Architecture of Network Implementation
Chapter 3. The Architecture of Communication Systems
3.1 Layer-Based Communication Models
3.2 Services and Protocols
Chapter 4. Managing Network Packets in the Kernel
4.1 Socket Buffers
4.2 Socket-Buffer Queues
Chapter 5. Network Devices
5.1 The net_device Interface
5.2 Managing Network Devices
5.3 Network Drivers
Part III: Layer I + II--Medium Access and Logical Link Layer
Chapter 6. Introduction to the Data-Link Layer
6.1 Structure of the Data-Link Layer
6.2 Processes on the Data-Link Layer
6.3 Managing Layer-3 Protocols
Chapter 7. The Serial-Line Internet Protocol (SLIP)
7.1 Introduction
7.2 Slip Implementation in the Linux Kernel
Chapter 8. The Point-to-Point Protocol (PPP)
8.1 Introduction
8.2 PPP Configuration in Linux
8.3 PPP Implementation in the Linux Kernel
8.4 Implementing the PPP Daemon
Chapter 9. PPP over Ethernet
9.1 Introduction
9.2 PPPOE Specification in RFC 2516
9.3 Implementation in the User Space
9.4 Implementation in the Linux Kernel
Chapter 10. Asynchronous Transfer Mode--ATM
10.1 Introduction
10.2 Implementing ATM in Linux
10.3 Configuration
Chapter 11. Bluetooth in Linux
11.1 Host Controller Interface (HCI)
11.2 L2CAP
11.3 Other Protocols
Chapter 12. Transparent Bridges
12.1 Introduction
12.2 Basics
12.3 Configuring a Bridge in Linux
12.4 Implementation
Part IV: Network Layer
Chapter 13. The TCP/IP Protocols
13.1 The Internet Protocol Suite
Chapter 14. The Internet Protocol V4
14.1.1 Routing IP Packets Across Routers
14.2 Implementing the Internet Protocol
14.3 IP Options
14.4 Internet Control Message Protocol (ICMP)
Chapter 15. Address Resolution Protocol (ARP)
15.1 Using the Address Resolution Protocol
15.2 The ARP Command
15.3 Implementing the ARP Instance in the Linux Kernel
Chapter 16. IP Routing
16.1 Introduction
16.2 Configuration
16.3 Implementation
Chapter 17. IP Multicast for Group Communication
17.1.1 Unicast
17.2 IP Multicast
17.3 Internet Group Management Protocol (IGMP)
17.4 Multicast Data Path in the Linux Kernel
17.5 Multicasting in Today's Internet
17.6 Multicast Transport Protocols
Chapter 18. Using Traffic Control to Support Quality of Service (QoS)
18.1 Introduction
18.2 Basic Structure of Traffic Control in Linux
18.3 Traffic Control in the Outgoing Direction
18.4 Kernel Structures and Interfaces
18.5 Ingress Policing
18.6 Implementing a Queuing Discipline
18.7 Configuration
Chapter 19. Packet Filters and Firewalls
19.1 Introduction
19.2 The Ipchains Architecture of Linux 2.2
19.3 The Netfilter Architecture of Linux 2.4
Chapter 20. Connection Tracking
20.1 Introduction
20.2 Implementation
Chapter 21. Network Address Translation (NAT)
21.1 Introduction
21.2 Configuring NAT in Linux
21.3 Implementing the NAT Module
21.4 Interfaces to Extend the NAT Module
Chapter 22. Extending the Linux Network Architecture Functionality--KIDS
22.1 Managing Dynamically Extendable Functionalities
22.2 Structure of the KIDS Construction System
22.3 Using the KIDS Example to Extend the Linux Network Architecture
Chapter 23. IPv6--Internet Protocol Version 6
23.1 Introduction
23.2 IPv6 Features
23.3 IPv6 Implementation
Part V: Layer IV--Transport Layer
Chapter 24. Transmission Control Protocol (TCP)
24.1.1 Requirements on TCP
24.2 Implementing The TCP Protocol Instance
24.3 Connection Management
24.4 Protocol Mechanisms For Data Exchange
24.5 Timer Management In TCP
Chapter 25. User Datagram Protocol (UDP)
25.1 Introduction
25.2 Data Structures
25.3 Sending and Receiving UDP Datagrams
Chapter 26. The Concept of Sockets
26.1 Introduction
26.2 BSD Sockets
26.3 Protocol-Specific Sockets
Part VI: Layer V--Application Layer
Chapter 27. Network Programming With Sockets
27.1 Introduction
27.2 Functions of the Socket API
27.3 Examples
Part VII: Appendices
Appendix A. The LXR Source-Code Browser
A.1 Functionality
A.2 Installation
Appendix B. Debugging in the Linux Kernel
B.1 Log Outputs From the Linux Kernel
B.2 Creating Strings in the Kernel
B.3 Information in the /proc Directory
B.4 Using a Debugger with the Linux Kernel
Appendix C. Tools and Commands for Network Operation
C.1 Using ifconfig to Manage Network Devices
C.2 Using ping to Test the Reachability
C.3 Using netstat to View the Network State
C.4 Using route for Routing Information
C.5 Using tcpdump for Network Analysis
C.6 USING traceroute TO TRACE PACKETS
C.7 Other Tools
Appendix D. Example for a Kernel Module
Appendix E. Example for a Network-Layer Protocol
Appendix F. Example for a Transport Protocol
Appendix G. Example for Communication over Sockets
G.1 SERVER
G.2 CLIENT
Bibliography
index
SYMBOL
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
Z