91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TCP的超時與重傳機制是什么

發布時間:2022-02-19 10:50:56 來源:億速云 閱讀:258 作者:iii 欄目:開發技術

這篇文章主要介紹“TCP的超時與重傳機制是什么”,在日常操作中,相信很多人在TCP的超時與重傳機制是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”TCP的超時與重傳機制是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

TCP提供可靠的運輸層。它使用的方法之一就是確認從另一端收到的數據。但數據和確認都有可能會丟失。TCP通過在發送時設置一個定時器來解決這種問題。如果當定時器溢出時還沒有收到確認,它就重傳該數據。對任何實現而言,關鍵之處就在于超時和重傳的策略,即怎樣決定超時間隔和如何確定重傳的頻率。

TCP的超時與重傳機制是什么

超時

超時時間的計算是超時的核心部分,TCP要求這個算法能大致估計出當前的網絡狀況,雖然這確實很困難。要求精確的原因有兩個:

(1)定時長久會造成網絡利用率不高。

(2)定時太短會造成多次重傳,使得網絡阻塞。所以,書中給出了一套經驗公式,和其他的保證計時器準確的措施。

遞推公式概說

最早的TCP曾經用了一個非常簡單的公式來估計當前網絡的狀況,如下R

RTO的初始化

RTO的初始化是由公式決定的,例如最初的公式,初始的值應該是1。而修正公式,初始RTO應該是A+4D。

RTO的更新

當數據正常傳輸的情況下,我們就會用上面的公式來更新各個數據,并重開定時器,來保證下一個數據被順利傳輸。要注意的是:重傳的情況下,RTO不用上面的公式計算,而采用一種叫做“指數退避”的方式。例如:當RTO為1S的情況下,發生了數據重傳,我們就用RTO=2S的定時器來重新傳輸數據,下一次用4S。一直增加到64S為止。

估計器的初始化

在這里,SYN用的估計器初始化似乎和傳輸用的估計器不一樣(我也沒有把握)造我的理解,在修正公式中,SYN的情況下,A初始化為0,D初始化為3S。而在得到傳輸第一個數據的ACK的時候,應該按照下面的公式進行初始化:A=M+0.5D=A/2

估計器的更新6++*9/8

和上面的討論差不多,就是在正常情況下,用上面的公式計算,在重傳的情況下,不更新估計器的各種參數。原因還是因為估計不準確。

Karn算法

這不算是一個算法,這應該是一個策略,說的就是更新RTO和估計器的值的時機選擇問題,1.3.和1.5.所說得更新時機就是Karn算法。

計時器的使用

兩句話:

\1. 一個連接中,有且僅有一個測量定時器被使用。也就是說,如果TCP連續發出3組數據,只有一組數據會被測量。

\2. ACK數據報不會被測量,原因很簡單,沒有ACK的ACK回應可以供結束定時器測量。

重傳

有了超時就要有重傳,但是就算是重傳也是有策略的,而不是將數據簡單的發送。

重傳時發送數據的大小

前面曾經提到過,數據在傳輸的時候不能只使用一個窗口協議,我們還需要有一個擁塞窗口來控制數據的流量,使得數據不會一下子都跑到網路中引起“擁塞”。也曾經提到過,擁塞窗口最初使用指數增長的速度來增加自身的窗口,直到發生超時重傳,再進行一次微調。但是沒有提到,如何進行微調,擁塞避免算法和慢啟動門限就是為此而生。所謂的慢啟動門限就是說,當擁塞窗口超過這個門限的時候,就使用擁塞避免算法,而在門限以內就采用慢啟動算法。所以這個標準才叫做門限,通常,擁塞窗口記做cwnd,慢啟動門限記做ssthresh。下面我們來看看擁塞避免和慢啟動是怎么一起工作的。算法概要(直接從書中拷貝)

1.對一個給定的連接,初始化cwnd為1個報文段,ssthresh為65535個字節。

2.TCP輸出例程的輸出不能超過cwnd和接收方通告窗口的大小。擁塞避免是發送方使用 的流量控制,而通告窗口則是接收方進行的流量控制。前者是發送方感受到的網絡擁塞的估 計,而后者則與接收方在該連接上的可用緩存大小有關。

3.當擁塞發生時(超時或收到重復確認),ssthresh被設置為當前窗口大小的一半(cwnd 和接收方通告窗口大小的最小值,但最少為2個報文段)。此外,如果是超時引起了擁塞,則 cwnd被設置為1個報文段(這就是慢啟動)。

4.當新的數據被對方確認時,就增加cwnd,但增加的方法依賴于我們是否正在進行慢啟 動或擁塞避免。如果cwnd小于或等于ssthresh,則正在進行慢啟動,否則正在進行擁塞避免。 慢啟動一直持續到我們回到當擁塞發生時所處位置的半時候才停止(因為我們記錄了在步驟2 中給我們制造麻煩的窗口大小的一半),然后轉為執行擁塞避免。

快速重傳和快速恢復算法

這是數據丟包的情況下給出的一種修補機制。一般來說,重傳發生在超時之后,但是如果發送端接受到3個以上的重復ACK的情況下,就應該意識到,數據丟了,需要重新傳遞。這個機制是不需要等到重傳定時器溢出的,所以叫做快速重傳,而重新傳遞以后,因為走的不是慢啟動而是擁塞避免算法,所以這又叫做快速恢復算法。流程如下:

\1. 當收到第3個重復的ACK時,將ssthresh設置為當前擁塞窗口cwnd的一半。重傳丟失的 報文段。設置cwnd為ssthresh加上3倍的報文段大小。

\2. 每次收到另一個重復的ACK時, cwnd增加1個報文段大小并發送1個分組(如果新的 cwnd允許發送)。

\3. 當下一個確認新數據的ACK到達時,設置cwnd為ssthresh(在第1步中設置的值)。這個 ACK應該是在進行重傳后的一個往返時間內對步驟1中重傳的確認。另外,這個ACK也應該 是對丟失的分組和收到的第1個重復的ACK之間的所有中間報文段的確認。這一步采用的是擁 塞避免,因為當分組丟失時我們將當前的速率減半。

ICMP會引起重新傳遞么?

答案是:不會,TCP會堅持用自己的定時器,但是TCP會保留下ICMP的錯誤并且通知用戶。

重新分組

TCP為了提高自己的效率,允許再重新傳輸的時候,只要傳輸包含重傳數據報文的報文就可以,而不用只重傳需要傳輸的報文。

到此,關于“TCP的超時與重傳機制是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

tcp
AI

疏附县| 盐边县| 旺苍县| 马山县| 承德县| 乌拉特前旗| 综艺| 花莲县| 修水县| 云霄县| 瑞昌市| 海盐县| 莆田市| 昌江| 中卫市| 南岸区| 辉县市| 香河县| 嘉黎县| 平潭县| 永靖县| 普兰店市| 蓝田县| 朝阳县| 安阳县| 应用必备| 通化县| 新蔡县| 白水县| 西宁市| 土默特左旗| 资溪县| 贵阳市| 柘城县| 鄂州市| 晋宁县| 浦县| 兰州市| 武宣县| 育儿| 类乌齐县|