SlideShare ist ein Scribd-Unternehmen logo
1 von 106
Chapter 3 Transport Layer Computer Networking: A Top Down Approach  5 th  edition.  Jim Kurose, Keith Ross Addison-Wesley, April 2009.  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Chapter 3: Transport Layer ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Chapter 3 outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Transport services and protocols ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],application transport network data link physical application transport network data link physical logical end-end transport
Transport vs. network layer ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Internet transport-layer protocols ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],application transport network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical application transport network data link physical logical end-end transport
Chapter 3 outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Multiplexing/demultiplexing application transport network link physical P1 application transport network link physical application transport network link physical P2 P3 P4 P1 host 1 host 2 host 3 = process = socket delivering received segments to correct socket gathering data from multiple sockets, enveloping data with  header (later used for  demultiplexing) Demultiplexing at rcv host: Multiplexing at send host:
How demultiplexing works ,[object Object],[object Object],[object Object],[object Object],[object Object],source port # dest port # 32 bits application data  (message) other header fields TCP/UDP segment format
Connectionless demultiplexing ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Connectionless demux (cont) ,[object Object],SP provides “return address” Client IP:B P2 client IP: A P1 P1 P3 server IP: C SP: 6428 DP: 9157 SP: 9157 DP: 6428 SP: 6428 DP: 5775 SP: 5775 DP: 6428
Connection-oriented demux ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Connection-oriented demux (cont) Client IP:B server IP: C SP: 9157 DP: 80 D-IP:C S-IP: A D-IP:C S-IP: B D-IP:C S-IP: B P1 client IP: A P1 P2 P4 SP: 9157 DP: 80 P5 P6 P3 SP: 5775 DP: 80
Connection-oriented demux: Threaded Web Server Client IP:B server IP: C SP: 9157 DP: 80 P4 D-IP:C S-IP: A D-IP:C S-IP: B D-IP:C S-IP: B P1 client IP: A P1 P2 SP: 9157 DP: 80 P3 SP: 5775 DP: 80
Chapter 3 outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
UDP: User Datagram Protocol  [RFC 768] ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
UDP: more ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],source port # dest port # 32 bits Application data  (message) UDP segment format length checksum Length, in bytes of UDP segment, including header
UDP checksum ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Goal:  detect “errors” (e.g., flipped bits) in transmitted segment
Internet Checksum Example ,[object Object],[object Object],[object Object],1   1  1  1  0  0  1  1  0  0  1  1  0  0  1  1  0 1   1  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1 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 1   0  1  0  0  0  1  0  0  0  1  0  0  0  0  1  1 wraparound sum checksum
Chapter 3 outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Principles of Reliable data transfer ,[object Object],[object Object],[object Object]
Principles of Reliable data transfer ,[object Object],[object Object],[object Object]
Principles of Reliable data transfer ,[object Object],[object Object],[object Object]
Reliable data transfer: getting started send side receive side rdt_send():   called from above, (e.g., by app.). Passed data to  deliver to receiver upper layer udt_send():   called by rdt, to transfer packet over  unreliable channel to receiver rdt_rcv():   called when packet arrives on rcv-side of channel deliver_data():   called by  rdt  to deliver data to upper
Reliable data transfer: getting started ,[object Object],[object Object],[object Object],[object Object],[object Object],event causing state transition actions taken on state transition state:  when in this “state” next state uniquely determined by next event state 1 state 2 event actions
Rdt1.0:  reliable transfer over a reliable channel ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Wait for call from above packet = make_pkt(data) udt_send(packet) rdt_send(data) extract (packet,data) deliver_data(data) Wait for call from below rdt_rcv(packet) sender receiver
Rdt2.0:  channel with bit errors ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
rdt2.0: FSM specification Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) &&  notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) sender receiver rdt_send(data)  udt_send(NAK) rdt_rcv(rcvpkt) &&  corrupt(rcvpkt) Wait for ACK or NAK Wait for call from below
rdt2.0: operation with no errors Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) &&  notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) Wait for call from below rdt_send(data)  udt_send(NAK) rdt_rcv(rcvpkt) &&  corrupt(rcvpkt) Wait for ACK or NAK
rdt2.0: error scenario Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) &&  notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) Wait for call from below rdt_send(data)  udt_send(NAK) rdt_rcv(rcvpkt) &&  corrupt(rcvpkt) Wait for ACK or NAK
rdt2.0 has a fatal flaw! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Sender sends one packet,  then waits for receiver  response stop and wait
rdt2.1: sender, handles garbled ACK/NAKs Wait for call 0 from above sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_send(data) udt_send(sndpkt) rdt_rcv(rcvpkt) &&  ( corrupt(rcvpkt) || isNAK(rcvpkt) ) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) rdt_send(data) rdt_rcv(rcvpkt)  && notcorrupt(rcvpkt)  && isACK(rcvpkt)  udt_send(sndpkt) rdt_rcv(rcvpkt) &&  ( corrupt(rcvpkt) || isNAK(rcvpkt) ) rdt_rcv(rcvpkt)  && notcorrupt(rcvpkt)  && isACK(rcvpkt)     Wait for ACK or NAK 0 Wait for call 1 from above Wait for ACK or NAK 1
rdt2.1: receiver, handles garbled  ACK/NAKs sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) &&  not corrupt(rcvpkt) && has_seq0(rcvpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)  && has_seq1(rcvpkt)   extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(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) &&  not 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) Wait for  0 from below Wait for  1 from below
rdt2.1: discussion ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
rdt2.2: a NAK-free protocol ,[object Object],[object Object],[object Object],[object Object]
rdt2.2: sender, receiver fragments sndpkt = 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)  && notcorrupt(rcvpkt)  &&  isACK(rcvpkt,0)   sender FSM fragment rdt_rcv(rcvpkt) && notcorrupt(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) receiver FSM fragment  Wait for call 0 from above Wait for ACK 0 Wait for  0 from below
rdt3.0: channels with errors  and  loss ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
rdt3.0 sender sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) rdt_rcv(rcvpkt) &&  ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) rdt_rcv(rcvpkt)  && notcorrupt(rcvpkt)  && isACK(rcvpkt,0)   rdt_rcv(rcvpkt) &&  ( corrupt(rcvpkt) || isACK(rcvpkt,0) ) rdt_rcv(rcvpkt)  && notcorrupt(rcvpkt)  && isACK(rcvpkt,1)   stop_timer stop_timer udt_send(sndpkt) start_timer timeout udt_send(sndpkt) start_timer timeout rdt_rcv(rcvpkt)  rdt_rcv(rcvpkt)    Wait for ACK0 Wait for  call 1 from above Wait for  call 0from above Wait for ACK1
rdt3.0 in action
rdt3.0 in action
Performance of rdt3.0 ,[object Object],[object Object],[object Object],[object Object],[object Object]
rdt3.0: stop-and-wait operation first packet bit transmitted, t = 0 sender receiver RTT   last packet bit transmitted,  t = L / R first packet bit arrives last packet bit arrives, send ACK ACK arrives, send next  packet,  t = RTT + L / R
Pipelined protocols ,[object Object],[object Object],[object Object],[object Object]
Pipelining: increased utilization first packet bit transmitted, t = 0 sender receiver RTT  last bit transmitted, t = L / R first packet bit arrives last packet bit arrives, send ACK ACK arrives, send next  packet, t = RTT + L / R last bit of 2 nd  packet arrives, send ACK last bit of 3 rd  packet arrives, send ACK Increase utilization by a factor of 3!
Pipelining Protocols ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Selective repeat: big picture ,[object Object],[object Object],[object Object],[object Object]
Go-Back-N ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GBN: sender extended FSM start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) … udt_send(sndpkt[nextseqnum-1]) timeout rdt_send(data)   if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ } else refuse_data(data) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer rdt_rcv(rcvpkt) &&  notcorrupt(rcvpkt)  base=1 nextseqnum=1 rdt_rcv(rcvpkt)  && corrupt(rcvpkt)    Wait
GBN: receiver extended FSM ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Wait udt_send(sndpkt) default rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum)  extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(expectedseqnum,ACK,chksum) udt_send(sndpkt) expectedseqnum++ expectedseqnum=1 sndpkt =  make_pkt(expectedseqnum,ACK,chksum) 
GBN in action
Selective Repeat ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Selective repeat: sender, receiver windows
Selective repeat ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],sender receiver
Selective repeat in action
Selective repeat:  dilemma ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Chapter 3 outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP: Overview   RFCs: 793, 1122, 1323, 2018, 2581 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP segment structure URG: urgent data  (generally not used) ACK: ACK # valid PSH: push data now (generally not used) RST, SYN, FIN: connection estab (setup, teardown commands) # bytes  rcvr willing to accept counting by bytes  of data (not segments!) Internet checksum (as in UDP) source port # dest port # 32 bits application data  (variable length) sequence number acknowledgement number Receive window Urg data pnter checksum F S R P A U head len not used Options (variable length)
TCP seq. #’s and ACKs ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Host A Host B Seq=42, ACK=79, data = ‘C’ Seq=79, ACK=43, data = ‘C’ Seq=43, ACK=80 User types ‘ C’ host ACKs receipt  of echoed ‘ C’ host ACKs receipt of ‘ C’, echoes back ‘C’ simple telnet scenario time
TCP Round Trip Time and Timeout ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP Round Trip Time and Timeout EstimatedRTT = (1-   )*EstimatedRTT +   *SampleRTT ,[object Object],[object Object],[object Object]
Example RTT estimation:
TCP Round Trip Time and Timeout ,[object Object],[object Object],[object Object],[object Object],TimeoutInterval = EstimatedRTT + 4*DevRTT DevRTT = (1-  )*DevRTT +  *|SampleRTT-EstimatedRTT| (typically,    = 0.25) Then set timeout interval:
Chapter 3 outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP reliable data transfer ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP sender events: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP  sender (simplified) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum loop (forever) {   switch(event)   event:  data received from application above  create TCP segment with sequence number NextSeqNum  if (timer currently not running) start timer pass segment to IP  NextSeqNum = NextSeqNum + length(data)  event:  timer timeout retransmit not-yet-acknowledged segment with  smallest sequence number start timer event:  ACK received, with ACK field value of y  if (y > SendBase) {  SendBase = y if (there are currently not-yet-acknowledged segments) start timer  }  }  /* end of loop forever */   ,[object Object],[object Object],[object Object],[object Object],[object Object]
TCP: retransmission scenarios Host A Seq=100, 20 bytes data ACK=100 premature timeout Host B Seq=92, 8 bytes data ACK=120 Seq=92, 8 bytes data ACK=120 Seq=92 timeout SendBase = 100 SendBase = 120 SendBase = 120 Sendbase = 100 time Seq=92 timeout Host A Seq=92, 8 bytes data ACK=100 loss timeout lost ACK scenario Host B X Seq=92, 8 bytes data ACK=100 time
TCP retransmission scenarios (more) SendBase = 120 Host A Seq=92, 8 bytes data ACK=100 loss timeout Cumulative ACK scenario Host B X Seq=100, 20 bytes data ACK=120 time
TCP ACK generation   [RFC 1122, RFC 2581] Event at Receiver Arrival of in-order segment with expected seq #. All data up to expected seq # already ACKed Arrival of in-order segment with expected seq #. One other  segment has ACK pending Arrival of out-of-order segment higher-than-expect seq. # . Gap detected Arrival of segment that  partially or completely fills gap TCP Receiver action Delayed ACK. Wait up to 500ms for next segment. If no next segment, send ACK Immediately send single cumulative  ACK, ACKing both in-order segments  Immediately send  duplicate ACK ,  indicating seq. # of next expected byte Immediate send ACK, provided that segment starts at lower end of gap
Fast  Retransmit ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Figure 3.37 Resending a segment after triple duplicate ACK Host A timeout Host B time X resend 2 nd  segment
Fast retransmit algorithm: event:  ACK received, with ACK field value of y  if (y > SendBase) {  SendBase = y if (there are currently not-yet-acknowledged segments) start timer  }  else {  increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) { resend segment with sequence number y } a duplicate ACK for  already ACKed segment fast retransmit
Chapter 3 outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP Flow Control ,[object Object],[object Object],[object Object],sender won’t overflow receiver’s buffer by transmitting too much, too fast flow control
TCP Flow control: how it works ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Chapter 3 outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP Connection Management ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP Connection Management (cont.) ,[object Object],[object Object],[object Object],[object Object],client FIN server ACK ACK FIN close close closed timed wait
TCP Connection Management (cont.) ,[object Object],[object Object],[object Object],[object Object],client FIN server ACK ACK FIN closing closing closed timed wait closed
TCP Connection Management (cont) TCP client lifecycle TCP server lifecycle
Chapter 3 outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Principles of Congestion Control ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Causes/costs of congestion: scenario 1   ,[object Object],[object Object],[object Object],[object Object],[object Object],unlimited shared output link buffers Host A  in  :  original data Host B  out
Causes/costs of congestion: scenario 2   ,[object Object],[object Object],finite shared output link buffers Host A  in  : original data Host B  out  ' in  : original data, plus retransmitted data
Causes/costs of congestion: scenario 2   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object], in  out =  in  out >  in  out R/2 R/2  in  out b. R/2 R/2  in  out a. R/2 R/2  in  out c. R/4 R/3
Causes/costs of congestion: scenario 3   ,[object Object],[object Object],[object Object],Q:   what happens as  and  increase  ? finite shared output link buffers  in  : original data  out  ' in  : original data, plus retransmitted data  in  in Host A Host B
Causes/costs of congestion: scenario 3   ,[object Object],[object Object], out Host A Host B
Approaches towards congestion control ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Two broad approaches towards congestion control:
Case study: ATM ABR congestion control ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Case study: ATM ABR congestion control ,[object Object],[object Object],[object Object],[object Object],[object Object]
Chapter 3 outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP congestion control:  additive increase, multiplicative decrease ,[object Object],[object Object],[object Object],time congestion window size Saw tooth behavior: probing for bandwidth
TCP Congestion Control: details ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],rate =   CongWin   RTT   Bytes/sec
TCP Slow Start ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP Slow Start (more) ,[object Object],[object Object],[object Object],[object Object],Host A one segment RTT Host B two segments four segments time
Refinement: inferring loss ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Philosophy:
Refinement ,[object Object],[object Object],[object Object],[object Object],[object Object]
Summary: TCP Congestion Control ,[object Object],[object Object],[object Object],[object Object]
TCP sender congestion control SS or CA SS or CA SS or CA Congestion Avoidance (CA)  Slow Start (SS) State CongWin and Threshold not changed Increment duplicate ACK count for segment being acked Duplicate ACK Enter slow start Threshold = CongWin/2,  CongWin = 1 MSS, Set state to “Slow Start” Timeout Fast recovery, implementing multiplicative decrease. CongWin will not drop below 1 MSS. Threshold = CongWin/2,  CongWin = Threshold, Set state to “Congestion Avoidance” Loss event detected by triple duplicate ACK Additive increase, resulting in increase of CongWin  by 1 MSS every RTT CongWin = CongWin+MSS * (MSS/CongWin) ACK receipt for previously unacked data Resulting in a doubling of CongWin every RTT CongWin = CongWin + MSS,  If (CongWin > Threshold) set state to “Congestion  Avoidance” ACK receipt for previously unacked data  Commentary TCP Sender Action  Event
TCP throughput ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TCP Futures: TCP over “long, fat pipes” ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],TCP Fairness TCP connection 1 bottleneck router capacity R TCP  connection 2
Why is TCP fair? ,[object Object],[object Object],[object Object],R R equal bandwidth share Connection 1 throughput Connection 2 throughput congestion avoidance: additive increase loss: decrease window by factor of 2 congestion avoidance: additive increase loss: decrease window by factor of 2
Fairness (more) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Chapter 3: Summary ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Application Layer
Application LayerApplication Layer
Application Layer
 
