10
Internetworking With TCP/IP Vol II: Design, Implementation, and Internais DOUGLAS E. COMER and DAVID L. STEVENS Department of Computer Sciences Purdue University West Lafayette, IN 47907 PRENTICE HALL Englewood Cliffs, New Jersey 07632

Internetworking With TCP/IP - GBV

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Internetworking With TCP/IP - GBV

Internetworking With TCP/IP Vol II:

Design, Implementation, and Internais

DOUGLAS E. COMER

and

DAVID L. STEVENS

Department of Computer Sciences Purdue University

West Lafayette, IN 47907

PRENTICE HALL Englewood Cliffs, New Jersey 07632

Page 2: Internetworking With TCP/IP - GBV

Contents

Foreword xvii

Preface xix

Chapter 1 Introduction And Overview 1

/ . / TCP IIP Protocols 1 1.2 The NeedTo Understand Details 1 1.3 Complexity Of Interactions Among Protocols 2 1.4 The Approach In This Text 2 1.5 The Importance Of Studying Code 3 1.6 The Xinu Operating System 3 1.7 Organization Of The Remainder Of The Book 4 1.8 Summary 4

Chapter 2 The Structure Of TCP/IP Software In An Operating System 7

2.1 Introduction 7 2.2 The Process Concept 8 2.3 Process Priority 9 2.4 Communicating Processes 9 2.5 Interprocess Communication 12 2.6 Device Drivers, Input, And Output 14 2.7 Network Input and Interrupts 14 2.8 Passing Packets To Higher Level Protocols 16 2.9 Passing Datagrams From IP To Transport Protocols 16 2.10 Delivery To Application Programs 18 2.11 Information Flow On Output 19 2.12 From TCP Through IP To Network Output 20

Page 3: Internetworking With TCP/IP - GBV

2.13 UDP Output 21 2.14 Summary 21

Chapter 3 Network Interface Layer

3.1 Introduction 27 3.2 The Network Interface Abstraction 28 3.3 Logical State Of An Interface 30 3.4 Local Host Interface 31 3.5 Buffer Management 32 3.6 Demultiplexing Incoming Packets 34 3.7 Summary 36

Chapter 4 Address Discovery And Binding (ARP)

4.1 Introduction 37 4.2 Conceptual Organization Of ARP Software 38 4.3 Example ARP Design 38 4.4 Data Structures For The ARP Cache 39 4.5 ARP Output Processing AI 4.6 ARP Input Processing 47 4.7 ARP Cache Management 51 4.8 ARP Initialization 56 4.9 ARP Configuration Parameters 57 4.10 Summary 57

Chapter 5 IP: Global Software Organization

5.7 Introduction 59 5.2 The Central Switch 59 5.3 IP Software Design 60 5.4 IP Software Organization And Datagram Flow 5.5 Byte-Ordering In The IP Header 73 5.6 Sending A Datagram To IP 75 5.7 Table Maintenance 11 5.8 Summary 79

Page 4: Internetworking With TCP/IP - GBV

Contents

Chapter 6 IP: Routing Table And Routing Algorithm

6.1 Introduction 81 6.2 Route Maintenance And Lookup 81 6.3 Routing Table Organization 82 6.4 Routing Table Data Structures 83 6.5 Origin Of Routes And Persistence 85 6.6 Routing A Datagram 85 6.7 Periodic Route Table Maintenance 92 6.8 IP Options Processing 100 6.9 Summary 101

Chapter 7 IP: Fragmentation And Reassembly

7.1 Introduction 103 7.2 Fragmenting Datagrams 103 7.3 Implementation Of Fragmentation 104 7.4 Datagram Reassembly 109 7.5 Maintenance Of Fragment Lists 118 7.6 Initialization 120 7.7 Summary 120

Chapter 8 IP: Error Processing (ICMP)

8.1 Introduction 123 8.2 ICMP Message Formats 123 8.3 Implementation Of ICMP Messages 123 8.4 Handling Incoming ICMP Messages 126 8.5 Handling An ICMP Redirect Message 128 8.6 Setting A Subnet Mask 129 8.7 Choosing A Source Address For An ICMP Packet 8.8 Generating ICMP Error Messages 132 8.9 Avoiding Errors About Errors 135 8.10 Allocating A Buffer For ICMP 137 8.11 The Data Portion Of An ICMP Message 139 8.12 Generating An ICMP Redirect Message 140 8.13 Summary 142

