• Tidak ada hasil yang ditemukan

Factors affecting transport protocol design

N/A
N/A
Protected

Academic year: 2018

Membagikan "Factors affecting transport protocol design"

Copied!
68
0
0

Teks penuh

(1)

! "#

$ # % # ! & # ! #

!# # ' # ' &

( # #

) * ! + # # & ,

! "#

(2)

0

0 ' + 1

' '

' #

/

# / '

0 !

(3)

0

&

0 !+ ! *

# !2

# !2

' # !2

' # !2

'

, /

& &% '

# + # ! # # ! * #

(4)
(5)
(6)

+

'

4

!

5 %

#

(7)

&

6 - ' % & &%

% 7# % 8

' # ' ! * !

/etc/services

0 16 31

SrcPort DstPort

Checksum Length

Data

(8)
(9)

3' ' !

5

!

Application process

Write bytes

TCP Send buffer

Application process

Read bytes

TCP Receive buffer

0

0 !

+ *

'

'

+ *

'

! *

Send buffer

Segment Segment Segment

Transmit segments

Receive buffer

(10)

+

' &

, *

)

! *

#

# &

! *

# '

' #

' #

! *

' ' *

!

! *

(11)

&

#

+ '

=

+ *

1 ' !

# 9 <

; + # ' ! '

# '

+ # ' /

& &% # * * # ' !

(12)

0

SrcPort DstPort

SequenceNum

Acknowledgment

0 4 10 16 31

Options (variable)

Data Checksum

HdrLen 0 Flags

UrgPtr

AdvertisedWindow Acknowledgment

#

& &%

! #

#

(13)

0

&

# ! # ? +

(SrcPort, SrcIPAddr, DsrPort, DstIPAddr)

! ! : !

SequenceNum, acknowledgment, AdvertisedWinow

Data (SequenceNum)

0

SYN, FIN, RESET, ACK, URG (for urgent data), PUSH

# *

# : : #

Sender

Acknowledgment + AdvertisedWindow

(14)

#

Active participant (client)

Passive participant (server)

Three-way handshake:

(15)

event{/action}

CLOSED

LISTEN

Passive open Close

Send/SYN SYN/SYN + ACK

Close

Active open/SYN

4 9 <+

SYN_RCVD SYN_SENT

ESTABLISHED

CLOSE_WAIT

LAST_ACK CLOSING

TIME_WAIT FIN_WAIT_2

FIN_WAIT_1

Send/SYN SYN/SYN + ACK

SYN + ACK/ACK SYN/SYN + ACK

ACK

Close/FIN

FIN/ACK

Close/FIN

FIN/ACK

Timeout after two max. segment lifetimes

FIN/ACK

ACK ACK

ACK

Close/FIN

CLOSED

Open a connection

Close a connection

(16)

(

!

'

3 D

'

% '

0 !

6 D

#

*

!

!

!# ' # # '

+

/ # ! ! E

# ' ' ! ! / #

(17)

'

+

#

*

!

!

#

Sending application

LastByteWritten TCP

Receiving application

LastByteRead TCP

! LastByteAcked LastByteWritten

LastByteAcked

LastByteSent

LastByteSent

LastByteWritten

'

! LastByteRead LastByteRcvd

LastByteRead NextByteExpected NextByteExpected LastByteRcvd +1

LastByteSent

LastByteAcked NextByteExpected LastByteRcvd

(18)

'

3

)

#

6 SampleRTT # -) C

) C %

# #

! # '

EstimteRTT F α x EstimteRTT : G α x SampleRTT

!# α ! H&I H&J

EstRTT

(19)

! #

#

)

-; % # # ) C

# #

Sender Receiver Sender Receiver

Origina

l transm

ission

ACK

Retran

smission

Original transm

ission

ACK

Retran

smission

(20)

C

-

)

#

!#

#

'

) + * 1 ' !

) + * 1 ' !

! * # #

(21)

K

-C

)

#

# '

Diff F SampleRTT EstRTT

EstimateRTT = (1 - δδδδ) x EstimateRTT + δδδδ x SampleRTT Dev = (1 - δδδδ ) x Dev + δδδδ x |Diff|

!# δ ! H G

' !# '

' !# '

TimeOut F µ x EstRTT : φ x Dev

!# % % µ F G φ F ?

4

# * LHH

(22)

0 !

+

*

'

'

!2

# ' # # ' ! ! #

# # #

4

+

/ + MaxSendBuffer

(23)

0 !

&

' + ) ' ( !

LastByteRcvd LastByteRead 7 F MaxRcvBuffer

AdvertisedWindow F MaxRcvBuffer NextByteExpected

NextByteRead

LastByteSent LastByteAcked 7F AdvertisedWindow

EffectiveWindow F AdvertisedWindow LastByteSent

LastByteAcked

LastByteWritten LastByteAcked 7F MaxSendBuffer

; ! % LastByteWritten

(24)

0 !

&

=+ # ! # * ! # ) ' ( !

H ' H / ) ' ( !2

; % ' ! ) C '

) C '

) C '

* # 9 - ' < % #

! # G '

' ) C

) # # # #

* ! # # - ) ' ( ! #

(25)

#

! M

!

# &

* '

# #

# #

9 ' * <

(26)

