250 likes | 365 Views
CS 455/555 Data Communications and Computer Networks – Fall 2005. Introduction to Transport Protocols: Transmission Control Protocol (TCP) & User Datagram Protocol (UDP). Chapters 24 & 25. Reliable Stream transport Service.
E N D
CS 455/555 Data Communications and Computer Networks – Fall 2005 Introduction to Transport Protocols:Transmission Control Protocol (TCP) & User Datagram Protocol (UDP) Chapters 24 & 25
Reliable Stream transport Service • Problem: If underlying protocol is unreliable, how do we guarantee efficient, reliable delivery? • Write complex applications that handle network-related error conditions • Increase the complexity of the underlying protocols to include reliable transport • Develop a general purpose protocol that guarantees reliable stream delivery and that removes reliability responsibilities from the applications and lower-layer protocols.
Introduction • Internet Protocol (IP) provides “unreliable datagram service” between hosts. At the IP layer, a destination address only identifies a host computer. • For which user or application? • Transport protocols provide end-to-end delivery between endpoints of a connection, e.g., processes or programs.
Introduction (continued) • IP datagram service is unreliable in that datagrams may be • Lost (usually dropped due to congestion) • Duplicated • Delivered out of order • TCP provides reliable service nevertheless • Challenge: • How to provide a reliable transport service over unreliable (conceptually) technology?
Transport and Network Layers • Transport Layer Services: • Reliable/Unreliable data transfer • Delay guarantees • Bandwidth guarantees • Security • Transport protocol is built using services from Network Layer • Transport services can be constrained by the services of the underlying network layer protocol • Delay and bandwidth guarantees • Unreliable data transfer
Internet Transport Layer • User Datagram Protocol (UDP) and Transmission Control Protocol (TCP) are Internet transport layer protocols • We refer to layer 4 PDU as a segment (for both UDP and TCP) • The Network Layer protocol, IP, is a best-effort delivery service (unreliable). • UDP and TCP provide application multiplexing & demultiplexing and data integrity
Multiplexing/Demultiplexing Protocol software throughout the layers multiplex or demultiplex among objects at the next layer. • At the transport layer level: • Demultiplexing - delivering segments to the correct application process • Multiplexing - gathering data at the source host from different processes and encapsulation
Application Application Application Application Application Transport TCP UDP ICMP IGMP Network IP ARP RARP Link Ethernet Driver incoming frame Demultiplexing
User process User process User process User process hdr cksum dest addr source addr data protocol type IP header Demultiplexing Details echo server FTP server 1024-5000 telnet server 7 discard server 21 23 9 TCP src port TCP dest port data header UDP 17 TCP TCP ICMP 6 1 IGMP 2 ARP x0806 Others x8035 RARP IP Novell IP x0800 AppleTalk dest addr source addr data Ethernet frame type CRC (Ethernet frame types in hex, others in decimal)
TCP Connections • Virtual • An ordered pair of endpoints • An endpoint is an ordered pair containing • An IP address • A TCP port number • This information is kept by the OS • netstat
FTP client, port 1184 FTP server, port 21 FTP protocol TCP TCP TCP protocol IP IP IP protocol Ethernet Driver Ethernet Driver Ethernet protocol Port Numbers • TCP and UDP use port numbers to identify the applications at each end of a communication. • How are these port numbers chosen?
How port numbers are chosen • Port numbers are managed by the Internet Assigned Numbers Authority (IANA) • http://www.iana.org/assignments/port-numbers • Servers are known by their well-known port number e.g. FTP TCP port 21 Telnet TCP port 23 Biff UDP port 512 • Clients use ephemeral port numbers(“ephemeral” means “short-lived”) • Most (but not all) TCP/IP implementations allocate ephemeral 1024-5000
How port numbers are chosen • The port numbers are divided into three ranges: • the Well Known Ports, • the Registered Ports, • and the Dynamic and/or Private Ports. • The Well Known Ports are those from 0 through 1023. • The Registered Ports are those from 1024 through 49151 • The Dynamic and/or Private Ports are those from 49152 through 65535
Well-known port numbers • Can be found in /etc/services on Unix system • Are independent on UDP vs. TCP, but when same service is offered, same number is used [codd:~] [9:57am] -> grep telnet /etc/services telnet 23/tcp [codd:~] [9:57am] -> grep daytime /etc/services daytime 13/tcp daytime 13/udp [codd:~] [9:58am] -> grep echo /etc/services echo 7/tcp echo 7/udp
Reserved Ports • On Unix systems, ports between 1 and 1023 are reserved ports • Only a superuser process can assign itself a reserved port • This fact is used by some applications (e.g. rlogin) to implement security between client and server. • not very secure however, in era of PC’s and workstations!!!
Some Sample Services • There are a few standard, simple services that almost every TCP/IP implementation provides. • Three examples:TCP UDP Name port port RFC Description echo 7 7 862 server echoes what client sends discard 9 9 863 server discards what client sendsdaytime 13 13 867 server returns time/date in ascii
UDP • Adds very little to IP: • Multiplexing/demultiplexing • Error checking • Some applications are better suited for UDP because: • No connection establishment • No connection state • Small packet overhead • Unregulated send rate • Multicast
TCP • Transmission Control Protocol (TCP) is most widely used transport protocol • Provides reliable data delivery by using IP unreliable datagram delivery • Compensates for loss, delay, duplication and similar problems in Internet components • Reliable delivery is high-level, familiar model for construction or applications
TCP • TCP is protocol (rules, formats), not a piece of software • “specifies the format of data and acknowledgements that two computers exchange in order to achieve reliable transfer, as well as the procedures the computers use to ensure that data arrives correctly” • Determines how hosts should recover from errors like lost or duplicate packets • Details initiation and completion procedures for a TCP stream transfer between 2 hosts
TCP Services • Characteristics of services provided to applications: • connection-oriented: • Connection state resides entirely on end system • end nodes must agree before transfer can begin • Point-to-point: • TCP uses port to identify the destination user process within a host • After port numbers are assigned on both ends, transfer may begin • Does not allow multicasting • complete reliability: no data loss or out-of-order • Provides full duplex communication: • concurrent transfer in both ways • appears as 2 independent streams
Stream interface: • data sent to or received from TCP in streams of bits, divided into octets • unstructured datastream: does not honor “structured” streams of data (like records in a file) • buffered transfer - protocol SW free to divide streams into packets regardless of how the application sends • reliable connection startup: • Virtual Circuit connection - contact made; negotiate for reliability options; inform applications of ready status • graceful connection shutdown; • all data guaramteed to be delivered before closing the connection
TCP “Service” Summary • Transport layer makes data transmission transparent to the upper layers • Responsible for end-to-end delivery, segmentation and concatenation • TCP provides a service to the application layer which is: • connection-oriented: connection established before communication takes place, terminated when done, through 3-way handshakes. • byte-stream: no record boundaries, no structure, just a sequence of bytes.
TCP “Service” Summary (cont.) • reliable: • no loss: lost packets are retransmitted • no corruption: checksums insure integrity • ordered: data delivered in the order it was received • no duplicates • flow controlled: fast sender will not overwhelm slow receiver, or waste bandwidth on the network, entire network cooperates to avoid congestion. • full-duplex: every connection is bi-directional.