Lecture2 mac learning
Lecture2 mac learningLecture2 mac learning
Lecture2 mac learning
 
Transport layer (computer networks)
Transport layer (computer networks)Transport layer (computer networks)
Transport layer (computer networks)
 
Unit 4 - Network Layer
Unit 4 - Network LayerUnit 4 - Network Layer
Unit 4 - Network Layer
 
Network Layer
Network LayerNetwork Layer
Network Layer
 
CS6551 COMPUTER NETWORKS
CS6551 COMPUTER NETWORKSCS6551 COMPUTER NETWORKS
CS6551 COMPUTER NETWORKS
 
CN_Lec 5_OSI
CN_Lec 5_OSICN_Lec 5_OSI
CN_Lec 5_OSI
 
Transport layer
Transport layerTransport layer
Transport layer
 
Transport services
Transport servicesTransport services
Transport services
 
Transport layer
Transport layer Transport layer
Transport layer
 
Cs8591 Computer Networks
Cs8591 Computer NetworksCs8591 Computer Networks
Cs8591 Computer Networks
 
20CS2008 Computer Networks
20CS2008 Computer Networks20CS2008 Computer Networks
20CS2008 Computer Networks
 
the transport layer
the transport layerthe transport layer
the transport layer
 
Lec 12(Transport Layer)
Lec 12(Transport Layer)Lec 12(Transport Layer)
Lec 12(Transport Layer)
 
