0% found this document useful (0 votes)
104 views16 pages

Module13 tcp1 PDF

The document provides an overview of TCP, explaining that it is a connection-oriented protocol that establishes reliable byte streams over unreliable networks by breaking data into segments, using acknowledgements and retransmissions to ensure all bytes are received correctly in order. TCP headers contain fields for port numbers, sequence numbers, acknowledgement numbers, flags, window sizes, checksums and options to manage connections and data transfer.

Uploaded by

BlackHance
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
104 views16 pages

Module13 tcp1 PDF

The document provides an overview of TCP, explaining that it is a connection-oriented protocol that establishes reliable byte streams over unreliable networks by breaking data into segments, using acknowledgements and retransmissions to ensure all bytes are received correctly in order. TCP headers contain fields for port numbers, sequence numbers, acknowledgement numbers, flags, window sizes, checksums and options to manage connections and data transfer.

Uploaded by

BlackHance
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

TCP - Part I

Relates to Lab 5. First module on TCP which covers packet format,


data transfer, and connection management.

Overview

TCP = Transmission Control Protocol


Connection-oriented protocol
Provides a reliable unicast end-to-end byte stream over an
unreliable internetwork.
Byte Stream

Byte Stream

TCP TCP

IP Internetwork

1
Connection-Oriented

Before any data transfer, TCP establishes a connection:


One TCP entity is waiting for a connection (server)
The other TCP entity (client) contacts the server
The actual procedure for setting up connections is more
complex.
Each connection is CLIENT SERVER
Request a co
full duplex nn ec tio n
waiting for
nnection connection
Accept a co
request

Data Transer
Disconnect

Reliable

Byte stream is broken up into chunks which are called seg-


ments

Receiver sends acknowledgements (ACKs) for segments

TCP maintains a timer. If an ACK is not received in time,


the segment is retransmitted

Detecting errors:

TCP has checksums for header and data. Segments with


invalid checksums are discarded

Each byte that is transmitted has a sequence number

2
Byte Stream Service

To the lower layers, TCP handles data in blocks, the


segments.
To the higher layers TCP handles data as a sequence of
bytes and does not identify boundaries between bytes
So: Higher layers do not know about the beginning and
end of segments !
Application Application
1. read 40 bytes
1. write 100 bytes 2. read 40 bytes
2. write 20 bytes 3. read 40 bytes

queue of queue of
bytes to be bytes that
Segments
TCP transmitted TCP have been
received

TCP Format

TCP segments have a 20 byte header with >= 0 bytes of data.

IP header TCP header TCP data


20 bytes 20 bytes

0 15 16 31

Source Port Number Destination Port Number

Sequence number (32 bits)


20 bytes

Acknowledgement number (32 bits)


header
length
0 Flags window size
TCP checksum urgent pointer

Options (if any)

DATA

3
TCP header fields

Port Number:
A port number identifies the endpoint of a connection.
A pair <IP address, port number> identifies one
endpoint of a connection.
Two pairs <client IP address, server port number>
and <server IP address, server port number> identify
a TCP connection.
Applications Applications

Ports: 23 80 104 7 80 16 Ports:


TCP TCP

IP IP

TCP header fields

Sequence Number (SeqNo):


Sequence number is 32 bits long.
So the range of SeqNo is
0 <= SeqNo <= 232 -1 4.3 Gbyte
Each sequence number identifies a byte in the byte
stream
Initial Sequence Number (ISN) of a connection is set
during connection establishment
Q: What are possible requirements for ISN ?

4
TCP header fields

Acknowledgement Number (AckNo):


Acknowledgements are piggybacked, I.e
a segment from A -> B can contain an
acknowledgement for a data sent in the B -> A direction
Q: Why is piggybacking good ?

A hosts uses the AckNo field to send acknowledgements.


(If a host sends an AckNo in a segment it sets the ACK flag)
The AckNo contains the next SeqNo that a hosts wants to
receive
Example: The acknowledgement for a segment with
sequence numbers 0-1500 is AckNo=1501

TCP header fields

Acknowledge Number (contd)


TCP uses the sliding window flow protocol (see CS 457) to
regulate the flow of traffic from sender to receiver
TCP uses the following variation of sliding window:
no NACKs (Negative ACKnowledgement)
only cumulative ACKs
Example:
Assume: Sender sends two segments with 1..1500 and
1501..3000, but receiver only gets the second segment.
In this case, the receiver cannot acknowledge the second
packet. It can only send AckNo=1

