1. 程式人生 > >網路協議:TCP/IP 和UDP/IP 、滑動視窗

網路協議:TCP/IP 和UDP/IP 、滑動視窗

TCP

TCP/IP(Transmission Control Protocol/Internet Protocol)是一種可靠的網路資料傳輸控制協議。定義了主機如何連入因特網以及資料如何在他們之間傳輸的標準。
TCP/IP協議參考模型把所有TCP/IP系列協議歸類到四個抽象層中; 
每一個抽象層建立在低一層提供的服務上,並且為高一層提供服務。

這裡寫圖片描述

OSI模型(開放式系統互聯通訊參考模型),它是由國際標準化組織提出的,試圖使各種計算機在世界範圍內互聯為網路的標準框架
OSI模型(7層)多了表達層、會話層

三次握手協議

四次揮手協議

單工:資料傳輸只支援資料在一個方向上傳輸。
半雙工:資料傳輸允許資料在兩個方向上傳輸,但是在某一時刻,只允許在一個方向上傳輸,實際上有點像切換方向的單工通訊。
全雙工:資料通訊允許資料同時在兩個方向上傳輸,因此全雙工是兩個單工通訊方式的結合,它要求傳送裝置和接收裝置都有獨立的接收和傳送能力。

TCP通訊原理

首先,對於TCP通訊來說,每個TCP Socket的核心中都有一個傳送緩衝區和一個接收緩衝區,TCP的全雙工的工作模式及TCP的滑動視窗就是依賴於這兩個獨立的Buffer和該Buffer的填充狀態。 
接收緩衝區把資料快取到核心,若應用程序一直沒有呼叫Socket的read方法進行讀取,那麼該資料會一直被快取在接收緩衝區內。不管程序是否讀取Socket,對端發來的資料都會經過核心接收並快取到Socket的核心接收緩衝區。
Read所要做的工作,就是把核心接收緩衝區中的資料複製到應用層使用者的Buffer裡。

程序呼叫Socket的send傳送資料的時候,一般情況下是將資料從應用層使用者的Buffer裡複製到Socket
的核心傳送緩衝區,然後send就會在上層返回。換句話說,send返回時,資料不一定會被髮送到對端。

這裡寫圖片描述

這裡寫圖片描述

什麼是滑動視窗協議

傳送方和接收方都會維護一個數據幀的序列,這個序列被稱作視窗。傳送方的視窗大小由接收方確認,目的是控制傳送速度,以免接收方的快取不夠大導致溢位,同時控制流量也可以避免網路擁塞。

這裡寫圖片描述

明白了Socket讀寫資料的底層原理,我們就很容易理解"阻塞模式":對於讀取Socket資料的過程而言,如果接收緩衝區為空,則呼叫Socket的read方法的執行緒會阻塞,直到有資料進入接收緩衝區;而對於寫資料到Socket中的執行緒來說,如果待發送的資料長度大於傳送緩衝區空餘長度,則會阻塞在write方法上,等待發送緩衝區的報文被髮送到網路上,然後繼續傳送下一段資料,迴圈上述過程直到資料都被寫入到傳送緩衝區為止

這裡寫圖片描述

這裡寫圖片描述

Muticast(組播)

單播
廣播
組播