Foreword Preface Chapter1 Introduction And Overview 1.1 TCP/IP Protocols 1.2 The Need To Understand Details 1.3 Complexity Of Interactions Smong Protocols 1.4 The Approach In This Text 1.5 The Importahnce Of Studying Code 1.6 The Xinu Operating System 1.7 Organization Of The Rmainder Of The Book 1.8 Summary Chapter2 The Structure Of TCP/IP Sotfware In An Operatin System 2.1 Introduction 2.2 The Process Concept 2.3 Process Priority 2.4 Communication Processes 2.5 Interprocess Communication 2.6 Device Drive,Input,And Output 2.7 Network Input and Interrupts 2.8 Pakking Packets To Higher Level Protocols 2.9 Passing Datagrams From IP R o Transport Protocols 2.10 Deliver To Application Pograms 2.11 Information Flow On Output 2.12 From TCP Through IP To Network Ouput 2.13 UDP Output 2.14 Summary Chapter3 Network Interface Layer 3.1 Introduction 3.2 The NetWork Interface Abstraction 3.3 Logical State Of An Interface 3.4 Local Host Interface 3.5 Buffer Management 3.6 Demultiplexing Incoming Packets 3.7 Summary Chapter4 Address Discovery And Binding 4.1 Introduction 4.2 Conceptual Organization Of ARP Software 4.3 Example ARP Design 4.4 Data Stuctures For The ARP Cache 4.5 ARP Output Processing 4.6 ARP Input Processing 4.7 ARP Cache Management 4.8 ARP Initialization 4.9 ARP Configuration Parameters 4.10 Summary Chapter5 IP:global Software Organizatiion 5.1 Introduction 5.2 The CentralSwitch 5.3 IP Software Design 5.4 IP Software Organization And Datagram Flow 5.5 Byte-Ordering In The IP Header 5.6 Sending A Datagram To IP 5.7 Table Maitenace 5.8 Summary Chapter6 IP:Routing Table And Routing Algorithm 6.1 Introduction 6.2 Route Maintenance And Lookup 6.3 Routing Table Organization 6.4 Routin Table Data Structres 6.5 Origin Of Routes And Persistenc 6.6 Routing A Datagram 6.7 Periodic Route Table Maintenace 6.8 IP Options Processing 6.9 Summary Chapter7 IP:Fragmentaion And Reassembly 7.1 Introduction 7.2 Fragmenting Datagrams 7.3 Implementaion Of Fragmentaion 7.4 Datagram Reassembly 7.5 Maintenace Of Fragment Lists 7.6 Initialization 7.7 Summary Chapter8 IP:Error Processing 8.1 Introduction 8.2 ICMP Message Formats 8.3 Implementation Of ICMP Messages 8.4 Handling Incoming ICMP Message 8.5 Hnddling An ICMP Redirect Message 8.6 Setting ASubnet Mask 8.7 Choosing A Source Address For An ICMP Packet 8.8 Generation ICMP Error Message 8.9 Avoiding Errors About Errors 8.10 Allocating A Buffer For ICMP 8.11 The Data Portion Of An ICMP Message 8.12 Generating An ICMP Redirect Message 8.13 Summary Chapter9 IP:Multicast Processing 9.1 Introduction 9.2 Maintaining Multicast Group Membbership Information 9.3 A Host Group Table 9.4 Searching For AHost Group 9.5 Adding A Host Group Entry To The Table 9.6 Configuring The Network Interface For A Multicast Address 9.7 Translatrion Between IP and Hardware Multicast Addresser 9.8 Remving A Multicast Address FromThe HostGroup Table 9.9 Joining AHost Group 9.10 Maintaining Contact With A Multicast Router 9.11 Implementing IGMP Membership Reports 9.12 Computing A RandomDelay 9.13 A P rocess To Send IGMP Reports 9.14 Handing Incoming IGMP Messages 9.15 Leaving A Host Group 9.16 Initialization Of IGMP Data Structures 9.17 Summary Chapter10 UDP:User Datagrams 10.1 Introduction 10.2 UDP Ports And Demultiplexing 10.3 UDP 10.4 UDP Output Processing 10.5 Summary Chapter11 TCP:Data Structures And Input Processing 11.1 Introduction 11.2 Overview Of TCP Software 11.3 Transmission Control Blocks 11.4 TCP Segment Format 11.5 Sequence Space Comparison 11.6 TCP Finite State Machine 11.7 ExampleState Transition 11.8 Declaraion Of The Finite State Machine 11.9 TCB Allocation And Initialization 11.10 Implementaion Of The Finite State Machine 11.11 Handing An Input Segment 11.12 Summary Chapter12 TCP:Finite StateMachie Implementation 12.1 Introduction 12.2 CLOSED State Processing 12.3 Graceful Shudown 12.4 Timed Delay After Closing 12.5 TIME-WAIT State Processing 12.6 CLOSING State Processing 12.7 FIN-WAIT-2 State Processing 12.8 FIN-WAIT-1 State Processing 12.9 CLOSE-WAIT State Processing 12.10 LAST-ACK State Processing 12.11 ESTABLISHEP State Processing 12.12 Processing Urgent Data In A Segment 12.13 Processing Other Data In A Segment 12.14 Keeping Track Of Received Octest 12.15 Abortin A TCP Connection 12.16 Establishing A TCP Connection 12.17 Initializing ATCB 12.18 SYN-SENT State Processing 12.19 SYN-RECEIVED State Processing 12.20 LISTEN StateProcessing 12.21 Initalizing Window Variables For A New TCB 12.22 Summary Chapter13 TCP:Output Processing 13.1 Introduction 13.2 Controlling TCP Output Complexity 13.3 The Four TCP Output Staes 13.4 TCP Output As AProcess 13.5 TCP Output Messages 13.6 Encoding Output States And TCB Numbers 13.7 Implmentation Of The TCP Output Process 13.8 Mutual Exclusion 13.9 Implementation Of The IDLE State 13.10 Implementation Of The PERSIST State 13.11 Implementation Of The TRANSMIT State 13.12 Implementation Of The RETRANSMIT State 13.13 Sending A Segment 13.14 Computing The TCP Data Length 13.15 Comuting Sequence Counts 13.16 Other TCP Procedures 13.17 Summary Chapter14 TCP:Timer Management 14.1 Introduction 14.2 A Genral Data Structure For Timed Events 14.3 A Data Structure For TCP Events 14.4 Timers,Events,And Messages 14.5 The TCP timer Process 14.6 Deleting A TCP Timer Event 14.7 Deleing AllEvents For A TCB 14.8 Determining The Time Remaining For An Event 14.9 Inserting A TCP Timer Event 14.10 Strting TCP Output Without Delay 14.11 Summary Chapter15 TCP:Flow Control And Adaptive Retransmission 15.1 Introduction 15.2 The Difficulties With Adaptive Retransmission 15.3 Tuning Adaptive Retransmission 15.4 Retransmission Timer And Backoff 15.5 Window-Based Flow Control 15.6 Maximum Segment Size Computation 15.7 Congestion Avoidancd And Control 15.8 Slow -Start And Congestion Avoidance 15.9 Round Trip Estimation And Timeout 15.10 Miscellaneus Notes And Techniques 15.11 Summary Chapter16 TCP:Urgent Data Processing And The Push Function 16.1 Introduction 16.2 Out-Of _Band Singnaling 16.3 Urgent Data 16.4 InterPreting The Standard 16.5 Configuration For Berkeley Urgent Pointer Interpretation 16.6 Informing AnApplication 16.7 Reading Data From TCP 16.8 Sending Urgent Data 16.9 TCP Push Function 16.10 Interpreting Push With Out-Off_Order Dlivery 16.11 Implementation Of Push On Input 16.12 Summary Chapter17 Socket-Level Interface 17.1 Introduction 17.2 Interfacing Through A Device 17.3 TCP Connections AsDevices 17.4 An Example TCPClient Program 17.5 An Example TCP Server Program 17.6 Implementaion Of The TCP Master Device 17.7 Implementaionn Of A TCP Slave Device 17.8 Initialization Of A Slave Device 17.9 Summary Chapter18 RIP:Active Route Pragation And Passive Acuisition 18.1 Introduction 18.2 Active And Passive Mode Participants 18.3 Basic RIP Algorithm An d Cost Metic 18.4 Instabiulities And Solutions 18.5 Message Types 18.6 Protocol Chatracterization 18.7 Implmentation Of Rip 18.8 The Principle RIP Process 18.9 Responding To An Incoming Request 18.10 Generationg Updata Messages 18.11 Initializing Copies Of An Update Message 18.12 Generationg Periodic RIP Output 18.13 Limitaions oOf RIP 18.14 Summary Chapter19 OSPF:Foute Propagation With An SPF Algorithm 19.1 Introduction 19.2 OSPF Configuration And Options 19.3 OSPF's Graph-Theoretic Model 19.4 OSPF Declarations 19.5 Adjcency And Link State Propagation 19.6 Discoverign Neighboring Gateways With Hello 19.7 Sendign Hello Packets 19.8 Designated Router Concept 19.9 Electijng A Designated Router 19.10 Reforming Adjacencies After A Change 19.11 Handling Arriving Hello Packets 19.12 Adding A Gateway To The Neighbor List 19.13 Neighbor State Transitions 19.14 OSPF Timer Events And Retransmissons 19.15 Determing Whether Adjacency Is Permitted 19.16 Handling OSPF input 19.17 Declarations And Procedures For Link State Processing 19.18 Generation Datagase Description Packets 19.19 Creating A Template 19.20 Transmiting A Dataase Description Packet 19.21 Handlingt An Arriving Database Description Packet 19.22 Handling Link State Request Packets 19.23 Buelding A Link Stae Summary 19.24 OSPF Utility Procedures 19.25 Summary Chapter20 SNMP:MIB Variables ,Representations,mAnd Bindings 20.1 Introduction 20.2 Server OrganizationAnd NameMapping 20.3 MIB Variables 20.4 MIB Variable Names 20.5 Lexicographic Orderingf Among Names 20.6 PrefixRemoval 20.7 Operations Applied To MIB Variables 20.8 Names For Tables 20.9 Conceptual Threading Of The Name Hierarchy 20.10 Data Structure For IB Variables 20.11 A Data Strctrue For Fa\ast Lookup 20.12 Implementatin Of The Hash Table 20.13 Spcification Of MIB Bindings 20.14 Internal Variables Used In Bindings 20.15 Hash Table Lookup 20.16 SNMP S tructrres And Constants 20.17 ASN.1 Representation Manipulation 20.18 Summary Chapter21 SNMP:Client And Server 21.1 Introduction 21.2 Data Representation In The Server 21.3 Server Implementation 21.4 Parsing An SNMP Message 21.5 ConvertingASN.1 Names In The Bindig List 21.6 Resolving AQuery 21.7 Interpreting The Get-Next Operation 21.8 Indirect Application Of Operations 21.9 Indirection For Tables 21.10 Generating A Reply Message Backward 21.11 Converting From Internal Form to ASN.1 21.12 Utility Functons Used By The Server 21.13 Implementation Of An SNMP Client 21.14 Initialization Of Variables 21.15 Summary Chapter22 SNMP:Table Access Functions 22.1 Introduction 22.2 Table Access 22.3 Object Identifiers For Tables 22.4 Address Entry Table Functions 22.5 Address Translation Table Functions 22.6 Network Interface Table Functions 22.7 Routing Table Funcitons 22.8 TCP Connection Table Functions 22.9 Summary Chapter13 Implementation In Retrospect 23.1 Introduction 23.2 Statistical Analysis Of The Code 23.3 Lines Of Code For Ech Protocol 23.4 Functios And Procedures For Each Protocol 23.5 Summary Appendix 1 Cross Reference Of Procedure Calls Appendix 2 Xinu Functions And Constans Used InThe Code Bibliography Index