10

5
TCP header fields

Header Length ( 4bits):


Length of header in 32-bit words
Note that TCP header has variable length (with minimum
20 bytes)

11

TCP header fields

Flag bits:
URG: Urgent pointer is valid
If the bit is set, the following bytes contain an urgent message in
the range:
SeqNo <= urgent message <= SeqNo+urgent pointer
ACK: Acknowledgement Number is valid
PSH: PUSH Flag
Notification from sender to the receiver that the receiver should
pass all data that it has to the application.
Normally set by sender when the senders buffer is empty

12

6
TCP header fields

Flag bits:
RST: Reset the connection
The flag causes the receiver to reset the connection
Receiver of a RST terminates the connection and indicates
higher layer application about the reset
SYN: Synchronize sequence numbers
Sent in the first packet when initiating a connection
FIN: Sender is finished with sending
Used for closing a connection
Both sides of a connection must send a FIN

13

TCP header fields

Window Size:
Each side of the connection advertises the window size
Window size is the maximum number of bytes that a
receiver can accept.
Maximum window size is 2 16-1= 65535 bytes
TCP Checksum:
TCP checksum covers over both TCP header and TCP
data (also covers some parts of the IP header)
Urgent Pointer:
Only valid if URG flag is set

14

7
TCP header fields

Options:
End of
Options kind=0
1 byte

NOP
(no operation) kind=1
1 byte

Maximum maximum
Segment Size kind=2 len=4
segment size
1 byte 1 byte 2 bytes

Window Scale
Factor kind=3 len=3 shift count
1 byte 1 byte 1 byte

Timestamp kind=8 len=10 timestamp value timestamp echo reply


1 byte 1 byte 4 bytes 4 bytes

15

TCP header fields

Options:
NOP is used to pad TCP header to multiples of 4 bytes
Maximum Segment Size
Window Scale Options
Increases the TCP window from 16 to 32 bits, I.e., the window
size is interpreted differently
Q: What is the different interpretation ?
This option can only be used in the SYN segment (first
segment) during connection establishment time
Timestamp Option
Can be used for roundtrip measurements

16

8
Connection Management in TCP

Opening a TCP Connection


Closing a TCP Connection
Special Scenarios
State Diagram

17

TCP Connection Establishment

TCP uses a three-way handshake to open a connection:


(1) ACTIVE OPEN: Client sends a segment with
SYN bit set *
port number of client
initial sequence number (ISN) of client
(2) PASSIVE OPEN: Server responds with a segment with
SYN bit set *
initial sequence number of server
ACK for ISN of client
(3) Client acknowledges by sending a segment with:
ACK ISN of server (* counts as one byte)

18

9
Three-Way Handshake

aida.poly.edu mng.poly.edu

SYN (Seq
No = x)