The Transport Layer
The Transport LayerThe Transport Layer
The Transport Layer
 
Transport Layer Services : Multiplexing And Demultiplexing
Transport Layer Services : Multiplexing And DemultiplexingTransport Layer Services : Multiplexing And Demultiplexing
Transport Layer Services : Multiplexing And Demultiplexing
 
Transport layer
Transport layerTransport layer
Transport layer
 
20CS2008 Computer Networks
20CS2008 Computer Networks20CS2008 Computer Networks
20CS2008 Computer Networks
 
Transport Protocols
Transport ProtocolsTransport Protocols
Transport Protocols
 
Transport Layer Description By Varun Tiwari
Transport Layer Description By Varun TiwariTransport Layer Description By Varun Tiwari
Transport Layer Description By Varun Tiwari
 

Ähnlich wie Chapter3 transport

Chapter3 transport layer
Chapter3 transport layerChapter3 transport layer
Chapter3 transport layer
Khánh Ghẻ
 
4_5938019984411199949.ppt
4_5938019984411199949.ppt4_5938019984411199949.ppt
4_5938019984411199949.ppt
HodaKHajeh1
 
TRANSPORT LAYER_DATA STRUCTURE LEARNING MATERIAL
TRANSPORT LAYER_DATA STRUCTURE LEARNING MATERIALTRANSPORT LAYER_DATA STRUCTURE LEARNING MATERIAL
TRANSPORT LAYER_DATA STRUCTURE LEARNING MATERIAL
jainyshah20
 

