面試問題:tcp的可靠性,超時重傳怎麼實現,m1,m2,m3,m4,m5,丟失m2;怎麼重傳m2?為什麼不用重傳m4,m5?
因為每個tcp報文被傳送時,都會設定乙個重傳定時器,若定時期到了還沒收到ack包,則應重傳。為什麼不用重傳m4,m5?則可由此文回答:因為採用了累積確認。有例如下:
server 傳送80個位元組 part1,seq = 1
server 傳送120個位元組part2,seq = 81
server傳送160個位元組part3,seq = 201,此包由於其他原因丟失
client收到前2個報文段,並傳送ack = 201
server傳送140個位元組part4, seq = 361
server收到client對於前兩個報文段的ack,將2個報文從視窗中移除,視窗有200個位元組的餘量
報文3的重傳定時器到期,沒有收到ack,進行重傳
這個時候client已經收到報文4,存放在緩衝區中,也不會傳送ack【累計通知,傳送ack就表示3也收到了】,等待報文3,報文3收到之後,一塊對3,4進行確認
server收到確認之後,將報文3,4移除視窗,所有資料傳送完成
TCP 超時重傳
tcp是一種可靠的協議,在網路互動的過程中,由於tcp報文是封裝在ip協議中的,ip協議的無連線特性導致其可能在互動的過程中丟失,在這種情況下,tcp協議如何保障其傳輸的可靠性呢?t c p通過在傳送資料報文時設定乙個超時定時器來解決這種問題,如果在定時器溢位時還沒有收到來自對端對傳送報文的確認,它...
tcp超時重傳
重傳定時器 tcp 必須維護乙個重傳定時器,以進行超時重傳 問題 如何設定超時時間間隔 rto?時間間隔太短則可能導致大量不必要的重傳 太長則導致效能下降 tcp 採用了乙個高度動態的演算法,來不斷的調整時間間隔,這個演算法就是 jacobson 1988 演算法 在此演算法中,tcp 需要維護幾個...
TCP 的超時重傳
tcp 的超時重傳 版權申明 一直以來都是看 tcp ip 協議 這本書來理解 tcp 的一些概念,但發現講解的不是很清晰 或者是翻譯質量的問題 最近讀tanenbaum 的 計算機網路第4版 驚喜的發現這本書對 tcp 的一些概念做了非常清晰易懂的講解,心頭的一些疑問得到了解答。現整理一下我的理解...