Cover Pages for Figures



Figure 2.1 Internet growth measured by the number of computers attached to the Internet in each year from 1981 though 2003. The y-axis is labeled in millions of computers.
Figure 2.2 Internet growth from 1981 through 2003 plotted on a log scale illustrates the exponential growth.
Figure 2.3 Example output from the ping program run on the author's workstation. The destination was www.sears.com, and the program was manually interrupted after five responses were received.
Figure 2.4 Example output from the ping program for destination berkeley.edu, which is located on the west coast. Round-trip times are higher than than those reported in Figure 2.3.
Figure 2.5 Example output from the ping program for destination mit.edu, a location on the east coast. Round-trip times are significantly higher than in previous examples.
Figure 2.6 Example output from traceroute run on the author's workstation to destination berkeley.edu, which is an alias for computer chaparral.Berkeley.edu.
Figure 3.1 An example API consisting of seven operations. These seven functions are sufficient for most network applications.
Figure 3.2 Illustration of the API calls used for a trivial interaction. The client sends one request and receives one reply.
Figure 3.3 The three type names used in our example API. On a given computer these types are defined to be integers of a specific size.
Figure 3.4 A summary of argument and return types for the example API.
Figure 3.5 Illustration of the echo application, which can be used on any two computers connected to the Internet. The client program runs on one computer and the server program runs on another.
Figure 4.1 Illustration of twisted pair wiring. A plastic coating on the surface of each wire prevents the metal in one wire from touching the metal in the other. The twists help reduce interference.
Figure 4.2 Enlarged cross-section of a coaxial cable with major parts identified. Although a coaxial cable is stiffer than a single wire, it can be bent.
Figure 4.3 Illustration of a satellite used to provide communication across an ocean. The satellite receives radio signals from one ground station, and transmits them to another.
Figure 5.1 Illustration of how positive and negative voltage can be used to transmit bits across a wire. In this example, the sender applies a negative voltage to send a 1 bit or a positive voltage to send a 0 bit.
Figure 5.2 The voltage on a wire as a character is transmitted using RS-232. A start bit notifies the receiver that a character is starting, and each bit transmission lasts the same length of time.
Figure 5.3 The minimal wiring required for full-duplex RS-232 communication in which control wires are omitted. Although the two circuits carry data independently, it is possible for them to share a single ground wire.
Figure 5.4 An illustration of the voltage emitted by a real device as it transmits a bit. In practice, voltages are often worse than this example.
Figure 6.1 The waveform of a typical carrier. The carrier oscillates continuously, even when no data is being sent.
Figure 6.2 (a) A digital signal, and (b) the wave that results from amplitude modulation using the signal in (a). The carrier is reduced to 2/3 full strength to encode a 1 bit and 1/3 strength to encode a 0 bit.
Figure 6.3 An illustration of phase shift modulation. Arrows indicate points at which the carrier abruptly jumps to a new point in the cycle.
Figure 6.4 The use of two modems for long-distance communication across a 4-wire circuit. The modulator in one modem connects to the demodulator in the other. A pair of wires is needed for each connection.
Figure 6.5 Illustration of dialup modems that use the voice telephone system to communicate. To the telephone system, a dialup modem appears to be a telephone.
Figure 6.6 The concept of frequency division multiplexing. Each pair of source and destination can send data over the shared channel without interference. In practice, each end requires a multiplexor and demultiplexor for 2-way communication, and a multiplexor may need circuitry to generate the carrier waves.
Figure 7.1 An illustration of one reason computer networks use packets. While one pair of computers communicate, others must wait.
Figure 7.2 Illustration of multiplexing with packets. The sources take turns using the shared communication channel. (a) Computer 1 uses the resource to send a packet, and then (b) computer 2 uses the resource to send a packet.
Figure 7.3 An example frame that uses character soh to mark the beginning of the frame and eot to mark the end. The format is simple and unambiguous -- a receiver can tell when the entire frame has arrived, even if there are delays between characters.
Figure 7.4 An example of byte stuffing. For each occurrence of a character listed in the left column in the data, the sender transmits the two characters in the right column.
Figure 7.5 Illustration of byte stuffing, where (a) is an example of data that includes characters such as soh, and (b) is the frame after byte stuffing. The dashed lines show the locations in the original data where characters have been replaced or new characters added.
Figure 7.6 An example 16-bit checksum computation for a string of 12 ASCII characters. Characters are grouped into 16-bit quantities, added together using 16-bit arithmetic, and the carry bits are added to the result.
Figure 7.7 Illustration of how a checksum can fail to detect transmission errors. Reversing the value of the second bit in each data item produces the same checksum.
Figure 7.8 (a) A diagram of hardware that computes an exclusive or, and (b) the output value for each of the four combinations of input values. Such hardware units are used to calculate a CRC.
Figure 7.9 A shift register (a) before and (b) after a shift operation. During a shift, each bit moves left one position, and the output becomes equal to the leftmost bit.
Figure 7.10 A diagram of the hardware used to compute a CRC. After bits of a message have been shifted into the unit, the shift registers contain the 16-bit CRC for the message.
Figure 7.11 A modification of the frame format from Figure 7.3 that includes a 16-bit CRC.
Figure 8.1 The independent point-to-point connections required for (a) two, (b) three, and (c) four computers. The number of connections grows rapidly as the number of computers increases.
Figure 8.2 The disadvantage of a point-to-point network that requires a dedicated connection for each pair of computers: the total number of connections passing between two locations can exceed the total number of computers being connected.
Figure 8.3 Illustration of the star topology in which each computer attaches to a central point called a hub.
Figure 8.4 Illustration of a ring topology in which computers are connected in a closed loop. Each computer connects directly to two others.
Figure 8.5 Illustration of a bus topology in which all computers attach to a single cable.
Figure 8.6 Illustration of Manchester Encoding used with Ethernet. A change from positive voltage to zero encodes a 0 bit, and a change from zero to positive voltage encodes a 1 bit.
Figure 8.7 Conceptual flow of bits across an Ethernet. While transmitting a frame, a computer has exclusive use of the cable.
Figure 8.8 Three computers with wireless LAN hardware positioned at maximal transmission distance, d. Although computer 2 will receive all transmissions, computers 1 and 3 will not receive transmissions from each other
Figure 8.9 The conceptual flow of bits during a transmission on a token ring network. Except for the sender, computers on the network pass bits of the frame to the next station. The destination makes a copy.
Figure 8.10 (a) Arrows showing the directions that data flows around counter-rotating rings, and (b) the same network after a station has failed. After the failure, stations use the reverse path to form a closed ring.
Figure 8.11 An ATM switch with six computers attached, and the star topology that results.
Figure 8.12 Details of a connection between an ATM switch and a computer. Each connection consists of a pair of optical fibers. One fiber carries data to the switch, and the other carries data to the computer.
Figure 9.1 Organization of the hardware in a computer attached to a LAN. Because it is powerful and independent, the network interface hardware does not use the CPU when transmitting or receiving bits of a frame.
Figure 9.2 The general format of a frame sent across a LAN. The header contains information such as the addresses of the sender and the recipient.
Figure 9.3 Illustration of the frame format used with Ethernet. The number in each field gives the size of the field measured in 8-bit octets.
Figure 9.4 Examples of frame types used with Ethernet (type values are given in hexadecimal). The table lists only a few examples; many other types have been assigned.
Figure 9.5 Illustration of how type information can be included in a frame's data area if the frame header does not include a type field. .SX "frame" "type
Figure 9.6 An example of the 8-octet IEEE LLC/SNAP header, which is used to specify the type of data. The SNAP portion specifies an organization and a type defined by that organization.
Figure 10.1 The location of I/O sockets inside a typical computer. Each socket aligns with an opening in the back of the cabinet, and the computer's bus connects the socket to other major components such as the processor and memory.
Figure 10.2 The back of a computer with a NIC installed in one of the sockets. A cable attaches the exposed connector to the network.
Figure 10.3 Three computers connected to a thick Ethernet. An AUI cable connects the NIC in each computer to its corresponding transceiver.
Figure 10.4 A connection multiplexor. Although the multiplexor attaches to a single transceiver, multiple computers can connect to the multiplexor. Each computer operates as if it connects directly to a transceiver.
Figure 10.5 Three computers connected on a thin wire Ethernet. The medium is a flexible cable that connects from the NIC on one computer directly to the NIC on another computer.
Figure 10.6 Three computers connected to an Ethernet hub using twisted pair wiring. Each computer has a dedicated connection.
Figure 10.7 Illustration of computers in eight offices wired with (a) thick, (b) thin, and (c) twisted pair Ethernet. Wires can run above the ceiling or under a raised floor. A wiring closet may contain a hub or equipment used for network monitoring, control, or debugging.
Figure 10.8 Illustration of the part of an Ethernet interface card exposed when the card is installed in a computer. The interface can be used with one of the three basic wiring schemes. Each wiring scheme uses a different style connector.
Figure 10.9 Popular wiring categories and typical uses for each. Category 5E is an enhanced version of category 5.
Figure 10.10 Three Macintosh computers connected with LocalTalk wiring. Each computer attaches to a transceiver with a short LocalTalk cable, and LocalTalk cables connect the transceivers. A LocalTalk transceiver with only one connection acts as a terminator for the bus.
Figure 11.1 Optical fibers and fiber modems used to provide a connection between a computer and a distant Ethernet. The computer and Ethernet hub both use conventional signals.
Figure 11.2 A repeater R connecting two Ethernets. The repeater connects directly to the cable.
Figure 11.3 Repeaters used to connect Ethernet segments on three floors of an office building. Each floor has one segment, and one segment is placed vertically in the building.
Figure 11.4 Six computers connected to a pair of bridged LAN segments. The bridge, which uses the same type of connection as a computer, always sends and receives complete frames.
Figure 11.5 A sequence of events for the example network shown in Figure 11.4 and the locations of computers that the bridge has learned.
Figure 11.6 A bridge connecting LAN segments in two buildings. An optical fiber is used to connect the bridge to a remote LAN segment.
Figure 11.7 A bridge using a leased satellite channel to connect LAN segments at two sites. A satellite bridge can span arbitrary distance.
Figure 11.8 A bridged network that consists of eight segments connected by seven bridges. Computers can be attached to any of the segments.
Figure 11.9 An example of bridges connected in a cycle. A problem occurs if all bridges forward broadcast frames.
Figure 11.10 The concept underlying a switched LAN. Electronic circuits in the switch provide each computer with the illusion of a separate LAN segment connected to other segments by bridges.
Figure 12.1 An illustration of digitization using eight values. Each vertical line represents an integer value chosen for one sample.
Figure 12.2 Illustration of a digital circuit with a DSU/CSU on each end. The DSU/CSU converts between the digital standards used in the telephone system and those used by computer vendors.
Figure 12.3 Data rates of popular digital circuit standards used in North America and Europe.
Figure 12.4 An inverse mux using two T1 circuits to provide a connection with twice the capacity. Inverse multiplexing is attractive economically for intermediate capacities because two T1 circuits are much less expensive than a T3 circuit.
Figure 12.5 Data rates of digital circuits according to the STS hierarchy of standards.
Figure 12.6 Illustration of an STS-1 SONET frame with 810 octets divided into 9 rows of 90 columns. Octets at the beginning of each row provide clock synchronization and maintenance information.
Figure 12.7 ADSL modems connected to existing local loop wiring. The modems can use a pair of wires simultaneously with analog telephone service.
Figure 13.1 A packet switch with two types of I/O connectors: one type is used to connect to other packet switches, and the other is used to connect to computers.
Figure 13.2 A small WAN formed by interconnecting packet switches. Connections between packet switches usually operate at a higher speed than connections to individual computers.
Figure 13.3 Example of hierarchical addresses in a WAN. Each address consists of two parts: the first part identifies a packet switch, and the second part identifies a computer connected to the switch.
Figure 13.4 (a) A network consisting of three packet switches, and (b) the next-hop forwarding information found in switch 2. Each switch has different next-hop information.
Figure 13.5 An abbreviated version of the routing table in Figure 13.4b made possible by hierarchical addressing. When forwarding to a local computer, the switch uses the second part of the address to select a specific computer.
Figure 13.6 The network from Figure 13.2 and the corresponding graph. Each node in the graph corresponds to a packet switch, and each edge between two nodes represents a connection between the corresponding packet switches.
Figure 13.7 The routing table for each node in the graph of Figure 13.6. The next-hop field in an entry contains a pair (u,v) to denote the edge in the graph from node u to node v.
Figure 13.8 Revised version of the routing tables in Figure 13.7. An asterisk in the column labeled destination denotes a default route.
Figure 13.9 A graph with weights assigned to edges. The shortest path between nodes 4 and 5 is shown darkened. The distance along the path is 19, the sum of the weights on the edges.
Figure 14.1 Fields in the 5-octet header found in an ATM cell. Each line in the diagram represents one octet.
Figure 14.2 Illustration of an ATM VC between two computers.
Figure 14.3 An illustration of three ATM switches and the forwarding table in each switch that allows a single VC to span the network. Only those table entries that correspond to the VC are shown.
Figure 15.1 Summary of major characteristics for example technologies. The technologies suitable for WANs are used in public networks.
Figure 16.1 The historic ISO 7-Layer Reference Model. A layering model is a tool to help protocol designers construct a suite of protocols that solves all communication problems.
Figure 16.2 The conceptual path of data as it travels from an application on computer 1 across a network to an application on computer 2.
Figure 16.3 Examples of older protocol stacks that have been replaced by TCP/IP protocols. Although the stacks shared many general concepts, the details differed, making them incompatible.
Figure 16.4 The nested protocol headers that appear in a frame as the frame travels across a network if the full ISO stack is used. Each layer of protocol software adds a header to an outgoing frame.
Figure 16.5 The layering principle applied at each layer of the old ISO model. If protocol software on the sending computer changes the message, the change must be reversed by the corresponding protocol software on the receiver.
Figure 16.6 A 4-packet window sliding through outgoing data. The window is shown (a) when transmission begins, (b) after two packets have been acknowledged, and (c) after eight packets have been acknowledged. The sender can transmit all packets in the window.
Figure 16.7 Messages required to send a sequence of four packets using (a) stop-and-go flow control, and (b) a 4-packet sliding window. Time proceeds down the page, and each arrow shows one message sent from one computer to the other.
Figure 16.8 A graph that represents a network of six packet switches. Such networks can experience congestion.
Figure 17.1 Two physical networks connected by a router, which has a separate interface for each network connection. Computers can attach to each network.
Figure 17.2 An internet formed by using three routers to interconnect four physical networks. Each network can be a LAN or a WAN.
Figure 17.3 The internet concept. (a) The illusion of a single network that TCP/IP software provides to users and applications, and (b) the underlying physical structure in which a computer attaches to one physical network, and routers interconnect the networks.
Figure 17.4 The five layers of the TCP/IP reference model.
Figure 18.1 The five classes of IP addresses in the original classful scheme. The address assigned to a host is either class A, B, or C; the prefix identifies a network, and the suffix is unique to a host on that network.
Figure 18.2 The mapping between the first four bits of an IP address and the class of the address. The mapping was used with the original classful scheme.
Figure 18.3 Examples of 32-bit binary numbers and their equivalent in dotted decimal notation. Each octet is written in decimal with periods (dots) used to separate octets.
Figure 18.4 The range of decimal values found in the first octet of each address class.
Figure 18.5 The number of networks and hosts per network in each of the three primary IP address classes.
Figure 18.6 An example private internet with IP addresses assigned to hosts. The size of the cloud used to denote a physical network corresponds to the number of hosts expected on the network; the size of a network determines the class of address assigned.
Figure 18.7 Illustration of CIDR addressing for a /28 prefix. Note that because bits are numbered starting at zero, the prefix covers bits 0 through 27. Thus, bits 28 through 31 correspond to the host suffix.
Figure 18.8 Summary of the special IP address forms.
Figure 18.9 An example of IP addresses assigned to two routers. Each interface is assigned an address that contains the prefix of the network to which the interface connects.
Figure 19.1 A simple internet with routers R1 and R2 connecting three physical networks; each network has two host computers attached. A computer can only resolve the address of a computer attached to the same physical network.
Figure 19.2 An example address binding table. Each entry in the table contains a protocol address and the equivalent hardware address.
Figure 19.3 An example of direct lookup for a class C network. The host portion of an address is used as an array index.
Figure 19.4 Comparison of address resolution using a table lookup (T), closed-form computation (C), and dynamic message exchange (D).
Figure 19.5 An ARP message exchange. (a) Computer W begins to broadcast an ARP request that contains computer Y's IP address. (b) All computers receive the request, and (c) computer Y sends a response directly to W. .SH "ARP Message Format
Figure 19.6 The format for an ARP message when used to bind Internet protocol addresses to Ethernet hardware addresses.
Figure 19.7 Illustration of an ARP message encapsulated in an Ethernet frame. The entire ARP message travels in the data area of the frame; the network hardware neither interprets nor modifies contents of the ARP message.
Figure 19.8 Illustration of the type field in an Ethernet header used to specify the frame contents. A value of 0x806 informs the receiver that the frame contains an ARP message.
Figure 19.9 Layered protocol software in a computer and the conceptual boundary between the network interface layer and higher layers. Software above the boundary uses protocol addresses; software below the boundary translates each protocol address to an equivalent hardware address.
Figure 20.1 The general form of an IP datagram with a header followed by data. The header contains information that controls where and how the datagram is to be sent.
Figure 20.2 (a) An example internet with three routers connecting four physical networks, and (b) the conceptual routing table found in router R2. Each entry in the table lists a destination network and the next hop along a route to that network.
Figure 20.3 (a) An internet of four networks and three routers with an IP address assigned to each router interface, and (b) the routing table found in the center router. Each entry in the table lists a destination, a mask, and the next hop used to reach the destination.
Figure 20.4 Fields in the IP datagram header. Both the source and destination addresses are Internet addresses.
Figure 21.1 An IP datagram encapsulated in a hardware frame. The entire datagram resides in the frame data area. In practice, the frame format used with some technologies includes a frame trailer as well as a frame header.
Figure 21.2 An IP datagram as it appears at each step during a trip across an internet. Whenever it travels across a physical network, the datagram is encapsulated in a frame appropriate to the network.
Figure 21.3 An example of a router that connects two networks with different MTU values. A frame that travels across network 1 can contain 1500 octets of data, while a frame that travels across network 2 can contain at most 1000 octets of data.
Figure 21.4 An IP datagram divided into three fragments. Each fragment carries some data from the original datagram, and has an IP header similar to the original datagram.
Figure 21.5 An example internet in which hosts can generate datagrams that require fragmentation. Once a datagram has been fragmented, the fragments are forwarded to the final destination, which reassembles them.
Figure 22.1 The general form of an IPv6 datagram. Extension headers are optional -- the minimum datagram has a base header followed by data.
Figure 22.2 The format of an IPv6 base header. The header contains fewer fields than the IPv4 datagram header.
Figure 22.3 Two IPv6 datagrams in which (a) contains a base header plus data, and (b) contains a base header, route header, and data. The NEXT HEADER field in each header specifies the type of the item that follows.
Figure 22.4 The IPv6 options extension header. Because the size of the options header can vary from one datagram to another, the HEADER LEN field specifies the exact length.
Figure 22.5 Illustration of fragmentation in IPv6. The fragmentable part of the original datagram (a), is placed in the payload area of fragments (b, c, and d). Each fragment begins with a copy of the unfragmentable part and a fragment extension header.
Figure 23.1 A list of ICMP messages. Each message is identified by an 8-bit type field.
Figure 23.2 Two levels of encapsulation that occur when an ICMP message is sent. The ICMP message is encapsulated in a datagram, which is encapsulated in a frame for transmission across a physical network.
Figure 24.1 The format of a UDP user datagram. Each user datagram begins with an eight octet header followed by the data being sent.
Figure 24.2 The encapsulation of a UDP message in an IP datagram. The entire UDP message, including the header and data areas resides in the data area of the IP datagram.
Figure 25.1 An example internet that illustrates why TCP is an end-to-end transport protocol. TCP views IP as a mechanism that allows TCP software on a host to exchange messages with TCP software on a remote host.
Figure 25.2 Example of retransmission. Items on the left correspond to events in a computer sending data, items on the right correspond to events in a computer receiving data, and time goes down the figure. The sender retransmits lost data.
Figure 25.3 Timeout and retransmission on two connections that have different round-trip delays. TCP optimizes throughput by using a round-trip estimate to compute a retransmission timer.
Figure 25.4 A sequence of messages that illustrates TCP flow control when the maximum segment size is 1000 octets. A sender can transmit enough data to fill the currently advertised window.
Figure 25.5 The 3-way handshake used to close a connection. Acknowledgements sent in each direction are used to guarantee that all data has arrived before the connection is terminated.
Figure 25.6 The TCP segment format. Each message sent from TCP on one machine to TCP on another (both data and acknowledgements) uses this format.
Figure 26.1 Illustration of how NAT is used. A device running NAT is placed on the connection between a site and the Internet.
Figure 26.2 Illustration of basic NAT translation. NAT rewrites the source address in outgoing datagrams and the destination address in incoming datagrams.
Figure 26.3 An example NAT translation table for the mapping illustrated in Figure 26.2. An entry specifies the direction of packet flow and the changes that should occur.
Figure 26.4 An example NAPT translation table for TCP connections from private computers 10.0.0.1 and 10.0.0.2. NAPT changes both the IP source address and TCP port number. In the example, both connections use TCP source port 30000 (unlikely, but possible).
Figure 26.5 Illustration of a dedicated NAT device that provides connections for multiple computers. The NAT box connects to an ISP (e.g., through a DSL connection or a cable modem).
Figure 27.1 (a) An architecture where static routing is used, and (b) a static routing table used in a host.
Figure 27.2 Three networks connected by two routers. In such situations, dynamic routing can be used to propagate information about remote networks.
Figure 27.3 The Internet routing architecture. Each autonomous system chooses an IGP to use internally; an EGP is used to communicate between autonomous systems.
Figure 27.4 The flow of routes and data illustrated with ISPs. After a router in ISP1 advertises routes to customers, data can arrive for those customers.
Figure 27.5 The format of a RIP version 2 update message. The message contains a list of destinations and a distance to each. RIP measures distance in hops.
Figure 27.6 (a) An internet consisting of seven networks interconnected by routers, and (b) a corresponding OSPF graph. In the simplest case, each router corresponds to a node in the graph.
Figure 28.1 A client and server using TCP/IP protocols to communicate across an internet. The client and server each interact with a protocol in the transport layer.
Figure 28.2 Two servers on a single computer accessed by clients on two other computers. Client 1 can access server 1, while client 2 accesses server 2.
Figure 30.1 The sequence of socket procedure calls in the example client and server. The server must call listen before a client calls connect.
Figure 31.1 Values for the most significant segment of a domain name. DNS does not distinguish between names in upper or lower case.
Figure 31.2 A graphical representation that illustrates one way a DNS hierarchy might be structured in a corporation. Names for individual computers can be added to the diagram as well.
Figure 31.3 Two examples of ways the domain name hierarchy from Figure 31.2 can be divided among three servers. Each organization chooses how to divide names among its servers.
Figure 32.1 An example e-mail message. Lines of the header begin with a keyword and a colon; a blank line separates the header from the body .
Figure 32.2 Examples of keywords found in Internet mail.
Figure 32.3 The path of an e-mail message. The mail transfer program on the sender's computer becomes a client of the remote mail server.
Figure 32.4 An example SMTP transfer between a client on computer example.com and a server on computer foobar.com. Each line is labeled to show whether the client or server transmits the line.
Figure 32.5 An example database used by a mail exploder. Each entry is assigned a name and contains a list of e-mail addresses.
Figure 32.6 The path of a message as it passes from a sender's interface through a mail gateway. On the gateway computer, an exploder handles incoming e-mail, and a conventional mail transfer program sends a copy to each recipient.
Figure 32.7 The path of e-mail when POP is used to access a mailbox. The mail can arrive from the sender's computer or a mail gateway. To retrieve messages from the mailbox, a user runs a program that becomes a client of the POP server.
Figure 33.1 Conceptual organization of the most basic IP telephone system. An IP telephone uses the controller to find another IP telephone and establish a call.
Figure 33.2 The interconnection of an IP telephone system with the Public Switched Telephone Network. Gateways handle both voice and signaling.
Figure 33.3 The set of protocols various groups have proposed for use with IP telephony and the layer at which each operates.
Figure 33.4 The layering of some of the protocols that comprise the H.323 standard.
Figure 33.5 The six basic SIP methods.
Figure 33.6 An example of the messages exchanged by SIP to set up a telephone call.
Figure 34.1 The names of commands found in the BSD interface for FTP. Many vendors support a variant of the BSD interface.
Figure 34.2 TCP connections between an FTP client and server during a file transfer, with an arrow showing the direction in which each connection was formed. Although the control connection remains open, the data connection is closed after the transfer completes.
Figure 35.1 The general form of an HTML document. The head contains information about the document; the body contains the document itself.
Figure 35.2 The HTML document from Figure 35.1 with some of the unnecessary white space removed. A browser produces the same output for both documents.
Figure 35.3 Illustration of image alignment. As requested in the tag, text on the line is positioned in the middle of the image.
Figure 35.4 Example HTTP header returned by a server. The status code 200 on the first line indicates that the server honored the request; additional lines give further information about the requested item.
Figure 35.5 Major components of a Web browser. Dark arrows show the flow of data; other arrows show control paths. The data paths from clients to interpreters are not shown.
Figure 35.6 An example of XML for a corporate phone book. Each data item is given a name.
Figure 36.1 An example CGI program written in UNIX shell language.
Figure 36.2 Examples of environment variables passed to a CGI program.
Figure 36.3 An example CGI program that stores long-term state information.
Figure 36.4 An example CGI program that maintains short-term state.
Figure 37.1 Illustration of three active document representations and the programs that translate or transport the document. The darkened arrows show the direction a document moves.
Figure 37.2 An example applet that counts the number of times a user clicks a button.
Figure 37.3 Illustration of the display after the applet in Figure 37.2 begins execution.
Figure 37.4 The display after the user has clicked the button once.
Figure 37.5 An example applet that interacts with the HTTP and HTML facilities in a browser.
Figure 37.6 Illustration of the display produced by the applet in Figure 37.5.
Figure 37.7 A JavaScript program that performs the same function as the Java applet in Figure 37.2. JavaScript is embedded in an HTML page.
Figure 38.1 An example procedural call graph in a conventional program. An arrow from one procedure to another means that the first procedure contains a call to the second.
Figure 38.2 The example program from Figure 38.1 divided into a client and a server.
Figure 38.3 (a) The original call in a conventional program, and (b) the remote version of the same call implemented with communication stubs.
Figure 39.1 An example of ASN.1 encoding for integers. Each integer is preceded by a length field that specifies the number of octets used to encode the integer value.
Figure 40.1 Illustration of a firewall that is used to protect an organization against unwanted interaction with the Internet.
Figure 40.2 Illustration of the location of a packet filter. The filter software is configured to discard specified packets as they pass from one network to another.
Figure 40.3 The architecture of a firewall with a secure host bracketed by two packet filters. One filter restricts incoming packets, and the other restricts outgoing packets.
Figure 40.4 (a) The physical Internet connections between routers at three sites of an organization, and (b) the equivalent logical connections created by VPN software running on the routers.
Figure 40.5 IP-in-IP encapsulation used over a VPN. (a) A datagram, (b) the encrypted version of the datagram, and (c) the encrypted version encapsulated in another datagram for transmission across the Internet.
Figure 41.1 The first few steps that TCP/IP protocol software takes to obtain configuration information. T1 and T2 denote timeout values.
Figure 41.2 The format that BOOTP uses for request and response messages. The message is sent using UDP, which is encapsulated in IP.
Figure 41.3 The DHCP message format, a slightly modified version of the BOOTP format.