
Klaus Wehrle, Frank Pählke, Hartmut Ritter, Daniel Müller, Marc Bechler Publisher: Prentice HallPub Date: August 01, 2004ISBN: 0-13-177720-3Pages: 648








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

