計算機網絡----- TCP協議

IP協議提供一種使計算機發送數據和接收數據的方法,但將數據從信源地址傳送到目的地址,必須通過TCP協議解決數據包丟失或順序傳遞的問題。

TCP 通過檢驗和,序列號,確認應答,重發機制,連接管理,以及窗口控制等機制實現可靠性傳輸。

一:通過序列號與確認應答提高可靠性:

TCP中,當發送端的數據到達接收端,接收端主機會返回一個以收到的消息通知,這個消息叫做確認應答(ACKTCP通過確認應答實現可靠的數據傳輸。

(當然, 爲收到確認應答並不意味着數據一定丟失,也有可能是數據已經接受到只是返回的確認應答在途中丟失,這種情況也會引起重發,與此類似的情況,因此引入一種機制 ,能夠確認是否已經接收數據,又能判斷是否需要接收)重發控制,確認應答,重複控制可以通過序列號來實現。

二:TCP連接過程 (三次握手)

1:客戶端發送一個帶SYN標誌的TCP報文到服務器,這是三次握手過程中的第一個報文。

2:服務器端迴應給客戶端,這是第二個報文,報文同時帶ACK標誌與SYN標誌,表示對客戶端SYN報文的迴應,同時又返回SYN,詢問客戶端是否準備還數據通信。

3:客戶端必須再次迴應服務器端一個ACK報文。

三:TCP以段爲單位發送數據

在建立TCP連接的同時,也可以確認發送數據包的單位,稱其爲最大消息長度(MSS

TCP傳輸大量數據的時候,是以MSS(最大消息長度)的大小將數據進行分割發送,重發時也是以MSS爲單位。

MSS是在三次握手的時候,在兩端主機主機間被計算得出。

利用窗口控制提高速度:

  Tcp在發送數據的時候是以一個段爲單位,但是缺點就是包的往返時間越長通信性能就越低,因此引入窗口概念,確認應答不再是以每個分段,而是以更大的單位進行確認,發送端主機發送了一個段以後不必一直等待確認應答,而是繼續發送,該機制實現使用了大量的緩衝區,

 

 上圖可以看出沒有收到確認應答的數據也能發出去,發送端主機在等到確認返回之前,必須在緩衝區中保留這部分數據,當然在窗口以外的數據以及已經確認的數據,就沒有必要進行重發,此時數據就可以從緩存區清除。

當收到確認應答的情況下,將窗口滑動到確認應答中的序列號位置。這種機制被稱爲滑動窗口機制。

高速重發控制:

  當某一端報文丟失後,發送端會一直收到丟失段[序列號的確認應答,在窗口較大的情況下,會出現報文段丟失的情況,同一個序號的確認應答將會被重複不斷的返回,如果發送端主機連續三次收到同一個確認應答(因爲三次纔會觸發重發機制)就會將對應的數據進行重發。

流控制:

 接收端主機向發送端主機發送通知自己可以接收的數據的大小,於是發送端發送不會超過這個限度的數據。TCP 首部中,專門有一個字段用來通知窗口的大小,接收主機將自己可以接收的緩衝區大小通知給發送端,這個值越大,說明網絡吞吐量越大。

 擁塞控制:

可以有效的減少通信開始時連續發包,導致的網絡擁堵,可以避免網絡擁塞的情況發生。

TCP首部格式:

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章