You are on page 1of 96

Internet

z




/




z Internet:
UDP:
TCP:



z

z /
z : UDP
z
z : TCP
byte

TCP





:

z application
transport
network
data link



host
h st
physical
phys cal

z
host
:


:



application
transport
network
data link
z

physical
p y



Internet: TCP and UDP

z ,
, .
z
7 7

6 6


5 5


Transport Transport
z
IP IP IP

Datalink 2 2 Datalink
Physical 1 1 Physical



router

z : host
z
:




z :
, ,
.

.
=
=
hosts =
=
=



z
,
:





(

))
z



z
.
z
z

(
(/)
)
z host



Host 1 Host 2

App.
pp App.
pp


O.S. Data
D Header Data
D Header O.S.
D H
D H

D H D H D H

D H

best-effort ;



, , host ;
host

Internet
application


transport
z network
data link
: UDP physical
phys cal


best-effort IP
z


: TCP



application
transport
network
data link


physical
p y
z
:


Internet
HTTP RA DNS
Application z UDP:
p1 p2 p1 p2 p3 p1 p2

z TCP: ,
Transport

A B C
IP

z TCP UDP IP,


host,,

:

/
z ;

:



z 16-bit
UDP TCP
z client server
z (0-1023):
(0 1023):

telnet:23
.., telnet:23, SMTP:25,
SMTP:25 DNS:53
DNS:53, http:80,
http:80
z (1024-65535):
client

host : host :

,
(-
)
= =

P3 P1
P1 P2 P4 application
application application

transport transport transport

network network network

link link link

physical
p y physical
p y physical

host 2 host 3
host 1

host
IP 32 bits
source port # dest port #
source IP
destination IP

o



source destination port
host ()

IP





z :
DatagramSocket mySocket1 = new DatagramSocket(9157);
D t
DatagramSocket
S k t mySocket2
S k t2 = new DDatagramSocket(9222);
t S k t(9222)
z UDP :
(d st IP address,
(dest dd ss dest
d st p
portt numb
number))
z host UDP:
destination port
UDP

z IP source
/ source port ,

d t IP
dest
dest
d t port,t


DatagramSocket serverSocket = new DatagramSocket(6428);

P2 P1
P1
P3

SP: 6428 SP: 6428


DP: 9157 DP: 5775
S-IP:
S IP: C S-IP:
S IP: C
D-IP:A D-IP:B
SP: 9157 SP: 5775
client DP: 6428
server DP: 6428 Client
IP: A S-IP: A
IP: C S-IP: B IP:B
D-IP:C D-IP:C

SP

z TCP :
source IP address, source p
port number, dest IP
address, dest port number
z host 4





z Server host


TCP :


z Web
W b servers
s s




client
- HTTP
/

P1 P4 P5 P6 P2 P1P3

SP: 5775
DP: 80
S-IP: B
D-IP:C

SP: 9157 SP: 9157


client DP: 80 DP: 80 Client
server
IP: A S-IP: A
IP: C S-IP: B IP:B
D-IP:C D-IP:C

Threaded Web Server

P1 P4 P2 P1P3

SP: 5775
DP: 80
S-IP: B
D-IP:C

SP: 9157 SP: 9157


client DP: 80 DP: 80 Client
server
IP: A S-IP: A
IP: C S-IP: B IP:B
D-IP:C D-IP:C


UDP: User Datagram Protocol [RFC 768]

z
Internet UDP;
z z


. (
UDP : )
)
z :


,
z : z


UDP
z :
UDP

UDP


UDP

A1 A2 B1 B2

App App App App

OS

DP1 DP2
UDP
DP1

DP2

IP

UDP, TCP,


UDP
z 64KB
z / IP
z TCP
IP
z streaming multimedia


z UDP
DNS
SNMP
RIP
z UDP,





UDP

UDP




()

32 bit

.



216-1= 65,535
,
UDP 8 byte (..,
Data) 65,535 byte
UDP
IP

UDP

:
z

z : z :
z z checksum