Ähnlich wie Chapter3 transport (20)

Chapter_3_V6.01.ppt
Chapter_3_V6.01.pptChapter_3_V6.01.ppt
Chapter_3_V6.01.ppt
 
Chapter3 transport layer
Chapter3 transport layerChapter3 transport layer
Chapter3 transport layer
 
Chapter 3 v6.01
Chapter 3 v6.01Chapter 3 v6.01
Chapter 3 v6.01
 
Week4 lec1-bscs1
Week4 lec1-bscs1Week4 lec1-bscs1
Week4 lec1-bscs1
 
Chapter_3_V6.01 (1).pptx
Chapter_3_V6.01 (1).pptxChapter_3_V6.01 (1).pptx
Chapter_3_V6.01 (1).pptx
 
4_5938019984411199949.ppt
4_5938019984411199949.ppt4_5938019984411199949.ppt
4_5938019984411199949.ppt
 
Chapter 3 v6.01 (1)
Chapter 3 v6.01 (1)Chapter 3 v6.01 (1)
Chapter 3 v6.01 (1)
 
Lec6
Lec6Lec6
Lec6
 
Chapter 3 v6.0
Chapter 3 v6.0Chapter 3 v6.0
Chapter 3 v6.0
 
COE332-Ch03d.pptx
COE332-Ch03d.pptxCOE332-Ch03d.pptx
COE332-Ch03d.pptx
 
