計算機網路 二 TCP連線

2022-08-15 19:24:12 字數 2471 閱讀 7822

客戶端傳送乙個syn給服務端,syn是由乙個演算法計算出來的, 同時把syn標誌位置為1 ,服務端接收之後 , 傳送ack,ack為客戶端傳送的syn+1,並且傳送自己的syn,並把synack標誌位置為1

跟上面的一樣,ack也是用syn+1表示

這個要從初始化socket和確定序列號和視窗大小

①    避免歷史重複連線

當之前因為網路阻塞等原因而延遲到達的syn,服務端回覆ack,但是客戶端會根據自身的上下文判斷這是乙個歷史連線,客戶端就會傳送乙個rst給服務端,表示中止連線

②    同步雙方初始化序列號

③    避免資源浪費

如果只有兩次握手,那麼當網路阻塞的時候,客戶端會傳送很多個syn,服務端每次接收到傳送ack就會立即建立連線,就會建立很多個連線。

因為如果出現丟包情況,ip層是沒有重傳機制的,會交給tcp進行重傳,會重新傳整個tcp報文,所以當tcp也有分片的時候,如果出現了丟包,那麼tcp只會重傳mss單位的資料。

服務端的syn佇列被塞滿,

應對方法:使用cookie

tcp有乙個「保活機制」,傳送乙個探測報文,該探測報文包含的資料非常少,如果連續幾個探測報文都沒有得到相應,則認為當前的tcp連線已死。

定義乙個時間段,在這個時間段內,如果沒有任何連線相關的活動,tcp 保活機制會開始作用,每隔乙個時間間隔,傳送乙個探測報文,該探測報文包含的資料非常少,如果連續幾個探測報文都沒有得到響應,則認為當前的 tcp 連線已經死亡,系統核心將錯誤資訊通知給上層應用程式。

客戶端傳送了fin之後,只是表示客戶端不傳送資料了而已,但是服務端可能還有**處理和傳送的資料,等到服務端不再傳送資料的時候,才傳送fin給客戶端

報文最大生存時間

網路中可能存在來自傳送方的資料報,當這些傳送方的資料報被接收方處理後又會向對方傳送響應,所以一來一回需要等待2倍的時間

msl

msl 與 ttl 的區別

①防止舊連線的資料報

如果接收到fin之後就立馬斷開的話,如果網路延遲,還有資料報文還沒到達服務端,過了一會又傳送到了,這樣子就又得重新建立連線

②保證連線正確關閉

tcpudp

有連線無連線

一對一一對一,一對多,多對多,多對一

可靠傳輸

盡最大努力交付,不保證可靠交付資料

首部開銷大

有擁塞控制和流量控制                  

tcp經常用於 ftp/檔案傳輸

sack( selective acknowledgment 選擇性確認)。

視窗大小就是指無需等待確認應答,而可以繼續傳送資料的最大值。舉個栗子,比如我一次性可以傳送100條資料,不管服務端有沒有收到,反正我這邊就發出100個。

視窗的實現實際上是作業系統開闢的乙個快取空間,傳送方主機在等到確認應答返回之前,必須在緩衝區中保留已傳送的資料。如果按期收到確認應答,此時資料就可以從快取區清除。

tcp提供一種機制可以讓「傳送方」根據「接收方」的實際接收能力控制傳送的資料量,這就是所謂的流量控制

在網路出現擁堵時,如果繼續傳送大量資料報,可能會導致資料報時延、丟失等,這時tcp就會重傳資料,但是一重傳就會導致網路的負擔更重,於是會導致更大的延遲以及更多的丟包,這個情況就會進入惡性迴圈被不斷地放大….

擁塞控制,控制的目的就是避免「傳送方」的資料填滿整個網路。

計算機網路 TCP的連線建立

tcp的連線建立又稱為三次握手,謝希仁版教材中成為三報文握手,即客戶端程序與伺服器端程序通過三次報文的傳輸建立了tcp連線。首先tcp首部為 連線流程 注意 序號 自己傳送的報文段的資料的第乙個位置序號。確認ack 僅當ack 1的時候確認號字段才有效,規定建立連線後所有的報文段的ack 1。同步s...

計算機網路 TCP協議

tcp 傳送的資料單元稱為報文段。乙個 tcp 報文段分為 tcp 首部和 tcp 資料兩部分,整個 tcp 報文段作為 ip 資料報的資料部分封裝在 ip 資料報中,如圖所示 各欄位意義如下 tcp 是面向連線的協議,因此每個 tcp 連線都有三個階段 建立連線 資料傳送和連線釋放。tcp 連線的...

計算機網路 TCP協議

tcp協議是面向連線的協議,把連線作為最基本的抽象。每一條tcp連線唯一的被通訊兩端的兩個端點所確定。tcp協議是點對點,而不是點對多點。端點又被稱為套接字,tcp協議規定,ip位址拼接埠號就構成套接字。1 可靠資料運輸原理 1 tcp協議傳送兩種資料報,一種資料報用來傳輸資料,一種資料報用來傳送控...