Page 5: Internetworking With TCP/IP - GBV

X Contents

Chapter 9 UDP: User Datagrams 145

9.1 Introduction 145 9.2 UDP Ports And Demultiplexing 145 9.3 UDP 149 9.4 UDP Output Processing 159 9.5 Summary 162

Chapter 10 TCP: Data Structures And Input Processing 165

10.1 Introduction 165 10.2 OverviewOf TCP Software 166 10.3 Transmission Control Blocks 166 10.4 TCP Segment Format 171 10.5 Sequence Space Comparison 172 10.6 TCP Finite State Machine 174 70.7 Example State Transition 175 10.8 Declaration Of The Finite State Machine 175 10.9 TCB Allocation And Initialization \11 10.10 Implementation Of The Finite State Machine 180 10.11 Handling An Input Segment 180 10.12 Summary 190

Chapter 11 TCP: Finite State Machine Implementation 193

11.1 Introduction 193 11.2 CLOSED State Processing 193 11.3 Graceful Shutdown 194 11.4 Timed Delay After Closing 194 11.5 TIME-WAIT State Processing 195 11.6 CLOSING State Processing 197 11.7 FIN-WAIT-2 State Processing 198 11.8 FIN-WAIT-1 State Processing 199 11.9 CLOSE-WAIT State Processing 201 11.10 LAST-ACK State Processing 203 11.11 ESTABLISHED State Processing 204 11.12 Processing Data In A Segment 205 11.13 Keeping Track Of Received Octets 208 11.14 Aborting A TCP Connection 211 11.15 Establishing A TCP Connection 212 11.16 Initializing A TCB 213

Page 6: Internetworking With TCP/IP - GBV

Contents XI

11.17 SYN-SENT State Processing 214 11.18 SYN-RECEIVED State Processing 215 11.19 LISTEN State Processing 218 11.20 Initializing Window Variables For A New TCB 219 11.21 Summary 221

Chapter12 TCP: Output Processing 223

12.1 Introduction 223 72.2 Controlling TCP Output Complexity 223 12.3 The Four TCP Output States 224 12.4 TCP Output As A Process 224 12.5 TCP Output Messages 225 12.6 Encoding Output States And TCB Numbers 226 12.7 Implementation OfThe TCP Output Process 226 12.8 Mutual Exclusion 227 72.9 Implementation Of The IDLE State 228 72.70 Implementation OfThe PERSIST State 228 72.77 Implementation OfThe TRANSMIT State 229 72.72 Implementation Of The RETRANSMIT State 231 72.73 Sending A Segment 231 12.14 Computing The TCP Data Length 235 72.75 Computing Sequence Counts 237 72.76 Other TCP Procedures 238 72.77 Summary 244

Chapter13 TCP: Timer Management 247

73.7 Introduction 247 73.2 A General Data Structure For Timed Events 247 73.3 A Data Structure For TCP Events 248 73.4 Timers, Events, And Messages 249 73.5 The TCP Timer Process 250 73.6 Deleting A TCP Timer Event 252 73.7 Deleting All Events For A TCB 253 13.8 Determining The Time Remaining For An Event 254 73.9 lnserting A TCP Timer Event 255 73.70 Starting TCP Output Without Delay 257 73.77 Summary 258

Page 7: Internetworking With TCP/IP - GBV

XU Contents

Chapter 14 TCP: Flow Control And Adaptive Retransmission 261

14.1 Introduction 261 14.2 The Difficulties With Adaptive Retransmission 262 14.3 Tuning Adaptive Retransmission 262 14.4 Retransmission Timer And Backoff 262 14.5 Window-Based Flow Control 265 14.6 Maximum Segment Size Computation 269 74.7 Congestion Avoidance And Control 273 14.8 Slow-Start And Congestion Avoidance TIA 14.9 Round Trip Estimation And Timeout 277 74.70 Miscellaneous Notes And Techniques 282 74.77 Summary 282

Chapter 15 TCP: Urgent Data Processing And The Push Function 285

