TCP可靠傳輸的工作原理


概述:  

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

停止等待協議:

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

主要有3種情況:

  1.無差錯的情況

  2.出現差錯

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

1.無差錯情況

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

2.出現差錯

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

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

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

這里有幾個小問題需要注意:

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

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

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM