590 likes | 727 Views
UTP and TCP. Transport Protocols, UDP and TCP, Protocol Port Numbers. Transport Protocol. Separate layer of protocol stack Conceptually between Application IP. Terminology. IP Provides computer-to-computer communication Source and destination addresses are computers
E N D
UTP and TCP Transport Protocols, UDP and TCP, Protocol Port Numbers
Transport Protocol • Separate layer of protocol stack • Conceptually between • Application • IP Spring 2005
Terminology • IP • Provides computer-to-computer communication • Source and destination addresses are computers • Called machine-to-machine • Transport Protocols • Provide application-to-application communication • Need extended addressing mechanism to identify applications • Called end-to-end Spring 2005
Transport Protocol Functionality • Identify sending and receiving applications • Optionally provide • Reliability • Flow control • Congestion control • Note: not all transport protocols provide above facilities Spring 2005
Two Transport Protocols Available • Transmission Control Protocol (TCP) • User Datagram Protocol (UDP) • Major differences • Interface to applications • Functionality Spring 2005
User Datagram Protocol (UDP) • Provides unreliable transfer • Requires minimal • Overhead • Computation • Communication • Best for LAN applications Spring 2005
UDP Details • Connectionless service paradigm • Message-oriented interface • Each message encapsulated in IP datagram • UDP header identifies • Sending application • Receiving application Spring 2005
Identifying An Application • Cannot extend IP address • No unused bits • Cannot use OS-dependent quantity • Process ID • Task number • Job name • Must work on all computer systems Spring 2005
Applications Applications Ports: Ports: 23 80 104 7 80 16 TCP TCP IP IP Identifying an Application (continued) • Invent new abstraction • Used only with TCP/IP • Identifies sender and receiver unambiguously • Technique • Each application assigned unique integer • Called protocol port number Spring 2005
Protocol Ports • Server • Follows standard • Always uses same port number • Uses lower port numbers • Client • Obtains unused port from protocol software • Uses higher port numbers Spring 2005
Protocol Port Example • Domain name server application is assigned port 53 • Application using DNS obtains port 28900 • UDP datagram sent from application to DNS server has • Source port number 28900 • Destination port number 53 • When DNS server replied, DP datagram hs • Source port number 53 • Destination port number 28900 Spring 2005
Transmission Control Protocol (TCP) • Major transport protocol used in Internet • Heavily used • Completely reliable transfer Spring 2005
TCP Features • Connection-oriented service • Point-to-point • Full-duplex communication • Stream interface • Stream divided into segments for transmission • Each segment encapsulated in IP datagram • Uses protocol ports to identify applications Spring 2005
TCP Feature Summary TCP provides a completely reliable (no data duplication or loss), connection-oriented, full-duplex stream transport service that allows two application programs to form a connection, send data in either direction, and then terminate the connection. Spring 2005
Relationship Between TCP And Other Protocols • TCP on one computer uses IP to communicate with TCP on another computer Spring 2005
Apparent Contradiction • IP offers best-effort (unreliable) delivery • TCP uses IP • TCP provides completely reliable transfer • How is this possible? Spring 2005
Achieving Reliability • Reliable connection startup • Reliable data transmission • Graceful connection shutdown Spring 2005
TCP Segment Format • All TCP segments have same format • Data • Acknowledgment • SYN (startup) • FIN (shutdown) • Segment divided into two parts • Header • Payload area (zero or more bytes of data) Spring 2005
TCP Segment Format (continued) • Header contains • Protocol port numbers to identify • Sending application • Receiving application • Bits to specify items such as • SYN • FIN • ACK • Fields for window advertisement, acknowledgment, etc. Spring 2005
Illustration of TCP Segment • Sequence number specifies where in stream data belongs • Few segments contain options Spring 2005
Startup and Shutdown • Connection startup • Must be reliable • Connection shutdown • Must be graceful • Difficult Spring 2005
Why Startup/Shutdown Difficult • Segments can be • Lost • Duplicated • Delayed • Delivered out of order • Either side can crash • Either side can reboot • Need to avoid duplicate “shutdown” message from affecting later connection Spring 2005
TCP’s Startup/Shutdown Solution • Uses three-message exchange • Known as 3-way handshake • Necessary and sufficient for • Unambiguous, reliable startup • Unambiguous, graceful shutdown • SYN used for startup • FIN used for shutdown Spring 2005
Illustration of 3-Way Handshake This picture is copied from somewhere SYN (SeqNo = x) SYN (SeqNo = y, AckNo = x + 1 ) (SeqNo = x+1, AckNo = y + 1 ) Spring 2005
S 1031880193:1031880193(0) win 16384 <mss 1460, ...> delayed duplicate packet. S 15322112354:15322112354(0) win 16384 <mss 1460, ...> S 172488586:172488586(0) win 8760 <mss 1460> 2-Way Handshake Problem A B This picture is copied from somewhere Will be discarded as a duplicate SYN When A initiates the data transfer (starting with SeqNo=15322112355), B will reject all data. Spring 2005
Reliable Data Transmission • Positive acknowledgment • Receiver returns short message when data arrives • Called acknowledgment • Retransmission • Sender starts timer whenever message is transmitted • If timer expires before acknowledgment arrives, sender retransmits message Spring 2005
Illustration of Retransmission • TCP delays transmission of ACKs for up to 200ms • The hope is to have data ready in that time frame. Then, the ACK can be piggybacked with a data segment. • Delayed ACKs explain why the ACK and the “echo of character” are sent in the same segment. Spring 2005
How Long Should TCP WaitBefore Retransmitting? • Time for acknowledgment to arrive depends on • Distance to destination • Current traffic conditions • Multiple connections can be open simultaneously • Traffic conditions change rapidly Spring 2005
Important Point The delay required for data to reach a destination and an acknowledgment to return depends on traffic in the internet as well as the distance to the destination. Because it allows multiple application programs to communication with multiple destinations concurrently, TCP must handle a variety of delays that can change rapidly Spring 2005
Solving the Retransmission Problem • Keep estimate of round trip time on each connection • Use current estimate to set retransmission timer • Known as adaptive retransmission • Key to TCP’s success Spring 2005
Illustration of Adaptive Retransmssion • Timeout depends on current round-trip estimate Spring 2005
TCP Flow Control • Sliding Window Protocol performed at the “byte” level • Receiver • Advertises available buffer space • Called window • Sender • Can send up to entire window before ack arrives This picture is copied from somewhere Spring 2005
Window Advertisement • Each acknowledgment carries new window information • Called window advertisement • Can be zero (called closed window) • Interpretation: I have received up through X, and can take Y more octets Spring 2005
Illustration of “Window Closes” • Transmission of a single byte (with SeqNo = 6) and acknowledgement is received (AckNo = 5, Win=4): This picture is copied from somewhere Spring 2005
Illustration of “Window Opens” • Acknowledgement is received that enlarges the window to the right (AckNo = 5, Win=6): This picture is copied from somewhere • A receiver opens a window when TCP buffer empties (meaning that data is delivered to the application). Spring 2005
Illustration of “Window Shrinks” • Acknowledgement is received that reduces the window from the right (AckNo = 5, Win=3): This picture is copied from somewhere • Shrinking a window should not be used Spring 2005
Window Management in TCP • The receiver is returning two parameters to the sender • The interpretation is: • I am ready to receive new data with SeqNo= AckNo, AckNo+1, …., AckNo+Win-1 • Receiver can acknowledge data without opening the window • Receiver can change the window size without acknowledging data Spring 2005
Sliding Window: Example This picture is copied from somewhere Spring 2005
TCP Congestion Control • TCP has a mechanism for congestion control. The mechanism is implemented at the sender • The sender has two parameters: • Congestion Window (cwnd) • Slow-start threshhold Value (ssthresh) Initial value is the advertised window size • Congestion control works in two modes: • slow start (cwnd < ssthresh) • congestion avoidance (cwnd >= ssthresh Spring 2005
Slow Start • Initial value:Set cwnd = 1 • Note: Unit is a segment size. TCP actually is based on bytes and increments by 1 MSS (maximum segment size) • The receiver sends an acknowledgement (ACK) for each packet • Note: Generally, a TCP receiver sends an ACK for every other segment. • Each time an ACK is received by the sender, the congestion window is increased by 1 segment: Set cwnd = cwnd + 1 • If an ACK acknowledges two segments, cwnd is still increased by only 1 segment. • Even if ACK acknowledges a segment that is smaller than MSS bytes long, cwnd is increased by 1. • Does Slow Start increment slowly? Not really. In fact, the increase of cwnd is exponential Spring 2005
Slow Start Example • The congestion window size grows very rapidly • For every ACK, we increase cwnd by 1 irrespective of the number of segments ACK’ed • TCP slows down the increase of cwnd when cwnd > ssthresh This picture is copied from somewhere Spring 2005
Congestion Avoidance • Congestion avoidance phase is started if cwnd has reached the slow-start threshold value • If cwnd >= ssthresh then each time an ACK is received, increment cwnd as follows: • cwnd = cwnd + 1/ [cwnd] where [cwnd] is the largest integer smaller than cwnd • So cwnd is increased by one only if all cwnd segments have been acknowledged. Spring 2005
Example of Slow Start/Congestion Avoidance Assume that ssthresh = 8 ssthresh This picture is copied from somewhere Cwnd (in segments) Roundtrip times Spring 2005
Responses to Congestion • TCP assumes there is congestion if it detects a packet loss • A TCP sender can detect lost packets via: • Timeout of a retransmission timer • Receipt of a duplicate ACK • TCP interprets a Timeout as a binary congestion signal. When a timeout occurs, the sender performs: • Set ssthresh=cwnd / 2 • Reset cwnd = 1 • and slow-start is entered Spring 2005
Summary of TCP congestion control Initially: cwnd = 1; ssthresh = advertised window size; New Ack received: if (cwnd < ssthresh) /* Slow Start*/ cwnd = cwnd + 1; else /* Congestion Avoidance */ cwnd = cwnd + 1/cwnd; Timeout: /* Multiplicative decrease */ ssthresh = cwnd/2; cwnd = 1;
Slow Start / Congestion Avoidance • A typical plot of cwnd for a TCP connection (MSS = 1500 bytes) with TCP Tahoe: This picture is copied from somewhere Spring 2005
Flavors of TCP Congestion Control • TCP Tahoe (1988, FreeBSD 4.3 Tahoe) • Slow Start • Congestion Avoidance • Fast Retransmit • TCP Reno (1990, FreeBSD 4.3 Reno) • Fast Recovery • New Reno (1996) • SACK (1996) • RED (Floyd and Jacobson 1993) Spring 2005
Acknowledgments in TCP • Receiver sends ACK to sender • ACK is used for flow control, error control, and congestion control • ACK number sent is the next sequence number expected • Delayed ACK: TCP receiver normally delays transmission of an ACK (for about 200ms) • Why? • ACKs are not delayed when packets are received out of sequence • Why? Lostsegment Spring 2005
Acknowledgments in TCP • Receiver sends ACK to sender • ACK is used for flow control, error control, and congestion control • ACK number sent is the next sequence number expected • Delayed ACK: TCP receiver normally delays transmission of an ACK (for about 200ms) • Why? • ACKs are not delayed when packets are received out of sequence • Why? Out-of-order arrivals Spring 2005