三次握手的目的是建立可靠的通訊通道,說到通訊,簡單來說就是資料的傳送與接收,而三次握手最主要的目的就是雙方確認自己與對方的傳送與接收是正常的。
所以三次握手就能確認雙發收發功能都正常,缺一不可。
c:「我準備走了」
s:「哦,好的,我知道了,等等我還有話沒說完」
s:「我說完了」
c:「好的,那我走了」
s:收起茶杯。
c:在大門口等一會再走。【有可能會丟包,如果此時客戶端直接斷開連線,萬一最後那句「好的,那我走了」戶主沒聽見,茶杯就一直放在桌上了,如果過了等待時間還沒收到客人的回應,戶主還會喊出「我說完了」,然後客人在大門口就可以繼續回應「好的,那我走了」】
close-wait 狀態就是為了保證伺服器在關閉連線之前將待傳送的資料傳送完成。一般乙個 close_wait 會維持至少 2 個小時的時間,我們可以通過調整引數來縮短這個時間。
time-wait 狀態為了防止發生最後確認丟包,導致伺服器無法釋放資源,所以等待兩倍傳輸時延的時間,確保伺服器端已經釋放了資源
高並發短連線的 tcp 伺服器上,伺服器上會有大量的連線處於 time_wait 狀態,伺服器維護每乙個連線需要乙個 socket,占用乙個檔案描述符,檔案描述符的使用是有上限的,如果持續高併發,會導致一些連線失敗。
資料分塊:應用資料被分割成 tcp 認為最適合傳送的資料塊。
tcp 給傳送的每乙個包進行編號,接收方對資料報進行排序,把有序資料傳送給應用層。
校驗和:tcp 將保持它首部和資料的檢驗和。這是乙個端到端的檢驗和,目的是檢測資料在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,tcp 將丟棄這個報文段和不確認收到此報文段。
tcp 的接收端會丟棄重複的資料。
流量控制:tcp 連線的每一方都有固定大小的緩衝空間,tcp的接收端只允許傳送端傳送接收端緩衝區能接納的資料。當接收方來不及處理傳送方的資料,能提示傳送方降低傳送的速率,防止包丟失。tcp 使用的流量控制協議是可變大小的滑動視窗協議。 (tcp 利用滑動視窗實現流量控制)
擁塞控制:當網路擁塞時,減少資料的傳送。
超時重傳:當 tcp 發出乙個段後,它啟動乙個定時器,等待目的端確認收到這個報文段。如果不能及時收到乙個確認,將重發這個報文段。
傳送方在等待一段時間後仍然沒有收到接收方的確認,重傳前面傳送過的資料。
tcp 利用滑動視窗實現流量控制。流量控制是為了控制傳送方傳送速率,保證接收方來得及接收。接收方傳送的確認報文中的視窗字段可以用來控制傳送方視窗大小,從而影響傳送方的傳送速率。將視窗字段設定為 0,則傳送方不能傳送資料。
慢開始
由小到大逐漸增大傳送視窗,也就是由小到大逐漸增大擁塞視窗數值。cwnd初始值為1,每經過乙個傳播輪次,cwnd加倍。
為了防止擁塞視窗增長過大而引起網路擁塞,另外設定了乙個慢開始門限 ssthresh。
擁塞避免
當網路擁塞發生時,讓新的慢開始門限值變為發生擁塞時候的值的一半,並將擁塞視窗置為 1 ,然後再次重複兩種演算法(慢開始和擁塞避免)。
快重傳
如果接收機接收到乙個不按順序的資料段,它會立即給傳送機傳送三個重複確認。
快恢復
如果傳送端接收到三個重複確認,它會假定確認件指出的資料段丟失了,可能發生了網路擁塞,並立即重傳這些丟失的資料段。
因為有可能發生了擁塞,設定新的擁塞視窗為可能發生擁塞的時候的1/2,然後開始擁塞視窗的線性增長
min[擁塞視窗, 流量視窗]。
傳送方寫入的資料大於套接字緩衝區的大小
傳送方寫入的資料小於套接字緩衝區大小,當傳送方收集了多個較小的分組,就會一起傳送給對端,
① 在訊息的頭部新增訊息長度字段,服務端獲取訊息頭的時候解析訊息長度,然後向後讀取相應長度的內容。
② 固定訊息資料的長度,服務端每次讀取既定長度的內容作為一條完整訊息,當訊息不夠長時,空位補上固定字元。但是該方法會浪費網路資源。
③ 設定訊息邊界,也可以理解為分隔符,服務端從資料流中按訊息邊界分離出訊息內容,一般使用換行符。
計算機網路 傳輸層
為什麼要劃分傳輸層?既然網路層已經能把源主機上發出的資料傳送給目的主機,那麼為什麼還需要加上乙個傳輸層呢?這就需要我們理解主機使用者應用層通訊的主體,位於兩台網路主機中真正的資料通訊主體並不是這兩台主機,而是兩台主機中的各種網路應用程序.同一時間一台主機上可能有多個程序同時執行,這時候就需要為應用程...
計算機網路(傳輸層)
網路層提供了主機之間的邏輯通訊,運輸層為運輸在不同主機上的程序之間提供了邏輯通訊。運輸層協議是在端系統中而不是在路由器中實現的。運輸協議能夠提供的服務常常受制於底層網路層協議的服務模型。底層無法提供時延或頻寬保證,運輸層協議也無法提供。但是即使底層網路協議不可靠,運輸協議也可以提供可靠的資料傳輸服務...
計算機網路 傳輸層
運輸層最重要的兩種協議 tcp協議,udp協議 真正的通訊 兩個主機之間應用程序的通訊 運輸層的重要功能 1 復用 傳送方的不同應用程序使用同乙個運輸層協議傳輸資料 應用層 運輸層 2 分用 接收方的運輸層在剝去報文首部後把資料真正交付到目的應用程序 運輸層 應用層 網路層和運輸層的區別 網路層說明...