--- title: "18-transport-layer" aliases: tags: - cosc203 - lecture --- chapter 3 # service provided by transport layer services - process to process communication - logical communication between application processes - multi and demulti plexing - communication for multiple applications of the same host - flow control - ensure production reate <= consuption rate - congestion control - too many sender, sending too fast protocols - TCP transmission control protocol - UDP user datagram protocol ## actions and sender - is passed an app layer lessage - determines segment header fields values - creates segment - passes segement to IP ## actions at reciever - recieves segment from IP - checks header values - extract app layer message - de multiplexes message up to application via socket # multiplexing and demultiplexing sender: handle data from multiple sockets, add transport header reciever: user header info to deliver segments to correct socket ![](https://i.imgur.com/f2NqsKE.png) ## how it works port number - 16 bit integer (0, 66635) - segment has a source and a port number - host uses IP and port to direct segment to appropriate socket IANA (internet assign number authority) has divded port number into three ranges - 0-1023 well known - 1024-49151 registered - 49152-65535 dynamic ## principle of reliable data transfer ![](https://i.imgur.com/ORzC8jm.png) - compexity of reliable data transfer protocol depends on character istics of unreliable channel - sender and reciever do not know the 'state' of each other. they need to communicate via a message - ACKknowledgement # TCP - point to point communicate - one sender, one reciever - reliable, in-order byte stream - no message boundaries - each byte has a position in the stream - full duplex data - bi directional data flow in the same connection - MSS: maximum segment size - cumulative ACKs - one ack message confirms multiple segments - connection-oriented - handshaking (exchange of control messages) initializes sender, reciever state before data exchange - flow controlled - sender will not overwhelm reciever - congestion controlled - dynamically adjust congestion window size Structure - sequence number - numbe assigned to the first byte of data in this segment - ACK # - the seq # of the next expected byte; flagged as a single bit - internet checksum - used to check for corruption - TCP options (variable length) - length (of TCP header) - application data - RST, SYN, FIN - connection management - recieve window - flow control # of bytes reciever willing to accept - protect against buffer overflow - C, E: congestion notification ![](https://i.imgur.com/M4nQCr3.png) seq number - byte stream - "number" of first byte in segments data - sliding window ![](https://i.imgur.com/qY5kmsN.png) ack - seq # of next bytes expected from other side - cumulative ACK ![](https://i.imgur.com/jxhCPpa.png) lost and duplicated segments - lost - host does not recieve data, ack is not send, - timeout + retransmission - ![](https://i.imgur.com/wtHhht4.png) - sender sets the retransmittion timer when sending a segment - sender retransmits the segment iin ACK is not recieved when timer fires - duplicated - host recieved data, ack is send and lost - data is resent, and a duplicat # UDP