Lectured by: Nguyễn Lê Duy Lai HCM City University of Technology 2/14/2011 1 Reference: Chapter 6 - “Computer Networks”, Andrew S. Tanenbaum, 4th Edition, Prentice Hall, 2003. 2/14/2011 HCM City University of Technology 2 The Transport Services Elements of Transport Protocols A Simple Transport Protocol The Internet Transport Protocols: UDP The Internet Transport Protocols: TCP Performance issues HCM City University of Technology 2/14/2011 3 Transport Layer task is to provide reliable, cost-effective data transport from the source machine to the destination machine, independently of the physical network or networks currently in use Services Provided to the Upper Layers Transport Service Primitives Berkeley Sockets An Example of Socket Programming: An Internet File Server HCM City University of Technology 2/14/2011 4 The network, transport, and application layers HCM City University of Technology 2/14/2011 5 The connection-oriented transport service, connections have three phases: establishment, data transfer, and release The connectionless transport service Why are there two distinct layers? The transport code runs entirely on the users' machines The network layer mostly runs on the routers (which are operated by the carrier) HCM City University of Technology 2/14/2011 6 The transport layer must provide some operations to application programs Each transport service has its own interface The primitives for a simple transport service HCM City University of Technology 2/14/2011 7 TPDU (Transport Protocol Data Unit): messages sent from transport entity to transport entity The nesting of TPDUs, packets, and frames HCM City University of Technology 2/14/2011 8 A state diagram for a simple connection management scheme: Italics: packet arrivals Solid lines: client's state sequence Dashed lines: server's state sequence. HCM City University 2/14/2011 of Technology 9 The socket primitives used in Berkeley UNIXfor TCP (Internet programming) HCM City University of Technology 2/14/2011 10 Server code can be compiled and run on any UNIX system connected to the Internet Client code can then be compiled and run on any other UNIX machine SERVER_PORT BUF_SIZE Server: setsockopt, bind, listen, accept, send, receive, close Client: socket, connect, send, receive, close HCM City University of Technology 2/14/2011 11 Addressing Connection Establishment Connection Release Flow Control and Buffering Multiplexing Crash Recovery HCM City University of Technology 2/14/2011 12 Transport protocols resemble the data link protocols? Yes: Dealing with error control, sequencing, and flow control, among other issues No: dissimilarities between the environments in which the two protocols operate (physical channel and the entire subnet) Potential existence of storage capacity in the subnet Buffering and flow control HCM City University of Technology 2/14/2011 13 Application addresses on a host: Ports TSAPs, NSAPs and transport connections HCM City University 2/14/2011 of Technology 14 HCM City University of Technology 2/14/2011 15 Three-way handshake (a) Normal operation. (b) Old CONNECTION REQUEST appearing out of nowhere. (c) Duplicate CONNECTION REQUEST and duplicate ACK HCM City University of Technology 2/14/2011 16 The problem occurs when the network can lose, store, and duplicate packets The existence of delayed duplicates A machine losing all memory Guarantee not only that a packet is dead, but also that all acknowledgements to it are also dead HCM City University of Technology 2/14/2011 17 Asymmetric release is the way the telephone system works Abrupt disconnection with loss of data HCM City University 2/14/2011 of Technology 18 If either blue army attacks by itself, it will be defeated, but if the two blue armies attack simultaneously, they will be victorious In fact, it can be proven that no protocol exists that works HCM City University of Technology 2/14/2011 20 (a) Normal case of a three-way handshake (b) final ACK lost HCM City University of Technology 2/14/2011 21 (c) Response lost. (d) Response lost and subsequent DRs lost HCM City University of Technology 2/14/2011 22 UDP – User Datagram Protocol Connection-less service Useful in client-server situations: Remote Procedure Call, real-time AV streaming TCP – Transmission Control Protocol Connection-oriented service Reliable byte stream services over unreliable network Most widely used in Internet HCM City University of Technology 2/14/2011 24 UDP transmits segments consisting of an 8-byte header followed by the payload Two ports serve to identify the end points within the source and destination machines HCM City University of Technology 2/14/2011 25 Source port is primarily needed when a reply must be sent back to the source When a UDP segment arrives, its payload is handed to the process attached to the destination port The UDP length field includes the 8-byte header and the data The UDP checksum is optional and stored as 0 if not computed HCM City University of Technology 2/14/2011 26 Does: Providing an interface to the IP protocol Demultiplexing multiple processes using the ports Does Not: Flow control Error control Retransmission upon receipt of a bad segment HCM City University of Technology 2/14/2011 27 An internetwork differs from a single network: different topologies, bandwidths, delays, packet sizes, and other parameters TCP was specifically designed to provide a reliable end-to-end byte stream over an unreliable internetwork TCP transport entity, either a library procedure, a user process, or part of the kernel TCP breaks user data stream up into pieces not exceeding 64 KB (in practice, 1460 data bytes) HCM City University of Technology 2/14/2011 31 Sender and receiver need to create connection end-points first, called sockets Each socket is addressed by the host IP address (32 bits) and a port number (16 bits) A TCP connection must be explicitly established between sockets Port numbers < 1024 are reserved (well-known ports) TCP connections are full-duplex and point-topoint Push and urgent data HCM City University of Technology 2/14/2011 32 A single daemon, called inetd (Internet daemon) in UNIX, attach itself to multiple ports When first incoming connection, inetd forks off a new process and executes the appropriate daemon in it, letting that daemon handle the request Inetd learns which ports it is to use from a configuration file The system administrator can set up the system to have permanent daemons HCM City University of Technology 2/14/2011 33 The sending and receiving TCP entities exchange data in the form of segments Two limits restrict the segment size: 65,515-byte IP payload Maximum transfer unit (MTU): 1500 bytes Basic protocol used by TCP entities is the sliding window Segments can arrive out of order, delayed, timed out Each byte in the stream has its own unique offset HCM City University of Technology 2/14/2011 34 HCM City University of Technology 2/14/2011 35 Source port and Destination port: identify the local end points of the connection Sequence number: every byte of data is numbered in a TCP stream Acknowledgement number: specifies the next byte expected TCP header length: tells how many 32-bit words are contained in the TCP header URG bit: is set to 1 if the Urgent pointer is in use ACK bit: is set to 1 to indicate that the Acknowledgement number is valid PSH bit: indicates PUSHed data HCM City University of Technology 2/14/2011 36 RST bit: is used to reset a connection SYN bit: is used to establish connections FIN bit: is used to release a connection Window size: field tells how many bytes may be sent starting at the byte acknowledged Checksum field: checksums the header, the data, and the conceptual pseudoheader Options: provides a way to add extra facilities HCM City University of Technology 2/14/2011 37 (a) TCP connection establishment in the normal case. (b) Call collision. HCM City University of Technology 2/14/2011 38 Each simplex connection is released independently Either party can send a TCP segment with the FIN bit set To avoid the two-army problem, timers are used If a response to a FIN is not forthcoming within two maximum packet lifetimes, the sender of the FIN releases the connection HCM City University of Technology 2/14/2011 39 HCM City University of Technology 2/14/2011 40 HCM City University of Technology 2/14/2011 41 Client operations Identify server IP and port Create UDP socket Send/receive data to server Close socket Server operations Create socket and register with the system Read client messages and respond to client HCM City University of Technology 2/14/2011 44 HCM City University of Technology 2/14/2011 45 Client operations Identify server IP and port Create UDP socket Setup connection to server Send/receive data Close connection HCM City University of Technology 2/14/2011 46 Server operations Create and register socket Listen and wait for incoming connections Accept connection Send/receive data Close connection HCM City University of Technology 2/14/2011 47 Concurrent server operations Create and register socket Listen and wait for incoming connections Accept connection and spawn new thread to handle the connection Listen and wait for new connection Thread operations Send/receive data through connection Close connection HCM City University of Technology 2/14/2011 48 HCM City University of Technology 2/14/2011 49 InetAddress ServerSocket Socket URL URLConnection DatagramSocket HCM City University of Technology 2/14/2011 50 Class used for internet addresses (Internet Protocol) Use methods: getLocalHost, getByName, or getAllByName to create an InetAddress instance: public static InetAddess InetAddress.getByName(String hostname) public static InetAddess [] InetAddress.getAllByName(String hostname) public static InetAddess InetAddress.getLocalHost() To get the host IP address or host name: getHostAddress() getHostName() HCM City University of Technology 2/14/2011 51 To describe a socket To create a socket Socket(InetAddress address, int port) Socket(String host, int port) Socket(InetAddress address, int port, InetAddress, localAddr, int localPort) Socket(String host, int port, InetAddress, localAddr, int localPort) Socket() HCM City University of Technology 2/14/2011 52 Get socket information InetAddress getInetAddress() int getPort() InetAddress getLocalAddress() int getLocalPort() Using output and input Streams public OutputStream getOutputStream() throws IOException public InputStream getInputStream() throws IOException HCM City University of Technology 2/14/2011 53 Used for a server side socket Create a ServerSocket ServerSocket(int port) throws IOException ServerSocket(int port, int backlog) throws IOException ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException HCM City University of Technology 2/14/2011 54 Socket accept() throws IOException. void close() throws IOException InetAddress getInetAddress() int getLocalPort() void setSoTimeout(int timeout) throws SocketException HCM City University of Technology 2/14/2011 55