Copyrightii
Prefacexiii
Organization of this Bookxiv
Additional Sources of Informationxv
Conventions Used in this Bookxvi
Acknowledgmentsxvii
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.
LockingAtomic 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 + IIMedium 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 ModeATM168
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 FunctionalityKIDS426
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.
IPv6Internet Protocol Version 6443
Section 23.1.
Introduction443
Section 23.2.
IPv6 Features443
Section 23.3.
IPv6 Implementation450
Part V:
Layer IVTransport 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 VApplication 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
Bibliography
Index