標準TCP/IP協議棧模型

一、標準tcp/ip協議棧模型

      標準TCP/IP協議是用於計算機通信的一組協議,通常被稱爲TCP/IP協議棧,以它爲基礎組建的互聯網是目前國際上規模最大的計算機網絡。

TCP/IP協議棧是一組協議,包括TCP、Ip、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP和TFTP等多種協議,模型如圖

應用層
傳輸層
網絡層
網絡接口層

(1)網絡接口層:模型的基層,負責數據幀發送和傳輸,網絡接口層將幀格式的數據放到網絡上,或從網絡上把數據幀取下來。這是最接近硬件的底層

(2)網絡層:通過互聯協議將數據包封裝成互聯網數據包(IP packet),並運行必要的路由算法。這裏有四種互聯協議。

網際協議:負責在主機和網絡之間的路徑尋址和數據包路由。

地址解析協議ARP:獲得同一物理網絡中的主機硬件地址。

網際控制消息協議ICMP:發送消息,並報告有關數據包的傳送錯誤。

互聯組管理協議IGMP:用來實現本地多路廣播路由器報告。

(3)傳輸層:傳輸協議在主機之間提供通信回話。傳輸協議的選擇根據數據傳輸方式而定。主要有TCP(爲應用程序提供可靠的通信連接,使用於一次傳輸大批數據的情況,並適用於要求得到響應的應用程序)和UDP(提供無連接通信,且不對傳送包進行可靠性確認。適用於一次傳輸小量數據的情況,可靠性則由應用層確認)

(4)應用層:應用程序通過這一層訪問網絡 常見的FTP、HTTP、DNS和TELNET協議。

在TCP/IP協議模型的四層協議當中,各層數據包封裝情況如圖。發送數據時,將數據從最上層到最下層依次打包(加上報頭和部分尾部信息);在接收數據時,則將數據從最下層到最上層依次拆包(去掉報頭和部分尾部信息)這些打包和拆包操作就是TCP/IP協議棧完成。

MAC報頭 IP報頭 TCP報頭 數據
二、BSD面向連接的TCP通信編程

TCP/IP協議爲上層應用程序提供了同意的BSD Socket編程接口。進行上層應用時只需調用BSD Socket接口提供的函數即可。

圖爲面向連接的Socket通信的雙方執行函數流程。使用TCP協議的通信雙方實現數據通信的基本流程如下


建立連接的步驟:

1、首先服務器端需要以下工作:

(1)調用socket()函數,建立Socket對象,指定通信協議。

(2)調用bind()函數,將創建的Socket對象與當前主機的某一個IP地址和TCP端口綁定。

(3)調用listen()函數。使Socket對象處於監聽狀態,並設置監聽隊列大小。

2、客戶端的準備工作:

(1)調用socket函數,建立Socket對象,指定與服務器端相同的通信協議。

(2)應用程序可以調用bind()函數爲其綁定IP地址和端口,此工作也可交給TCP/IP完成。

3、建立通信連接

(1)客戶端調用connect()函數,向服務器端發出連接請求。

(2)服務端監聽到該請求,調用accept()函數接受請求,建立連接,並返回一個新的Socket文件描述符以專門處理該連接。

4、通信雙方發送/接收數據

(1)服務器端和客戶端分別調用write()或send()函數發送數據read或recv函數接收數據。

(2)通信完成後,通信雙方都需要調用close或shutdown來關閉Socket。

   

協議處理流程





三、輕量級TCP/IP協議和標準TCP/IP比較


比較對象 輕量級TCP/IP 標準TCP/IP
底層系統 直接面對硬件,實時性高 脫離底層硬件,分時爲基礎考慮整體效率
緩衝區 靜態空間分配,申請固定緩衝區,收到一個數據包後隨即處理一個數據包 不需要考慮內存大小,採取動態分配和靜態分配結合
IP層 可以不考慮IP數據包的路由功能,也可不實現IP數據包的分片和 重裝 實現完成的路由、分片、重組等功能
TCP層 每次只緩衝和發送一個數據包,可以不實現滑動窗口協議、流量控制和擁塞控制、往返時間估計、超時重發 實現滑動窗口協議、流量控制和擁塞控制、往返時間估計、超時重發等所有功能
接口 可以直接使用TCP/IP協議提供的通信服務函數作爲接口庫函數形式實現,應用程序可以通過直接調用這些函數實現網絡通信 作爲操作系統的一部分實現,需要遵循BSD Socket規範,實現BSD函數







發佈了29 篇原創文章 · 獲贊 13 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章