16-bit
z checksum: checksum
z
checksum
1 1111111111111111:
z -
checksum checksum -
UDP .
.
z UDP checksum;


z
,

bit



z : 16
16-bit
bit

1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

wraparound 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1

sum 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
1
checksum 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

1 byte 1 byte 1 byte 1 byte





00000000 =17

6, TCP

z datagram
, host

z
Ch k
Checksum

z , ,
.


- -


z

(rdt)


rdt_send(): deliver_data():
(.., app.) rdt

- -

udt_send():
rdt
rdt, rcv():
rdt_rcv():
rdt



TCP:

TCP = Transmission Control Protocol


z
z byte

.

byte

TCP TCP

IP


TCP:
z :

z

(
( )
)
byte

z
TCP

z buffers


TCP TCP
b ff
buffer b ff
buffer


TCP:
z

MSS maximum
MSS: i segmentt size
i
z


z

z /
IP
z
z : file transfer,
transfer
chat, web, SMTP (e-mail)

TCP:
z ,
TCP :
z
TCP

(
(server)
)
z TCP (client) server
z
.
z ,
CLIENT SERVER


TCP: byte

Host A

Host B


TCP: byte

Host A

:
TCP Data 1. (MSS byte),
2 ,
2.
3. .

TCP Data
Host B


TCP: byte
z , TCP
, .
z
,
TCP


byte
byte
y
z ,
!


1. read 40 byte
1. write 100 byte 2. read 40 byte
2. write 20 byte 3. read 40 byte

byte
TCP
TCP byte


TCP: byte

MSS: Maximum segment size


z TCP
( OS)
z : 1500,
1500 536
536, 512 byte
z

z MSS


TCP:


TCP

32 bit

byte

20 byte


not
. used U A P R S F
checksum
h k

( )



( )
(65.535-20-20=65.495 byte)

TCP:


z .
z (IP address, port number)
.
z ((client IP address, client p
port number)) ((server
IP address, server port number) TCP.



Applications
Applications


Ports: 23 80 104 7 80 16
Ports:
TCP TCP

IP IP


TCP:


TCP 32 bit.
0 Sequence number 232 -1 4.3 Gbyte
client server ISN
.

ISN (initial sequence number)


Host A

TCP
TCP Data
HDR
= byte
Ack =

byte
TCP
HDR TCP Data

Host B

TCP:


z TCP


NACK (Negative ACKnowledgement)
ACK
z :
1...1500
15013000, .
.
AckNo = 1


TCP:
: Telnet
Host A Host B


C
host
C,

C

host
C

z
;
TCP telnet
.


TCP:

32 bit
ACK:
ACK
URG:

32 bit
not
. used
UAP R SF
PSH: byte
pushed data checksum

RST,, SYN,, FIN ( )




byte
b
urgent
, ( )
data
(65.535-20-20=65.495 byte)



TCP:

(options)
z





End of
Options kind=0
1 byte
NOP
kind=1

(no operation)
TCP 4 byte
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

TCP:
z TCP


z
z
:



z TCP
.

z

((ACKs)
K )
. ACK
.
TCP:

z TCP


z



ACK
z ACK

z ACK: TCP
ACK (
200ms)
z ACK





TCP:
TCP
:
z seq #

z seq # byte
z (
)
z : TimeOutInterval
:

z timeout
z timer
ck:
z

timer

TCP:

Host A Host B Host A Host B

meout
ut

Seq=92 tim
timeou

X
loss

meout
Seq=92 tim

time time
ACK timeout
TCP:

Host A Host B

timeout

X
loss

time
ACK


TCP:

TCP
ACK. 200ms
, , .

,

ACK

ACK
, ,



ACK

ACK,

byte

ACK,



TCP:
TCP



TCP:
TCP
TCP ,

.

z ACK



z ACK


TCP:


z timeout :


z
.



,




.
z T :


TCP:
ACK 1K SeqNo=0

z ACK
AckNo=1024

, TCP 1K SeqNo=1
024

1K SeqNo=2
048

. 1. duplicate AckNo=1024

TCP
1K SeqNo=3
072
z
AckNo=1024

2. duplicate


,
1K SeqNo=4
096

AckNo=1024
.
3. duplicate

1K SeqNo=1
024
z
1K SeqNo=5

120


TCP:

:

ACK, ACK ACK
y
if (y > SendBase) {
SendBase = y
if ( )

}
else {
ACKs
y
if ( ACKs y = 3)
y
}
ACK




SendBase-1: byte
TCP:

z TCP .

(retransmission timer)
z ,

z

,

z
,
z


;

TCP:
Round Trip Timeout
timeout
(
(Retransmission Timeout, RTO)) TCP;
P
z RTT

RTT

z : timeout

z : ,


RTT;;
z SampleRTT:
ACK
z SampleRTT ,
RTT, SampleRTT

TCP:
Round Trip Timeout
z

() z
RTT.
z ,
RTO - .

z ,
. variance
.

Avverage Queuueing Delay


Probbability

Variance

variance


RTT
mean
TCP:
Timeout
RTO RTT
TCP
z TCP Segment 1

RTTT #1

t1
ACK for Segmenn

Segment 2



Segment 3

RTTT #2
ACK ACK for Seg
m ent 2 + 3

z Segment
4
(., Segment 5


RTT #3

ment 4
ACK for Seg
) ment 5
ACK for Seg
z

RTT
TCP:
Timeout
z RTO RTT

(srtt)
variance
i (rttvar)

z RTT :
srttn+1 = SampleRTT + (1- ) srttn
rttvar
tt n+1 = ( | SampleRTT
S l RTT - srtt
ttn | ) + (1-
1 ) rttvar
tt n
RTOn+1 = srttn+1 + 4 rttvarn+1

=1/8 =1/4

TCP:
Timeout
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

350

300

250
RTT (miilliseconds)

200

150

100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)

