1. 程式人生 > >linux網路通訊模型

linux網路通訊模型

一、網路通訊

網路是通過物理鏈路將各個孤立的工作站或主機相連在一起,組成資料鏈路,從而達到資源共享和通訊的目的,通過資訊交換實現人與人、人與計算機、計算機與計算機之間的通訊。

1. 網路通訊要遵守網路協議,區域網中最常用的有三個網路協議:MICROSOFT的NETBEUI、NOVELL的IPX/SPX和TCP/IP協議。

a> NetBEUI - 網路基本輸入輸出系統擴充套件使用者介面。NETBEUI是為IBM開發的非路由協議,用於攜帶NETBIOS通訊。NETBEUI缺乏路由和網路層定址功能,既是其最大的優點,也是其最大的缺點。

b> IPX/SPX - 互連網包交換/順序包交換。IPX是NOVELL用於NETWARE客戶端/伺服器的協議群組,具有完全的路由能力,但是可擴充套件性受到其高層廣播通訊和高開銷的限制。

c> TCP/IP允許與Internet完全的連線,這是其它協議不具備的。同時具備了可擴充套件性和可靠性的需求,但是不犧牲了速度和效率。

二、TCP/IP協議

1. 參考模型

國際標準化組織(ISO)定義了網路協議的基本框架,被稱為OSI模型。OSI模型包括應用層、表示層、會話層、傳輸層、網路層、資料鏈路層及物理層。這個7層的協議模型雖然規定得非常細緻和完善,但在實際中卻得不到廣泛的應用,其重要的原因之一就在於它過於複雜,但它仍是此後很多協議模型的基礎。與此相區別的TCP/IP協議模型將OSI的7層協議模型簡化為4層,從而更有利於實現和使用。TCP/IP協議模型包括應用層、傳輸層、網路層、網路介面層。



2. TCP/IP協議的4層協議

TCP/IP協議是網路中使用的基本通訊協議。

網路介面層:網路介面層是TCP/IP的最底層,負責將二進位制流轉換成資料幀,並進行資料幀的傳送和接收。資料幀是網路傳輸的基本單元。
網路層:網路層負責在主機之間的通訊中選擇資料包的傳輸路徑,即 路由。當網路收到傳輸層的請求後,使用路由演算法來確定是直接交付資料包,還是把它傳遞給路由器,最後把資料包交給適當的網路介面進行傳輸。
傳輸層:負責實現應用程式之間的通訊服務,又稱為端到端通訊,傳輸層要提供可靠的傳輸服務,以確保資料到達無差錯、無亂序。為了達到這個目的,傳輸層協議軟體要進行協商。傳輸層協議軟體要把傳輸的資料流分為分組。
應用層:應用層是分層模型的最高層。應用程式使用相應的應用層協議,把封裝好的資料交給傳輸層或是傳輸層接收資料並處理。

3. 分層模型圖


4. TCP與UDP的概念

TCP(傳輸控制協議):為應用程式提供可靠的通訊連線,適合一次傳輸大批資料的情況,並適應要求得到相應的應用程式。

UDP(使用者資料包協議):提供無連線通訊,且不對傳送包進行可靠的保證,適合一次傳輸少量資料。

三、TCP協議

TCP是TCP/IP體系中面向連線的傳輸層協議,提供全雙工和可靠交付的服務,採用許多機制來確保資料的可靠性。

首先,TCP為傳送的資料加上序列號,來保證資料能被接收方接收,且只能被正確接收一次。其次,TCP採用具有重傳功能的確認技術作為可靠資料流傳輸服務的基礎。由於傳送方接收到資料之後會返回一個ACK訊號,所以傳送方檢測ACK訊號來判斷是否接收成功。如果接收失敗,就會重新發送剛才的資料。最後,TCP採用可變長的滑動視窗協議進行流量控制,防止傳送方與接收方資料不匹配造成資料丟失。採用可變長的滑動視窗,可以對接收/傳送的資料進行動態調節,靈活性更強。

四、UDP協議

UDP也是TCP/IP體系中面向連線的傳輸層協議,是一種無連線協議,因此不需要三次握手來建立連線。UDP協議比TCP協議更為高效,解決了實時性的問題。