Figure 9-2 Transport Layer Role in Communication Between Network DevicesThe transport layer provides the following basic services: ■ Segmenting upper-layer application data ■ Establishin
Trang 1Figure 9-2 Transport Layer Role in Communication Between Network Devices
The transport layer provides the following basic services:
■ Segmenting upper-layer application data
■ Establishing end-to-end operations
■ Sending segments from one end host to another end host
■ Ensuring flow control provided by sliding windows
■ Ensuring reliability provided by sequence numbers and acknowledgments
The transport layer assumes that it can use the network as a “cloud,” to send data
packets from source to destination The cloud deals with issues of which of several
paths is best for a given route This starts to illustrate the role that routers perform
in this process
TCP/IP is a combination of two individual protocols, TCP and IP IP is a Layer 3
pro-tocol, a connectionless service that provides best-effort delivery across a network TCP
is a Layer 4 protocol, a connection-oriented service that provides flow control as well
as reliability Pairing the protocols enables them to provide a wider range of services
The TCP/IP protocol suite is made up of many protocols, but TCP and IP are the key
ones TCP/IP is the protocol suite on which the Internet is based
Flow Control
As the TCP transport layer protocol sends data segments, it can ensure the integrity
of the data One method of doing this is called flow control Flow control avoids the
problem of a transmitting host overflowing the buffers in the receiving host Overflows
can present serious problems because they can result in the loss of data
Transport layer services enable reliable data transport between hosts and destinations
To obtain such reliable transport of data, a connection-oriented relationship is used
Hello!
How fast can
I send data?
I am busy now.
Send data slowly.
Trang 2480 Chapter 9: TCP/IP Transport and Application Layer
between the communicating end systems Reliable transport can accomplish the following:
■ Ensure that segments delivered will be acknowledged to the sender
■ Provide for retransmission of any segments that are not acknowledged
■ Put segments back into their correct sequence at the destination
■ Provide congestion avoidance and control
Session Establishment, Maintenance, and Termination Overview
In the OSI and TCP/IP reference models, multiple applications can share the same transport connection Transport functionality is accomplished segment by segment This means that different applications can send data segments on a come, first-served basis Such segments can be intended for the same destination or for different destinations This setup sometimes is referred to as the multiplexing of upper-layer conversations, as shown in Figure 9-3
Figure 9-3 Multiple Types of Application Layer Data Share the Transport Layer
One function of the transport layer is to establish a connection-oriented session with its peer system For data transfer to begin, both the sending and the receiving applica-tions inform their respective operating systems that a connection will be initiated One machine initiates a connection that must be accepted by the other Protocol software modules in the two operating systems communicate by sending messages across the network to verify that the transfer is authorized and that both sides are ready
After all synchronization has occurred, a connection is said to be established and the transfer of data begins During transfer, the two machines continue to communicate with their protocol software to verify that data is received correctly
Figure 9-4 shows a typical connection between sending and receiving systems The first handshake requests synchronization The second and third handshakes acknowledge
Application
Electronic Mail
File Transfer
Terminal Session
Application Port Data
Application Port Data
Presentation Session
Transport
Segments
Trang 3the initial synchronization request, as well as synchronize connection parameters in the
opposite direction The final handshake segment is an acknowledgmentused to inform
the destination that both sides agree that a connection has been established After the
connection is established, data transfer begins
Figure 9-4 Establishing a Connection with a Peer System
When data transfer is in progress, congestion can occur for two reasons First, a
high-speed computer might be capable of generating traffic faster than a network can
trans-fer it Second, if many computers simultaneously need to send datagrams to a single
destination, that destination can experience congestion, although no single source
caused the problem
When datagrams arrive too quickly for a host or gateway to process, they temporarily
are stored in memory If the traffic continues, the host or gateway eventually exhausts
its memory and must discard additional datagrams that arrive
Instead of allowing data to be lost, the transport function can issue a “not ready”
indi-cator to the sender Acting like a stop sign, this indiindi-cator signals the sender to stop
sending data When the receiver can handle additional data, the receiver sends a “ready”
transport indicator, which is like a go signal When it receives this indicator, the sender
can resume segment transmission
At the end of data transfer, the sending host sends a signal that indicates the end of the
transmission The receiving host at the end of the data sequence acknowledges the end
of transmission, and the connection is terminated
Sender
Synchronize
Connection Established
Negotiate Connection
Synchronize Acknowledge
Data Transfer (Send Segments)
Receiver
Trang 4482 Chapter 9: TCP/IP Transport and Application Layer
Three-Way Handshake
TCP is connection-oriented, so it requires connection establishment before data transfer begins For a connection to be established or initialized, the two hosts must synchronize
on each other’s initial sequence numbers (ISNs) Synchronization is done in an exchange
of connection-establishing segments that carry a control bit called SYN (for synchro-nize) and the ISNs Segments that carry the SYN bit also are called SYNs Hence, the solution requires a suitable mechanism for picking an initial sequence number and a slightly involved handshake to exchange the ISNs
The synchronization requires each side to send its own initial sequence number and to receive a confirmation of it in an acknowledgment (ACK) from the other side Each side also must receive the other side’s INS and send a confirming ACK The sequence follows:
SYN bit is set, but the ACK bit is not set
and the SYN and ACK bits are set
the ACK bit is set, but the SYN bit is not set
This exchange, shown in Figure 9-5, is called the three-way handshake
Figure 9-5 Three-Way Handshake
Send SYN (seq = x)
Receive SYN (seq = y, ACK = x + 1) Send ACK (ACK = y + 1)
Receive SYN (seq = x) Send SYN (seq = y, ACK = x + 1)
Receive ACK (ACK = y + 1)
Trang 5A three-way handshake is an asynchronous connection mechanism, which is necessary
because sequence numbers are not tied to a global clock in the network; therefore, TCP
protocols can have different mechanisms for picking the ISN The three-way
hand-shake addresses a lot more issues than just the sequence numbers Other issues that are
addressed include window size, MTU, and any network latency to expect The receiver
of the first SYN has no way of knowing whether the segment was an old delayed one,
unless it remembers the last sequence number used on the connection (which is not
always possible), so it must ask the sender to verify this SYN
Windowing
In the most basic form of reliable, connection-oriented data transfer, data packets must
be delivered to the recipient in the same order in which they were transmitted The
protocol fails if any data packets are lost, damaged, duplicated, or received in a
differ-ent order The basic solution is to have a recipidiffer-ent acknowledge the receipt of each
data segment
If the sender must wait for an acknowledgment after sending each segment, as shown
in Figure 9-6, throughput is low Therefore, most connection-oriented, reliable
proto-cols allow more than one frame or segment to be outstanding at a time Because time is
available after the sender finishes transmitting the data packet and before the sender
finishes processing any received acknowledgment, the interval is used for transmitting
more data The number of data packets that the sender is allowed to have outstanding
without having received an acknowledgment is known as the window
Figure 9-6 Window Size of 1
Send 1
Receive 1 Send ACK 2 Receive ACK 2
Send 2
Receive ACK 3 Send 3
Receive ACK 4
Receive 2 Send ACK 3
Receive 3 Send ACK 4
Trang 6484 Chapter 9: TCP/IP Transport and Application Layer
TCP uses expectational acknowledgments, meaning that the acknowledgment number refers to the octet that is expected next Windowing refers to the fact that the window size is negotiated dynamically during the TCP session Windowing is a flow-control mechanism requiring that the source device receive an acknowledgment from the desti-nation after transmitting a certain amount of data
To govern the flow of data between devices, TCP uses a flow-control mechanism The receiving TCP device reports a “window” to the sending TCP device This window specifies the number of octets, starting with the acknowledgment number, that the receiving TCP device currently is capable of receiving
For example, with a window size of 3, the source device can send three octets to the destination It then must wait for an acknowledgment If the destination receives the three octets, it sends an acknowledgment to the source device, which now can transmit three more octets If the destination does not receive the three octets—for example, because of overflowing buffers—it does not send an acknowledgment Because the source does not receive an acknowledgment, it knows that the octets should be retransmitted and that the transmission rate should be slowed
TCP window sizes are variable during the lifetime of a connection Each acknowledg-ment contains a window advertiseacknowledg-ment that indicates the number of bytes that the receiver can accept TCP also maintains a congestion-control window, which is nor-mally the same size as the receiver’s window but is cut in half when a segment is lost (for example, there is congestion) This approach permits the window to be expanded
or contracted as necessary to manage buffer space and processing A larger window size controls the permissible number of octets that can be transmitted
If the sender sends three octets, it is expecting an ACK of 4 If the receiver can handle
a window size of only two octets , it drops packet 3, specifies 3 as the next octet, and specifies a new window size of 2 The sender sends the next two octets but still specifies its own window size of 3 (for example, it still can accept three octets from the receiver) The receiver replies by requesting octet 5 and specifying a window size of 2
Acknowledgment
Reliable delivery guarantees that a stream of data sent from one machine is delivered through a data link to another machine without duplication or data loss Positive acknowledgment with retransmission is one technique that guarantees reliable delivery
of data Positive acknowledgment requires a recipient to communicate with the source, sending back an acknowledgment message when it receives data The sender keeps a record of each data packet (TCP segment) that it sends and expects an acknowledgment
Trang 7The sender also starts a timer when it sends a segment, and it retransmits a segment if
the timer expires before an acknowledgment arrives
Figure 9-7 shows the sender transmitting data packets 1, 2, and 3 The receiver
acknowl-edges receipt of the packets by requesting packet 4 Upon receiving the acknowledgment,
the sender sends packets 4, 5, and 6 If packet 5 does not arrive at the destination, the
receiver acknowledges with a request to resend packet 5 The sender resends packet 5
and then receives an acknowledgment to continue with the transmission of packet 7
Figure 9-7 Window Size of 3
TCP provides sequencing of segments with a forward reference acknowledgment Each
datagram is numbered before transmission, as shown in Figure 9-8 At the receiving
station, TCP reassembles the segments into a complete message TCP must recover from
data that is damaged, lost, duplicated, or delivered out of order by the Internet
com-munication system This is achieved by assigning a sequence number to each octet
transmitted and requiring a positive acknowledgment (ACK) from the receiving TCP
If the ACK is not received within a timeout interval, the data is retransmitted At the
receiver, the sequence numbers are used to correctly order segments that might be received
out of order and to eliminate duplicates Damage is handled by adding a checksum to
each segment transmitted, checking it at the receiver, and discarding damaged segments
Send 1 Send 2 Send 3
Receive 1 Receive 2 Receive 3 Send ACK 4 Receive ACK 4
Send 4 Send 5 Send 6
Receive ACK 7
Receive 4 Receive 5 Receive 6 Send ACK 7
Window Size = 3
Trang 8486 Chapter 9: TCP/IP Transport and Application Layer
Figure 9-8 TCP Sequence and Acknowledgment
TCP
Transmission Control Protocol (TCP) is a connection-oriented transport layer protocol that provides reliable full-duplex data transmission TCP is part of the TCP/IP proto-col stack In a connection-oriented environment, a connection is established between both ends before transfer of information can begin TCP is responsible for breaking messages into segments, reassembling them at the destination station, resending any-thing that is not received, and reassembling messages from the segments TCP supplies
a virtual circuit between end-user applications
These protocols use TCP:
■ File Transfer Protocol (FTP)
■ Hypertext Transfer Protocol (HTTP)
■ Simple Mail Transfer Protocol (SMTP)
■ Domain Name System (DNS) Figure 9-9 shows the TCP segment format
Figure 9-9 TCP Segment Format
I sent # 10. I received # 10.Now send # 11.
Source Des Seq Ack.
1028 23 10 1
Source Des Seq Ack.
1028 23 11 2
Source Des Seq Ack.
23 1028 1 11 .
Source Port
Destination Port
Sequence Number
Acknowledgment
Source Port (16) Designated Port (16) Sequence Number (32)
Acknowledgment Number (32) Header
Length (4)Reserved(6) Bits (6)Code Window (16) Checksum (16) Urgent (16) Options (0 or 32 if Any) Data (Varies)
Bit 0 Bit 15 Bit 16 Bit 31
20 Bytes
Trang 9The following list defines the fields in the TCP segment shown in Figure 9-9:
■ Source Port—Number of the calling port
■ Destination Port—Number of the called port
arriving data
■ Code Bits—Control functions (such as setup and termination of a session)
■ Window—Number of octets that the sender is willing to accept
■ Urgent Pointer—Indication of the end of the urgent data
UDP
User Datagram Protocol (UDP), the segment format for which is shown in Figure 9-10,
is the connectionless transport protocol in the TCP/IP protocol stack UDP is a simple
protocol that exchanges datagrams without acknowledgments or guaranteed delivery
This simplicity is evident when comparing the UDP segment format with that of TCP
Error processing and retransmission must be handled by upper-layer protocols For
example, if a TFTP download gets interrupted for some reason, the human operator
can just retry until it is successfully done
Figure 9-10 UDP Segment Format
The following list defines the fields in the UDP segment shown in Figure 9-10:
■ Source Port—Number of the calling port
■ Destination Port—Number of the called port
Source Port (16) Designated Router (16)
Data (If Any) Length (16) Checksum (16)
Bit 0 Bit 15 Bit 16 Bit 31
8 Bytes
No Sequence or Acknowledgement Fields
Trang 10488 Chapter 9: TCP/IP Transport and Application Layer
UDP uses no windowing or acknowledgments; therefore, application layer protocols provide reliability UDP is designed for applications that do not need to put sequences
of segments together
These protocols use UDP:
■ Trivial File Transfer Protocol (TFTP)
■ Simple Network Management Protocol (SNMP)
■ Dynamic Host Configuration Protocol (DHCP)
■ Domain Name System (DNS)
TCP and UDP Port Numbers
Both TCP and UDP use port numbers to pass information to the upper layers The combination of an IP address and a port number is referred to as a socket Port numbers are used to keep track of different conversations crossing the network at the same time Application software developers agree to use well-known port numbers that are con-trolled by the Internet Assigned Numbers Authority (IANA) For example, any conver-sation bound for the FTP application uses the standard port numbers 20 (for the data) and 21 (for control), as shown in Figure 9-11 Conversations that do not involve an application with a well-known port number are assigned port numbers randomly from within a specific range above 1023 Some ports are reserved in both TCP and UDP, but applications might not be written to support them, as shown in Table 9-1 Port num-bers have the assigned ranges shown in this table
Figure 9-11 Port Numbers
F T P
T e l n e t
S M T P
D N S
T F T P
S N M P
21
Application Layer
Transport Layer
Port Numbers 23
25 53 69 161