




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寵物領(lǐng)養(yǎng)及照顧條款合同
- 鄉(xiāng)村文化建設(shè)推廣方案
- 素描基本功訓練與設(shè)計理論學習指南
- 排污管網(wǎng)施工合同
- 金融產(chǎn)品營銷與代理合作協(xié)議
- 線上線下營銷效果對比表
- 派遣人員勞動合同
- 在線教育平臺開發(fā)合同
- 移動支付業(yè)務推廣合作協(xié)議
- 工程熱力學基本原理與運用練習題
- 《勞動合同法》新考試題庫100題(含答案)
- 中建鋼筋精益管理實施指南
- 被執(zhí)行人生活費申請書范文
- 手衛(wèi)生七步洗手法
- 保健酒項目運營方案
- 婦幼保健院課件
- 中建辦公商業(yè)樓有限空間作業(yè)專項施工方案
- 擋渣墻及豎墻施工方案
- 德米特里 伊萬諾維奇 門捷列夫
- 全國大學生油氣儲運工程設(shè)計大賽特等獎作品-word版
- 軟通考試BCG內(nèi)控答案
評論
0/150
提交評論