Solutions to Chapter 2

NOTE: A few solutions are missing and will be added soon.

1. Explain how the notion of layering and internetworking make the rapid growth of applications such as the World Wide Web possible.

Solution:

Internetworking allows many component networks each with different underlying technology and operation to work together and form one large network. This provides the ubiquitous connectivity for applications like WWW.

The layering concept hides the specific underlying network technology from the upper layers and provides a common networking platform. Using the communication service provided by the layers below, new applications can be introduced independently and at a rapid rate.


2a. What universal set of communication services is provided by TCP/IP?

Solution:

The TCP/IP protocol stack provides two basic types of communications services through its two transport layer protocols: TCP provides reliable connection-oriented transfer of a byte stream; UDP provides for best-effort connectionless transfer of individual messages.

tcpip.JPG (19528 bytes)

* * * * *

2b. How is independence from underlying network technologies achieved?

Solution:

The two basic communications services provided by TCP and UDP are built on the connectionless packet transfer service provided by the Internet Protocol (IP). Many network interfaces are defined to support IP. The salient part of the above figure is that all of the higher layer protocols access the network interfaces through IP. This is what provides the ability to operate over multiple networks.

* * * * *

2c. What economies of scale result from (a) and (b)?

Solution:

Once a network interface for IP is defined for a given network technology, then hosts connected using the given network technology can connect to the Internet. This allows the reach of the Internet to grow rapidly, leveraging multiple coexisting networks technologies. Thus investment in new network technologies extend the reach of the Internet.


3. What difference does it make to the network layer if the underlying data link layer provides a connection-oriented service versus a connectionless service?

Solution:

If the data link layer provides a connection-oriented service to the network layer, then the network layer must precede all transfer of information with a connection setup procedure. If the connection-oriented service includes assurances that frames of information are transferred correctly and in sequence by the data link layer, the network layer can then assume that the packets it sends to its neighbor traverse an error-free pipe.

On the other hand, if the data link layer is connectionless, then each frame is sent independently through the data link, probably in unconfirmed manner (without acknowledgments or retransmissions). In this case the network layer cannot make assumptions about the sequencing or correctness of the packets it exchanges with its neighbors.

The Ethernet local area network provides an example of connectionless transfer of data link frames. The transfer of frames using "Type 2" service in Logical Link Control (discussed in Chapter 6) provides a connection-oriented data link control example.


4. Suppose transmission channels become virtually error-free. Is the data link layer still needed?

Solution:

The data link layer is still needed for flow control over the transmission channel and for framing the data. In a multiple access medium such as a LAN, the data link layer is required to coordinate access to the shared medium among the multiple users.


5. Why is the transport layer not present inside the network?

Solution:

The transport layer provides additional function to compensate for the limitations and impairments of the network layer, in order to meet requirements (e.g. QoS) of the upper layer. For example in TCP/IP, IP provides only best effort service. To provide the reliable service required by some applications - that is, to compensate for the shortcomings of best effort service - TCP establishes connections and implements flow control and congestion control on an end-to-end basis.


6. Which OSI layer is responsible for the following?

Solutions follow questions:

  1. Determining the best path to route packets.
  2. Layer 3 (network layer) determines the best path to route packets.

    The network layer is concerned with the selection of paths across the network.

  3. Providing end-to-end communications with reliable service.
  4. Layer 4 (transportation layer) provides end-to-end communications with reliable services.

    The transport layer is concerned with providing reliable service on an end-to-end basis across the network.

  5. Providing node-to-node communications with reliable service.

Layer 2 (data link layer) provides node-to-node communications with reliable services.

The data link layer provides for the reliable transfer of information between adjacent nodes in a network.


7. Should connection establishment be a confirmed service or an unconfirmed service? What about data transfer in a connection-oriented service? Connection release?

Solution:

In general, the establishment of a connection needs to be confirmed before information transfer can commence across a connection. Therefore connection establishment should be a confirmed service.

A connection-oriented service is usually reliable so confirmation of data delivery is not necessary. In certain situations, however, it is possible that the transfer across a connection is not reliable; in this case confirmation of correct data transfer may be required.

In general it is desirable that the release of a connection be confirmed by the parties involved. We will see in Chapter 8, section 5, that sometimes it is not easy to confirm that a connection has been closed. Consequently, many protocols attempt to confirm the closing of a connection several times, and then give up and simply stop transmitting.


8. Does it make sense for a network to provide a confirmed, connectionless packet transfer service?

Solution:

Yes. Connectionless packet transfer is often unreliable, that is, packets may be lost or discarded inside a network. Certain applications, for example, signaling in connection setup, require confirmation to acknowledge the receipt of packets.


