版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TransportLayer3-1Chapter3:TransportLayerOurgoals:
understandprinciplesbehindtransportlayerservices:multiplexing/demultiplexingreliabledatatransferflowcontrolcongestioncontrollearnabouttransportlayerprotocolsintheInternet:UDP:connectionlesstransportTCP:connection-orientedtransportTCPcongestioncontrolTransportLayer3-2Chapter3outline3.1Transport-layerservices3.2Multiplexinganddemultiplexing3.3Connectionlesstransport:UDP3.4Principlesofreliabledatatransfer3.5Connection-orientedtransport:TCPsegmentstructurereliabledatatransferflowcontrolconnectionmanagement3.6Principlesofcongestioncontrol3.7TCPcongestioncontrolTransportLayer3-3Transportservicesandprotocolsprovidelogicalcommunicationbetweenappprocessesrunningondifferenthoststransportprotocolsruninendsystemssendside:breaksappmessagesintosegments,passestonetworklayerrcvside:reassemblessegmentsintomessages,passestoapplayermorethanonetransportprotocolavailabletoappsInternet:TCPandUDPapplicationtransportnetworkdatalinkphysicalapplicationtransportnetworkdatalinkphysicallogicalend-endtransportTransportLayer3-4Transportvs.networklayernetworklayer:logicalcommunicationbetweenhoststransportlayer:logicalcommunicationbetweenprocessesrelieson,enhances,networklayerservicesHouseholdanalogy:12kidssendinglettersto12kidsprocesses=kidsappmessages=lettersinenvelopeshosts=housestransportprotocol=AnnandBillnetwork-layerprotocol=postalserviceTransportLayer3-5Internettransport-layerprotocolsreliable,in-orderdelivery(TCP)congestioncontrolflowcontrolconnectionsetupunreliable,unordereddelivery:UDPno-frillsextensionof“best-effort”IPservicesnotavailable:delayguaranteesbandwidthguaranteesapplicationtransportnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalapplicationtransportnetworkdatalinkphysicallogicalend-endtransport54321hostAhostBprocessprocessrouter1router2AP1LAN2WANAP2AP3AP4IP层LAN1AP1AP2AP4Port/socket54321IPTCP,
UDPAP3Port/socketTransportLayer3-7Chapter3outline3.1Transport-layerservices3.2Multiplexinganddemultiplexing3.3Connectionlesstransport:UDP3.4Principlesofreliabledatatransfer3.5Connection-orientedtransport:TCPsegmentstructurereliabledatatransferflowcontrolconnectionmanagement3.6Principlesofcongestioncontrol3.7TCPcongestioncontrolTransportLayer3-8Multiplexing/demultiplexingapplicationtransportnetworklinkphysicalP1applicationtransportnetworklinkphysicalapplicationtransportnetworklinkphysicalP2P3P4P1host1host2host3=process=socketdeliveringreceivedsegmentstocorrectsocketDemultiplexingatrcvhost:gatheringdatafrommultiplesockets,envelopingdatawithheader(laterusedfordemultiplexing)Multiplexingatsendhost:TransportLayer3-9HowdemultiplexingworkshostreceivesIPdatagramseachdatagramhassourceIPaddress,destinationIPaddresseachdatagramcarries1transport-layersegmenteachsegmenthassource,destinationportnumberhostusesIPaddresses&portnumberstodirectsegmenttoappropriatesocketsourceport#destport#32bitsapplicationdata(message)otherheaderfieldsTCP/UDPsegmentformatTransportLayer3-10ConnectionlessdemultiplexingCreatesocketswithportnumbers:DatagramSocketmySocket1=newDatagramSocket(12534);DatagramSocketmySocket2=newDatagramSocket(12535);UDPsocketidentifiedbytwo-tuple:(destIPaddress,destportnumber)WhenhostreceivesUDPsegment:checksdestinationportnumberinsegmentdirectsUDPsegmenttosocketwiththatportnumberIPdatagramswithdifferentsourceIPaddressesand/orsourceportnumbersdirectedtosamesocketTransportLayer3-11Connectionlessdemux(cont)DatagramSocketserverSocket=newDatagramSocket(6428);ClientIP:BP2clientIP:AP1P1P3serverIP:CSP:6428DP:9157SP:9157DP:6428SP:6428DP:5775SP:5775DP:6428SPprovides“returnaddress”TransportLayer3-12Connection-orienteddemuxTCPsocketidentifiedby4-tuple:sourceIPaddresssourceportnumberdestIPaddressdestportnumberrecvhostusesallfourvaluestodirectsegmenttoappropriatesocketServerhostmaysupportmanysimultaneousTCPsockets:eachsocketidentifiedbyitsown4-tupleWebservershavedifferentsocketsforeachconnectingclientnon-persistentHTTPwillhavedifferentsocketforeachrequestTransportLayer3-13Connection-orienteddemux(cont)ClientIP:BP1clientIP:AP1P2P4serverIP:CSP:9157DP:80SP:9157DP:80P5P6P3D-IP:CS-IP:AD-IP:CS-IP:BSP:5775DP:80D-IP:CS-IP:BTransportLayer3-14Connection-orienteddemux:ThreadedWebServerClientIP:BP1clientIP:AP1P2serverIP:CSP:9157DP:80SP:9157DP:80P4P3D-IP:CS-IP:AD-IP:CS-IP:BSP:5775DP:80D-IP:CS-IP:BTransportLayer3-15Chapter3outline3.1Transport-layerservices3.2Multiplexinganddemultiplexing3.3Connectionlesstransport:UDP3.4Principlesofreliabledatatransfer3.5Connection-orientedtransport:TCPsegmentstructurereliabledatatransferflowcontrolconnectionmanagement3.6Principlesofcongestioncontrol3.7TCPcongestioncontrolTransportLayer3-16UDP:UserDatagramProtocol[RFC768]“nofrills,”“barebones”Internettransportprotocol“besteffort”service,UDPsegmentsmaybe:lostdeliveredoutofordertoappconnectionless:nohandshakingbetweenUDPsender,receivereachUDPsegmenthandledindependentlyofothersWhyisthereaUDP?noconnectionestablishment(whichcanadddelay)simple:noconnectionstateatsender,receiversmallsegmentheadernocongestioncontrol:UDPcanblastawayasfastasdesiredTransportLayer3-17UDP:moreoftenusedforstreamingmultimediaappslosstolerantratesensitiveotherUDPusesDNSSNMPreliabletransferoverUDP:addreliabilityatapplicationlayerapplication-specificerrorrecovery!sourceport#destport#32bitsApplicationdata(message)UDPsegmentformatlengthchecksumLength,inbytesofUDPsegment,includingheaderTransportLayer3-18UDPchecksumSender:treatsegmentcontentsassequenceof16-bitintegerschecksum:addition(1’scomplementsum)ofsegmentcontentssenderputschecksumvalueintoUDPchecksumfieldReceiver:computechecksumofreceivedsegmentcheckifcomputedchecksumequalschecksumfieldvalue:NO-errordetectedYES-noerrordetected.….Goal:detect“errors”(e.g.,flippedbits)intransmittedsegmentTransportLayer3-19InternetChecksumExampleNoteWhenaddingnumbers,acarryoutfromthemostsignificantbitneedstobeaddedtotheresultExample:addtwo16-bitintegers1111001100110011011101010101010101110111011101110111101110111011110010100010001000011wraparoundsumchecksumPseudohead
SportDportlengthchecksumdataIPheadUDPlengthSourceIPDestinationIP017IPbyte44112122222dataheadUDPsegment:Checksum:UDPsegment+pseudoheadTransportLayer3-21Chapter3outline3.1Transport-layerservices3.2Multiplexinganddemultiplexing3.3Connectionlesstransport:UDP3.4Principlesofreliabledatatransfer3.5Connection-orientedtransport:TCPsegmentstructurereliabledatatransferflowcontrolconnectionmanagement3.6Principlesofcongestioncontrol3.7TCPcongestioncontrolTransportLayer3-22PrinciplesofReliabledatatransferimportantinapp.,transport,linklayerstop-10listofimportantnetworkingtopics!characteristicsofunreliablechannelwilldeterminecomplexityofreliabledatatransferprotocol(rdt)TransportLayer3-23PrinciplesofReliabledatatransferimportantinapp.,transport,linklayerstop-10listofimportantnetworkingtopics!characteristicsofunreliablechannelwilldeterminecomplexityofreliabledatatransferprotocol(rdt)TransportLayer3-24PrinciplesofReliabledatatransferimportantinapp.,transport,linklayerstop-10listofimportantnetworkingtopics!characteristicsofunreliablechannelwilldeterminecomplexityofreliabledatatransferprotocol(rdt)TransportLayer3-25Reliabledatatransfer:gettingstartedsendsidereceivesiderdt_send():
calledfromabove,(e.g.,byapp.).Passeddatatodelivertoreceiverupperlayerudt_send():
calledbyrdt,totransferpacketoverunreliablechanneltoreceiverrdt_rcv():
calledwhenpacketarrivesonrcv-sideofchanneldeliver_data():
calledbyrdttodeliverdatatoupperTransportLayer3-26Reliabledatatransfer:gettingstartedWe’ll:incrementallydevelopsender,receiversidesofreliabledatatransferprotocol(rdt)consideronlyunidirectionaldatatransferbutcontrolinfowillflowonbothdirections!usefinitestatemachines(FSM)tospecifysender,receiverstate1state2eventcausingstatetransitionactionstakenonstatetransitionstate:wheninthis“state”nextstateuniquelydeterminedbynexteventeventactionsTransportLayer3-27Rdt1.0:reliabletransferoverareliablechannelunderlyingchannelperfectlyreliablenobiterrorsnolossofpacketsseparateFSMsforsender,receiver:sendersendsdataintounderlyingchannelreceiverreaddatafromunderlyingchannelWaitforcallfromabovepacket=make_pkt(data)udt_send(packet)rdt_send(data)extract(packet,data)deliver_data(data)Waitforcallfrombelowrdt_rcv(packet)senderreceiverTransportLayer3-28Rdt2.0:channelwithbiterrorsunderlyingchannelmayflipbitsinpacketchecksumtodetectbiterrorsthequestion:howtorecoverfromerrors:acknowledgements(ACKs):receiverexplicitlytellssenderthatpktreceivedOKnegativeacknowledgements(NAKs):receiverexplicitlytellssenderthatpkthaderrorssenderretransmitspktonreceiptofNAKnewmechanismsinrdt2.0(beyondrdt1.0):errordetectionreceiverfeedback:controlmsgs(ACK,NAK)rcvr->senderTransportLayer3-29rdt2.0:FSMspecificationWaitforcallfromabovesnkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)rdt_rcv(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt)&&corrupt(rcvpkt)WaitforACKorNAKWaitforcallfrombelowsenderreceiverrdt_send(data)LTransportLayer3-30rdt2.0:operationwithnoerrorsWaitforcallfromabovesnkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)rdt_rcv(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt)&&corrupt(rcvpkt)WaitforACKorNAKWaitforcallfrombelowrdt_send(data)LTransportLayer3-31rdt2.0:errorscenarioWaitforcallfromabovesnkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)rdt_rcv(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt)&&corrupt(rcvpkt)WaitforACKorNAKWaitforcallfrombelowrdt_send(data)LTransportLayer3-32rdt2.0hasafatalflaw!WhathappensifACK/NAKcorrupted?senderdoesn’tknowwhathappenedatreceiver!can’tjustretransmit:possibleduplicateHandlingduplicates:senderretransmitscurrentpktifACK/NAKgarbledsenderaddssequencenumbertoeachpktreceiverdiscards(doesn’tdeliverup)duplicatepktSendersendsonepacket,thenwaitsforreceiverresponsestopandwaitTransportLayer3-33rdt2.1:sender,handlesgarbledACK/NAKsWaitforcall0fromabovesndpkt=make_pkt(0,data,checksum)udt_send(sndpkt)rdt_send(data)WaitforACKorNAK0udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isNAK(rcvpkt))sndpkt=make_pkt(1,data,checksum)udt_send(sndpkt)rdt_send(data)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isNAK(rcvpkt))rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt)
Waitforcall1fromaboveWaitforACKorNAK1LLTransportLayer3-34rdt2.1:receiver,handlesgarbledACK/NAKsWaitfor0frombelowsndpkt=make_pkt(NAK,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq0(rcvpkt)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq1(rcvpkt)
extract(rcvpkt,data)deliver_data(data)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)Waitfor1frombelowrdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq0(rcvpkt)extract(rcvpkt,data)deliver_data(data)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq1(rcvpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)sndpkt=make_pkt(NAK,chksum)udt_send(sndpkt)TransportLayer3-35rdt2.1:discussionSender:seq#addedtopkttwoseq.#’s(0,1)willsuffice.Why?mustcheckifreceivedACK/NAKcorruptedtwiceasmanystatesstatemust“remember”whether“current”pkthas0or1seq.#Receiver:mustcheckifreceivedpacketisduplicatestateindicateswhether0or1isexpectedpktseq#note:receivercannotknowifitslastACK/NAKreceivedOKatsenderTransportLayer3-37rdt2.2:aNAK-freeprotocolsamefunctionalityasrdt2.1,usingACKsonlyinsteadofNAK,receiversendsACKforlastpktreceivedOKreceivermustexplicitlyincludeseq#ofpktbeingACKedduplicateACKatsenderresultsinsameactionasNAK:retransmitcurrentpktTransportLayer3-38rdt2.2:sender,receiverfragmentsWaitforcall0fromabovesndpkt=make_pkt(0,data,checksum)udt_send(sndpkt)rdt_send(data)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||
isACK(rcvpkt,1))rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt,0)
WaitforACK0senderFSMfragmentWaitfor0frombelowrdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq1(rcvpkt)extract(rcvpkt,data)deliver_data(data)sndpkt=make_pkt(ACK1,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||
has_seq1(rcvpkt))udt_send(sndpkt)receiverFSMfragmentLTransportLayer3-39rdt3.0:channelswitherrorsandlossNewassumption:underlyingchannelcanalsolosepackets(dataorACKs)checksum,seq.#,ACKs,retransmissionswillbeofhelp,butnotenoughApproach:senderwaits“reasonable”amountoftimeforACKretransmitsifnoACKreceivedinthistimeifpkt(orACK)justdelayed(notlost):retransmissionwillbeduplicate,butuseofseq.#’salreadyhandlesthisreceivermustspecifyseq#ofpktbeingACKedrequirescountdowntimerTransportLayer3-40rdt3.0sendersndpkt=make_pkt(0,data,checksum)udt_send(sndpkt)start_timerrdt_send(data)WaitforACK0rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isACK(rcvpkt,1))Waitforcall1fromabovesndpkt=make_pkt(1,data,checksum)udt_send(sndpkt)start_timerrdt_send(data)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt,0)
rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isACK(rcvpkt,0))rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt,1)
stop_timerstop_timerudt_send(sndpkt)start_timertimeoutudt_send(sndpkt)start_timertimeoutrdt_rcv(rcvpkt)Waitforcall0fromaboveWaitforACK1Lrdt_rcv(rcvpkt)LLLTransportLayer3-41rdt3.0inactionTransportLayer3-42rdt3.0inactionTransportLayer3-43Performanceofrdt3.0rdt3.0works,butperformancestinksex:1Gbpslink,15msprop.delay,8000bitpacket:Usender:utilization–fractionoftimesenderbusysending
1KBpktevery30msec->33kB/secthruputover1Gbpslinknetworkprotocollimitsuseofphysicalresources!TransportLayer3-44rdt3.0:stop-and-waitoperationfirstpacketbittransmitted,t=0senderreceiverRTT
lastpacketbittransmitted,t=L/Rfirstpacketbitarriveslastpacketbitarrives,sendACKACKarrives,sendnextpacket,t=RTT+L/RTransportLayer3-45PipelinedprotocolsPipelining:senderallowsmultiple,“in-flight”,yet-to-be-acknowledgedpktsrangeofsequencenumbersmustbeincreasedbufferingatsenderand/orreceiverTwogenericformsofpipelinedprotocols:go-Back-N,selectiverepeatTransportLayer3-46Pipelining:increasedutilizationfirstpacketbittransmitted,t=0senderreceiverRTTlastbittransmitted,t=L/Rfirstpacketbitarriveslastpacketbitarrives,sendACKACKarrives,sendnextpacket,t=RTT+L/Rlastbitof2ndpacketarrives,sendACKlastbitof3rdpacketarrives,sendACKIncreaseutilizationbyafactorof3!TransportLayer3-47PipeliningProtocolsGo-back-N:bigpictureSendercanhaveuptoNunackedpacketsinpipelineRcvronlysendscumulativeacksDoesn’tackpacketifthere’sagapSenderhastimerforoldestunackedpacketIftimerexpires,retransmitallunackedpacketsSelectiveRepeat:bigpicSendercanhaveuptoNunackedpacketsinpipelineRcvracksindividualpacketsSendermaintainstimerforeachunackedpacketWhentimerexpires,retransmitonlyunackpacketTransportLayer3-48Go-Back-NSender:k-bitseq#inpktheader“window”ofuptoN,consecutiveunack’edpktsallowedACK(n):ACKsallpktsupto,includingseq#n-“cumulativeACK”mayreceiveduplicateACKs(seereceiver)timerforeachin-flightpkttimeout(n):retransmitpktnandallhigherseq#pktsinwindowTransportLayer3-49GBN:senderextendedFSMWaitstart_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])…udt_send(sndpkt[nextseqnum-1])timeoutrdt_send(data)
if(nextseqnum<base+N){sndpkt[nextseqnum]=make_pkt(nextseqnum,data,chksum)udt_send(sndpkt[nextseqnum])if(base==nextseqnum)start_timernextseqnum++}elserefuse_data(data)base=getacknum(rcvpkt)+1If(base==nextseqnum)stop_timerelsestart_timerrdt_rcv(rcvpkt)&¬corrupt(rcvpkt)base=1nextseqnum=1rdt_rcv(rcvpkt)&&corrupt(rcvpkt)
LTransportLayer3-50GBN:receiverextendedFSMACK-only:alwayssendACKforcorrectly-receivedpktwithhighestin-orderseq#maygenerateduplicateACKsneedonlyrememberexpectedseqnumout-of-orderpkt:discard(don’tbuffer)->noreceiverbuffering!Re-ACKpktwithhighestin-orderseq#Waitudt_send(sndpkt)defaultrdt_rcv(rcvpkt)&¬currupt(rcvpkt)&&hasseqnum(rcvpkt,expectedseqnum)extract(rcvpkt,data)deliver_data(data)sndpkt=make_pkt(expectedseqnum,ACK,chksum)udt_send(sndpkt)expectedseqnum++expectedseqnum=1sndpkt=make_pkt(expectedseqnum,ACK,chksum)LTransportLayer3-51GBNin
actionTransportLayer3-52SelectiveRepeatreceiverindividuallyacknowledgesallcorrectlyreceivedpktsbufferspkts,asneeded,foreventualin-orderdeliverytoupperlayersenderonlyresendspktsforwhichACKnotreceivedsendertimerforeachunACKedpktsenderwindowNconsecutiveseq#’sagainlimitsseq#sofsent,unACKedpktsTransportLayer3-53Selectiverepeat:sender,receiverwindowsTransportLayer3-54Selectiverepeatdatafromabove:ifnextavailableseq#inwindow,sendpkttimeout(n):resendpktn,restarttimerACK(n)in[sendbase,sendbase+N]:markpktnasreceivedifnsmallestunACKedpkt,advancewindowbasetonextunACKedseq#senderpktnin[rcvbase,rcvbase+N-1]sendACK(n)out-of-order:bufferin-order:deliver(alsodeliverbuffered,in-orderpkts),advancewindowtonextnot-yet-receivedpktpktnin[rcvbase-N,rcvbase-1]ACK(n)otherwise:
ignorereceiverTransportLayer3-55SelectiverepeatinactionTransportLayer3-56Selectiverepeat:
dilemmaExample:seq#’s:0,1,2,3windowsize=3receiverseesnodifferenceintwoscenarios!incorrectlypassesduplicatedataasnewin(a)Q:whatrelationshipbetweenseq#sizeandwindowsize?TransportLayer3-57Chapter3outline3.1Transport-layerservices3.2Multiplexinganddemultiplexing3.3Connectionlesstransport:UDP3.4Principlesofreliabledatatransfer3.5Connection-orientedtransport:TCPsegmentstructurereliabledatatransferflowcontrolconnectionmanagement3.6Principlesofcongestioncontrol3.7TCPcongestioncontrolTransportLayer3-58TCP:Overview
RFCs:793,1122,1323,2018,2581fullduplexdata:bi-directionaldataflowinsameconnectionMSS:maximumsegmentsizeconnection-oriented:
handshaking(exchangeofcontrolmsgs)init’ssender,receiverstatebeforedataexchangeflowcontrolled:senderwillnotoverwhelmreceiverpoint-to-point:onesender,onereceiver
reliable,in-orderbytesteam:no“messageboundaries”pipelined:TCPcongestionandflowcontrolsetwindowsizesend&receivebuffersTCPsegmentstructureTransportLayer3-59TCPsegmentstructure-ControlfieldTransportLayer3-60TransportLayer3-61TCPsegmentstructuresourceport#destport#32bitsapplicationdata(variablelength)sequencenumberacknowledgementnumberReceivewindowUrgdatapnterchecksumFSRPAUheadlennotusedOptions(variablelength)URG:urgentdata(generallynotused)ACK:ACK#validPSH:pushdatanow(generallynotused)RST,SYN,FIN:connectionestab(setup,teardowncommands)#bytesrcvrwillingtoacceptcountingbybytesofdata(notsegments!)Internetchecksum(asinUDP)TransportLayer3-62TCPseq.#’sandACKsSeq.#’s:bytestream“number”offirstbyteinsegment’sdataACKs:seq#ofnextbyteexpectedfromothersidecumulativeACKQ:howreceiverhandlesout-of-ordersegmentsA:TCPspecdoesn’tsay,-uptoimplementorHostAHostBseq=42,ack=79,data=‘C’seq=79,ack=43,data=‘C’seq=43,ack=80Usertypes‘C’hostACKsreceiptofechoed‘C’hostACKsreceiptof‘C’,echoesback‘C’timesimpletelnetscenarioTCPseq.#’sandACKs
ThebytesofdatabeingtransferredineachconnectionarenumberedbyTCP.Thenumberingstartswitharandomlygeneratednumber.TransportLayer3-63TransportLayer3-64seq=M,thelengthofpayload=100B
processAprocessB
ACK=1,ack=
100Bready250Breadyseq=,length=250
ACK=1,ack=
Problem1:
mutualtransmissionofdataTransportLayer3-65seq=M,length=100processAprocessB
100Bseq=Mseq=N,length=500;ACK=1,ack=
seq=N500B
ACK=1,ack=
Problem2:
combinedtransmissionofdataandackTransportLayer3-66seq=4096,1000BprocessAprocessB1000BStart_timerRetransmissionStart_timerseq=4096,1000BACK=1,ack=?Problem3:
Ifsomedataislost?3-67seq=90000,100B
processAprocessB1000BStart_timerStart_timerseq=?,100BACK=1,ack=?ACK=1,ack=?seq=?,100BTransportLayerProblem3:
Ifsomedataislost?TransportLayer3-68processAprocessB
100B
seq=Mwait250BmoreMerge:seq=?,?B
ACK=1,ack=?Problem4:DataMergedTransportLayer3-69
processAprocessBseq=Mseq=M,100BACK=1,ack=?Ackmergedseq=?,450BTransportLayer3-69Problem5:ACKMergedTransportLayer3-701000Beach:seq=?processAprocessB
ACK=1,ack=?seq=MStart_timer
ACK=1,ack=?Problem6:
BulktransferTransportLayer3-71TCPRoundTripTimeandTimeoutQ:howtosetTCPtimeoutvalue?longerthanRTTbutRTTvariestooshort:prematuretimeoutunnecessaryretransmissionstoolong:slowreactiontosegmentlossQ:howtoestimateRTT?SampleRTT:measuredtimefromsegmenttransmissionuntilACKreceiptignoreretransmissionsSampleRTTwillvary,wantestimatedRTT“smoother”averageseveralrecentmeasurements,notjustcurrentSampleRTTTransportLayer3-72TCPRoundTripTimeandTimeoutEstimatedRTT=(1-
)*EstimatedRTT+
*SampleRTTExponentialweightedmovingaverageinfluenceofpastsampledecreasesexponentiallyfasttypicalvalue:=0.125TransportLayer3-73ExampleRTTestimation:TransportLayer3-74TCPRoundTripTimeandTimeoutSettingthetimeoutEstimtedRTTplus“safetymargin”largevariationinEstimatedRTT->largersafetymarginfirstestimateofhowmuchSampleRTTdeviatesfromEstimatedRTT:TimeoutInterval=EstimatedRTT+4*DevRTTDevRTT=(1-
)*DevRTT+
*|SampleRTT-EstimatedRTT|(typically,=0.25)
Thensettimeoutinterval:AdaptiveRetransmission
(OriginalAlgorithm)MeasureSampleRTTforeachsegment/ACKpairComputeweightedaverageofRTTEstRTT=a
x
EstRTT+b
x
SampleRTTwhere
a
+
b
=1abetween0.8and0.9bbetween0.1and0.2SettimeoutbasedonEstRTTTimeOut
=
2
x
EstRTTTransportLayer3-75Karn/PartridgeAlgorithmDonotsampleRTTwhenretransmittingDoubletimeoutaftereachretransmissionTransportLayer3-76Jacobson/KarelsAlgorithmNewCalculationsforaverageRTTDiff=SampleRTT-EstRTTEstRTT=EstRTT+(d
xDiff)Dev=Dev+d(|Diff|-Dev)wheredisafactorbetween0and1ConsidervariancewhensettingtimeoutvalueTimeOut=m
x
EstRTT+f
x
Devwherem=1andf=4Notesalgorithmonlyasgoodasgranularityofclock(500msonUnix)accuratetimeoutmechanismimportanttocongestioncontrol(later)TransportLayer3-77TransportLayer3-78Chapter3outline3.1Transport-layerservices3.2Multiplexinganddemultiplexing3.3Connectionlesstransport:UDP3.4Principlesofreliabledatatransfer3.5Connection-orientedtransport:TCPsegmentstructurereliabledatatransferflowcontrolconnectionmanagement3.6Principlesofcongestioncontrol3.7TCPcongestioncontrolTransportLayer3-79TCPreliabledatatransferTCPcreatesrdtserviceontopofIP’sunreliableservicePipelinedsegmentsCumulativeacksTCPusessingleretransmissiontimerRetransmissionsaretriggeredby:timeouteventsduplicateacksInitiallyconsidersimplifiedTCPsender:ignoreduplicateacksignoreflowcontrol,congestioncontrolSegmentSizeSettoatmostMSS(MaximumSegmentSize)MSSisthelargestsegmentsizethatcanbesentwithoutIPfragmentationTCPsupportspushoperationtoallowapplicationtoexplicitlysendasegmentTransportLayer3-80TransportLayer3-81TCPsenderevents:datarcvdfromapp:Createsegmentwithseq#seq#i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版(2024)七年级下册(2024)做自尊的人教案
- 场景微缩模型课程设计
- 包装机设计课程详解课程设计
- 四年级道德与法治教案-2.我们的班规我们订(第1课时教学设计) 人教(新版)
- 数学冀教版七长方形和正方形的面积教学设计
- 高中语文上学期第5周 荆轲刺秦王教学设计
- 四年级美术下册教案-《第4课 主题与背景》教学设计人教版
- 小学忆读书教学设计
- 小学信息技术第二册 设计、制作板报教案 清华版
- 小学语文人教部编版二年级下册2找春天第一课时教案
- 充分条件与必要条件 课件-2024-2025学年高一上学期数学人教A版(2019)必修第一册
- 药事法规课件-医疗机构药事管理
- 新标准商务英语阅读教程1- 课件 Unit-1 Work and travel
- 房地产买房送车执行活动策划方案
- 美的集团第-级公司分权手册
- 网络传播概论(彭兰第5版) 课件全套 第1-8章 网络媒介的演变-网络传播中的“数字鸿沟”
- GB/T 38470-2023再生铜合金原料
- 人教版数学八年级上册《从分数到分式》公开课一等奖创新课件
- 标准摩尔生成Gibbs自由能
- 第一章 血液学绪论
- 慢性心力衰竭的中西医结合治疗进展课件
评论
0/150
提交评论