TRANSPORT LAYER_DATA STRUCTURE LEARNING MATERIAL
TRANSPORT LAYER_DATA STRUCTURE LEARNING MATERIALTRANSPORT LAYER_DATA STRUCTURE LEARNING MATERIAL
TRANSPORT LAYER_DATA STRUCTURE LEARNING MATERIAL
 
Computer networks Module 3 Transport layer
Computer networks Module 3 Transport layerComputer networks Module 3 Transport layer
Computer networks Module 3 Transport layer
 
CNS_Module-2-ppt.pptx
CNS_Module-2-ppt.pptxCNS_Module-2-ppt.pptx
CNS_Module-2-ppt.pptx
 
3. transport layer
3. transport layer3. transport layer
3. transport layer
 
Week10 transport
Week10 transportWeek10 transport
Week10 transport
 
Chapter Five - Transport Layer.pptx
Chapter Five - Transport Layer.pptxChapter Five - Transport Layer.pptx
Chapter Five - Transport Layer.pptx
 
Jaimin chp-6 - transport layer- 2011 batch
Jaimin   chp-6 - transport layer- 2011 batchJaimin   chp-6 - transport layer- 2011 batch
Jaimin chp-6 - transport layer- 2011 batch
 
TCP Vs UDP
TCP Vs UDP TCP Vs UDP
TCP Vs UDP
 