75.7 Introduction 285 75.2 Out-Of-Band Signaling 285 153 Urgent Data 286 75.4 Interpreting The Standard 286 75.5 A Data Structure For Urgent Mode Data 289 75.6 Extracting Urgent Data From An Incoming Segment 289 75.7 Sequence Numbers, Keys, And List Order 292 75.8 Urgent Data Queue Manipulation Routines 292 75.9 Reading Urgent Data 295 75.70 Collecting Holes 297 75.77 Skipping Holes 298 75.72 Reading Data From TCP 299 75.73 Sending Urgent Data 301 75.74 Recording The Locations Of Urgent Data Messages 301 75.75 Transmitting Urgent Data 303 75.76 TCP Push Function 303 75.77 Interpreting Push With Out-Of-Order Delivery 304 15.18 Implementation Of Push On Input 305 75.79 Summary 306

Chapter 16 Socket-Level Interface 309

76.7 Introduction 309 76.2 Interfacing Through A Device 309 16.3 TCP Connections As Devices 311

Page 8: Internetworking With TCP/IP - GBV

Contents xin

76.4 An Example TCP Client Pro gram 312 16.5 An Example TCP Server Program 313 16.6 Implementation OfThe TCP Master Device 315 76.7 Implementation Of A TCP Slave Device 323 16.8 Initialization Of A Slave Device 337 76.9 Summary 338

Chapter 17 RIP: Active Route Propagation And Passive Acquisition 341

77.7 Introduction 341 77.2 Active And Passive Mode Participants 342 77.J Basic RIP Algorithm And Cost Metrie 342 77.4 Instabilities And Solutions 343 77.5 Message Types 347 7 7.6 Protocol Characterization 347 77.7 Implementation Of RIP 348 77.8 The Principle RIP Process 351 77.9 Responding To An Incoming Request 356 77.70 Generating Update Messages 358 77.77 Initializing Copies Of An Update Message 359 77.72 Generating Periodic RIP Output 364 77.75 Limitations Of RIP 365 77.74 Summary 365

Chapter 18 SNMP: MIB Variables, Representations, And Bindings 367

18.1 Introduction 367 18.2 Server Organization And Name Mapping 368 18.3 MIB Variables 369 78.4 MIB Variable Names 370 18.5 Lexicographic Ordering Among Names 371 78.6 Prefix Removal 371 78.7 Operations Applied To MIB Variables 372 78.8 Names For Tables 372 78.9 Conceptual Threading OfThe Name Hierarchy 373 78.70 Data Structure For MIB Variables 2>1A 18.11 A Data Structure For Fast Lookup 376 78.72 Implementation OfThe Hash Table 378 78.75 Specification Of MIB Bindings 378 78.74 Internal Variables Used In Bindings 383 78.75 Hash Table Lookup 384 78.76 SNMP Structures And Constants 387

Page 9: Internetworking With TCP/IP - GBV

XIV Contents

18.17 ASN.l Representation Manipulation 390 18.18 Summary 400

Chapter19 SNMP: Client And Server 403

19.1 Introduction 403 19.2 Data Representation In The Server 403 19.3 Server Implementation 404 19.4 Parsing An SNMP Message 406 79.5 Converting ASN.l Names In The Binding List 410 79.6 Resolving A Query 411 79.7 Interpreting The Get-Next Operation 413 19.8 Indirect Application Of Operations 413 79.9 Indirection For Tables 416 79.70 Generating A Reply Message Backward All 19.11 Converting From Internal Form to ASN.l 420 79.72 Utility Functions Used By The Server 421 79.75 Implementation Of An SNMP Client All 19.14 Initialization Of Variables 424 79.75 Summary All

Chapter 20 SNMP: Table Access Functions 429

20.7 Introduction 429 20.2 Table Access 430 20.3 Object Identifiers For Tables 430 20.4 Address Entry Table Functions 430 20.5 Address Translation Table Functions 437 20.6 Network Interface Table Functions AA1 20.7 Routing Table Functions 455 20.8 TCP Connection Table Functions 464 20.9 Summary 471

Chapter 21 Implementation In Retrospect 473

27.7 Introduction 473 27.2 Statistical Analysis Of The Code 473 27.3 Lines Of Code For Each Protocol 474 27.4 Functions And Procedures For Each Protocol 475 27.5 Summary All

Page 10: Internetworking With TCP/IP - GBV

Contents

Appendix 1 Cross Reference Of Procedure Calls 479

Appendix 2 Xinu Procedures And Functions Used In The Code 501

Bibliography 509

Index 517

Index 533