版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter3:TransportLayer
Ourgoalsgoals:Overview:
runderstandprinciplesrtransportlayerservices
behindtransportlayerrmultiplexing/demultiplexing
services:
rconnectionlesstransport:UDP
HAmultiplexing/demultiplex
rprinciplesofreliabledata
ing
transfer
HAreliabledatatransfer
rconnection-orientedtransport:
侬flowcontrol
TCP
2congestioncontrol
mreliabletransfer
rinstantiationand
mflowcontrol
implementationinthe
Internetmconnectionmanagement
rprinciplesofcongestioncontrol
rTCPcongestioncontrol
3:TransportLayer3-1
Transportservices
Jication
datam
rprovidelogicalcommunicationphysic<
betweenapp'processes
runningondifferenthosts
mRelyonnetworklayer
rProvidemultiplexing/de
multiplexingservices
rReliabilitycontrolication
networl
加Errorcheckingdatalink
physical
HARetansmittingthelostsegments
3:TransportLayer3-2
Transport-layerprotocolsCTCP.UDP)
Internettransportservices:
rreliable,in-orderunicast
delivery(TCP)
mcongestioncontrol
mflowcontrol
mconnectionmanagement
,,
runreliableC'best-effort)/
unorderedunicastor
multicastdelivery:UDP
rBothuseerrorchecking
includedintheirheaders
rservicesnotavailable:
mreal-time
mbandwidthguarantees
mreliablemulticast
3:TransportLayer3-3
Multiplexing/demultiplexing
segment-unitofdata
Demultiplexing:delivering
exchangedbetween
receivedsegmentsto
transportlayerentitiescorrectapplayerprocesses
KATPDU:transport
protocoldataunit
receiver
3:TransportLayer3-4
Multiplexing/demultiplexing
-Multiplexing:------------------------------
gatheringdatafrommultiple<-------------32bits----------------►
appprocesses,enveloping
datawithheadertocreatesourceport#destport#
segmentsandpassingthesegments
toIPlayerotherheaderfields
multiplexing/demultiplexing:
rbasedonsender,receiverportapplication
numbers,IPaddressesdata
msource,destinationport#sin(message)
eachsegment
KArecall:well-knownportnumbers
forspecificapplicationsTCP/UDPsegmentformat
(http:80zf+p21,telnet23)
3:TransportLayer3-5
Multiplexing/demultiplexing:examples
Differentprocessesusedifferentsourceportinaclient
Webclient
hostC
sourceport:x
hostAdest.port:23
SourceIP:CSourceIP:C
.sourceport:23DestIP:BbestIP:B
destport:xsourceport:ysourceport:x
dest.port:80dest.port:80
portuse:simpletelnetapp
5QU"2IP:A
DestIP:BWeb
Webclientsourceport:xserverB
hostA
portuse:Webserver
3:TransportLayer3-6
UDPmu什iplexing/damultiplexing
rPortnumber:1024^65535
rTypically,portnumberofclientapplicationmaybe
assignedautomatically;serverportnumberis
specified
3:TransportLayer3-7
TCPmultiplexing/demultiplexing
rFour-tupleneeded
恒sourceIPaddr,destinationipaddr.
SourcePortnumber,destinationportnumber
rEveryclientapplicationwithportnumberdirectstoasocket
onserver
3:TransportLayer3-8
UDP:UserDatagramProtocol[RFC7681
r''nofrills/1''barebones"Internettransport
protocol
mMultiplexing/demultimplexing
mError-checking
MTheapplicationisalmostdirectlytalkingwithIP
r''besteffort1'service,UbPsegmentsmaybe:
mloSt
^deliveredoutofordertoapp
rconnectionless:
mnohandshakingbetweenUbPsender,receiver
n^eachUbPsegmenthandledindependentlyof
others
3:TransportLayer3-9
UDPApplications
FeaturesofUbPTypicallyapplications
rsimple:noconnectionstateRemotefileserver(NFS)
atsender,receiverStreamingmultimedia
mNobuffers.noccparameters
Internettelephony
恒Nosn,noacknumber
Networkmanagement
rsmallsegmentheader(8
Bytes)Routingprotocol(RIP)
rFast:nocontrols:Nametranslation(bNS)
mUbPcanblastawayasfastasMulticasting
desired,besteffort
Real-timeinvolved
rnoconnectionestablishmentapps(RTP)
TFTP
3:TransportLayer3-10
UDPsegmerrTstructure(RFC768)
r8bytes<-------------32bits----------------►
header
Length,insourceport#destport#
SourceportbytesofUDPj**lengthchecksum
segment,
^Destinationincluding
portheader
mLength
Application
mchecksumdata
rDatafield(message)
UDPsegmentformat
3:TransportLayer3-11
UDPchecksum
Goal:detect''errors”(e.g.,flippedbits)intransmitted
segment
Receiver:
Sender:rcomputechecksumof
receivedsegment
rtreatsegmentcontents
assequenceof16-bitrcheckifcomputedchecksum
integersequalschecksumfieldvalue:
rchecksum:addition(l'smANO-errordetected
complementsum)of恒YES-noerrordetected
segmentcontentsmBut,doesnotcorrectit
rNegatingBit
rsenderputschecksum
valueintoUDPchecksum
field
3:TransportLayer3-12
Exampleforchecksum
rSender:rReceiver:
加316-b汁words:MEallwordsandchecksum:
作0110011001100110
恒+0101010101010101rn0110011001100110
〃0000111100001111加+0101010101010101
rn0000111100001111
馆11001010110010103001101010011010(
恒OG玲1:m1111111111111111
rn0011010100110101
rIfthesum<>alllzmeans
HAputthisvalueintoatleastanerroroccurs
checksumfield
3:TransportLayer3-13
PrinciplesofReliabledatatransfer
rMaybeimplementedinapp.,transport,linklayers
rcharacteristicsofunreliablechannelwilldetermine
complexityofreliabledatatransferprotocol(rdt)
u
o
_
-
o
ounreliabledatatransferprotocol(udt)
=sending]
doreceiver
dprocessIQroce8I
o|data||data|
IrdJsend()
J)relioblechannel)eliverdata()
O行
dreliabledata
s>reliabledata
uotransferprotocoltransferprotocol
o(sendingside)(receivingside)
占
udtsend()fIpacket|
|pack。"Jkrdtrcv()
nrelioblechonnel)」
(a)providedservice(b)serviceimplementation
3:TransportLayer3-14
Buildingreliabledatatransferprotocol
deliverjdata():calledby
rdttodeliverdatatoupper
|datal^deliverdata()
reliabledatareceiving
transferprotocol
[receivingside)side
3:TransportLayer3-15
Buildingreliabledatatransferprotocol
Wewillspecifytherdtfromsimplenessto
complexity
rincrementallydevelopsender,receiversidesof
reliabledatatransferprotocol(rdt)
rconsideronlyunidirectionaldatatransfer
mbutcontrolinfowillflowonbothdirections!
usefinitestatemachines(FSM)tospecify
av-ntcausingstatdtransition
sender,receiveractionstakenonstatetransition
state:wheninthis
"state"nextstate
uniquelydetermined
bynextevent
3:TransportLayer3-16
Rdtl.O:reliabletransferoverareliablechannel
underlyingchannelperfectlyreliable
mnobiterrors
mnolossofpackets
separateFSAAsforsender,receiver:
Msendersendsdataintounderlyingchannel
mreceiverreaddatafromunderlyingchannel
UnidirectionalchanneLnofeedbackisneeded
'VWaitfor^\rdt_send(data)'VWaitforVXrdt_rcv(packet)
(callfrom))_(callfrom)jextract(packet,data)
abovepacket=makepkt(data)belowdeliver_data(data)
udt_send(packe^
senderreceiver
3:TransportLayer3-17
Rdt2.0:channelwithbiterrors
runderlyingchannelmayflipbitsinpacket
出Candetectbutcannotcorrect:checksum
rthequestion:howtorecoverfromerrors:
恒acknowledgements(ACKs):receiverexplic汁lytellssender
thatpktreceivedOK
negativeacknowledgements(NAKs):receiverexplic汁ly
tellssenderthatpkthaderrors
加senderretransmitspktonreceiptofNAK
加1b汁longdatamaybesufficientsforNAKand1forACK
rnewmechanismsinrdt2・0:
加errordetection
mreceiverfeedback:controlmsgs(ACK,NAK)rcvr->sender
出Retransmission
ThisistheknownARQ-automaticRepeatrequest!
3:TransportLayer3-18
rdt2,Q:FSAAspecification
rdtsend(data)
sndpkt=make_pkt(data,checksum)receiver
udt_send(sndpkt)
rdt_rcv(rcvpkt)&&
isNAK(rcvpkt)
rdt_rcv(rcvpkt)&&
udt_send(sndpk^corrupt(rcvpkt)
udt_send(NAK)
rdtrcv(rcvpkt)&&isACK(rcvpkt)
A
udt_re-send(sndpk5
sender
rdt_rcv(rcvpkt)&&
notcorrupt(rcvpkt)
extract(revpkt,data)
deliver_data(data)
udt_send(ACK)
3:TransportLayer3-19
rdt2.0:operationwithnoerrors
rdt_rcv(rcvpkt)&&
corrupt(rcvpkt)
udt_send(NAK)
&rdtrcv(rcvpkp&&
notcorrupt(rcvpkt)
extract(revpkt,data)
deliver_data(data)
udtsend(ACK)
3:TransportLayer3-20
rdt2.0:errorscenario
rdtsend(data)
snkpkt=make_pkt(data,checksum)
udtsend(sndpkl)
is
WaitforWaitforrdt_rcv(rcvp峪)&&
cafromACKorudt_send(sndpk^corrupt(rcvpkt)
aboveNAK
udtsend(NAK)
rdt_rcv(rcvpkt)&&isACK(rcvpkt)
Waitfor
Acafrom
beow
rdtrcv(rcvpk,&&
notcorrupt(rcvpkt)
extract(revpkt,data)
deliver_data(data)
udtsend(ACK)
3:TransportLayer3-21
rdt2.0hasafatalflaw!
Whathappensif
ACK/NAKcorrupted?Handlingduplicates:
rsenderdoesn'tknowwhatrsenderaddssequence
happenedatreceiver!numbertoeachpkt
rcan'tjustretransmit:rsenderretransmitscurrent
possibleduplicatepktifACK/NAKgarbled
rreceiverdiscards(doesrit
Whattodo?deliverup)duplicatepkt
rsenderACKs/NAKs
receiversACK/NAK?WhatThisisrd+2.1
ifsenderACK/NAKlost?一stopandwait-------------------
rretransmit,butthismightSendersendsonepacket,
causeretransmissionofthenwa汁sforreceiver
correctlyreceivedpkt!response
rErrorcorrectionforbit
error
3:TransportLayer3-22
rdt2.1:sender,handlesgarbledACK/NAKs
rdt_send(data)
sndpkt=make_pkt(0,data,checksum)
)
udt_send(sndpktrdt_rcv(rcvpkt)&&
(corrupt(rcvpkt)||
WaitforWaitforisNAK(rcvpkt))
ACKor
call0fron
NAKOudt_send(sndpkt)
<above/
rdt_rcv(rcvpkt)
&¬corrupt(rcvpkl)rdt_rcv(rcvpkt)
&&isACK(rcvpkt)&¬corrupt(rcvpkt)
&&isACK(rcvpkt)
A
A
WaitforWaitfor
ACKorca1from
rdt_rcv(rcvpkt)&&NAK1bove
(corrupt(rcvpkt)
isNAK(rcvpkt))rdt_send(data)
udt_send(sndpkt)sndpkt=make_pkt(1,data,checksum)
udt_send(sndpk^
3:TransportLayer3-23
rdt2.1:receiver,handlesgarbledACK/NAKs
rdt_rcv(rcvpk1)&¬corrupt(rcvpkl)
&&hasseqO(scvpkt)
rdt_rcv(rcvpkt)&&extract(rcvpkt,data)
corrupt(rcvpkt)
deliverdata(data)/,..oo
sndpkt=makepktO(ACK,chksum)r-「cv(r:vp)
sndpkt=make_pktO(NAK,chksumgnd(snd血c°:「upt(「cvpkt)
udt_send(sndpk^
sndpkt=make_pkt1(NAK,chksum)
udt_send(sndpk^
rdt_rcv(rcvpkt)&&
notcorrupt(rcvpk^&&rdt_rcv(rcvpkt)&&
hasseql(rcvpkt)notcorrupt(rcvpkt)&&
hasseqO(rcvpkt)
sndpkt=make_pkt1(ACK,chksum)
udt_send(sndpk1)sndpkt=make_pktO(ACK,chksum)
udt_send(sndpk^
rdt_rcv(rcvpk^&¬corrupt(rcvpkt)
&&hasseql(rcvpkt)
Discardduplication!
Discardduplication!extract(rcvpkt,dat^
deliver_data(data)
sndpkt=make_pkt1(ACK,chksum)_
udt_send(sndpkt)3:TransportLayer3-24
rdt2.1:discussion
Sender:Receiver:
rseq#addedtopktrmustcheckifreceived
rtwoseq.#'s(0,1)willpacketisduplicate
suffice.Why?恒stateindicateswhether
0or1isexpectedpkt
rmustcheckifreceivedseq#
ACK/NAKcorrupted
rnote:receivercannot
rtwiceasmanystatesknowifitslast
0
恒statemust''rememberACK/NAKreceivedOK
whether"current"pkt
has0or1seq.#atsender
3:TransportLayer3-25
rdt2.2:aNAK-freeprotocol
rsamefunctionalityasrd+2.1,using
ACKsonly
rinsteadofNAKZreceiversendsACK
forlastpktreceivedOK
•receivermustexplicitlyincludeseq#of
pktbeingACKed
rduplicateACKatsenderresultsinsame
actionasNAK:retransmitcurrentpkt
3:TransportLayer3-26
rd+2.2:sender
rdt_send(data)
sndpkt=make_pkt(0,data,checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt)&&
(corrupt(rcvpk。||
5Waitfor
WaitforisACKfrcvpktJ))
call0fromACK
above>0udt_send(sndpk1)
senderFSM
rdt_rcv(rcvpkt)rdt_rcv(rcvpkt)
&¬corrupt(rcvpk^&¬corrupt(rcvpk^
&&JsACK(ircypkt/1)&&isACK(rcvpkt,O)
A
WaitforA
Waitfor
ca1from
rdt_rcv(rcvpkt)&&ACK
above
(corrupt(rcvpkt)||
isACK(rcvpkt,O))rdtsend(data)
udt_send(sndpkt)sndpkt=make_pkt(1,data,checksum)
udt_send(sndpkt)
3:TransportLayer3-27
rdt2.2:receiver
rdt_rcv(rcvpkt)&¬corrupt(rcvpk^
&&hasseqO(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)rdt_rcv(rcvpkt)&&
rdt_rcv(rcvpkt)&&sndpkT=make_pkt(ACKO,chksum)corrupt(rcvpkt)
notcorrupt(rcvpkt)&&udt_send(sndpk^udt_send(sndpk^
hasseql(rcvpkt)WaitforO
Waitfor
udt_send(sndpk^receiverFSM1fromrdt_rcv(rcvpkt)&&
0from<below/_)notcorrupt(rcvpkl)&&
beowhas_seqO(rcvpkt)
rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)的
rdt_rcv(rcvpkt)&&&&hasseq1(rcvpkt)udt_send(sndpkt)
corrupt(rcvpkt)
udt_send(sndpk^extract(rcvpkt,data)
deliver_data(data)
sndpkt=make_pkt(ACK1,chksum)
udt_send(sndpk。
3:TransportLayer3-28
rdt3.0:channelswitherrorsandloss
Nawassumption:Approach:senderwaits
underlyingchannelcan“reasonable"amountof
alsolosepackets(datatimeforACK
orACKs)rretransmitsifnoACK
kwchecksum,seq.#,ACKs,receivedinthistime
retransmissionswillberifpkt(orACK)isjustdelayed
ofhelp,butnotenough(notlost):
Q:howtodealwithloss?HAretransmissionwillbe
duplicate,butuseofseq.
Msenderwa汁suntil
#'salreadyhandlesthis
certaindataorACK
lost,thenretransmits加receivermustspecifyseq
#ofpktbeingACKed
恒Howlongtimeis
needed?rrequirescountdowntimer
3:TransportLayer3-29
rdt3.0sender
rdt_send(data)
rdt_rcv(rcvpkt)&&
Ack(rcvpkt,1)
卜sndpkt=make_pkt(0,data,checksum)(corrupt(rcvpkt)||
\udt_send(sndpkt)isACK(rcvpkt,1))
rdtrcv(rcvpkt)start_timerA
AWait
Waitfortimeout
callOfromfor
udt_send(sndpkt)
<aboveyACKO
start_timer
rdt_rcv(rcvpkt)
&¬corrupt(rcvpkt)rdt_rcv(rcvpkt)
&&isACK(rcvpkt,1)&¬corrupt(rcvpkt)
stop_timer&&isACK(rcvpktQ)
stop_timer
WaitWaitfor
timeoutforca1from
udt_send(sndpkt)CLACK1above
start_timerrdtrcv(rcvpkt)
rdt_send(data)A
rdt_rcv(rcvpkt)&&
(corrupt(rcvpkt)||sndpkt=make_pkt(1,data,checksum)
isACK(rcvpkt,O))udt_send(sndpkt)Ack(rcvpkt,O)
starttimer
A
3:TransportLayer3-30
Rdt3.0receiver
rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)
&&has_seqO(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt=make_pkt(ACKO,chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt)&&rdt_rcv(rcvpkt)&&
(corrupt(rcvpkt)||(corrupt(rcvpkt)||
WaitforhasseqO(rcvpkt))
waitfo、receiverFSM
0from1from
udt_send(sndpkt)below.belowyudt_send(sndpkt)
rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)
&&hasseq1(rcvpkt)
extract(rcvpkt,dat^
deliver_data(data)
sndpkt=make_pkt(ACK1ychksum)
udt_send(sndpk^3:TransportLayer3-31
rdt3.0inaction
senderreceiver
sendpktO
revpktO
sendACKO
revACKO
sendpktl
(a)operationwithnoloss
(b)lostpacket
3:TransportLayer3-32
rdt3.0inaction
(c)lostACK
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理质量风险评估
- 2025年家庭影院布线方案
- 护理员清洁消毒技能
- 护理课件曲线图:感染控制措施有效性分析
- 火工品检测工岗前实操知识实践考核试卷含答案
- 2026年新科教版高中高一生物上册第三单元物质运输方式综合卷含答案
- 注水泵工安全宣传模拟考核试卷含答案
- 2026年新科教版高中高二物理上册第一单元电场综合计算大题卷含答案
- 供排水泵站运行工岗前基础验收考核试卷含答案
- 调香师变革管理测试考核试卷含答案
- 盆底康复中心运营管理
- 新疆乌鲁木齐天山区2026届中考历史全真模拟试卷含解析
- 2026年乡村医生培训考试试卷及答案(共十九套)
- 2026年湖北省武汉市辅警协警笔试真题及答案
- GB/T 47417-2026蜂蜜中水不溶物的测定
- 美国铁塔分析计算程序TOWER中文操作手册
- 煤矿爆破工培训课件
- 北京市药品零售企业药店药房名单目录
- 口腔功能性矫正器课件
- 2022年江苏省苏豪控股集团有限公司招聘笔试题库及答案解析
- 汽车覆盖件冲压成型ppt课件
评论
0/150
提交评论