9. Explain how the notion of multiplexing can be applied at the data link, network, and transport layers. Draw a figure that shows the flow of PDUs in each multiplexing scheme.

Solution:

To be added.


10. Give two features that the data link layer and transport layer have in common. Give two features in which they differ. Hint: Compare what can go wrong to the PDUs that are handled by these layers.

Solution:

Features they have in common:

Features in which they differ:


11a. Can a connection-oriented, reliable message transfer service be provided across a connectionless packet network? Explain.

Solution:

Yes. To provide connection-oriented service, the transport layer can establish a logical connection across the connectionless packet network by setting up state information (for example, packet sequence number) at the end systems. During the connection setup, the message is broken into separate packets, and each packet is assigned a sequence number.

Using the sequence numbers, the end-system transport-layer entities can acknowledge received packets, determine and retransmit lost packets, delete duplicate packets, and rearrange out-of-order packets. In so doing, the connectionless packet network is implementing reliable packet transfer.

Once all packets have arrived at the receiving end, they are reassembled into the original message.

For example, TCP provides a connection-oriented reliable transfer service over IP, a connectionless packet transfer service.

11b. Can a connectionless datagram transfer service be provided across a connection-oriented network?

Solution:

Yes. The connectionless datagram transfer service can be implemented by simply setting up a connection across the network each time a datagram needs to be transferred.


12. An internet path between two hosts involves a hop across network A, a packet-switching network, to a router and then another hop across packet-switching network B. Suppose that packet switching network A carries the packet between the first host and the router over a two-hop path involving one intermediate packet switch. Suppose also that the second network is an Ethernet LAN. Sketch the sequence of IP and non-IP packets and frames that are generated as an IP packet goes from host 1 to host 2.

Solution:

To be added.


13. Does Ethernet provide connection-oriented or connectionless service?

Solution:

Ethernet provides connectionless transfer service of information frames.


14. Ethernet is a LAN so it is placed in the data link layer of the OSI reference model.

Solutions follow questions:

  1. How is the transfer of frames in Ethernet similar to the transfer of frames across a wire? How is it different?
  2. To be added.

  3. How is the transfer of frames in Ethernet similar to the transfer of frames in a packet-switching network? How is it different?

To be added.


15. Suppose that a group of workstations is connected to an Ethernet LAN. If the workstations communicate only with each other, does it make sense to use IP in the workstations? Should the workstations run TCP directly over Ethernet? How is addressing handled?

Solution:

To be added.


16. Suppose two Ethernet LANs are interconnected by a box that operates as follows. The box has a table that tells it the physical addresses of the machines in each LAN. The box listens to frame transmissions on each LAN. If a frame is destined to a station at the other LAN, the box retransmits the frame onto the other LAN, otherwise the box does nothing.

Solutions follow questions:

  1. Is the resulting network still a LAN? Does it belong in the data link layer or the network layer?
  2. The resulting network is a local area network that has been extended. The extended LAN transfers frames, and so it still belongs in the data link layer.

  3. Can the approach be extended to connect more than two LANs? If so, what problems arise as the number of LANs becomes large?

Yes, more than two LANs can be connected using the above approach to form an extended LAN. As the number of LANs becomes large, the number of physical addresses stored in the bridge grows and becomes unmanageable.


17. Suppose all laptops in a large city are to communicate using radio transmissions from a high antenna tower. Is the data link layer or network layer more appropriate for this situation?

Solution:

The data link layer is concerned with the transfer of frames of information across a single hop. The network layer involves the transfer of information across a network using multiple hops per path in general. The connection from a radio antenna to the laptops is direct, and thus a data link layer protocol is more suitable for this situation.

Now suppose the city is covered by a large number of small antennas covering smaller areas. Which layer is more appropriate?

A number of areas each covered by small antennas can be interconnected using the "bridging" approach of problem 16, which remains in the data link layer. However, the network layer is more appropriate because it provides for the transfer of data in the form of packets across the communication network. A key aspect of this transfer is the routing of the packets from the source machine to the destination machine, typically traversing a number of transmission link and network nodes where routing is carried out.


18. Suppose that a host is connected to a connection-oriented packet-switching network and that it transmits a packet to a server along a path that traverses two packet switches. Suppose that each hop in the path involves a point-to-point link, that is, a wire. Show the sequence of network layer and data link layer PDUs that are generated as the packet travels from the host to the server.

Solution:

To be added.


19. Suppose an application layer entity wants to send an L-byte message to its peer process, using an existing TCP connection. The TCP segment consists of the message plus 20 bytes of header. The segment is encapsulated into an IP packet that has an additional 20 bytes of header. The IP packet in turn goes inside an Ethernet frame that has 18 bytes of header and trailer. What percentage of the transmitted bits in the physical layer correspond to message information, if L = 100 bytes, 500 bytes, 1000 bytes?