(

!

(#

'

!

! & &%

'

/

2

# #

& &% ! '

(27)

'

)

'

/

!

!% !

1

/

6

* ! 9 '

<

# + # ! !

(28)

# + 4 > )

#

! 2

+ # '

# + ! * /

+ ' & *

(# (#

! !

# *>

) C '

4 + ' ' * +

(29)

)

(

)

OA 1 4 % GP ) ' ( !

4 ! # # ! ! #

# +

6 & , 6 , % & &% GAH

6 & , 6 , % & &% GAH

# % ! * # 1 ! ! # 6 ,

(30)

OA

1

!

5 ! # ( )

G G&L 6 P&? #

# GH 6 LQ

O ?L 6 GO

0 ; GHH 6 P

O GLL 6 ?

GA PAA 6 LL

A? G&A R AI

@ 6 * > ! * !# 7 GLL6 % !

1 # ! * 5(

(31)

C

#

0

) ' ( ! # # * #

=+ # GP ) ' ( ! # >

(32)

1

!

!

/

GHH

5 ! # 5 ! #

G G&L 6 GIC5

# GH 6 GAAC5

O ?L 6 L?JC5

O ?L 6 L?JC5

0 ; GHH 6 G&A65

O GLL 6 G&I65

GA PAA 6 Q&?65

A? G&A R G?&I65

@ GP ) ' ( ! & ! ! / P?C5

@ # # ' O #

(33)

; # # # 1

0 % *! #

#

* # # ) C

1 ! # OA

! 1 )(

! % 43

# 1

GP ) ' ( !

(34)

)

'

#

+

)H+ 4

,;)5,

!# D

!# D

(35)

)

'

#

&

)G+ !#

!

2

! 1 /

E #

E #

! # ' /

1

& &%

(36)

)

'

#

&

)A+ !#

! 2

# # ' D

# 1

! # !

! # !

!

! ! *

! * '

(37)

)

'

#

&

)O+ !#

!

2

+ # ! # # *

! ! 2

! ! 2

( ! ' & ! 2

' # 1 & &%

(38)

)

'

#

&

)?+ (#

9 1

-<2

1 - ! ! # %

E ! E ! !

# ' # M !

1

(39)
(40)

Client Server

Request Blocked

Reply

Computing

Blocked Blocked

(41)

(#

#

2

# # ' #

& &%

!

#

'

!

#

'

(42)

-#

Caller (client)

Client stub

RPC protocol

Return value Arguments

Reply Request

Callee (server)

Server stub

RPC protocol

Return value Arguments

Reply Request

(

9

* <

5,)

# / 1 )4

(43)

5 *

5,)

0 M ) 6 )),

;

* )), ; % '

# !# *

Sender Receiver

Fragment 1 Fragment 2 Fragment 3

Fragmen Fragment 4

# !# *

Fragment 5

Fragment 6

Fragment 3 Fragment 5

(44)

5,)

+

*

% 34

' ' 1 %

34 34

34 % E

R ' #

' * !

; ' * 9 # ' ' <

(45)
(46)

ProtNum

MID

Length

NumFrags Type

0 16 31

5,)

0

6; ; + !

U F ) ) 4 0 +

Data

NumFrags Type

FragMask

(47)

5,)

0 % '

'

4 ! ! ! * ! !

3 ' 9 < # E

!

4 ' %

(48)

1

-

)4

Client Server

Request

ACK

Reply ACK

Client Server

Request 1

Request 2

(49)

)4

,

1

%

%

) C

)4 6;

6; #

6 # #

6 # #

5; #

!

'

9 ' < %

' 9;> ' <

(

(50)

)4

0

Type

MID

BID

CID

0 16 31

# ;

5 ;

Data BID

Length

(51)

#

,

#

#

Caller (client)

SELECT call

call

Callee (server)

SELECT upcall

upcall

;

)4

)

+ 1 #

# # + :

CHAN CHAN

deliver send

(52)

#

(53)

*

SELECT

CHAN

BLAST

(54)

> 4 ! * 0 40

E ; 0 *

;

; 5,) 1 '

'

)4 1 '

& &%

: , 1 '

#

# ! #

IP

ETH SunRPC

(55)

0

V;

)4> 6;

'

V;

'

Data MsgType =CALL

XID

RPCVersion = 2 (a)

Program

Version

MsgType = REPLY XID

Status = ACCEPTED (b)

Data Procedure

Credentials (variable)

(56)

; # # '

; ' # 3 5) 3 D

1 5 * ) # 36R

% ! '

# + ' - %

#

(57)

#

(58)

* 5,)

!# #

'

%

1

/ /

'

& &%

P?C

' ! ! / !

#

(59)

0

! #

' M

'

*

Client Server

19

Fack

24

FragmentNum = 20

WindowSize = 10

SelAckLen = 1

SelAck[1] = 0x36 110100

6 + 20 5 + 20 3 + 20

' *+ ; '

(60)

=+ # !

2

(61)
(62)

+ / ' % ' % &

! # GJIG

(# 2

(# 2

+ % D

+ D

(63)

1

& &% !-

&

#

#

'

E

#

/

& &%

M

'

*

'

#

#

(64)
(65)
(66)

-1 ! *

'

GHHS

' & !

! "# % ) # ) % U # % 6 # R %

5 ' ( 4 ! * ) 6 6 >HL

(67)

0

#

; ;% % 0 QJO% & GJIG

)& 5 % 5& 4 % ; %

(68)

)

X #

L

Y?

Referensi

Dokumen terkait