SampleRTT Estimated RTT



TCP:
Timeout

z


RTO
RTO:
RTO0 = 3 sec

z
RTO



RTT
srtt1 = SampleRTT
rttvar1 = SampleRTT / 2
RTO1 = srtt1 + 4 rttvarn+1


TCP:
Timeout
ACK segme
nt
, Timeout ! retrans
miss
of segm ion
ACK ent

RTT ?

RTT
T ?
. ACK

z Karn:
RTT



RTT
ACK


timeout,,
RTO
( )
RTOn+1 = min ( 2 RTOn , 64) seconds

TCP:

z
z


z
z


TCP:

z TCP

:

z 1: client host TCP SYN
SYN bit
(ISN)

z 2:
2 server host
h t

SYN
SYNACK
SYN ACK bits


ACK ISN client
z 3: client SYNACK ACK.
ACK
ACK ISN server.

TCP:

(Active) (Passive)
Client Server


TCP:

((Active)) ((Passive))
Client Server



SYN

client
li


(
(

SeqNo = x+1), o server .

TCP:
X Y

z close

(half-close)
z
,

close
FIN.

ait
:

timed wa
z
(1) X FIN Y
(active close)
( ) Y
(2) FIN,
F N closed
(: Y
X)
(3)
Y
FIN
X
(passive close)
(4) X FIN.

TCP:

TCP
client client
30 sec TCP
SYN

FIN SYN & ACK


ACK ACK


ACK TCP
FIN


TCP:

TCP server
server
ACK

SYN
FIN SYN & ACK

ACK
FIN
ACK

TCP:

z
:
1
Seq:i
q

SYN Win
Port Port
34278 80

A B

SYN_SENT LISTEN


TCP:

z
: 2

Port Port
34278 80

Seq:j
A ACK:i+1 B
SYN,ACK Win

SYN_SENT SYN_RCVD

TCP:

z
:

3

Seq:i+1
ACK:j+1
ACK Win
Port Port
34278 80

A B

ESTABLISHED SYN_RCVD

TCP:

z ESTABLISHED,
ESTABLISHED
...

Port Port
34278 80

A B

ESTABLISHED ESTABLISHED

TCP:

z
:
1
Seq:t
ACK:q
ACK,FIN Win

Port Port
34278 80

A B

FIN_WAIT_1 ESTABLISHED

TCP:

z
:
2

Port Port
34278 80

Seq:q
A ACK:t+1 B
ACK Win
Wi

FIN_WAIT_1 CLOSE_WAIT


TCP:

z B

Port Port
34278 80

A B

FIN_WAIT_2 CLOSE_WAIT


TCP:

z : 3

Port Port
34278
80

Seq:p
A ACK:t+1 B
ACK,FIN Wi
Win

FIN_WAIT_2 LAST_ACK


TCP:

z
:
4
Seq:t+1
ACK:p+1
ACK Win
Port Port
34278 80

A B

TIME_WAIT LAST_ACK

TCP:

z Client
Cli t
2*MSL

CLOSED ( B
FIN))