Solution:

TCP/IP over Ethernet allows data frames with a payload size up to 1460 bytes. Therefore, L = 100, 500 and 1000 bytes are within this limit.

The message overhead includes:

Therefore

L = 100 bytes, 100/158 = 63% efficiency.

L = 500 bytes, 500/558 = 90% efficiency.

L = 1000 bytes, 1000/1058 = 95% efficiency.


20. Suppose that the TCP entity receives a 1.5 megabyte file from the application layer and that the IP layer is willing to carry blocks of maximum size 1500 bytes. Calculate the amount of overhead incurred from segmenting the file into packet-sized units.

Solution:

1500 - 20 -20 = 1460 bytes

1.5 Mbyte / 1460 byte = 1027.4, therefore 1028 blocks are needed to transfer the file.

Overhead = ((1028 x 1500 - 1.5M)/1.5M) x 100 = 2.8%


21. Suppose a TCP entity receives a digital voice stream from the application layer. The voice stream arrives at a rate of 8000 bytes/second. Suppose that TCP arranges bytes into block sizes that result in a total TCP and IP header overhead of 50 percent. How much delay is incurred by the first byte in each block?

Solution:

Assume the stream is segmented as shown below, where the white cells represent data and the shaded cells represent the TCP header overhead.

tcpovrhd.GIF (1562 bytes)

Therefore, block size = 80 bytes and the payload size = 40 bytes.

Assume zero processing delay due to data arrangement and segmenting.

The delay incurred by the first byte of each block = 40/8000 = 0.5 ms.


22. How does the network layer in a connection-oriented packet-switching network differ from the network layer in a connectionless packet-switching network?

Solution:

The network layer in connection-oriented networks maintains state information about every connection. It can allocate resources at the switches through admission control. The network layer in connectionless networks has no knowledge of "connections", and instead deals independently with each packet.

The network layer in connection-oriented networks performs routing on a per connection basis. Each packet is routed based on a connection identifier of some sort and packets of the same connection have the same identifier value. In a connectionless network, routing is performed on per packet basis; each packet is routed independently based on information carried in the packet header, for example, the destination address.

In connection-oriented networks, the network layer forwarding table is set up by a signaling procedure during the connection establishment. In connectionless networks, the routers may execute a distributed algorithm to share network state information and dynamically calculate the routing table continuously.

In case of failure, the connection must be re-established in connection-oriented networks, whereas in connectionless networks, the packets are re-routed. The network layer in connectionless networks is more robust against failures.

Summary of differences:

Connection-oriented

Connectionless

Maintain state information about every connection

No knowledge of the "connection"

Allocate resources to connections at switches

No resource allocation

Admission control

No admission control

Per connection routing

Per packet routing

Route packet based on identifier

Route packet based on destination address.

Forwarding table specifies the output port and outgoing identifier value as function of the incoming identifier value

Routing table specifies the output port depending on the destination address

Forwarding table set up by signaling during connection establishment.

Router executes distributed algorithm to share network state information and dynamically calculate the routing table

Connection must be re-established in cases of failure

Packets are rerouted around failures, robust against failures


23. Identify session layer and presentation layer functions in the HTTP protocol.

Solution:

Presentation layer functions:

In the request message, the client specifies the protocol version that the browser uses (for example, HTTP/1.0). In the response message, the server sends information about the content type of the document (e.g. text/html, image/gif).

Session layer functions:

The HTTP protocol defines the client/server interaction in three steps:

    1. client sends the request for a file
    2. server replies with the file or error message if file is not found.
    3. server closes the TCP connection.


24. Suppose we need a communication service to transmit real-time voice over the Internet. What features of TCP and what features of UDP are appropriate?

Solution:

TCP is desirable in that it provides a connection for the transfer of a stream of information, which characterizes a digital voice stream. However, to provide reliable service TCP uses acknowledgments and retransmissions that result in packet delay that can not be tolerated by real-time traffic.

UDP provides connectionless service and delivers packets quickly. In case of packet loss, UDP does not provide retransmission, but some degree of packet loss can be tolerated by voice.


25. Consider the end-to-end IP packet transfer examples in Figure 2.13. Sketch the sequences of IP packets and Ethernet and PPP frames that are generated by the three examples of packet transfers: from the workstation to the server; from the server to the PC, and from the PC to the server. Include all relevant header information in the sketch.

Solution:

Workstation to Server:

Workstation to server frames

The Ethernet frame is broadcast over the LAN. The server's NIC card recognizes that the frame is intended for its host, so it captures the frame and examines it. It finds that the protocol type is set to IP, so it passes the IP datagram up to the IP entity.

