Bài giảng Mạng máy tính - Chapter 3: Transport Layer (Part II) - Hồ Phương Đắc

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581  
point-to-point:  
full duplex data:  
one sender, one receiver  
bi-directional data flow  
in same connection  
reliable, in-order byte  
steam:  
MSS: maximum segment  
size  
no “message boundaries”  
connection-oriented:  
pipelined:  
handshaking (exchange  
of control msgs) init’s  
sender, receiver state  
before data exchange  
TCP congestion and flow  
control set window size  
send & receive buffers  
flow controlled:  
application  
writes data  
application  
reads data  
sender will not  
socket  
door  
socket  
door  
TCP  
send buffer  
TCP  
receive buffer  
overwhelm receiver  
segment  
3: Transport Layer  
3b-1  
TCP segment structure  
32 bits  
URG: urgent data  
counting  
source port #  
sequence number  
acknowledgement number  
dest port #  
(generally not used)  
by bytes  
of data  
(not segments!)  
ACK: ACK #  
valid  
head not  
UAP  
RS rcvr window size  
F
PSH: push data now  
(generally not used)  
len used  
# bytes  
rcvr willing  
to accept  
checksum  
ptr urgent data  
RST, SYN, FIN:  
connection estab  
(setup, teardown  
commands)  
Options (variable length)  
application  
data  
(variable length)  
Internet  
checksum  
(as in UDP)  
3: Transport Layer  
3b-2  
TCP seq. #’s and ACKs  
Seq. #’s:  
Host B  
Host A  
byte stream  
User  
“number” of first  
types  
byte in segment’s  
‘C’  
host ACKs  
receipt of  
‘C’, echoes  
back ‘C’  
data  
ACKs:  
seq # of next byte  
expected from  
other side  
host ACKs  
receipt  
of echoed  
‘C’  
cumulative ACK  
Q: how receiver handles  
out-of-order segments  
A: TCP spec doesn’t  
say, - up to  
time  
simple telnet scenario  
implementor  
3: Transport Layer  
3b-3  
TCP: reliable data transfer  
event: data received  
from application above  
create, send segment  
simplified sender, assuming  
one way data transfer  
no flow, congestion control  
event: timer timeout for  
wait  
segment with seq # y  
for  
retransmit segment  
event  
event: ACK received,  
with ACK # y  
ACK processing  
3: Transport Layer  
3b-4  
00 sendbase = initial_sequence number  
01 nextseqnum = initial_sequence number  
02  
TCP:  
03 loop (forever) {  
reliable  
data  
04  
05  
06  
07  
08  
09  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
switch(event)  
event: data received from application above  
create TCP segment with sequence number nextseqnum  
start timer for segment nextseqnum  
pass segment to IP  
nextseqnum = nextseqnum + length(data)  
event: timer timeout for segment with sequence number y  
retransmit segment with sequence number y  
compue new timeout interval for segment y  
restart timer for sequence number y  
event: ACK received, with ACK field value of y  
if (y > sendbase) { /* cumulative ACK of all data up to y */  
cancel all timers for segments with sequence numbers < y  
sendbase = y  
transfer  
Simplified  
TCP  
sender  
}
else { /* a duplicate ACK for already ACKed segment */  
increment number of duplicate ACKs received for y  
if (number of duplicate ACKS received for y == 3) {  
/* TCP fast retransmit */  
resend segment with sequence number y  
restart timer for segment y  
}
} /* end of loop forever */  
3: Transport Layer  
3b-5  
TCP ACK generation [RFC 1122, RFC 2581]  
TCP Receiver action  
Event  
delayed ACK. Wait up to 500ms  
for next segment. If no next segment,  
send ACK  
in-order segment arrival,  
no gaps,  
everything else already ACKed  
immediately send single  
cumulative ACK  
in-order segment arrival,  
no gaps,  
one delayed ACK pending  
send duplicate ACK, indicating seq. #  
of next expected byte  
out-of-order segment arrival  
higher-than-expect seq. #  
gap detected  
immediate ACK if segment starts  
at lower end of gap  
arrival of segment that  
partially or completely fills gap  
3: Transport Layer  
3b-6  
TCP: retransmission scenarios  
Host A  
Host B  
Host A  
Host B  
X
loss  
time  
time  
premature timeout,  
cumulative ACKs  
lost ACK scenario  
3: Transport Layer  
3b-7  
TCP Flow Control  
receiver: explicitly  
informs sender of  
(dynamically changing)  
amount of free buffer  
space  
flow control  
sender won’t overrun  
receiver’s buffers by  
transmitting too much,  
too fast  
RcvWindow field in  
RcvBuffer= size or TCP Receive Buffer  
TCP segment  
sender: keeps the amount  
RcvWindow= amount of spare room in Buffer  
of transmitted,  
unACKed data less than  
most recently received  
RcvWindow  
receiver buffering  
3: Transport Layer  
3b-8  
TCP Round Trip Time and Timeout  
Q: how to estimate RTT?  
Q: how to set TCP  
timeout value?  
SampleRTT: measured time from  
segment transmission until ACK  
receipt  
longer than RTT  
note: RTT will vary  
ignore retransmissions,  
too short: premature  
cumulatively ACKed segments  
timeout  
SampleRTTwill vary, want  
unnecessary  
estimated RTT “smoother”  
retransmissions  
use several recent  
measurements, not just  
current SampleRTT  
too long: slow reaction  
to segment loss  
3: Transport Layer  
3b-9  
TCP Round Trip Time and Timeout  
EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT  
Exponential weighted moving average  
influence of given sample decreases exponentially fast  
typical value of x: 0.1  
Setting the timeout  
EstimtedRTTplus “safety margin”  
large variation in EstimatedRTT ->larger safety margin  
Timeout = EstimatedRTT + 4*Deviation  
Deviation = (1-x)*Deviation +  
x*|SampleRTT-EstimatedRTT|  
3: Transport Layer  
3b-10  
TCP Connection Management  
Recall: TCP sender, receiver Three way handshake:  
establish “connection”  
Step 1: client end system  
sends TCP SYN control  
segment to server  
before exchanging data  
segments  
initialize TCP variables:  
seq. #s  
specifies initial seq #  
buffers, flow control  
Step 2: server end system  
receives SYN, replies with  
SYNACK control segment  
info (e.g. RcvWindow)  
client: connection initiator  
Socket clientSocket = new  
Socket("hostname","port  
ACKs received SYN  
allocates buffers  
number");  
specifies server->  
server: contacted by client  
receiver initial seq. #  
Socket connectionSocket =  
welcomeSocket.accept();  
3: Transport Layer  
3b-11  
TCP Connection Management (cont.)  
client  
server  
Closing a connection:  
close  
client closes socket:  
clientSocket.close();  
Step 1: client end system  
sends TCP FIN control  
segment to server  
close  
Step 2: server receives  
FIN, replies with ACK.  
Closes connection, sends  
FIN.  
closed  
3: Transport Layer  
3b-12  
TCP Connection Management (cont.)  
client  
server  
Step 3: client receives FIN,  
replies with ACK.  
closing  
Enters “timed wait” -  
will respond with ACK  
to received FINs  
closing  
closed  
Step 4: server, receives  
ACK. Connection closed.  
Note: with small  
modification, can handly  
simultaneous FINs.  
closed  
3: Transport Layer  
3b-13  
TCP Connection Management (cont)  
TCP server  
lifecycle  
TCP client  
lifecycle  
3: Transport Layer  
3b-14  
Principles of Congestion Control  
Congestion:  
informally: “too many sources sending too much  
data too fast for network to handle”  
different from flow control!  
manifestations:  
lost packets (buffer overflow at routers)  
long delays (queueing in router buffers)  
a top-10 problem!  
3: Transport Layer  
3b-15  
Causes/costs of congestion: scenario 1  
two senders, two  
receivers  
one router,  
infinite buffers  
no retransmission  
large delays  
when congested  
maximum  
achievable  
throughput  
3: Transport Layer  
3b-16  
Causes/costs of congestion: scenario 2  
one router, finite buffers  
sender retransmission of lost packet  
3: Transport Layer  
3b-17  
Causes/costs of congestion: scenario 2  
=
lout  
always: lin  
(goodput)  
>
lin  
“perfect” retransmission only when loss:  
lout  
retransmission of delayed (not lost) packet makes  
larger  
lin  
lout  
(than perfect case) for same  
“costs” of congestion:  
more work (retrans) for given “goodput”  
unneeded retransmissions: link carries multiple copies of pkt  
3: Transport Layer  
3b-18  
Causes/costs of congestion: scenario 3  
four senders  
multihop paths  
timeout/retransmit  
Q: what happens aslin  
and increase ?  
lin  
3: Transport Layer  
3b-19  
Causes/costs of congestion: scenario 3  
Another “cost” of congestion:  
when packet dropped, any “upstream transmission  
capacity used for that packet was wasted!  
3: Transport Layer  
3b-20  
Tải về để xem bản đầy đủ
ppt 35 trang myanh 12060
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Mạng máy tính - Chapter 3: Transport Layer (Part II) - Hồ Phương Đắc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pptbai_giang_mang_may_tinh_chapter_3_transport_layer_part_ii_ho.ppt