+1)
y, AckNo = x
SYN (SeqNo =

(SeqNo = x+
1, AckNo =
y+1)

19

A Closer Look with tcpdump

aida issues
an "telnet mng"
aida.poly.edu mng.poly.edu
1 aida.poly.edu.1121 > mng.poly.edu.telnet: S 1031880193:1031880193(0)
win 16384 <mss 1460,nop,wscale 0,nop,nop,timestamp>
2 mng.poly.edu.telnet > aida.poly.edu.1121: S 172488586:172488586(0)
ack 1031880194 win 8760 <mss 1460>
3 aida.poly.edu.1121 > mng.poly.edu.telnet: . ack 172488587 win 17520
4 aida.poly.edu.1121 > mng.poly.edu.telnet: P 1031880194:1031880218(24)
ack 172488587 win 17520
5 mng.poly.edu.telnet > aida.poly.edu.1121: P 172488587:172488590(3)
ack 1031880218 win 8736
6 aida.poly.edu.1121 > mng.poly.edu.telnet: P 1031880218:1031880221(3)
ack 172488590 win 17520

20

10
Three-Way Handshake

aida.poly.edu mng.poly.edu

S 103188
0193:1031
win 16384 880193(0)
<mss 146
0, ...>
172488 6(0)
58
S 172488586: ss 1460>
94 win 8760 <m
ack 10318801

ack 172488
587 win 1752
0

21

Why is a Two-Way Handshake not enough?

aida.poly.edu mng.poly.edu
S 1031
880193
win 16 :10318 The red
384 <m 80193(0)
ss 146 line is a
0, ...>
delayed
S 1532 duplicate
211235
4:15322 packet.
win 163 112354
84 <ms (0)
s 1460,
...>
0) Will be discarded
8586(
586:17248 > as a duplicate
488 60
S 172 0 <mss 14 SYN
in 876
w

When aida initiates the data transfer (starting with SeqNo=15322112355),


mng will reject all data.
22

11
TCP Connection Termination

Each end of the data flow must be shut down independently


(half-close)
If one end is done it sends a FIN segment. This means that
no more data will be sent

Four steps involved:


(1) X sends a FIN to Y (active close)
(2) Y ACKs the FIN,
(at this time: Y can still send data to X)
(3) and Y sends a FIN to X (passive close)
(4) X ACKs the FIN.

23

Connection termination with tcpdump

aida issues
an "telnet mng"
aida.poly.edu mng.poly.edu

1 mng.poly.edu.telnet > aida.poly.edu.1121: F 172488734:172488734(0)


ack 1031880221 win 8733
2 aida.poly.edu.1121 > mng.poly.edu.telnet: . ack 172488735 win 17484
3 aida.poly.edu.1121 > mng.poly.edu.telnet: F 1031880221:1031880221(0)
ack 172488735 win 17520
4 mng.poly.edu.telnet > aida.poly.edu.1121: . ack 1031880222 win 8733

24

12
TCP Connection Termination

aida.poly.edu mng.poly.edu
F 172488734:172488734(0)
ack 1031880221 win 8733
. ack 17
2488735
win 1748
4
F 10318
8022
ack 1724 1:1031880221(0
88735 w )
in 17520

22 win 8733
. ack 10318802

25

TCP States

State Description

CLOSED No connection is active or pending


LISTEN The server is waiting for an incoming call
SYN RCVD A connection request has arrived; wait for Ack
SYN SENT The client has started to open a connection
ESTABLISHED Normal data transfer state
FIN WAIT 1 Client has said it is finished
FIN WAIT 2 Server has agreed to release
TIMED WAIT Wait for pending packets (2MSL wait state)
CLOSING Both Sides have tried to close simultanesously
CLOSE WAIT Server has initiated a release
LAST ACK Wait for pending packets

26

13
TCP States in Normal Connection Lifetime

SYN (SeqNo = x) LISTEN


SYN_SENT (passive open)
(active open)
y, AckNo =x+1)
SYN (SeqNo = SYN_RCVD
(AckNo = y + 1 )
ESTABLISHED
ESTABLISHED
FIN (SeqNo = m)
FIN_WAIT_1
(active close) (AckNo = m+ 1 )
CLOSE_WAIT
(passive close)
FIN_WAIT_2
FIN (SeqNo = n )
(AckNo = LAST_ACK
n+1)
TIME_WAIT

CLOSED

27

TCP State Transition Diagram


Opening A Connection

CLOSED
passive open active open
close or send: SYN
send: . / .
timeout

LISTEN
Application sends data
send: SYN
recv: recv: SYN
RST send: SYN, ACK

SYN RCVD SYN SENT


simultaneous open
recv: SYN
recvd: ACK send: SYN, ACK recv: SYN, ACK
send: . / . send: ACK
send:
FIN ESTABLISHED

recvd: FIN send: FIN

28

14
TCP State Transition Diagram
Closing A Connection

29

2MSL Wait State

2MSL Wait State = TIME_WAIT


When TCP does an active close, and sends the final ACK, the
connection must stay in in the TIME_WAIT state for twice
the maximum segment lifetime.
2MSL= 2 * Maximum Segment Lifetime

Why?
TCP is given a chance to resent the final ACK. (Server will
timeout after sending the FIN segment and resend the FIN)
The MSL is set to 2 minutes or 1 minute or 30 seconds.

30

15
Resetting Connections

Resetting connections is done by setting the RST flag


When is the RST flag set?
Connection request arrives and no server process is
waiting on the destination port
Abort (Terminate) a connection
Causes the receiver to throw away buffered data. Receiver
does not acknowledge the RST segment

31

16

You might also like