Server to PC:

srvtopc.JPG (20606 bytes)

The Ethernet frame is broadcast over the LAN. The router examines frame and passes IP datagram to its IP entity which discover that the IP datagram is not for itself, but is to be routed on.  The routing tables at the router show that the machine with address (2,2) is connected directly on the other side of the point-to-point link. The router encapsulates the IP datagram in a PPP frame.

lantoppp.JPG (14105 bytes)

The PPP receiver at the PC receives the frame, checks the protocol type field and passes the IP datagram to its IP entity.

PC to Server:

The PC IP entity generates the IP packet shown below.  The PPP transmitter at the PC encapsulates the IP packet into a PPP frame sends it to the point-to-point link. There's no need for a physical address specification.

pctosrv1.JPG (13546 bytes)

The router examines the PPP frame and passes the IP datagram to its IP entity which discover that the IP datagram is not for itself, but is to be routed on. The routing table at the router shows that the machine with address (1,1) is connected in the other side of the Ethernet network. The router then encapsulates the IP datagram into an Ethernet frame that is broacast in the LAN.

pctosrv2.JPG (12725 bytes)

The server's NIC card recognizes that the frame is intended for its host, so it captures the frame and examines it. It finds that the protocol type is set to IP, so it passes the IP datagram up to the IP entity.


26. Suppose a user has two browser applications active at the same time, and suppose that the two applications are accessing the same server to retrieve HTTP documents at the same time. How does the server tell the difference between the two applications?

Solution:

