quartz/content/notes/18-transport-layer.md
2022-10-17 12:58:03 +13:00

114 lines
3.2 KiB
Markdown

---
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