computer network having transport layer.ppt
computer network having transport layer.pptcomputer network having transport layer.ppt
computer network having transport layer.ppt
 
Chapter_3_V7.01.ppt
Chapter_3_V7.01.pptChapter_3_V7.01.ppt
Chapter_3_V7.01.ppt
 

Kürzlich hochgeladen

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 

Chapter3 transport

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. Multiplexing/demultiplexing application transport network link physical P1 application transport network link physical application transport network link physical P2 P3 P4 P1 host 1 host 2 host 3 = process = socket delivering received segments to correct socket gathering data from multiple sockets, enveloping data with header (later used for demultiplexing) Demultiplexing at rcv host: Multiplexing at send host:
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. Connection-oriented demux (cont) Client IP:B server IP: C SP: 9157 DP: 80 D-IP:C S-IP: A D-IP:C S-IP: B D-IP:C S-IP: B P1 client IP: A P1 P2 P4 SP: 9157 DP: 80 P5 P6 P3 SP: 5775 DP: 80
  • 14. Connection-oriented demux: Threaded Web Server Client IP:B server IP: C SP: 9157 DP: 80 P4 D-IP:C S-IP: A D-IP:C S-IP: B D-IP:C S-IP: B P1 client IP: A P1 P2 SP: 9157 DP: 80 P3 SP: 5775 DP: 80
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24. Reliable data transfer: getting started send side receive side rdt_send(): called from above, (e.g., by app.). Passed data to deliver to receiver upper layer udt_send(): called by rdt, to transfer packet over unreliable channel to receiver rdt_rcv(): called when packet arrives on rcv-side of channel deliver_data(): called by rdt to deliver data to upper
  • 25.
  • 26.
  • 27.
  • 28. rdt2.0: FSM specification Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) sender receiver rdt_send(data)  udt_send(NAK) rdt_rcv(rcvpkt) && corrupt(rcvpkt) Wait for ACK or NAK Wait for call from below
  • 29. rdt2.0: operation with no errors Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) Wait for call from below rdt_send(data)  udt_send(NAK) rdt_rcv(rcvpkt) && corrupt(rcvpkt) Wait for ACK or NAK
  • 30. rdt2.0: error scenario Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) Wait for call from below rdt_send(data)  udt_send(NAK) rdt_rcv(rcvpkt) && corrupt(rcvpkt) Wait for ACK or NAK
  • 31.
  • 32. rdt2.1: sender, handles garbled ACK/NAKs Wait for call 0 from above sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_send(data) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isNAK(rcvpkt) ) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) rdt_send(data) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isNAK(rcvpkt) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt)   Wait for ACK or NAK 0 Wait for call 1 from above Wait for ACK or NAK 1
  • 33. rdt2.1: receiver, handles garbled ACK/NAKs sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(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) && not 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) Wait for 0 from below Wait for 1 from below
  • 34.
  • 35.
  • 36. rdt2.2: sender, receiver fragments sndpkt = 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) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) sender FSM fragment rdt_rcv(rcvpkt) && notcorrupt(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) receiver FSM fragment  Wait for call 0 from above Wait for ACK 0 Wait for 0 from below
  • 37.
  • 38. rdt3.0 sender sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,0) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1) stop_timer stop_timer udt_send(sndpkt) start_timer timeout udt_send(sndpkt) start_timer timeout rdt_rcv(rcvpkt)  rdt_rcv(rcvpkt)    Wait for ACK0 Wait for call 1 from above Wait for call 0from above Wait for ACK1
  • 41.
  • 42. rdt3.0: stop-and-wait operation first packet bit transmitted, t = 0 sender receiver RTT last packet bit transmitted, t = L / R first packet bit arrives last packet bit arrives, send ACK ACK arrives, send next packet, t = RTT + L / R
  • 43.
  • 44. Pipelining: increased utilization first packet bit transmitted, t = 0 sender receiver RTT last bit transmitted, t = L / R first packet bit arrives last packet bit arrives, send ACK ACK arrives, send next packet, t = RTT + L / R last bit of 2 nd packet arrives, send ACK last bit of 3 rd packet arrives, send ACK Increase utilization by a factor of 3!
  • 45.
  • 46.
  • 47.
  • 48. GBN: sender extended FSM start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) … udt_send(sndpkt[nextseqnum-1]) timeout rdt_send(data) if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ } else refuse_data(data) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) base=1 nextseqnum=1 rdt_rcv(rcvpkt) && corrupt(rcvpkt)  Wait
  • 49.
  • 51.
  • 52. Selective repeat: sender, receiver windows
  • 53.
  • 55.
  • 56.
  • 57.
  • 58. TCP segment structure URG: urgent data (generally not used) ACK: ACK # valid PSH: push data now (generally not used) RST, SYN, FIN: connection estab (setup, teardown commands) # bytes rcvr willing to accept counting by bytes of data (not segments!) Internet checksum (as in UDP) source port # dest port # 32 bits application data (variable length) sequence number acknowledgement number Receive window Urg data pnter checksum F S R P A U head len not used Options (variable length)
  • 59.
  • 60.
  • 61.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68. TCP: retransmission scenarios Host A Seq=100, 20 bytes data ACK=100 premature timeout Host B Seq=92, 8 bytes data ACK=120 Seq=92, 8 bytes data ACK=120 Seq=92 timeout SendBase = 100 SendBase = 120 SendBase = 120 Sendbase = 100 time Seq=92 timeout Host A Seq=92, 8 bytes data ACK=100 loss timeout lost ACK scenario Host B X Seq=92, 8 bytes data ACK=100 time
  • 69. TCP retransmission scenarios (more) SendBase = 120 Host A Seq=92, 8 bytes data ACK=100 loss timeout Cumulative ACK scenario Host B X Seq=100, 20 bytes data ACK=120 time
  • 70. TCP ACK generation [RFC 1122, RFC 2581] Event at Receiver Arrival of in-order segment with expected seq #. All data up to expected seq # already ACKed Arrival of in-order segment with expected seq #. One other segment has ACK pending Arrival of out-of-order segment higher-than-expect seq. # . Gap detected Arrival of segment that partially or completely fills gap TCP Receiver action Delayed ACK. Wait up to 500ms for next segment. If no next segment, send ACK Immediately send single cumulative ACK, ACKing both in-order segments Immediately send duplicate ACK , indicating seq. # of next expected byte Immediate send ACK, provided that segment starts at lower end of gap
  • 71.
  • 72. Figure 3.37 Resending a segment after triple duplicate ACK Host A timeout Host B time X resend 2 nd segment
  • 73. Fast retransmit algorithm: event: ACK received, with ACK field value of y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer } else { increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) { resend segment with sequence number y } a duplicate ACK for already ACKed segment fast retransmit
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81. TCP Connection Management (cont) TCP client lifecycle TCP server lifecycle
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100. TCP sender congestion control SS or CA SS or CA SS or CA Congestion Avoidance (CA) Slow Start (SS) State CongWin and Threshold not changed Increment duplicate ACK count for segment being acked Duplicate ACK Enter slow start Threshold = CongWin/2, CongWin = 1 MSS, Set state to “Slow Start” Timeout Fast recovery, implementing multiplicative decrease. CongWin will not drop below 1 MSS. Threshold = CongWin/2, CongWin = Threshold, Set state to “Congestion Avoidance” Loss event detected by triple duplicate ACK Additive increase, resulting in increase of CongWin by 1 MSS every RTT CongWin = CongWin+MSS * (MSS/CongWin) ACK receipt for previously unacked data Resulting in a doubling of CongWin every RTT CongWin = CongWin + MSS, If (CongWin > Threshold) set state to “Congestion Avoidance” ACK receipt for previously unacked data Commentary TCP Sender Action Event
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.

Hinweis der Redaktion

  1. Kurose and Ross forgot to say anything about wrapping the carry and adding it to low order bit