1.3 Network Protocols
This section is a brief introduction to TCP, UDP, IP, and ICMP. First, we briefly examine the two transport protocols, TCP and UDP, and then take a cursory look at IP and ICMP.
Transport Layer Protocols: TCP and UDP
We briefly mentioned the TCP and UDP protocols in the context of the TCP/IP model described earlier in this chapter. We now examine the Transport layer in greater detail.
The Transport layer offers either a high-overhead, guaranteed, connection-oriented transport service such as that offered by TCP, or a low-overhead, connectionless, nonguaranteed service such as the one offered by UDP. See Chapter 7 for more information about the Transport layer protocols and Chapters 5 and 13 for details about the IP protocols (IPv4, IPv6) that route the Transport protocols data.
Transmission Control Protocol (TCP)
TCP provides a connection-oriented, guaranteed, reliable transport service. TCP has significant overhead because every byte of transmitted data is both acknowledged and sequenced by both ends of the connection. The data itself is delivered in one or more segments, which are TCP's basic units of data. In addition, TCP establishes a connection at the Transport layer, which must be formed before transmission of client data may occur over the Transport layer.
Although TCP guarantees data delivery, it must be remembered that TCP is routed over IP and therefore uses the same underlying packet-based routing service as UDPnamely, IP, which is not guaranteed. Both TCP and UDP use IP to route their data, but they impose different levels of reliability and overhead as determined by their own specifications as Transport layer protocols. TCP extensively monitors the quality of data sent and received, whereas UDP has only a simple checksum error checking method, which is often turned off and therefore ignored.
The cost of TCP reliability, as just stated, is significant overhead. The TCP protocol sends a sequenced (numbered) byte stream of segmented data. The sequence numbering of bytes ensures that the destination TCP protocol at the receiving end orders the data stream correctly. Unfragmented IP datagrams that arrive in the wrong order (which have encapsulated TCP segments) are simply passed up the stack to TCP, which ensures that the data is delivered to the application in the correct order. Fragmented IP datagrams, on the other hand, are reassembled by IP itself before being passed to TCP based on fragment offset information stored in the IP header. Some example TCP client applications are telnet, ftp, and sendmail, all of which require a guaranteed delivery service and therefore use TCP rather than UDP.
Key Learning Points
TCP is a connection-oriented protocol.
The segment is the TCP unit of data.
TCP is a Transport layer protocol.
TCP is encapsulated and routed by IP.
TCP is said to offer a guaranteed, reliable, connection-oriented service that creates significant overhead.
Essentially, if data security must be guaranteed, TCP is a better choice than UDP, although more expensive in terms of both the amount of control data transmitted and the control overhead incurred. Chapter 7 examines the TCP protocol in greater detail.
User Datagram Protocol (UDP)
UDP is a connectionless transport protocol, which means that no connection is established at the Transport layer prior to data being sent between client and server applications.
Some applicationsfor example, a router propagating routing information every 30 secondscan afford to lose an occasional data packet. Routing clients that miss the occasional routing table update do not usually suffer adverse effects. The Routing Information Protocol (RIP) uses UDP. DNS queries also use UDP, as speed is more important than reliability for this application. UDP applications tend to send small packets that can be transported in a single UDP datagram. UDP has an optional checksum error check, which introduces minimal overhead and is usually turned off.
To check the UDP checksum variable (udp_do_checksum) under Solaris 8 use ndd:
# ndd get /dev/udp udp_do_checksum 0
A value of 0 means false; that is, disable the UDP checksum feature. A value of 1, which means true, indicates that the UDP protocol checksum feature is enabled.
To enable the UDP checksum feature, issue the following command:
# ndd set /dev/udp udp_do_checksum 1
To check the current value of udp_do_checksum:
# ndd get /dev/udp udp_do_checksum 1
Key Learning Points
UDP is a connectionless protocol.
UDP is a transport protocol.
UDP is encapsulated and routed in IP.
UDP is not guaranteed.
UDP does minimal error checking.
UDP has a simple checksum for error checking.
UDP's header is only eight bytes.
Chapter 7 looks at the UDP protocol in greater detail.
Internet Protocol (IPv4)
IPv4 is a connectionless protocol like UDP. Unlike UDP, however, IP is not a transport protocol but instead offers a datagram routing service to the Transport layer (a datagram is the unit of data for the IP layer). The Transport layer protocols, TCP and UDP, use IP to route their client data between application client and server hosts. It is worth stressing, therefore, that IP routes data between hosts, and in effect, between the Transport layers on end-to-end hosts, but not between clients and server processes. The Transport layer protocols, TCP and UDP, transport the data between client and server processes, using IP to form a bridge between hosts. IP as a protocol is responsible for the following:
fragmenting of IP datagrams if the Network Interface layer MTU demands it
reassembly of IP fragments
making the IP datagram routing decision
Key Learning Points
IP is a connectionless protocol.
IP is an Internet layer protocol.
IP is encapsulated in many different datalink technologies such as Ethernet, Token Ring, and Point-to-Point Protocol (PPP).
IP is not guaranteed.
Chapter 5 looks in detail at IPv4, and Chapter 13 explores IPv6. Next we look at ICMP, which also functions at the Internet layer (3).
Internet Control Message Protocol (ICMP)
ICMP is considered almost part of the IP protocol, even though it is a separate protocol in its own right. ICMP generates messages, which receive a response either from the IP layer itself or a higher layer protocol such as TCP or UDP. Although ICMP is at the same layer as IP, it is not an alternative to IP; rather, it assists IP with IP error detection and correction.
ICMP data is encapsulated in IP datagram(s), as is TCP and UDP data, but ICMP is not a Transport layer protocol. Error messages such as network unreachable, host unreachable, and port unreachable are examples of ICMP error messages.
See Chapter 5 for further details about ICMP.
Key Learning Points
ICMP is a connectionless protocol.
ICMP is an Internet layer protocol.
ICMP is unusual in that it is encapsulated in IP but is not a transport protocol.
ICMP assists IP with error detection and correction.
ICMP generates two types of messages: error and query.