TCP可靠傳輸的工做原理

概述:  

  因爲ip層是盡最大努力交付——不可靠的通訊;因此爲了保證可靠傳輸,TCP必須採起適當的措施才能保證兩個傳輸層的通訊變得可靠。理想的通訊是:1.傳輸的信道不產生差錯;2.不管發送方以多快的速度發送,接收方都來得及接收處理數據。可是實際上並不存在這樣理想的傳輸,因此咱們須要採起一些可靠傳輸的協議,當出現差錯的時候讓對方重傳出現差錯的數據(超時重傳機制),同時在接收方來不及處理數據的時候,及時告知發送方下降發送數據的速度(滑動窗口機制——TCP報文段首部有一個窗口的字段,就是用來告知發送方,接收方目前能處理的數據的能力)。網絡

中止等待協議:

  中止等待就是每發送完一個報文段就中止發送,等待對方進行確認。spa

主要有3種狀況:ip

  1.無差錯的狀況通信

  2.出現差錯數據

  3.接收方發送的確認包丟失和確認遲到協議

1.無差錯狀況

  最簡單的狀況,發送方A每次發送完一個報文段就設置一個超時計時器,每次都能在超時計時器超時以前接收到接收方B發送回來的確認報文,往復這樣進行通訊。時間

2.出現差錯

  這種狀況是:接收方B收到了發送方發送過來的TCP報文段,可是在對數據進行校驗(TCP報文段首部有校驗和字段,用來檢測發送過來的報文數據是否出現差錯)的時候,發現接收到的報文段出現差錯,這個時候接收方B什麼也不作(不會通知A說收到了差錯的報文段);也多是報文段在傳輸的過程當中丟失了,這種狀況B天然不知道,在這兩種狀況下,B不會發送任何信息,直到A爲剛剛發送的報文段設置的超時計時器超過了時間,就會認爲B沒有收到剛發送的報文段,就會從新發送剛剛發送的報文段——超時重傳co

3.接收方發送的確認寶丟失和確認遲到

  這種狀況是接收方正確的接收到發送方發送的報文段,而且發出確認報文,可是確認報文因爲某些緣由丟失了,或者是因爲網絡延遲沒有在發送方設置的關於這個報文段的超時計時器內達到,這個時候——發送方就會從新發送這個報文段,而接收方又收到了重傳的這個報文段,會作2件事:1.丟棄這個報文段(由於剛剛已經正確接收過了,而且已經向上一層交付),不向上一層交付;2.向發送方A發送確認報文(不能由於剛剛已經發送了確認就不發送,A之因此重傳該報文就是由於沒有收到確認;因此須要再次發送確認,否則發送方A就會一直髮送……)超時

這裏有幾個小問題須要注意:

  1.發送方在發送完一個報文段後必須暫時保存已經發送的報文段的副本——爲了超時重傳的時候使用。

  2.分組和確認分組都必須編號,因此才知道是對哪一個發送的分組收到了確認……

  3.超時計時器的重傳時間的設定——應該比數據在分組傳輸的平均往返時間更長一些。

中止等待協議很簡單,可是有很明顯的缺點——信道利用率很低;於是引入了連續ARQ協議

相關文章
相關標籤/搜索