Lec 05 Ver 01
Lec 05 Ver 01
Lec 05 Ver 01
1
Goals for Today’s Lecture
• Principles underlying transport-layer services
– (De)multiplexing
– Detecting corruption
– Reliable delivery
– Flow control
2
Role of Transport Layer
• Application layer
– Communication for specific applications
– E.g., HyperText Transfer Protocol (HTTP), File Transfer
Protocol (FTP), Network News Transfer Protocol (NNTP)
• Transport layer
– Communication between processes (e.g., socket)
– Relies on network layer and serves the application layer
– E.g., TCP and UDP
• Network layer
– Logical communication between nodes
– Hides details of the link technology
– E.g., IP 3
Transport Protocols
• Provide logical communication
between application processes
running on different hosts application
transport
network
data link
• Run on end hosts physical
network
data link
network physical
lo
– Sender: breaks application data link
gi
ca
physical
l
network
messages into segments,
en
data link
d-
physical network
en
and passes to network layer data link
d
physical
tr
– Receiver: reassembles
an
network
sp
data link
or
segments into messages, physical
t
passes to application layer application
transport
network
available to applications
– Internet: TCP and UDP 4
Internet Transport Protocols
• Datagram messaging service (UDP)
• Reliable, in-order delivery (TCP)
– Connection set-up
– Discarding of corrupted packets
– Retransmission of lost packets
– Flow control
– Congestion control
5
Multiplexing and Demultiplexing
• Host receives IP datagrams
32 bits
– Each datagram has source
and destination IP address, source port # dest port #
6
Unreliable Message Delivery Service
• Lightweight communication between processes
– Avoid overhead and delays of ordered, reliable delivery
– Send messages to and receive them from a socket
checksum length
DATA
7
Why Would Anyone Use UDP?
• Finer control over what data is sent and when
– As soon as an application process writes into the socket
– … UDP will package the data and send the packet
• No connection state
– No allocation of buffers, parameters, sequence #s, etc.
– … making it easier to handle many active clients at once
“12.3.4.15” 9
Transmission Control Protocol (TCP)
• Connection oriented
– Explicit set-up and tear-down of TCP session
• Stream-of-bytes service
– Sends and receives a stream of bytes, not messages
• Reliable, in-order delivery
– Checksums to detect corrupted data
– Acknowledgments & retransmissions for reliable delivery
– Sequence numbers to detect losses and reorder data
• Flow control
– Prevent overflow of the receiver’s buffer space
• Congestion control
– Adapt to network congestion for the greater good 10
An Analogy: Talking on a Cell Phone
• Alice and Bob on their cell phones
– Both Alice and Bob are talking
11
Some Take-Aways from the Example
• Acknowledgments from receiver
– Positive: “okay” or “ACK”
– Negative: “please repeat that” or “NACK”
12
Challenges of Reliable Data Transfer
• Over a perfectly reliable channel
– All of the data arrives in order, just as it was sent
– Simple: sender sends data, and receiver receives data
14
TCP Segments
15
16
TCP “Stream of Bytes” Service
Byte 80
Byte 3
Byte 2
Byte 1
Byte 0
Byte 80
Byte 3
Byte 2
Byte 1
Byte 0
Host A
Host B
…Emulated Using TCP “Segments”
Host A
Byte 0
Byte 1
Byte 2
Byte 3
Byte 80
TCP Data
Host B
Byte 0
Byte 1
Byte 2
Byte 3
Byte 80
17
TCP Segment
IP Data
TCP Data (segment) TCP Hdr IP Hdr
• IP packet
– No bigger than Maximum Transmission Unit (MTU)
– E.g., up to 1500 bytes on an Ethernet
• TCP packet
– IP packet with a TCP header and data inside
– TCP header is typically 20 bytes long
• TCP segment
– No more than Maximum Segment Size (MSS) bytes
– E.g., up to 1460 consecutive bytes from the stream 18
Sequence Numbers
Host A
ISN (initial sequence number)
Sequence TCP
TCP Data
number = 1st HDR
19
Initial Sequence Number (ISN)
• Sequence number for the very first byte
• Practical issue
– IP addresses and port #s uniquely identify a connection
– Eventually, though, these port #s do get used again
– … and there is a chance an old packet is still in flight
– … and might be associated with the new connection
21
Establishing a TCP Connection
A B
SY N
23
TCP Header Fields
• Source & Destination Ports:
– 16-Bits ports (Identifies a program currently running on a
given Host)
• Data Offset
– Tells about the length of the TCP header 24
TCP Header Fields
• Flags
– URG : Value in urgent pointer field is significant and
should be examined by the recipient
– ACK : value in ACK sequence num is significant
– PSH : Push all queued input to the application on the
receiving side
– RST : Reset the connection
– SYN: Synchronize the receiver on a sequence number
– FIN : Used to teardown session
• Window Size
– 16 – bit window used by TCP as a buffer management
strategy commonly refered as “Sliding Window”
25
TCP Header Fields
• Checksum
– Used to help ensure the integrity of message
– Computer on both header as well as Payload
• Urgent pointer
– A 16 bit integer value used to indicate how much urgent
data follows the TCP Header
26
Step 1: A’s Initial SYN Packet
27
Step 2: B’s SYN-ACK Packet
Sequence number
Flags: SYN
B’s ISN plus 1
FIN
RST 20 0 Flags Advertised window
PSH
URG Checksum Urgent pointer
ACK Options (variable)
30
SYN Loss and Web Downloads
• User clicks on a hypertext link
– Browser creates a socket and does a “connect”
– The “connect” triggers the OS to transmit a SYN
32