【正文】
f echoed ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ time 簡單的 tel 場(chǎng)景 主講人: 西安交通大學(xué) 程向前 第 4講 傳輸層之二 45 TCP: 可靠數(shù)據(jù)傳輸 簡化的發(fā)送方 , 假設(shè) wait for event wait for event event: data received from application above event: timer timeout for segment with seq y event: ACK received, with ACK y create, send segment retransmit segment ACK processing ?單向數(shù)據(jù)傳輸 ?無流量 , 擁塞控制 主講人: 西安交通大學(xué) 程向前 第 4講 傳輸層之二 46 TCP: 可靠數(shù)據(jù)傳輸 00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 02 03 loop (forever) { 04 switch(event) 05 event: data received from application above 06 create TCP segment with sequence number nextseqnum 07 start timer for segment nextseqnum 08 pass segment to IP 09 nextseqnum = nextseqnum + length(data) 10 event: timer timeout for segment with sequence number y 11 retransmit segment with sequence number y 12 pue new timeout interval for segment y 13 restart timer for sequence number y 14 event: ACK received, with ACK field value of y 15 if (y sendbase) { /* cumulative ACK of all data up to y */ 16 cancel all timers for segments with sequence numbers y 17 sendbase = y 18 } 19 else { /* a duplicate ACK for already ACKed segment */ 20 increment number of duplicate ACKs received for y 21 if (number of duplicate ACKS received for y == 3) { 22 /* TCP fast retransmit */ 23 resend segment with sequence number y 24 restart timer for segment y 25 } 26 } /* end of loop forever */ 簡化的 TCP 發(fā)送方 主講人: 西安交通大學(xué) 程向前 第 4講 傳輸層之二 47 TCP ACK 規(guī)則 [RFC 1122, RFC 2581] 事件 有序數(shù)據(jù)段到達(dá) , 沒有缺失的段 , 所有其他數(shù)據(jù)段已經(jīng) ACKed 有序數(shù)據(jù)段到達(dá) , 沒有缺失的段 , 有一個(gè)延遲 ACK 等待