Libro ilustrate dstevens tcpip

722 views

Published on

The TCP/IP protocol suite allows computers of all sizes, from many different computer vendors,
running totally different operating systems, to communicate with each other. It is quite amazing
because its use has far exceeded its original estimates. What started in the late 1960s as a
government-financed research project into packet switching networks has, in the 1990s, turned into the
most widely used form of networking between computerrs. It is truly an open system in that the
definition of the protocol suite and many of its implementations are publicly available at little or no
charge. It forms the basis for what is called the worldwide Internet, or the Internet, a wide area
network (WAN) of more than one million computers that literally spans the globe.
This chapter provides an overview of the TCP/IP protocol suite, to establish an adequate background
for the remaining chapters. For a historical perspective on the early development of TCP/IP see [Lynch
1993].

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
722
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Libro ilustrate dstevens tcpip

  1. 1. TCP/IP IllustratedOleg V. Titov, CTD IFMO RU
  2. 2. Table of ContentsTCP/IP Illustrated . . . . . . . . . . . . . . . . . 1 TCP/IP Illustrated, Volume 1 . . . . . . . . . . . . . . 1 The Protocols . . . . . . . . . . . . . . . . . 1 W. Richard Stevens . . . . . . . . . . . . . . . . 1 Contents . . . . . . . . . . . . . . . . . . 1Preface . . . . . . . . . . . . . . . . . . . . 8 Preface . . . . . . . . . . . . . . . . . . . 8 Introduction . . . . . . . . . . . . . . . . . 8 Organization of the Book . . . . . . . . . . . . . . 8 Readers . . . . . . . . . . . . . . . . . . 9 Systems Used for Testing . . . . . . . . . . . . . . 10 Typographical Conventions . . . . . . . . . . . . . . 11 Acknowledgments . . . . . . . . . . . . . . . . 11Chapter 1. Introduction . . . . . . . . . . . . . . . . 13 Introduction . . . . . . . . . . . . . . . . . . 13 1.1 Introduction . . . . . . . . . . . . . . . . 13 1.2 Layering . . . . . . . . . . . . . . . . . 13 1.3 TCP/IP Layering . . . . . . . . . . . . . . . 17 1.4 Internet Addresses . . . . . . . . . . . . . . . 18 1.5 The Domain Name System . . . . . . . . . . . . . 19 1.6 Encapsulation . . . . . . . . . . . . . . . . 20 1.7 Demultiplexing . . . . . . . . . . . . . . . 21 1.8 Client-Server Model . . . . . . . . . . . . . . 22 1.9 Port Numbers . . . . . . . . . . . . . . . . 23 Reserved Ports . . . . . . . . . . . . . . . . 23 1.10 Standardization Process . . . . . . . . . . . . . 24 1.11 RFCs . . . . . . . . . . . . . . . . . 24 1.12 Standard, Simple Services . . . . . . . . . . . . . 25 1.13 The Internet . . . . . . . . . . . . . . . . 26 1.14 Implementations . . . . . . . . . . . . . . . 26 1.15 Application Programming Interfaces . . . . . . . . . . . 27 1.16 Test Network . . . . . . . . . . . . . . . . 28 1.17 Summary . . . . . . . . . . . . . . . . . 28 Exercises . . . . . . . . . . . . . . . . . 29Chapter 2. Link Layer . . . . . . . . . . . . . . . . 30 Link Layer . . . . . . . . . . . . . . . . . . . 30 2.1 Introduction . . . . . . . . . . . . . . . . 30 2.2 Ethernet and IEEE 802 Encapsulation . . . . . . . . . . . 30 2.3 Trailer Encapsulation . . . . . . . . . . . . . . 32 2.4 SLIP: Serial Line IP . . . . . . . . . . . . . . 33 2.5 Compressed SLIP . . . . . . . . . . . . . . . 34 2.6 PPP: Point-to-Point Protocol . . . . . . . . . . . . . 34 2.7 Loopback Interface . . . . . . . . . . . . . . . 36 2.8 MTU . . . . . . . . . . . . . . . . . . 38 2.9 Path MTU . . . . . . . . . . . . . . . . . 38 2.10 Serial Line Throughput Calculations . . . . . . . . . . . 39 2.11 Summary . . . . . . . . . . . . . . . . . 40 Exercises . . . . . . . . . . . . . . . . . 40 i
  3. 3. Chapter 3. IP: Internet Protocol . . . . . . . . . . . . . . 41 . IP: Internet Protocol . . . . . . . . . . . . . . . . . 41 . 3.1 Introduction . . . . . . . . . . . . . . . . . 41 . 3.2 IP Header . . . . . . . . . . . . . . . . . 41 . 3.3 IP Routing . . . . . . . . . . . . . . . . . 45 . Examples . . . . . . . . . . . . . . . . . 47 . 3.4 Subnet Addressing . . . . . . . . . . . . . . . 49 . 3.5 Subnet Mask . . . . . . . . . . . . . . . . 51 . Example . . . . . . . . . . . . . . . . . . 51 . 3.6 Special Case IP Addresses . . . . . . . . . . . . . 52 . 3.7 A Subnet Example . . . . . . . . . . . . . . . 53 . 3.8 ifconfig Command . . . . . . . . . . . . . . 55 . 3.9 netstat Command . . . . . . . . . . . . . . 56 . 3.10 IP Futures . . . . . . . . . . . . . . . . . 56 . 3.11 Summary . . . . . . . . . . . . . . . . . 57 . Exercises . . . . . . . . . . . . . . . . . . 58 .Chapter 4. ARP: Address Resolution Protocol . . . . . . . . . . . 59 . ARP: Address Resolution Protocol . . . . . . . . . . . . . . 59 . 4.1 Introduction . . . . . . . . . . . . . . . . . 59 . 4.2 An Example . . . . . . . . . . . . . . . . . 59 . 4.3 ARP Cache . . . . . . . . . . . . . . . . . 60 . 4.4 ARP Packet Format . . . . . . . . . . . . . . . 61 . 4.5 ARP Examples . . . . . . . . . . . . . . . . 62 . Normal Example . . . . . . . . . . . . . . . . 62 . ARP Request to a Nonexistent Host . . . . . . . . . . . . 64 . ARP Cache Timeout . . . . . . . . . . . . . . . 65 . 4.6 Proxy ARP . . . . . . . . . . . . . . . . . 65 . 4.7 Gratuitous ARP . . . . . . . . . . . . . . . . 67 . 4.8 arp Command . . . . . . . . . . . . . . . . 68 . 4.9 Summary . . . . . . . . . . . . . . . . . 68 . Exercises . . . . . . . . . . . . . . . . . . 68 .Chapter 5. RARP: Reverse Address Resolution Protocol . . . . . . . . . 69 . RARP: Reverse Address Resolution Protocol . . . . . . . . . . . 69 . 5.1 Introduction . . . . . . . . . . . . . . . . . 69 . 5.2 RARP Packet Format . . . . . . . . . . . . . . . 69 . 5.3 RARP Examples . . . . . . . . . . . . . . . . 69 . 5.4 RARP Server Design . . . . . . . . . . . . . . . 72 . RARP Servers as User Processes . . . . . . . . . . . . 72 . Multiple RARP Servers per Network . . . . . . . . . . . 72 . 5.5 Summary . . . . . . . . . . . . . . . . . 72 . Exercises . . . . . . . . . . . . . . . . . . 73 .Chapter 6. ICMP: Internet Control Message Protocol . . . . . . . . . 74 . ICMP: Internet Control Message Protocol . . . . . . . . . . . . 74 . 6.1 Introduction . . . . . . . . . . . . . . . . . 74 . 6.2 ICMP Message Types . . . . . . . . . . . . . . 74 . 6.3 ICMP Address Mask Request and Reply . . . . . . . . . . 77 . 6.4 ICMP Timestamp Request and Reply . . . . . . . . . . . 78 . Alternatives . . . . . . . . . . . . . . . . . 81 . 6.5 ICMP Port Unreachable Error . . . . . . . . . . . . . 82 . tcpdump Time Line . . . . . . . . . . . . . . . 84 . ii
  4. 4. 6.6 4.4BSD Processing of ICMP Messages . . . . . . . . . . . 85 . 6.7 Summary . . . . . . . . . . . . . . . . . 87 . Exercises . . . . . . . . . . . . . . . . . . 87 .Chapter 7. Ping Program . . . . . . . . . . . . . . . . 88 . Ping Program . . . . . . . . . . . . . . . . . . 88 . 7.1 Introduction . . . . . . . . . . . . . . . . . 88 . 7.2 Ping Program . . . . . . . . . . . . . . . . 88 . LAN Output . . . . . . . . . . . . . . . . . 89 . WAN Output . . . . . . . . . . . . . . . . . 91 . Hardwired SLIP Links . . . . . . . . . . . . . . . 91 . Dialup SLIP Links . . . . . . . . . . . . . . . 92 . 7.3 IP Record Route Option . . . . . . . . . . . . . . 93 . Normal Example . . . . . . . . . . . . . . . . 94 . Abnormal Output . . . . . . . . . . . . . . . . 96 . 7.4 IP Timestamp Option . . . . . . . . . . . . . . . 97 . 7.5 Summary . . . . . . . . . . . . . . . . . 98 . Exercises . . . . . . . . . . . . . . . . . . 98 .Traceroute Program . . . . . . . . . . . . . . . . . 99 . Traceroute Program . . . . . . . . . . . . . . . . . 99 . 8.1 Introduction . . . . . . . . . . . . . . . . . 99 . 8.2 Traceroute Program Operation . . . . . . . . . . . . . 99 . 8.3 LAN Output . . . . . . . . . . . . . . . . . 100 . 8.4 WAN Output . . . . . . . . . . . . . . . . 104 . 8.5 IP Source Routing Option . . . . . . . . . . . . . . 106 . traceroute Examples with Loose Source Routing . . . . . . . . 107 . traceroute Examples with Strict Source Routing . . . . . . . . . 109 . traceroute Round Trips with Loose Source Routing . . . . . . . 111 . 8.6 Summary . . . . . . . . . . . . . . . . . 112 . Exercises . . . . . . . . . . . . . . . . . . 112 .Chapter 9. IP Routing . . . . . . . . . . . . . . . . . 114 . IP Routing . . . . . . . . . . . . . . . . . . . 114 . 9.1 Introduction . . . . . . . . . . . . . . . . . 114 . 9.2 Routing Principles . . . . . . . . . . . . . . . 114 . Simple Routing Table . . . . . . . . . . . . . . . 115 . Initializing a Routing Table . . . . . . . . . . . . . 117 . A More Complex Routing Table . . . . . . . . . . . . 118 . No Route to Destination . . . . . . . . . . . . . . 119 . 9.3 ICMP Host and Network Unreachable Errors . . . . . . . . . 119 . 9.4 To Forward or Not to Forward . . . . . . . . . . . . . 120 . 9.5 ICMP Redirect Errors . . . . . . . . . . . . . . 121 . An Example . . . . . . . . . . . . . . . . . 121 . More Details . . . . . . . . . . . . . . . . . 123 . 9.6 ICMP Router Discovery Messages . . . . . . . . . . . . 124 . Router Operation . . . . . . . . . . . . . . . . 125 . Host Operation . . . . . . . . . . . . . . . . 125 . Implementation . . . . . . . . . . . . . . . . 126 . 9.7 Summary . . . . . . . . . . . . . . . . . 126 . Exercises . . . . . . . . . . . . . . . . . . 126 .Chapter 10. Dynamic Routing Protocols . . . . . . . . . . . . 128 . Dynamic Routing Protocols . . . . . . . . . . . . . . . 128 . iii
  5. 5. 10.1 Introduction . . . . . . . . . . . . . . . . 128 . 10.2 Dynamic Routing . . . . . . . . . . . . . . . 128 . 10.3 Unix Routing Daemons . . . . . . . . . . . . . . 129 . 10.4 RIP: Routing Information Protocol . . . . . . . . . . . 129 . Message Format . . . . . . . . . . . . . . . . 129 . Normal Operation . . . . . . . . . . . . . . . . 130 . Metrics . . . . . . . . . . . . . . . . . . 131 . Problems . . . . . . . . . . . . . . . . . . 131 . Example . . . . . . . . . . . . . . . . . . 132 . Another Example . . . . . . . . . . . . . . . . 133 . 10.5 RIP Version 2 . . . . . . . . . . . . . . . . 136 . 10.6 OSPF: Open Shortest Path First . . . . . . . . . . . . 136 . 10.7 BGP: Border Gateway Protocol . . . . . . . . . . . . 137 . 10.8 CIDR: Classless Interdomain Routing . . . . . . . . . . . 138 . 10.9 Summary . . . . . . . . . . . . . . . . . 139 . Exercises . . . . . . . . . . . . . . . . . . 140 .Chapter 11. UDP: User Datagram Protocol . . . . . . . . . . . . 141 . UDP: User Datagram Protocol . . . . . . . . . . . . . . 141 . 11.1 Introduction . . . . . . . . . . . . . . . . 141 . 11.2 UDP Header . . . . . . . . . . . . . . . . 141 . 11.3 UDP Checksum . . . . . . . . . . . . . . . . 142 . tcpdump Output . . . . . . . . . . . . . . . . 143 . Some Statistics . . . . . . . . . . . . . . . . 144 . 11.4 A Simple Example . . . . . . . . . . . . . . . 144 . 11.5 IP Fragmentation . . . . . . . . . . . . . . . 145 . 11.6 ICMP Unreachable Error (Fragmentation Required) . . . . . . . . 148 . Example . . . . . . . . . . . . . . . . . . 148 . 11.7 Determining the Path MTU Using Traceroute . . . . . . . . . 150 . The Worldwide Internet . . . . . . . . . . . . . . 151 . 11.8 Path MTU Discovery with UDP . . . . . . . . . . . . 151 . Example . . . . . . . . . . . . . . . . . . 151 . 11.9 Interaction Between UDP and ARP . . . . . . . . . . . 155 . 11.10 Maximum UDP Datagram Size . . . . . . . . . . . . 156 . Datagram Truncation . . . . . . . . . . . . . . . 157 . 11.11 ICMP Source Quench Error . . . . . . . . . . . . . 158 . 11.12 UDP Server Design . . . . . . . . . . . . . . 159 . Client IP Address and Port Number . . . . . . . . . . . . 160 . Destination IP Address . . . . . . . . . . . . . . 160 . UDP Input Queue . . . . . . . . . . . . . . . . 160 . Restricting Local IP Address . . . . . . . . . . . . . 162 . Restricting Foreign IP Address . . . . . . . . . . . . . 163 . Multiple Recipients per Port . . . . . . . . . . . . . 164 . 11.13 Summary . . . . . . . . . . . . . . . . . 165 . Exercises . . . . . . . . . . . . . . . . . . 165 .Chapter 12. Broadcasting and Multicasting . . . . . . . . . . . . 167 . Broadcasting and Multicasting . . . . . . . . . . . . . . 167 . 12.1 Introduction . . . . . . . . . . . . . . . . 167 . 12.2 Broadcasting . . . . . . . . . . . . . . . . 168 . Limited Broadcast . . . . . . . . . . . . . . . . 168 . Net-directed Broadcast . . . . . . . . . . . . . . . 169 . iv
  6. 6. Subnet-directed Broadcast . . . . . . . . . . . . . . 169 . All-subnets-directed Broadcast . . . . . . . . . . . . . 169 . 12.3 Broadcasting Examples . . . . . . . . . . . . . . 169 . 12.4 Multicasting . . . . . . . . . . . . . . . . 172 . Multicast Group Addresses . . . . . . . . . . . . . . 172 . Converting Multicast Group Addresses to Ethernet Addresses . . . . . . 173 . Multicasting on FDDI and Token Ring Networks . . . . . . . . . 174 . 12.5 Summary . . . . . . . . . . . . . . . . . 175 . Exercises . . . . . . . . . . . . . . . . . . 175 .Chapter 13. IGMP: Internet Group Management Protocol . . . . . . . . 176 . IGMP: Internet Group Management Protocol . . . . . . . . . . . 176 . 13.1 Introduction . . . . . . . . . . . . . . . . 176 . 13.2 IGMP Message . . . . . . . . . . . . . . . . 176 . 13.3 IGMP Protocol . . . . . . . . . . . . . . . . 177 . Joining a Multicast Group . . . . . . . . . . . . . . 177 . IGMP Reports and Queries . . . . . . . . . . . . . . 177 . Implementation Details . . . . . . . . . . . . . . 178 . Time-to-Live Field . . . . . . . . . . . . . . . 178 . All-Hosts Group . . . . . . . . . . . . . . . . 179 . 13.4 An Example . . . . . . . . . . . . . . . . 179 . Multicast Router Example . . . . . . . . . . . . . . 181 . 13.5 Summary . . . . . . . . . . . . . . . . . 183 . Exercises . . . . . . . . . . . . . . . . . . 183 .Chapter 14. DNS: The Domain Name System . . . . . . . . . . . 184 . DNS: The Domain Name System . . . . . . . . . . . . . . 184 . 14.1 Introduction . . . . . . . . . . . . . . . . 184 . 14.2 DNS Basics . . . . . . . . . . . . . . . . 184 . 14.3 DNS Message Format . . . . . . . . . . . . . . 187 . Question Portion of DNS Query Message . . . . . . . . . . 189 . Resource Record Portion of DNS Response Message . . . . . . . . 190 . 14.4 A Simple Example . . . . . . . . . . . . . . . 191 . 14.5 Pointer Queries . . . . . . . . . . . . . . . . 195 . Example . . . . . . . . . . . . . . . . . . 196 . Hostname Spoofing Check . . . . . . . . . . . . . . 196 . 14.6 Resource Records . . . . . . . . . . . . . . . 197 . 14.7 Caching . . . . . . . . . . . . . . . . . 200 . 14.8 UDP or TCP . . . . . . . . . . . . . . . . 204 . 14.9 Another Example . . . . . . . . . . . . . . . 204 . 14.10 Summary . . . . . . . . . . . . . . . . . 206 . Exercises . . . . . . . . . . . . . . . . . . 206 .Chapter 15. TFTP: Trivial File Transfer Protocol . . . . . . . . . . 207 . TFTP: Trivial File Transfer Protocol . . . . . . . . . . . . . 207 . 15.1 Introduction . . . . . . . . . . . . . . . . 207 . 15.2 Protocol . . . . . . . . . . . . . . . . . 207 . 15.3 An Example . . . . . . . . . . . . . . . . 208 . 15.4 Security . . . . . . . . . . . . . . . . . 210 . 15.5 Summary . . . . . . . . . . . . . . . . . 210 . Exercises . . . . . . . . . . . . . . . . . . 211 .Chapter 16. BOOTP: Bootstrap Protocol . . . . . . . . . . . . 212 . BOOTP: Bootstrap Protocol . . . . . . . . . . . . . . . 212 . v
  7. 7. 16.1 Introduction . . . . . . . . . . . . . . . . 212 . 16.2 BOOTP Packet Format . . . . . . . . . . . . . . 212 . Port Numbers . . . . . . . . . . . . . . . . . 214 . 16.3 An Example . . . . . . . . . . . . . . . . 214 . 16.4 BOOTP Server Design . . . . . . . . . . . . . . 217 . 16.5 BOOTP Through a Router . . . . . . . . . . . . . 217 . 16.6 Vendor-Specific Information . . . . . . . . . . . . . 218 . 16.7 Summary . . . . . . . . . . . . . . . . . 219 . Exercises . . . . . . . . . . . . . . . . . . 219 .Chapter 17. TCP: Transmission Control Protocol . . . . . . . . . . 220 . TCP: Transmission Control Protocol . . . . . . . . . . . . . 220 . 17.1 Introduction . . . . . . . . . . . . . . . . 220 . 17.2 TCP Services . . . . . . . . . . . . . . . . 220 . 17.3 TCP Header . . . . . . . . . . . . . . . . 221 . 17.4 Summary . . . . . . . . . . . . . . . . . 224 . Exercises . . . . . . . . . . . . . . . . . . 224 .Chapter 18. TCP Connection Establishment and Termination . . . . . . . 225 . TCP Connection Establishment and Termination . . . . . . . . . . 225 . 18.1 Introduction . . . . . . . . . . . . . . . . 225 . 18.2 Connection Establishment and Termination . . . . . . . . . 225 . tcpdump Output . . . . . . . . . . . . . . . . 225 . Time Line . . . . . . . . . . . . . . . . . 227 . Connection Establishment Protocol . . . . . . . . . . . . 227 . Connection Termination Protocol . . . . . . . . . . . . 228 . Normal tcpdump Output . . . . . . . . . . . . . . 229 . 18.3 Timeout of Connection Establishment . . . . . . . . . . . 229 . First Timeout Period . . . . . . . . . . . . . . . 230 . Type-of-Service Field . . . . . . . . . . . . . . . 231 . 18.4 Maximum Segment Size . . . . . . . . . . . . . . 231 . 18.5 TCP Half-Close . . . . . . . . . . . . . . . . 232 . 18.6 TCP State Transition Diagram . . . . . . . . . . . . 233 . 2MSL Wait State . . . . . . . . . . . . . . . . 234 . Quiet Time Concept . . . . . . . . . . . . . . . 238 . FIN WAIT 2 State . . . . . . . . . . . . . . . . 238 . 18.7 Reset Segments . . . . . . . . . . . . . . . . 238 . Connection Request to Nonexistent Port . . . . . . . . . . . 239 . Aborting a Connection . . . . . . . . . . . . . . . 239 . Detecting Half-Open Connections . . . . . . . . . . . . 241 . 18.8 Simultaneous Open . . . . . . . . . . . . . . . 242 . An Example . . . . . . . . . . . . . . . . . 243 . 18.9 Simultaneous Close . . . . . . . . . . . . . . . 245 . 18.10 TCP Options . . . . . . . . . . . . . . . . 246 . 18.11 TCP Server Design . . . . . . . . . . . . . . 246 . TCP Server Port Numbers . . . . . . . . . . . . . . 247 . Restricting Local IP Address . . . . . . . . . . . . . 248 . Restricting Foreign IP Address . . . . . . . . . . . . . 249 . Incoming Connection Request Queue . . . . . . . . . . . 250 . 18.12 Summary . . . . . . . . . . . . . . . . . 254 . Exercises . . . . . . . . . . . . . . . . . . 254 . vi
  8. 8. Chapter 19. TCP Interactive Data Flow . . . . . . . . . . . . 257 . TCP Interactive Data Flow . . . . . . . . . . . . . . . 257 . 19.1 Introduction . . . . . . . . . . . . . . . . 257 . 19.2 Interactive Input . . . . . . . . . . . . . . . 257 . 19.3 Delayed Acknowledgments . . . . . . . . . . . . . 259 . 19.4 Nagle Algorithm . . . . . . . . . . . . . . . 260 . Disabling the Nagle Algorithm . . . . . . . . . . . . . 262 . An Example . . . . . . . . . . . . . . . . . 262 . 19.5 Window Size Advertisements . . . . . . . . . . . . 267 . 19.6 Summary . . . . . . . . . . . . . . . . . 267 . Exercises . . . . . . . . . . . . . . . . . . 267 .Chapter 20. TCP Bulk Data Flow . . . . . . . . . . . . . . 268 . TCP Bulk Data Flow . . . . . . . . . . . . . . . . . 268 . 20.1 Introduction . . . . . . . . . . . . . . . . 268 . 20.2 Normal Data Flow . . . . . . . . . . . . . . . 268 . Fast Sender, Slow Receiver . . . . . . . . . . . . . . 271 . 20.3 Sliding Windows . . . . . . . . . . . . . . . 272 . An Example . . . . . . . . . . . . . . . . . 273 . 20.4 Window Size . . . . . . . . . . . . . . . . 274 . An Example . . . . . . . . . . . . . . . . . 275 . 20.5 PUSH Flag . . . . . . . . . . . . . . . . . 276 . Examples . . . . . . . . . . . . . . . . . 277 . 20.6 Slow Start . . . . . . . . . . . . . . . . . 278 . An Example . . . . . . . . . . . . . . . . . 278 . 20.7 Bulk Data Throughput . . . . . . . . . . . . . . 279 . Bandwidth-Delay Product . . . . . . . . . . . . . . 282 . Congestion . . . . . . . . . . . . . . . . . 283 . 20.8 Urgent Mode . . . . . . . . . . . . . . . . 283 . An Example . . . . . . . . . . . . . . . . . 285 . 20.9 Summary . . . . . . . . . . . . . . . . . 287 . Exercises . . . . . . . . . . . . . . . . . . 288 .Chapter 21. TCP Timeout and Retransmission . . . . . . . . . . . 289 . TCP Timeout and Retransmission . . . . . . . . . . . . . . 289 . 21.1 Introduction . . . . . . . . . . . . . . . . 289 . 21.2 Simple Timeout and Retransmission Example . . . . . . . . . 289 . 21.3 Round-Trip Time Measurement . . . . . . . . . . . . 291 . Karn’s Algorithm . . . . . . . . . . . . . . . . 293 . 21.4 An RTT Example . . . . . . . . . . . . . . . 293 . Round-Trip Time Measurements . . . . . . . . . . . . 294 . RTT Estimator Calculations . . . . . . . . . . . . . 295 . Slow Start . . . . . . . . . . . . . . . . . 297 . 21.5 Congestion Example . . . . . . . . . . . . . . 297 . 21.6 Congestion Avoidance Algorithm . . . . . . . . . . . . 298 . 21.7 Fast Retransmit and Fast Recovery Algorithms . . . . . . . . . 300 . 21.8 Congestion Example (Continued) . . . . . . . . . . . . 301 . 21.9 Per-Route Metrics . . . . . . . . . . . . . . . 304 . 21.10 ICMP Errors . . . . . . . . . . . . . . . . 304 . An Example . . . . . . . . . . . . . . . . . 304 . 21.11 Repacketization . . . . . . . . . . . . . . . 308 . 21.12 Summary . . . . . . . . . . . . . . . . . 309 . vii
  9. 9. Exercises . . . . . . . . . . . . . . . . . . 310 .Chapter 22. TCP Persist Timer . . . . . . . . . . . . . . 311 . TCP Persist Timer . . . . . . . . . . . . . . . . . 311 . 22.1 Introduction . . . . . . . . . . . . . . . . 311 . 22.2 An Example . . . . . . . . . . . . . . . . 311 . 22.3 Silly Window Syndrome . . . . . . . . . . . . . . 314 . An Example . . . . . . . . . . . . . . . . . 314 . 22.4 Summary . . . . . . . . . . . . . . . . . 318 . Exercises . . . . . . . . . . . . . . . . . . 318 .Chapter 23. TCP Keepalive Timer . . . . . . . . . . . . . . 319 . TCP Keepalive Timer . . . . . . . . . . . . . . . . 319 . 23.1 Introduction . . . . . . . . . . . . . . . . 319 . 23.2 Description . . . . . . . . . . . . . . . . . 320 . 23.3 Keepalive Examples . . . . . . . . . . . . . . . 321 . Other End Crashes . . . . . . . . . . . . . . . 321 . Other End Crashes and Reboots . . . . . . . . . . . . . 323 . Other End Is Unreachable . . . . . . . . . . . . . . 324 . 23.4 Summary . . . . . . . . . . . . . . . . . 325 . Exercises . . . . . . . . . . . . . . . . . . 326 .Chapter 24. TCP Futures and Performance . . . . . . . . . . . . 327 . TCP Futures and Performance . . . . . . . . . . . . . . 327 . 24.1 Introduction . . . . . . . . . . . . . . . . 327 . 24.2 Path MTU Discovery . . . . . . . . . . . . . . 327 . An Example . . . . . . . . . . . . . . . . . 328 . Big Packets or Small Packets? . . . . . . . . . . . . . 330 . 24.3 Long Fat Pipes . . . . . . . . . . . . . . . . 331 . Gigabit Networks . . . . . . . . . . . . . . . . 332 . 24.4 Window Scale Option . . . . . . . . . . . . . . 333 . An Example . . . . . . . . . . . . . . . . . 334 . 24.5 Timestamp Option . . . . . . . . . . . . . . . 336 . 24.6 PAWS: Protection Against Wrapped Sequence Numbers . . . . . . 337 . 24.7 T/TCP: A TCP Extension for Transactions . . . . . . . . . . 338 . 24.8 TCP Performance . . . . . . . . . . . . . . . 341 . 24.9 Summary . . . . . . . . . . . . . . . . . 342 . Exercises . . . . . . . . . . . . . . . . . . 343 .Chapter 25. SNMP: Simple Network Management Protocol . . . . . . . . 345 . SNMP: Simple Network Management Protocol . . . . . . . . . . . 345 . 25.1 Introduction . . . . . . . . . . . . . . . . 345 . 25.2 Protocol . . . . . . . . . . . . . . . . . 345 . 25.3 Structure of Management Information . . . . . . . . . . . 347 . 25.4 Object Identifiers . . . . . . . . . . . . . . . 348 . 25.5 Introduction to the Management Information Base . . . . . . . . 349 . Case Diagrams . . . . . . . . . . . . . . . . 350 . 25.6 Instance Identification . . . . . . . . . . . . . . 351 . Simple Variables . . . . . . . . . . . . . . . . 351 . Tables . . . . . . . . . . . . . . . . . . 351 . Lexicographic Ordering . . . . . . . . . . . . . . 352 . 25.7 Simple Examples . . . . . . . . . . . . . . . 353 . Simple Variables . . . . . . . . . . . . . . . . 353 . get-next Operator . . . . . . . . . . . . . . . 353 . viii
  10. 10. Table Access . . . . . . . . . . . . . . . . . 354 . 25.8 Management Information Base (Continued) . . . . . . . . . 355 . system Group . . . . . . . . . . . . . . . . 355 . interface Group . . . . . . . . . . . . . . . 356 . at Group . . . . . . . . . . . . . . . . . 358 . ip Group . . . . . . . . . . . . . . . . . 359 . icrop Group . . . . . . . . . . . . . . . . 364 . tcp Group . . . . . . . . . . . . . . . . . 365 . 25.9 Additional Examples . . . . . . . . . . . . . . 368 . Interface MTU . . . . . . . . . . . . . . . . 368 . Routing Tables . . . . . . . . . . . . . . . . 369 . 25.10 Traps . . . . . . . . . . . . . . . . . . 370 . 25.11 ASN.1 and BER . . . . . . . . . . . . . . . 372 . 25.12 SNMP Version 2 . . . . . . . . . . . . . . . 373 . 25.13 Summary . . . . . . . . . . . . . . . . . 374 . Exercises . . . . . . . . . . . . . . . . . . 374 .Chapter 26. Telnet and Rlogin: Remote Login . . . . . . . . . . . 375 . Telnet and Rlogin: Remote Login . . . . . . . . . . . . . . 375 . 26.1 Introduction . . . . . . . . . . . . . . . . 375 . 26.2 Rlogin Protocol . . . . . . . . . . . . . . . . 376 . Application Startup . . . . . . . . . . . . . . . 377 . Flow Control . . . . . . . . . . . . . . . . . 377 . Client Interrupt . . . . . . . . . . . . . . . . 378 . Window Size Changes . . . . . . . . . . . . . . . 378 . Server to Client Commands . . . . . . . . . . . . . 378 . Client to Server Commands . . . . . . . . . . . . . 379 . Client Escapes . . . . . . . . . . . . . . . . 380 . 26.3 Rlogin Examples . . . . . . . . . . . . . . . 380 . Initial Client-Server Protocol . . . . . . . . . . . . . 380 . Client Interrupt Key . . . . . . . . . . . . . . . 382 . 26.4 Telnet Protocol . . . . . . . . . . . . . . . . 385 . NVT ASCII . . . . . . . . . . . . . . . . . 385 . Telnet Commands . . . . . . . . . . . . . . . . 386 . Option Negotiation . . . . . . . . . . . . . . . 387 . Suboption Negotiation . . . . . . . . . . . . . . . 388 . Half-Duplex, Character at a Time, Line at a Time, or Linemode? . . . . . 389 . Synch Signal . . . . . . . . . . . . . . . . . 390 . Client Escapes . . . . . . . . . . . . . . . . 390 . 26.5 Telnet Examples . . . . . . . . . . . . . . . 391 . Character-at-a-Time Mode . . . . . . . . . . . . . . 391 . Linemode . . . . . . . . . . . . . . . . . 395 . Line-at-a-Time Mode (Kludge Line Mode) . . . . . . . . . . 397 . Linemode: Client Interrupt Key . . . . . . . . . . . . . 400 . 26.6 Summary . . . . . . . . . . . . . . . . . 401 . Exercises . . . . . . . . . . . . . . . . . . 402 .Chapter 27. FTP: File Transfer Protocol . . . . . . . . . . . . 403 . FTP: File Transfer Protocol . . . . . . . . . . . . . . . 403 . 27.1 Introduction . . . . . . . . . . . . . . . . 403 . 27.2 FTP Protocol . . . . . . . . . . . . . . . . 403 . Data Representation . . . . . . . . . . . . . . . 404 . ix
  11. 11. FTP Commands . . . . . . . . . . . . . . . . 405 . FTP Replies . . . . . . . . . . . . . . . . . 406 . Connection Management . . . . . . . . . . . . . . 408 . 27.3 FTP Examples . . . . . . . . . . . . . . . . 409 . Connection Management: Ephemeral Data Port . . . . . . . . . 409 . Connection Management: Default Data Port . . . . . . . . . . 411 . Text File Transfer: NVT ASCII Representation or Image? . . . . . . . 413 . Aborting A File Transfer: Telnet Synch Signal . . . . . . . . . 415 . Anonymous FTP . . . . . . . . . . . . . . . . 417 . Anonymous FTP from an Unknown IP Address . . . . . . . . . 419 . 27.4 Summary . . . . . . . . . . . . . . . . . 420 . Exercises . . . . . . . . . . . . . . . . . . 421 .Chapter 28. SMTP: Simple Mail Transfer Protocol . . . . . . . . . . 422 . SMTP: Simple Mail Transfer Protocol . . . . . . . . . . . . . 422 . 28.1 Introduction . . . . . . . . . . . . . . . . 422 . 28.2 SMTP Protocol . . . . . . . . . . . . . . . . 422 . Simple Example . . . . . . . . . . . . . . . . 423 . SMTP Commands . . . . . . . . . . . . . . . . 426 . Envelopes, Headers, and Body . . . . . . . . . . . . . 427 . Relay Agents . . . . . . . . . . . . . . . . . 428 . NVT ASCII . . . . . . . . . . . . . . . . . 429 . Retry Intervals . . . . . . . . . . . . . . . . 430 . 28.3 SMTP Examples . . . . . . . . . . . . . . . 430 . MX Records: Hosts Not Directly Connected to the Internet . . . . . . . 430 . MX Records: Hosts That Are Down . . . . . . . . . . . . 432 . VRFY and EXPN Commands . . . . . . . . . . . . . 434 . 28.4 SMTP Futures . . . . . . . . . . . . . . . . 435 . Envelope Changes: Extended SMTP . . . . . . . . . . . . 435 . Header Changes: Non-ASCII Characters . . . . . . . . . . . 437 . Body Changes: Multipurpose Internet Mail Extensions (MIME) . . . . . 439 . 28.5 Summary . . . . . . . . . . . . . . . . . 443 . Exercises . . . . . . . . . . . . . . . . . . 443 .Chapter 29. NFS: Network File System . . . . . . . . . . . . . 444 . NFS: Network File System . . . . . . . . . . . . . . . 444 . 29.1 Introduction . . . . . . . . . . . . . . . . 444 . 29.2 Sun Remote Procedure Call . . . . . . . . . . . . . 444 . Sun RPC . . . . . . . . . . . . . . . . . . 445 . 29.3 XDR: External Data Representation . . . . . . . . . . . 446 . 29.4 Port Mapper . . . . . . . . . . . . . . . . 446 . 29.5 NFS Protocol . . . . . . . . . . . . . . . . 448 . File Handles . . . . . . . . . . . . . . . . . 450 . Mount Protocol . . . . . . . . . . . . . . . . 450 . NFS Procedures . . . . . . . . . . . . . . . . 451 . UDP or TCP? . . . . . . . . . . . . . . . . . 452 . NFS Over TCP . . . . . . . . . . . . . . . . 452 . 29.6 NFS Examples . . . . . . . . . . . . . . . . 453 . Simple Example: Reading a File . . . . . . . . . . . . 453 . Simple Example: Creating a Directory . . . . . . . . . . . 455 . Statelessness . . . . . . . . . . . . . . . . . 456 . Example: Server Crash . . . . . . . . . . . . . . 456 . x
  12. 12. Idempotent Procedures . . . . . . . . . . . . . . . 459 . 29.7 NFS Version 3 . . . . . . . . . . . . . . . . 460 . 29.8 Summary . . . . . . . . . . . . . . . . . 460 . Exercises . . . . . . . . . . . . . . . . . . 461 .Chapter 30. Other TCP/IP Applications . . . . . . . . . . . . 462 . Other TCP/IP Applications . . . . . . . . . . . . . . . 462 . 30.1 Introduction . . . . . . . . . . . . . . . . 462 . 30.2 Finger Protocol . . . . . . . . . . . . . . . . 462 . 30.3 Whois Protocol . . . . . . . . . . . . . . . . 464 . White Pages . . . . . . . . . . . . . . . . . 465 . 30.4 Archie, WAIS, Gopher, Veronica, and WWW . . . . . . . . . 466 . Archie . . . . . . . . . . . . . . . . . . 466 . WAIS: Wide Area Information Servers . . . . . . . . . . . 466 . Gopher . . . . . . . . . . . . . . . . . . 466 . Veronica: Very Easy Rodent-Oriented Netwide Index to Computerized Archives . . 466 . WWW: World Wide Web . . . . . . . . . . . . . . 467 . 30.5 X Window System . . . . . . . . . . . . . . . 467 . Xscope Program . . . . . . . . . . . . . . . . 468 . LBX: Low Bandwidth X . . . . . . . . . . . . . . 470 . 30.6 Summary . . . . . . . . . . . . . . . . . 470 . Exercises . . . . . . . . . . . . . . . . . . 470 .Appendix A: The tcpdump Program . . . . . . . . . . . . . 471 . The tcpdump Program . . . . . . . . . . . . . . . . 471 . A.1 BSD Packet Filter . . . . . . . . . . . . . . . 471 . A.2 SunOS Network Interface Tap . . . . . . . . . . . . 472 . A.3 SVR4 Data Link Provider Interface . . . . . . . . . . . 473 . A.4 tcpdump Output . . . . . . . . . . . . . . . 473 . A.5 Security Considerations . . . . . . . . . . . . . . 474 . A.6 Socket Debug Option . . . . . . . . . . . . . . 475 .Appendix B: Computer Clocks . . . . . . . . . . . . . . . 476 . Computer Clocks . . . . . . . . . . . . . . . . . 476 .Appendix C: The sock Program . . . . . . . . . . . . . . 478 . The sock Program . . . . . . . . . . . . . . . . . 478 .Appendix D: Solutions to Selected Exercises . . . . . . . . . . . 482 . Solutions to Selected Exercises . . . . . . . . . . . . . . 482 . Chapter 1 . . . . . . . . . . . . . . . . . . 482 . Chapter 3 . . . . . . . . . . . . . . . . . . 482 . Chapter 4 . . . . . . . . . . . . . . . . . . 483 . Chapter 5 . . . . . . . . . . . . . . . . . . 483 . Chapter 6 . . . . . . . . . . . . . . . . . . 483 . Chapter 7 . . . . . . . . . . . . . . . . . . 484 . Chapter 8 . . . . . . . . . . . . . . . . . . 485 . Chapter 9 . . . . . . . . . . . . . . . . . . 486 . Chapter 10 . . . . . . . . . . . . . . . . . . 487 . Chapter 11 . . . . . . . . . . . . . . . . . . 487 . Chapter 12 . . . . . . . . . . . . . . . . . . 488 . Chapter 13 . . . . . . . . . . . . . . . . . . 488 . Chapter 14 . . . . . . . . . . . . . . . . . . 488 . Chapter 15 . . . . . . . . . . . . . . . . . . 489 . Chapter 16 . . . . . . . . . . . . . . . . . . 489 . xi

×