Data Communications

Tutorial #23 - Transport Layer: Part 1

  1. What are the characteristics of the interprocess communications service implemented in TCP?
  2. Why is TCP necessary? In other words, why can't two processes communicate simply by sending IP datagrams to one another? You should be able to think of at least a couple of reasons.
  3. The relationship between TCP and IP (in terms of hop-by-hop delivery versus end-to-end) has been described as being analagous to the relationship of a shipping container and its contents. Alternatively, you could think about an envelope, and the letter it contains. Why are these pretty good analogies?
  4. The TCP protocol is commonly used in the context of a client-server model of communication. Describe briefly what is meant by this term. In particular, what characterises a server process? How does a client process use the facilities provided by a server?
  5. Lost[1] TCP acknowledgements do not necessarily force retransmissions. Explain why.
  6. What is the efficiency of transmission of TCP segments containing 4 bytes, 100 bytes and 1000 bytes of data respectively, taking into account a minimal TCP header and a minimal IP header, but ignoring lower layer (MAC) headers?
  7. Analyse the following etherfind output:
    08 00 69 02 0c fc aa 00 04 00 ff 2f 08 00 45 00
    00 4c a3 3f 00 00 3b 06 9b 0d 95 90 02 03 95 90
    14 3c 09 6c 00 19 45 6d 70 01 3c 32 28 7d 50 18
    10 00 a6 bd 00 00 45 48 4c 4f 20 72 65 64 67 75
    6d 2e 62 65 6e 64 69 67 6f 2e 6c 61 74 72 6f 62
    65 2e 65 64 75 2e 61 75 0d 0a
    

Practical Exercises:

  1. Log into your friendly local UNIX host and have a look at a file called /etc/services This file contains a list of port numbers and the names of the server processes which "listen" on each of them. Discover the port numbers for:
    1. FTP
    2. TELNET
    3. SMTP (email)
    4. How is it possible for a port number to appear twice in the /etc/services file?
  2. Most UNIX systems do not actually have a process "listening" on every port mentioned in /etc/services. This task is carried out by the "Internet Super Dæmon", inetd. Discover what inetd does, and how it knows which ports to listen on (hint: "man inetd" is a good starting point.)
  3. Run "netstat -a". What does it tell you?

[1] from Comer, Vol 1, 2nd ed, P.203