Professional Documents
Culture Documents
03 KMiB-Transporten Sloj
03 KMiB-Transporten Sloj
ло
ги
во крајните системи
чк
• испраќач: ги дели
и
кр
ај
пораките од апликациски
-к
ра
слој во сегменти, и истите
јп
ре
ги праќа до мрежниот слој
но
с
• примач: ги составува
сегментите во пораки и ги application
transport
праќа до апликацискиот network
data link
слој physical
Ло
data link physical
ги
• контрола на проток physical
ч
network
ки
data link
• воспоставување на врска
кр
physical
ај
-к
ненадежна достава, вон network
ра
data link
јп
physical
редослед: UDP
ре
network
но
data link
• Без многу додатни
с
physical
network
• загарантирано доцнење
• загарантиран пропусен
опсег
Транспортен слој 3-5
Содржина
3.1 Услуги на 3.5 Конекциски пренос
транспортен слој на податоци: TCP
3.2 • структура на
Мултиплексирање сегмент
и • надежен пренос на
демултиплексира податоци
ње • контрола на проток
• управување со
3.3 Безконекциски конекција
пренос: UDP
3.6 Принципи на
3.4 Принципи на контрола на застој
надежен пренос
на податоци 3.7 TCP контрола на
Транспортен слој 3-6
Мултиплексирање/демултиплексирање
Мултиплексирање кај испраќачот:
Податоците се добиваат од повеќе Демултиплексирање кај примачот:
сокети (sockets), и се додава Се користи заглавието за
заглавие (подоцна се користи за примените сегменти да се пратат
демултиплексирање) до точниот сокет
application
application
application P4 P5 P6 application
P3 P2 P3
transport
transport transport
network
network link network
link physical link
physical сервер: IP physical
адреса B
length checksum
Зошто UDP?
нема воспоставување на
апликациски податоци врска (се намалува
(payload) доцнењето)
едноставен: нема состојба на
врска кај примачот и
испраќачот
мало заглавје
UDP формат на сегмент
нема контрола на застој:
UDP може да работи со
посакуваната брзина
преносот се 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
додава
збир 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
Испраќач Примач
испраќач примач
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
секв.бр.: 0, 1, 2, 3 0123012
X
Големина на pkt0 Ќе го прифати пакетот
со секв. бр. 0
прозорец=3 (a) Нема проблем
притиска
‘C’
Seq=42, ACK=79, data = ‘C’
хостот праќа ACK
за ‘C’, и истото ‘C’ го препраќа
Seq=43, ACK=80
350
300
250
RTT (milliseconds)
200
sampleRTT
150
EstimatedRTT
100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
време
time (seconnds)
Транспортен слој 3-55
(секунди)
SampleRTT Estimated RTT
TCP време на обиколка (RTT) и time-out
SendBase=92
Seq=92, 8 бајти Seq=92, 8 бајти
time-out
time-out
Seq=100, 20 бајти
ACK=100
X
ACK=100
ACK=120
SendBase=120
Seq=92, 8 бајти
Seq=100, 20 бајти
time-out
ACK=100
X
ACK=120
Seq=120, 15 бајти
кумулативен ACK
Транспортен слој 3-61
Креирање на ACK кај TCP [RFC 1122, RFC 2581]
настани кај примачот акции кај примачот
пристигнува редоследен сегмент одложен ACK. Чека до 500ms
со очекуван секв. бр. Сите за нареден сегмент. Ако нема сегмент
податоци до секв. бр. се потврдени праќа ACK
Seq=92, 8 бајти
Seq=100, 20 бајти
X
ACK=100
timeout
ACK=100
ACK=100
ACK=100
Seq=100, 20 бајти
application application
network network
CLOSED
R/2
delay
lout
AIMD пила:
испитување
на пропусната моќ
време
Транспортен слој 3-76
Детали за TCP контролата на застој
простор на секв.бр. кај испраќачот
cwnd TCP рата на
испраќање:
приближно:
последно последно
потврден испратен, сè испратен испрати cwnd број
бајт уште не
потврден
бајт
на бајти, чекај RTT
ограничување на преносот кај за ACK, потоа
испраќачот испрати уште
LastByteSent- < cwnd бајти ~ cwnd
LastByteAcked rate ~ RTT
bytes/sec
RTT
експоненцијално до два сегме
првата загуба: нт и
• иницијално cwnd = 1
MSS четири се
гменти
• двојно cwnd при
секој RTT
• т.е. cwnd++ при секој
примен ACK време
заклучок:
иницијалната рата е Транспортен слој 3-79
TCP: детекција и реакција при загуба
time-out како индикација за загуба:
• cwnd се враќа на 1 MSS;
• прозорецот повторно расте експоненцијално (slow
start) до одреден праг (ssthresh), по што расте
линеарно
3 дупликат ACK како индикација за загуба:
TCP RENO
• дупликат ACKs покажуваат дека мрежата може да
пренесе дел од сегментите
• cwnd се преполовува, по што расте линеарно
TCP Tahoe секогаш го поставува cwnd на 1
(при time-out или 3 дупликат ack) Транспортен слој 3-80
TCP: од slow start кон избегнување
на застој (Congestion Avoidance)
П: кога од
експоненцијално
зголемување треба
да се премине на
линеарно?
A: кога cwnd ќе
постигне
половина од
неговата вредност
пред time-out
имплементација:
променлив ssthresh
при загуба, ssthresh се поставува на 1/2 од cwnd
пред да настане загубата
Транспортен слој 3-81
Транспортен слој: сумарно
принципите врз кои се
засноваат услугите на следно:
транспортниот слој: го напуштаме
• мултиплексирање, работ на
демултиплексирање мрежата
• надежен пренос на (апликациски и
податоци (rdt)
транспортен
• контрола на проток
слој)
• контрола на застој
ќе го
Интернет протоколи проучуваме
• UDP мрежното јадро
• TCP • податочна
Транспортен слој 3-82