A client application generates an ephemeral port number for every TCP connection it sets up. An HTTP request connection is uniquely specified by the five parameters: (TCP, client IP address, ephemeral port #, server IP address, 80). The two applications in the above situations will have different ephemeral port #s and will thus be distinguishable to the server.


27. What is the difference between a physical address, a network address, and a domain name?

Solution:

The physical address is the unique hardware address that identifies an interface of a machine on a physical network such as a LAN. Physical addresses are used in the data link layer.

A network address is a machine's logical address on a network. The network address is used in the network layer. The network address used on the Internet is the IP address.

Domain names are used as an aid to identify hosts and networks in the Internet, since names are easier to remember than numbers. The DNS system is used to translate between domain names and IP addresses. The domain name for the network address 128.100.132.30 is toronto.edu.


28. The Domain Name System has a hierarchical structure, for example, comm.toronto.edu. Explain how a DNS query might proceed if the local name server does not have the IP address for a given host.

Solution:

The domain name comm.toronto.edu has three levels of domains, comm.toronto.edu, toronto.edu, and edu. We can envision that name servers are arranged in a tree topology with a "root" server at the top; "edu" and other servers, such as "com", "org" "gov", "ca", at the second second-level; and below each second-level server, third level servers such as toronto.edu; and so on. To find an IP address, in principle the host needs to contact the root server, that, if necessary, contacts an appropriate server below it, for example, edu. This second-level server can then, if necessary, contact a server in the level below it, for example, toronto.edu. This process continues until the name is resolved.

This approach, however, can place large loads on the root server. In practice most queries involve local names, and so queries are first directed to a local name server. If the local name server cannot resolve a name, then the query is directed to another server in the domain system, for example, the parent server in the above tree hierarchy.


29. What is wrong with the following methods of assigning host id addresses?

Solutions follow questions:

  1. Copy the address from the machine in the next office.
  2. There is an address conflict. The host id must be unique to each machine.

  3. Modify the address from the machine in the next office.
  4. The resulting address may be an existing address and result in address conflict, or the address may not be recognizable by the routers.

  5. Use an example from the vendor's brochure.

The address has different network and subnetwork ids, and is not recognized by the routers.


30. Suppose a machine is attached to several physical networks. Why does it need a different IP address for each attachment?

Solution:

The IP address dictates through which network the packets are sent to and from the machine. Therefore each network connection must have a different address.


31. Suppose a computer is moved from one department to another. Does the physical address need to change? Does the IP address need to change? Does it make a difference if the computer is a laptop?

Solution:

The physical address does not change. It is globally unique to the computer's NIC card.

The IP address needs to be changed to reflect the new subnetwork id and host id.

The situation is the same for laptops.


32. Suppose the population of the world is 4 billion, and that there is an average of 1000 communicating devices per person. How many bits are required to assign a unique host address to each communicating device? Suppose that each device attaches to a single network and that each network on average has 10000 devices. How many bits are required to provide unique network ids to each network?

Solution:

log2 (4 x 109 x 103) = 41.9

Þ 42 bits are required to assign a unique host address to each communicating device.

log2 ((4 x 109 x 103) / 10,000) = 28.6

Þ 29 bits are required to provide unique network ids to each network.


33. Can the Internet protocol be used to run a homogeneous packet-switching network, that is, a network with identical packet switches interconnected with point-to-point links?

Solution:

Yes. For a homogeneous packet-switching network, the network interface function in each switch will be the same and will operate over the point-to-point links.


34. Is it possible to build a homogeneous packet-switching network with Ethernet LANs interconnecting the packet switches? If so, can connection-oriented service be provided over such a network?

Solution:

Yes. A homogeneous packet-switching network can be built where Ethernet LANs are used to interconnect packet switches. In the most common example the packet switches are routers running IP.

A connection-oriented service can be provided over such a packet-switching network in several ways. If the packet-switching network operates in connectionless manner, then additional functions can be added at the ingress and egress to the network to provide a connection-oriented transfer service. Alternatively, the packet-switching network itself could be designed to operate in connection-oriented fashion. In this case the packet switches might use a layer above Ethernet to ensure reliable and sequenced transfer of frames between packet switches. Such a packet-switching network can readily provide connection-oriented service.


35. In telephone networks one basic network is used to provide worldwide communications. In the Internet a multiplicity of networks are interconnected to provide global connectivity. Compare these two approaches, namely, a single network versus an internetwork, in terms of the range of services that can be provided and the cost of establishing a worldwide network.

Solution:

To be added.


36. Consider an internetwork architecture that is defined using gateways/routers to communicate across networks but that uses a connection-oriented approach to packet switching. What functionality is required in the routers? Are there any additional constraints imposed on the underlying networks?

Solution:

The routers must be able to setup and release connections across the internetwork. A connection must be established so that routers can forward packets along a path in the network. The underlying networks may or may not operate in connection-oriented fashion. Therefore it is still possible that packets may get out of sequence while traversing a given network. If we require that packets always traverse the end-to-end path in order, then either the underlying networks must be connection-oriented or protocols must operate above each network to ensure sequenced transfer of information.


37. The internet below consists of three LANs interconnected by two routers. Assume that the hosts and routers have the IP addresses as shown.

p2-37fig.jpg (9270 bytes)

Solutions follow questions:

  1. Suppose that all traffic from network 3 that is destined to H1 is to be routed directly through router R2, and all other traffic from network 3 is to go to network 2. What routing table entries should be present in the network 3 hosts and in R2?
  2. H5

    H6

    R2

    Destination

    Next hop

    Destination

    Next hop

    Destination

    Next hop

    Default

    (3,1)

    default

    (3,1)

    (1,2)

    (1,4)

     

     

     

     

    (1,0)

    (2,1)

     

     

     

     

    (2,0)

    (2,4)

     

     

     

     

    (3,0)

    (3,1)

     

  3. Suppose that all traffic from network 1 to network 3 is to be routed directly through R2. What routing table entries should be present in the network 1 hosts and in R2?

R2

R1

H1

H2

Destination

Next hop

Destination

Next hop

Destination

Next hop

Destination

Next hop

(1,0)

(2,1)

(1,0)

(1,1)

(1,0)

(1,2)

(1,0)

(1,3)

(2,0)

(2,4)

(2,0)

(2,1)

(2,0)

(1,1)

(2,0)

(1,1)

(3,0)

(3,1)

(3,0)

(2,4)

(3,0)

(1,4)

(3,0)

(1,4)

 


38. Explain why it is useful for application layer programs to have a "well-known" TCP port number?

Solution:

The TCP layer entity uses the port number to determine which application program the packets belong to. In the TCP connection setup process it is very convenient to have a unique well-known port number, otherwise some protocol or procedure would be required to find the desired number.


39. Use a Web browser to connect to cnn.com. Explain what layers in the protocol stack are involved in the delivery of the video newscast.

Solution:

The delivery of a video newscast over the Internet involves the transfer of a long stream of information without assurance of delivery or protection from data loss. It is clear then that UDP rather than TCP is used in the transfer of application information. By observing the video display window it is apparent that some sort of protocol particular to video streaming is in operation. After the connection request, the video display application buffers a certain amount of information before initiating display. This buffering is done in an attempt to ensure a steady supply of information to feed the audio and video decoder. Running out of information would result in a freezing of the picture image and loss of the audio signal. The protocols used in video streaming are discussed in Chapter 12.


40. Use a Web browser to connect to an audio program, say www.rsradiocom (Rolling Stone Radio) or www.cbc.com (CBC Radio). Explain what layers in the protocol stack are involved here. How does this situation differ from the delivery of video in problem 39?

Solution:

The delivery of audio information is quite similar to that of video information. A significant difference is that the volume of information that has to be transferred for audio is much less than that required by video. In addition the video application must be concerned with the synchronization of the display of audio and video information, otherwise "lip synch" will not be achieved.


41. Which of the TCP/IP transport protocol (UDP or TCP) would you select for the following applications: packet voice, file transfer, remote login, multicast communication (i.e., multiple destinations).

Solution:

Packet Voice - This example involves the transfer of a stream of information in real time across the network. At first, it may appear that TCP is suitable because of its connection orientation. However the acknowledgment and retransmission mechanisms in TCP introduce too much delay in the transfer of packets, and so UDP is the preferred approach to transferring a real-time voice stream across the network.

File Transfer - In general, file transfer requires reliable transfer and so TCP is preferred.

Remote Login - TCP is preferable because it provides for the reliable transfer of the stream of keystrokes that forms the basis for a remote login application.

Multicast Communication - In multicast services, a source sends information to a subset of destinations attached to the network. It is easy to imagine multicast applications that require reliable transfer of a stream of information to a set of destinations, and multicast applications that require only best effort transfer of individual messages. Therefore neither TCP nor UDP is preferred. A more pertinent point is that providing reliable multicast stream transfer service is quite difficult to implement, and TCP is not designed for this.


42. Use the Telnet program to send an e-mail by directly interacting with your local mail server.

Solution:

telnet <domain name> 25

(follow Table 2.3 to send the e-mail)


43. The nslookupprogram can be used to query the Internet domain name servers. Use this program to look up the IP address of www.utoronto.ca.

Solution:

nslookup www.utoronto.ca

Address: 128.100.132.30


44. Use PING to find the round-trip time to the home page of your university and to the home page of your department. .

Solution:

ping <hostname>


45. Use netstat to find out the routing table for a host in your network.

Solution:

When you run the following command following a DOS prompt, such as in Windows 95,

netstat -r

you will obtain the active routing table and the active TCP connections. The routing table has columns for IP address, network mask, gateway address, and network interface.


46. Suppose regularly spaced PING packets are sent to a remote host. What can you conclude from the following results?

Solutions follow questions:

  1. No replies arrive back.
  2. Possibilities are: the remote host is down; the remote host or the network is extremely congested; the remote host is set up not to reply.

  3. Some replies are lost.
  4. Some packets are discarded due to congestion at the remote-host listening-buffer or congestion at the network routers.

  5. All replies arrive but with variable delays.
  6. The packets traverse network routes that have different path length or traffic load.

  7. What kind of statistics would be useful to calculate for the round-trip delays?

Time(reply packet arrival) - Time( the echo packet is sent).


47. Suppose you want to test the response time of a specific Web server. What attributes would such a measurement tool have? How would such a tool be designed?

Solution:

Retrieving document from a web server involves the establishment of a TCP connection, the sending of an HTTP request by the client, and the reply from the web server.

We define response time as the time elapsed from the time the client requests a document (GET command) to when the client receives the server's reply.

The measurement tool can make use of Telnet to access the web server. One would Telnet to port 80, after the TCP connection is set up, and then measure the time elapsed from sending the request to receiving a reply.


48. A denial-of-service attack involves loading a network resource to the point where it becomes non-functional. Explain how PING can be used to carry out a denial-of-service attack.

Solution:

Using the PING program to send out a flood of packets to the network resource (for example, a server) increases the load on the server until it becomes nonfunctional.


49. HTTP relies on ASCII characters. To verify the sequence of messages shown in Table 2.1, use the Telnet program to connect to a local Web site.

Solution:

To be added.


50. Discuss the similarities and differences between the control connection in FTP and the remote control used to control a television. Can the FTP approach be used to provide VCR-type functionality to control the video from a video-on-demand service?

Solution:

The FTP control connection and the TV's remote control are similar in that both are used to send commands to specify information about the data channel (TV display) and the data being requested (displayed). In both cases, the control channel is established upon the client/user's initiation. The client/user request for the closing of the control channel, and the server/TV is responsible for terminating the control and data channels.

Unlike the FTP control connection where a reply is generated for every command and is sent back on the control channel, for the TV remote control, either no reply is generated or the reply is sent on the data channel (TV display).

Yes, the FTP approach can be used to control video from video-on-demand service. The control channel can be used to provide VCR-type functionality (play, forward, reverse, stop) to control the video data sent on the data channel.


51. Use a Web browser to access the Cooperative Association for Internet Data Analysis (CAIDA) Web page (http://www.caida.org/Tools/taxonomy.html) to retrieve the CAIDA measurement tool taxonomy document. You will find links there to many free Internet measurement tools and utilities.

Solution:

To be added.


52. Run the UDP client and server programs from the Berkeley API section on different machines, record the round-trip latencies with respect to the size of the data, and plot the results.

Solution:

To be added.


53. In the TCP example from the Berkeley API section, the message size communicated is fixed regardless of how many characters of actual information a user types. Even if the user wants to send only one character, the programs still sends 256 bytes of messages - clearly an inefficient method. One possible way to allow variable-length messages to be communicated is to indicate the end of a message by a unique character, called the sentinel. The receiver calls read for every character (or byte), compares each character with the sentinel value, and terminates after this special value is encountered. Modify the TCP client and server programs to handle variable-length messages using a sentinel value.

Solution:
All strings in C end with the null character '\0'. Use the null character as the sentinel value.
Note: modifications to the program are in bold.
Client program:
--------------------------------------------------------------
#include <string.h>
 
#define MAX_BUFLEN 256 /* buffer length */
#define SENTINEL '\0'
 
int main (int argc, char **argv)
{
        .
        .
        .
  char *host, *bp, rbuf[MAX_BUFLEN], sbuf[MAX_BUFLEN];
  int BUFLEN; /* actual message length <= MAX_BUFLEN */
        .
        .
        .
  printf("Transmit:\n");
  gets(sbuf); /* reads char into sbuf from stdin */
  BUFLEN = strlen(sbuf); /* get length of the message */
  if (BUFLEN > MAX_BUFLEN) {
    fprintf(stderr, "Data is too big\n");
    exit(1);
  }
  write(sd, sbuf, BUFLEN+1); /* send to server - including the sentinel character '\0'*/
 
  printf("Receive:\n");
  bp = rbuf;
  bytes_to_read = 1; /* read one character at a time */
  while ( ((n = read(sd, bp, bytes_to_read)) > 0)
    && (*bp != SENTINEL) ) {
    bp += n;
  }
        .
        .
        .
} /* main */

 

Server program:

--------------------------------------------------------------
int main (int argc, char **argv) {
        .
        .
        .
while (1) {
    client_len = sizeof(client);
    if ((new_sd = accept(sd, (struct sockaddr*)&client, &client_len ))
    == -1) {
      fprintf(stderr, "Can't accept client\n");
      exit(1);
    }
    bp = buf; /* bp is the traversing pointer of buf */
 
    bytes_to_read = 1;
    while ( ((n= read(new_sd, bp, bytes_to_read)) > 0) &&
      (*bp != SENTINEL)){
      bp += n;/* move the pointer bp within buf */
    }
 
    BUFLEN = strlen(buf);
    write(new_sd, buf, BUFLEN+1);
    close(new_sd);
  } /* while */
        .
        .
        .
} /* main */


54. Another possible way to allow variable-length messages to be communicated is to precede the data to be transmitted by a header indicating the length of the data. After the header is decoded, the receiver knows how many more bytes it should read. Assuming the length of the header is two bytes, modify the TCP client and server programs to handle variable-length messages.

Solution:
Note: modifications to the program are in bold.
Client Program:
--------------------------------------------------------------
#include <string.h>
 
#define MAX_BUFLEN 256 /* buffer length */
#define HEADER_TYPE short
#define HEADER_SIZE sizeof(HEADER_TYPE)
        .
        .
        .
int main (int argc, char **argv) {
 
  char *host, *bp, rbuf[MAX_BUFLEN], sbuf[MAX_BUFLEN];
  short BUFLEN; /* actual message length <= MAX_BUFLEN */
  HEADER_TYPE Header;
        .
        .
        .
  printf("Transmit:\n");
  gets(sbuf); /* reads char into sbuf from stdin */
  BUFLEN = strlen(sbuf) + 1; /* get length of the message including the NULL char */
 
  if (BUFLEN-1 > MAX_BUFLEN) {
    fprintf(stderr, "Data is too big\n");
    exit(1);
  }
 
  Header = (HEADER_TYPE)BUFLEN;
 
  write(sd, (char *)(&Header), HEADER_SIZE);
  write(sd, sbuf, BUFLEN); /* send to server - including the sentinel character '\0'*/
 
  printf("Receive:\n");
  /* Read Header */
  bytes_to_read = HEADER_SIZE;
  bp = (char *)&Header;
  while ( (n=read(sd, bp, bytes_to_read)) > 0) {
    bp += n;
    bytes_to_read -= n;
  }
 
  /* Read Message */
  bp = rbuf;
  bytes_to_read = (int)Header; /* read one character at a time */
  while ((n = read(sd, bp, bytes_to_read)) > 0) {
    bp += n;
    bytes_to_read -= n;
  }
        .
        .
        .
} /* main */
Server program:
--------------------------------------------------------------
int main (int argc, char **argv) {
        .
        .
        .
while (1) {
        .
        .
        .
    /* Read Header */
    bytes_to_read = HEADER_SIZE;
    bp = (char *)&Header;
    while ( (n=read(new_sd, bp, bytes_to_read)) > 0) {
      bp += n;
      bytes_to_read -= n;
    }
 
    /* Read message */
    bytes_to_read = (int)Header;
    bp = buf; /* bp is the traversing pointer of buf */
    while ( (n= read(new_sd, bp, bytes_to_read)) > 0){
      bp += n; /* move the pointer bp within buf */
      bytes_to_read -= n;
    }
 
    BUFLEN = strlen(buf)+1;
    Header = (HEADER_TYPE)BUFLEN;
 
    write(new_sd, ((char *)&Header), HEADER_SIZE);
    write(new_sd, buf, BUFLEN);
    close(new_sd);
  } /* while */
        .
        .
        .
} /* main */

 


55. The UDP client program in the example from the Berkeley API section may wait forever if the datagram from the server never arrives. Modify the client program so that if the response from the server does not arrive after a certain timeout (say, 5 seconds), the read call is interrupted. The client then retransmits a datagram to the server and waits for a new response. If the client does not receive a response after a fixed number of trials (say, 10 trials), the client should print an error message and abandon the program. Hint: use the sigaction and alarm functions.

Solution:
Note: modifications to the program are in bold.
Client program:
--------------------------------------------------------------
#include <signal.h>
#include <unistd.h>
 
#define MAX_NUM_TRIAL 10
#define TIMEOUT 5
 
void retransmit(); /* alarm handler function */
int NUM_TRIAL = MAX_NUM_TRIAL;
int ServerReply = 0; /* flag indicating whether server has
replied, used to determined whether to retry */
 
int main (int argc, char **argv) {
        .
        .
        .
  struct sigaction action;
  /* ----------------------------------------------------- */
  /* set up signal action */
  /* ----------------------------------------------------- */
  action.sa_handler = retransmit;
  sigemptyset(&action.sa_mask);
  action.sa_flags = 0;
  sigaction(SIGALRM, &action, NULL);
          .
          .
          .
  gettimeofday(&start, NULL); /* start delay measure */
 
  ServerReply = 0;
  while ( (ServerReply == 0) && (NUM_TRIAL > 0)) {
 
    /* Transmit data */
    server_len = sizeof(server);
    if (sendto(sd, sbuf, data_size, 0, (struct sockaddr *)&server,
      server_len) == -1) {
      fprintf(stderr, "Sendto error\n");
      exit(1);
    }
 
    /* Receive data */
    ServerReply = 1;
    alarm(TIMEOUT);
    if (recvfrom(sd, rbuf, MAXLEN, 0, (struct sockaddr *)&server, &server_len) < 0) {
      /* Note: Sigaction handler function returns here, to
       continue retry, do not exit on recvfrom error */
    }
    alarm(0);
  } /* while */
 
if (ServerReply) {
  gettimeofday(&end, NULL); /* end delay measure */
  printf("\nRound-trip delay = %ld ms.\n", delay(start, end));
  if (strncmp(sbuf, rbuf, data_size)!= 0)
  printf("Data is corrupted\n");
  }
  else
    {
      printf("client: no reply from server at %s: Abort.\n", host, MAX_NUM_TRIAL);
    }
 
  close(sd);
  return(0);
 
} /* main */
 
/* sigaction handler function */
void retransmit() {
  NUM_TRIAL--;
  printf("client: receive time out - retry #%d\n", MAX_NUM_TRIAL-NUM_TRIAL);
  ServerReply = 0;
}

 


56. Modify the UDP client to access a date-and-time server in a host local to your network. A date-and-time server provides client programs with the current day and time on demand. The system internal clock keeps the current day and time as a 32-bit integer. The time is incremented by the system (every second). When an application program (the server in this case) asks for the date or time, the system consults the internal clock and formats the date and time of day in human-readable format. Sending any datagram to a date-and-time server is equivalent to making a request for the current date and time; the server responds by returning a UDP message containing the current date and time. The date-and-time server can be accessed in UDP port 13.

Solution:
Make the following modification to the original UDP client program (changes noted in bold).
--------------------------------------------------------------
int main (int argc, char **argv) {
        .
        .
        .
  /* Receive data */
  if (recvfrom(sd, rbuf, MAXLEN, 0, (struct sockaddr *)&server, &server_len) < 0) {
    fprintf(stderr, "recvfrom error\n");
    exit(1);
  }
  printf("%s system time is %s", host, rbuf);
        .
        .
        .
} /* main */
Run the program and specify the server port to be 13.