Unit 6 Part 1
Unit 6 Part 1
Unit 6 Part 1
INTRODUCTION
The network layer provides end-to-end packet delivery using data-grams or virtual circuits. The
transport layer builds on the network layer to provide data transport from a process on a source machine to a
process on a destination machine with a desired level of reliability that is independent of the physical
networks currently in use. It provides the abstractions that applications need to use the network.
Transport Entity: The hardware and/or software which make use of services provided by the network
layer, (within the transport layer) is called transport entity.
Transport Service Provider: Layers 1 to 4 are called Transport Service Provider.
Transport Service User: The upper layers i.e., layers 5 to 7 are called Transport Service User.
Transport Service Primitives: It allows transport users (application programs) to access the transport
service.
TPDU (Transport Protocol Data Unit): Transmissions of message between 2 transport entities are carried
out by TPDU. The transport entity carries out the transport service primitives by blocking the caller and
sending a packet the service. Encapsulated in the payload of this packet is a transport layer message for the
server’s transport entity. The task of the transport layer is to provide reliable, cost-effective data transport
from the source machine to the destination machine, independent of physical network or networks currently
in use.
TRANSPORT SERVICE
The network, Application and transport layer There are two types of network service
Connection-oriented
Connectionless
Similarly, there are also two types of transport service. The connection-oriented transport service is similar
to the connection-oriented network service in many ways. In both cases, connections have three phases:
Establishment
Data transfer
Release.
Addressing and flow control are also similar in both layers. Furthermore, the connectionless transport
service is also very similar to the connectionless network service.
The bottom four layers can be seen as the transport service provider, whereas the upper layer(s) are the
transport service user.
2. Transport Service Primitives
To allow users to access the transport service, the transport layer must provide some operations to application
programs, that is, a transport service interface. Each transport service has its own interface. The transport service is
similar to the network service, but there are also some important differences. The main difference is that the network
service is intended to model the service offered by real networks. Real networks can lose packets, so the network
service is generally unreliable. The (connection-oriented) transport service, in contrast, is reliable
As an example, consider two processes connected by pipes in UNIX. They assume the connection
between them is perfect. They do not want to know about acknowledgements, lost packets, congestion, or
anything like that. What they want is a 100 percent reliable connection. Process A puts data into one end of
the pipe, and process B takes it out of the other.
A second difference between the network service and transport service is whom the services are
intended for. The network service is used only by the transport entities. Consequently, the transport service
must be convenient and easy to use.
The primitives for a simple transport service.
1. The server executes a “LISTEN” primitive by calling a library procedure that makes a System call to
block the server until a client turns up.
2. When a client wants to talk to the server, it executes a “CONNECT” primitive, with “CONNECTION
REQUEST” TPDU sent to the server.
3. When it arrives, the TE unblocks the server and sends a “CONNECTION ACCEPTED” TPDU back to
the client.
4. When it arrives, the client is unblocked and the connection is established. Data can now be exchanged
using “SEND” and “RECEIVE” primitives.
5. When a connection is no longer needed, it must be released to free up table space within the 2 transport
entries, which is done with “DISCONNECT” primitive by sending “DISCONNECTION REQUEST”
TPDU. This disconnection can b done either by asymmetric variant (connection is released, depending on
other one) or by symmetric variant (connection is released, independent of other one).
The term segment for messages sent from transport entity to transport entity.
TCP, UDP and other Internet protocols use this term. Segments (exchanged by the transport layer) are
contained in packets (exchanged by the network layer).
These packets are contained in frames(exchanged by the data link layer).When a frame arrives, the data link
layer processes the frame header and, if the destination address matches for local delivery, passes the
contents of the frame payload field up to the network entity.
The network entity similarly processes the packet header and then passes the contents of the packet payload
up to the transport entity.
The transport service is implemented by a transport protocol used between the two transport entities. The
transport protocols resemble the data link protocols. Both have to deal with error control, sequencing, and
flow control, among other issues. The difference transport protocol and data link protocol depends upon the
environment in which they are operated.
These differences are due to major dissimilarities between the environments in which the two
protocols operate, as shown in Fig.
At the data link layer, two routers communicate directly via a physical channel, whether wired or
wireless, whereas at the transport layer, this physical channel is replaced by the entire network. This
difference has many important implications for the protocols.
Figure (a) Environment of the data link layer. (b) Environment of the transport layer.
In the data link layer, it is not necessary for a router to specify which router it wants to talk to. In the
transport layer, explicit addressing of destinations is required.
In the transport layer, initial connection establishment is more complicated, as we will see.
Difference between the data link layer and the transport layer is the potential existence of storage capacity in
the subnet
Buffering and flow control are needed in both layers, but the presence of a large and dynamically
varying number of connections in the transport layer may require a different approach than we used in the
data link layer.
The transport service is implemented by a transport protocol between the 2 transport entities.
Figure illustrates the relationship between the NSAP, TSAP and transport connection. Application processes,
both clients and servers, can attach themselves to a TSAP to establish a connection to a remote TSAP.
These connections run through NSAPs on each host, as shown. The purpose of having TSAPs is that in
some networks, each computer has a single NSAP, so some way is needed to distinguish multiple transport
end points that share that NSAP.
The elements of transport protocols are:
1. ADDRESSING
2. Connection Establishment.
3. Connection Release.
4. Error control and flow control
5. Multiplexing.
1. ADDRESSING
When an application (e.g., a user) process wishes to set up a connection to a remote application process, it
must specify which one to connect to. The method normally used is to define transport addresses to which
processes can listen for connection requests. In the Internet, these endpoints are called ports.
There are two types of access points.
TSAP (Transport Service Access Point) to mean a specific endpoint in the transport layer.
The analogous endpoints in the network layer (i.e., network layer addresses) are not surprisingly called
NSAPs (Network Service Access Points). IP addresses are examples of NSAPs.
Fig: Three protocol scenarios for establishing a connection using a three-way handshake. CR denotes CONNEC TION
REQUEST (a) Normal operation. (b) Old duplicate CONNECTION REQUEST appearing out of nowhere. (c) Duplicate
CONNECTION REQUEST and duplicate ACK.
The first technique includes any method that prevents packets from looping, combined with some way of
bounding delay including congestion over the longest possible path. It is difficult, given that internets
may range from a single city to international in scope.
The second method consists of having the hop count initialized to some appropriate value and
decremented each time the packet is forwarded. The network protocol simply discards any packet whose
hop counter becomes zero.
The third method requires each packet to bear the time it was created, with the routers agreeing to discard
any packet older than some agreed-upon time.
In fig (A) Tomlinson (1975) introduced the three-way handshake.
This establishment protocol involves one peer checking with the other that the connection request is
indeed current. Host 1 chooses a sequence number, x , and sends a CONNECTION REQUEST segment
containing it to host 2. Host 2replies with an ACK segment acknowledging x and announcing its own
initial sequence number, y.
Finally, host 1 acknowledges host 2’s choice of an initial sequence number in the first data segment that it
sends
In fig (B) the first segment is a delayed duplicate CONNECTION REQUEST from an old connection.
This segment arrives at host 2 without host 1’s knowledge. Host 2 reacts to this segment by sending
host1an ACK segment, in effect asking for verification that host 1 was indeed trying to set up a new
connection.
When host 1 rejects host 2’s attempt to establish a connection, host 2 realizes that it was tricked by a delayed
duplicate and abandons the connection. In this way, a delayed duplicate does no damage.
The worst case is when both a delayed CONNECTION REQUEST and an ACK are floating around in the
subnet.
In fig (C) previous example, host 2 gets a delayed CONNECTION REQUEST and replies to it.
At this point, it is crucial to realize that host 2 has proposed using y as the initial sequence number for
host 2 to host 1 traffic, knowing full well that no segments containing sequence number y or
acknowledgements to y are still in existence.
When the second delayed segment arrives at host 2, the fact that z has been acknowledged rather than y tells
host 2 that this, too, is an old duplicate
The important thing to realize here is that there is no combination of old segments that can cause the protocol
to fail and have a connection set up by accident when no one wants it.
3. CONNECTION RELEASE:
A connection is released using either asymmetric or symmetric variant. But, the improved protocol for
releasing a connection is a 3-way handshake protocol.
There are two styles of terminating a connection:
1. Asymmetric release and
2. Symmetric release.
Asymmetric release: is the way the telephone system works: when one party hangs up, the connection is
broken. Symmetric release treats the connection as two separate unidirectional connections and requires
each one to be released separately.
Fig-(a) Fig-(b) Fig-(c) Fig-(d)
process
One of the user sends a Initial is done If the second DR is Same as in fig-( c)
DISCONNECTION in the same way as in lost, the user initiating except that all repeated
the disconnection will
REQUEST TPDU in fig-(a). attempts to retransmit
not receive the
order to initiate If the final ACK-TPDU the
expected response, and
connection release. is lost, the situation is will timeout and starts DR is assumed to be
When it arrives, the saved by the timer. all over again. failed due to lost
recipient sends back a When the timer is TPDUs. After ‘N’
DR-TPDU, too, and expired, the connection entries, the sender just
starts a timer. is released. gives up and
When this DR arrives, releases the
The original sender connection.
sends back an ACK-
TPDU and releases the
connection.
Finally, when the
ACK-TPDU arrives,
The receiver also
releases the connection.
The Internet has two main protocols in the transport layer, a connectionless protocol and a
connection-oriented one. The protocols complement each other. The connectionless protocol is UDP. It
does almost nothing beyond sending packets between applications, letting applications build their own
protocols on top as needed.
The connection-oriented protocol is TCP. It does almost everything. It makes connections and adds
reliability with retransmissions, along with flow control and congestion control, all on behalf of the
applications that use it. Since UDP is a transport layer protocol that typically runs in the operating system
and protocols that use UDP typically run in user s pace, these uses might be considered applications.
INTRODUCTION TO UDP
1. The Internet protocol suite supports a connectionless transport protocol called UDP (User Datagram
Protocol). UDP provides a way for applications to send encapsulated IP datagrams without having to
establish a connection.
2. UDP transmits segments consisting of an 8-byte header followed by the pay-load. The two ports serve to
identify the end-points within the source and destination machines
3. When a UDP packet arrives, its payload is handed to the process attached to the destination port. This
attachment occurs when the BIND primitive. Without the port fields, the transport layer would not
know what to do with each incoming packet. With them, it delivers the embedded segment to the
correct application.
a. Source port, destination port: Identifies the end points within the source and destination
machines.
b. UDP length: Includes 8-byte header and the data
c. UDP checksum: Includes the UDP header, the UDP data padded out to an even number of bytes
if need be. It is an optional field
Step 4 is the operating system passing the incoming packet to the server stub.
Step 5 is the server stub calling the server procedure with the unmarshaled parameters. The reply traces
the same path in the other direction.
The key item to note here is that the client procedure, written by the user, just makes a normal (i.e., local)
procedure call to the client stub, which has the same name as the server procedure. Since the client
procedure and client stub are in the same address space, the parameters are passed in the usual way.
Similarly, the server procedure is called by a procedure in its address space with the parameters it
expects. To the server procedure, nothing is unusual. In this way, instead of I/O being done on sockets,
network communication is done by faking a normal procedure call. With RPC, passing pointers is
impossible because the client and server are in different address spaces.
Real-Time Transport Protocols
Client-server RPC is one area in which UDP is widely used. Another one is for real-time multimedia
applications. In particular, as Internet radio, Internet telephony, music-on-demand, videoconferencing,
video-on-demand, and other multimedia applications became more commonplace, people have discovered
that each application was reinventing more or less the same real-time transport protocol.
It gradually became clear that having a generic real-time transport protocol for multiple applications would
be a good idea. Thus was RTP (Real-time Transport Protocol) born. It is described in RFC 3550 and is now
in widespread use for multimedia applications. We will describe two aspects of real-time transport. The first
is the RTP protocol for transporting audio and video data in packets. The second is the processing that takes
place, mostly at the receiver, to play out the audio and video at the right time.
(a) The position of RTP in the protocol stack. (b) Packet nesting.
RTP normally runs in user space over UDP (in the operating system). It operates as follows. The multimedia
application consists of multiple audio, video, text, and possibly other streams. These are fed into the RTP
library, which is in user space along with the application. This library multiplexes the streams and encodes
them in RTP packets, which it stuffs into a socket. On the operating system side of the socket, UDP packets
Department of Information Technology, VIEW Page 13
Unit – VI Computer Networks Transport Layer
are generated to wrap the RTP packets and handed to IP for transmission over a link such as Ethernet. The
reverse process happens at the receiver. The multimedia application eventually receives multimedia data
from the RTP library. It is responsible for playing out the media.
The RTP header.
The CC field tells how many contributing sources are present, from 0 to 1.The M bit is an application-
specific marker bit. It can be used to mark the start of a video frame, the start of a word in an audio channel,
or something else that the application understands. The Payload type field tells which encoding algorithm
has been used (e.g., uncompressed 8-bit audio, MP3, etc.). Since every packet carries this field, the encoding
can change during transmission. The Sequence number is just a counter that is incremented on each RTP
packet sent. It is used to detect lost packets. The Timestamp is produced by the stream’s source to note when
the first sample in the packet was made. This value can help reduce timing variability called jitter at the
receiver by decoupling the playback from the packet arrival time. The Synchronization source identifier tells
which stream the packet belongs to. It is the method used to multiplex and demultiplex multiple data streams
onto a single stream of UDP packets. Finally, the Contributing source identifiers, if any, are used when
mixers are present in the studio. In that case, the mixer is the synchronizing source, and the streams being
mixed are listed here.
RTCP: Real-time Transport Control Protocol
RTP has a little sister protocol (little sibling protocol?) called RTCP (Realtime Transport Control Protocol).
It is defined along with RTP in RFC 3550 and handles feedback, synchronization, and the user interface. It
does not transport any media samples. The first function can be used to provide feedback on delay, variation
in delay
or jitter, bandwidth, congestion, and other network properties to the sources. This information can be used
by the encoding process to increase the data rate (and give better quality) when the network is functioning
well and to cut back the data rate when there is trouble in the network.
By providing continuous feedback, the encoding algorithms can be continuously adapted to provide the
best quality possible under the current circumstances. For example, if the bandwidth increases or decreases
during the transmission, the encoding may switch from MP3 to 8-bit PCM to delta encoding as required. The
Payload type field is used to tell the destination what encoding algorithm is used for the current packet,
making it possible to vary it on demand. An issue with providing feedback is that the RTCP reports are sent
to all participants. For a multicast application with a large group, the bandwidth used by RTCP would
quickly grow large
TCP (TRANSMISSION CONTROL PROTOCOL)
It was specifically designed to provide a reliable end-to end byte stream over an unreliable network.
It was designed to adapt dynamically to properties of the inter network and to be robust in the face of many
kinds of failures.
Each machine supporting TCP has a TCP transport entity, which accepts user data streams from local
processes, breaks them up into pieces not exceeding 64kbytes and sends each piece as a separate IP
datagram. When these datagrams arrive at a machine, they are given to TCP entity, which reconstructs the
original byte streams. It is up to TCP to time out and retransmits them as needed, also to reassemble
datagrams into messages in proper sequence.
The different issues to be considered are:
1. The TCP Service Model
2. The TCP Protocol
3. The TCP Segment Header
4. The Connection Management
5. TCP Transmission Policy
6. TCP Congestion Control
7. TCP Timer Management.
The TCP Service Model
TCP service is obtained by having both the sender and receiver create end points called SOCKETS. Each
socket has a socket number (address) consisting of the IP address of the host, called a “PORT” ( = TSAP )
To obtain TCP service a connection must be explicitly established between a socket on the sending machine
and a socket on the receiving machine
All TCP connections are full duplex and point to point i.e., multicasting or broadcasting is not supported. A
TCP connection is a byte stream, not a message stream i.e., the data is delivered as chunks
E.g.: 4 * 512 bytes of data is to be transmitted.
.
Sockets:
A socket may be used for multiple connections at the same time. In other words, 2 or more connections may
terminate at same socket. Connections are identified by socket identifiers at same socket. Connections are
identified by socket identifiers at both ends. Some of the sockets are listed below:
Ports: Port numbers below 256 are called Well- known ports and are reserved for standard services.
Eg:
5. When the segment arrives at the destination, the receiving TCP entity sends back a segment (with data
if any exist, otherwise without data) bearing an acknowledgement number equal to the next sequence
number it expects to receive
6. If the sender's timer goes off before the acknowledgement is received, the sender transmits the segment
again.
The TCP Segment Header
Every segment begins with a fixed-format, 20-byte header. The fixed header may be followed by
header options. After the options, if any, up to 65,535 - 20 - 20 = 65,495 data bytes may follow, where the
first 20 refer to the IP header and the second to the TCP header. Segments without any data are legal and are
commonly used for acknowledgements and control messages.
i. Source Port, Destination Port: Identify local end points of the connections
ii. Sequence number: Specifies the sequence number of the segment
iii. Acknowledgement Number: Specifies the next byte expected.
iv. TCP header length: Tells how many 32-bit words are contained in TCP header
v. URG: It is set to 1 if URGENT pointer is in use, which indicates start of urgent data
vi. ACK: It is set to 1 to indicate that the acknowledgement number is valid.
vii. PSH: Indicates pushed data
viii. RST: It is used to reset a connection that has become confused due to reject an invalid
segment or refuse an attempt to open a connection.
ix. FIN: Used to release a connection.
x. SYN: Used to establish connections.
TCP Connection Establishment
To establish a connection, one side, say, the server, passively waits for an incoming connection by
executing the LISTEN and ACCEPT primitives, either specifying a specific source or nobody in particular.
The other side, say, the client, executes a CONNECT primitive, specifying the IP address and port to
which it wants to connect, the maximum TCP segment size it is willing to accept, and optionally some user
data (e.g., a password).
The CONNECT primitive sends a TCP segment with the SYN bit on and ACK bit off and waits for a
response.
Figure: The states used in the TCP connection management finite state machine.