TCP 協議詳解(一) 概述與可靠傳輸的實現

2021-10-05 22:12:35 字數 2496 閱讀 6906

tcp 是面向連線的傳輸層協議。

利用tcp協議傳輸資料前,必須使client和server通過tcp的三次握手建立連線並協商雙方的各種引數,在傳輸完成後還需要通過四次揮手釋放連線,也就是說在通過tcp協議傳輸時,雙方一直要都處在連線狀態

每一條 tcp 連線只能有兩個端點(endpoint),每一條 tcp 連線只能是點對點的(一對一)。

相對於udp在廣播以及多播中的一對多,tcp連線時一對一的。

tcp 提供可靠交付的服務。

tcp 提供全雙工通訊。面向位元組流。

tcp是以位元組為單位進行傳輸的,不是以位為單位

簡單過程如下:

其中「1,2,3…」是代表著乙個個位元組。

詳細過程如下:

6.tcp的連線

tcp 把連線作為最基本的抽象,每一條 tcp 連線有兩個端點,tcp 連線的端點不是主機,不是主機的ip 位址,不是應用程序,也不是傳輸層的協議埠。tcp 連線的端點叫做套接字(socket) ,而套接字是由ip位址加上埠號拼接而成的。

如下圖:

這裡有一點要補充,現在已經得到廣泛應用的ssl協議(安全套接字協議)和tls(安全傳輸層)協議中的記錄協議就是應用在傳輸層,通過加密等手段來保證安全。

網路層只負責把資料報從乙個網段轉到另乙個網段,中間因為網路擁塞或者中斷等原因可能導致資料報丟失,那麼其中包括的tcp資料報肯定也就隨之丟失,那麼如何在不穩定的網路中進行tcp資料報的可靠傳輸(也就是把所有要傳的檔案完整的從一台電腦傳輸到另一台電腦呢)?

於是就產生了停止-等待協議(stop-and-wait),其原理如下:

(一)先看一下無差錯情況:

在這種情況下a向b傳送tcp報文,傳送乙個,確認乙個,然後再傳送第二個,這是理想情況,如前言所說,因為網路環境的複雜,會存在各種丟包的情況。

下面就來看看在網路中丟包的各種情況,以及保證在每個情況下保證可靠傳輸的方式

(2)出錯情況

大致分為如下三種情況:

(a).資料報沒有到達b,如圖:

超時重傳,這樣就可以保證每個資料都會傳輸完成。

(b).資料報到達了b,b也傳送了確認訊息,但是在傳送給a的過程中丟失,如下圖:

(c).像b中一樣,資料報到達了b,b也傳送了確認訊息,但是在傳送給a的過程中因為走了較遠的路由路線,所以遲遲到不了a,這種情況如下:

因為第一次確認走了遠路,確認資訊遲遲到不了a,超過時限以後,a自動重傳,像(b)情況一樣,因為b計算機已經收到了資料m1,所以會丟棄重複的m1,並再次向a傳送確認,如果還是走了遠路沒有到達,那麼就重複這一過程,指導有對於m1的確認資訊到達a,a才開始傳送m2資料,而對於後面遲到的對於m1資料的確認資訊,a不會再做任何響應,因為已經對其響應過了。

上面的這四種情況都解決了以後,也就可以實現可靠傳輸了,這種傳輸的方式習慣上被稱為自動重傳請求arq(automatic repeat reauest),值得注意的是,這個名字容易給人一種誤解,「請求」這個詞是不準確的,b並不需要像a傳送重傳請求,a在設定的時間超時後會自動重傳,沒有「請求」的過程。

還有幾點需要注意:

為了對可能的重傳做準備,在傳送完乙個分組後,必須暫時保留已傳送的分組的副本。

為了對比傳送和確認的資料是否是同乙個,需要在傳送端和接收端都對資料進行編號,這樣的話,傳送端就可以比較受到的確認是對哪乙個資料的確認,如果重複的話,就丟棄這個確認,接收端也可以根據編號來比較這個資料是否收到過,從而判斷是丟棄還是傳送確認。這裡傳送端和接收端的編號應該相同。

超時計時器的重傳時間應當比資料在分組傳輸的平均往返時間更長一些。

這樣才不會重複分傳送多次資料。

傳輸層 TCP協議的可靠傳輸

tcp可靠傳輸的實現主要依靠滑動視窗和超時重傳機制。滑動視窗與超時重傳,保證了資料段傳輸不重複,不丟失,不差錯,按序到達。tcp對待傳送的資料按位元組進行編序,比如0號位元組,1號位元組,2號位元組 tcp每傳送乙個報文段,就對這個報文段設定一次計時器,如果超時,重傳該報文。tcp基於滑動視窗協議實...

TCP協議如何實現可靠傳輸

1.可靠傳輸的工作原理 停止等待協議 1.使用確認和重傳機制,我們就可以在不可靠的傳輸網路上實現可靠的通訊 2.這種可靠傳輸協議常稱為自動重傳請求arq automatic repeat request 3.arq表明重傳的請求是自動進行的,接收方不需要請求傳送重傳某個出錯的分組。2.停止等待協議的...

TCP 協議如何保證可靠傳輸

一 綜述 1 確認和重傳 接收方收到報文就會確認,傳送方傳送一段時間後沒有收到確認就重傳。2 資料校驗 3 資料合理分片和排序 udp ip資料報大於1500位元組,大於mtu.這個時候傳送方ip層就需要分片 fragmentation 把資料報分成若干片,使每一片都小於mtu.而接收方ip層則需要...