Port Port
34278 80

A B

TIME_WAIT CLOSED

TCP:

2MSL = TIME_WAIT
z TCP active close,
ACK,
TIME_WAIT
(maximum segment
lifetime, MSL).
2MSL= 2 * Maximum Segment Lifetime
z ;

TCP client
li t


ACK. ( server timeout



FIN


FIN)
z MSL 2 min 1 min 30 sec.

TCP:

TIME_WAIT
active close passive close

application
close( ) CLOSE_WAIT

FIN_WAIT1
EOF to application

AST_ACK
K
FIN_WAIT2
timeout
AIT

ACK
TIME_WA

LA
2MSL
T


TCP:


z
((reset))


RST
z

RST;

server






, ..


z
RST .
RST

TCP:

TCP
:

- telnet, rlogin
- ftp, mail, http

TCP
.

:




:


TCP:
: Telnet

3.
2.
/

1
1.

Telnet client Telnet server




(..,
( T l t)
Telnet)
server. server
client.
, 3 :
1. Client Server:
2 Server Client:
2.

3. Client Server:

TCP:
: Telnet
4
character
z
:
ter
ACK of charac

te r
echo of charac

ACK of echoed character

z , character

ACK and echo


o f character


:

ACK of echoed character

z TCP

ACK
TCP:
telnet host
z :
char1

, ., ACK of char 1 + ech
o of char1

ACK + char2

ACK + echo of char


2

z

z

,
ACK

TCP:
Nagle
z

z :
,

,
MSS
z
:
,


TCP:
Nagle
z
byte
y

(
ACK)

A

ACK ACK ACK



TCP:
Nagle
z

.
.

MSS

z :
Stop & Wait
LAN, RTT ,

WAN, RTT ,


z ,

z


TCP:
z TCP
:

z

z :
,
z


TCP:
z TCP
:
NACK
ACK
z

z
window size
AckNo
(win)
32 bits 16 bits
z

,
, ,
, byte
y
AckNo, AckNo+1, , AckNo + win -1
z

z


TCP:








byte:


1 2 3 4 5 6 7 8 9 10 11

6,7,8.


TCP:

:
byte ( SeqNo = 6)
(AckNo = 5, Win=4):

1 2 3 4 5 6 7 8 9 10 11

Byte 6

1 2 3 4 5 6 7 8 9 10 11

AckNo = 5, Win = 4

1 2 3 4 5 6 7 8 9 10 11


TCP:

:




(AckNo = 5, Win=6):

1 2 3 4 5 6 7 8 9 10 11

AckNo = 5,
5 Win = 6

1 2 3 4 5 6 7 8 9 10 11

TCP
(
).

TCP:





(AckNo = 5, Win=3):

1 2 3 4 5 6 7 8 9 10 11

AckNo = 5, Win = 3

1 2 3 4 5 6 7 8 9 10 11


TCP:

:
Buffer
2K 0 4K
2K SEQ=0

ACK=2048, WIN=2048

2K
2K SEQ 2048
SEQ=2048

ACK=4096, WIN=0
2K
ACK=4096, WIN=2048

1K
1K SEQ=4096

You might also like