Overview of the Transport Layer in the Internet

Overview of the Transport Layer in the Internet

Remember that the internet, and more commonly a TCP/IP network, makes available two distinct transport-layer protocols to the application layer. One of these protocols is UDP (User Datagram Protocol), which provides an unreliable, connectionless service to the invoking application. The second of these protocols is TCP (Transmission Control Protocol), which provides a reliable, connection-oriented service to the invoking application. When designing a network application, the application developer must specify one of these two transport protocols. As we saw in "Socket Programming with TCP" and "Socket Programming with UDP", the application developer selects between UDP and TCP when creating sockets.

To simplify terminology, when in an Internet context, we refer to the transport-layer packet as a segment. We mention, however, that the Internet literature (for instance, the RFCs) also refers to the transport-layer packet for TCP as a segment but sometimes refers to the packet for UDP as a datagram. But this same Internet literature also uses the term datagram for the network-layer packet. We believe that it is less confusing to refer to both TCP and UDP packets as segments and reserve the term datagram for the network-layer packet.

Before proceeding with our brief introduction of UDP and TCP, it will be useful to say a few words about the Internet's network layer. (The network layer is examined in detail in "The Network Layer"). The Internet's network-layer protocol has a name - IP, for Internet Protocol. IP provides logical communication between hosts. The IP service model is a best-effort delivery service. This means that IP makes its "best effort" to deliver segments between communicating hosts, but it makes no guarantees. Particularly, it does not guarantee segment delivery, it does not guarantee orderly delivery of segments, and it does not guarantee the integrity of the data in the segments. For these reasons, IP is said to be an unreliable service. We also mention here that every host has at least one network-layer address, a so-called IP address. We'll look at IP addressing in detail in "The Network Layer"; for this section we need only remember that each host has an IP address.

Having taken a quick look at the IP service model, let's now summarize the service models provided by UDP and TCP. The most basic responsibility of UDP and TCP is to extend IP's delivery service between two end systems to a delivery service between two processes running on the end systems. Extending host-to-host delivery to process-to-process delivery is called transport-layer multiplexing and demultiplexing. We'll discuss transport-layer multiplexing and demultiplexing in the next section. UDP and TCP also provide integrity checking by including error-detection fields in their segments headers. These two minimal transport-layer services - process-to-process data delivery and error checking - are the only two services that UDP provides. Particularly, like IP, UDP is an unreliable service - it does not guarantee that data sent by one process will arrive intact (or at all) to the destination process. UDP is discussed in detail in "Connectionless Transport: UDP".

TCP, however, offers many additional services to applications. Primarily, it provides reliable data transfer. Using flow control, sequence numbers, acknowledgments, and timers (techniques we'll explore in detail in this section), TCP ensures that data is delivered from sending process to receiving process, correctly and in order. TCP in this way converts IP's unreliable service between end systems into a reliable data transport service between processes. TCP also provides congestion control. Congestion control is not so much a service provided to the invoking application as it is a service for the Internet as a whole, a service for the general good. Loosely speaking, TCP congestion control prevents any one TCP connection from swamping the links and routers between communicating hosts with an excessive amount of traffic. TCP strives to give each connection traversing a congested link an equal share of the link bandwidth. This is done by regulating the rate at which the sending sides of TCP connections can send traffic into the network. UDP traffic, however, is unregulated. An application using UDP transport can send at any rate it pleases, for as long as it pleases.

A protocol that provides reliable data transfer and congestion control is necessarily complicated. We'll need various sections to cover the principles of reliable data transfer and congestion control, and additional sections to cover the TCP protocol itself. These topics are investigated in the following sections;

"Principles of Reliable Data Transfer"
"Connection-Oriented Transport: TCP"
"Principles of Congestion Control"
"TCP Congestion Control"

The approach taken in this section is to alternate between basic principles and the TCP protocol. For instance, we'll first discuss reliable data transfer in a general setting and then discuss how TCP particularly provides reliable data transfer. Likewise, we'll first discuss congestion in a general setting and then discuss how TCP performs congestion control. But before getting into all this good stuff, we'll first study transport-layer multiplexing and demultiplexing in next section.


Tags

application layer, udp, tcp, network application, sockets, datagram, packets, segments

Copy Right

The contents available on this website are copyrighted by TechPlus unless otherwise indicated. All rights are reserved by TechPlus, and content may not be reproduced, published, or transferred in any form or by any means, except with the prior written permission of TechPlus.