**:
tcp/ip協議是乙個比較複雜的協議集,有很多專業書籍介紹。在此,我僅介紹其與程式設計密切相關的部分:乙太網上tcp/ip協議的分層結構及其報文格式。我們知道tcp/ip協議採用分層結構,其分層模型及協議如下表:
傳 輸 層
(transport)
tcp、udp
網 間 網層
(internet)
ip【arp、rarp、icmp】
網路介面層
(network)
ethernet、x.25、slip、ppp
協議採用分層結構,因此,資料報文也採用分層封裝的方法。下面以應用最廣泛的乙太網為例說明其資料報文分層封裝,如下圖所示:
任何通訊協議都有獨特的報文格式,tcp/ip協議也不例外。對於通訊協議程式設計,我們首先要清楚其報文格式。由於tcp/ip協議採用分層模型,各層都有專用的報頭,以下就簡單介紹乙太網下tcp/ip各層報文格式。
乙太網幀格式如下圖:
8位元組的前導用於幀同步,crc域用於幀校驗。這些使用者不必關心其由網絡卡晶元自動新增。目的位址和源位址是指網絡卡的實體地址,即mac位址,具有唯一性。幀型別或協議型別是指資料報的高階協議,如 0x0806表示arp協議,0x0800表示ip協議等。
「硬體型別」域指傳送者本機網路介面型別(值「1」代表乙太網)。「協議型別」域指傳送者所提供/請求的高階協議位址型別(「0x0800」代表ip協議)。「操作」域指出本報文的型別(「1」為arp請求,「2」為arp響應,「3」為rarp請求,「4」為rarp響應)。
ip資料報頭格式如下圖:
我們用微控制器實現tcp/ip協議要作一些簡化,不考慮資料分片和優先權。因此,在此我們不討論服務型別和標誌偏移域,只需填「0」 即可。協議「版本」為4,「頭長度」單位為32bit,「總長度」以位元組為單位,表示整個ip資料報長度。「標識」是資料報的id號,用於識別不同的ip資料報。「生存時間」 ttl是個數量及的概念,防止無用資料報一直存在網路中。一般每經過路由器時減一,因此通過ttl 可以算出資料報到達目的地所經過的路由器個數。「協議」域表示建立該資料報的高階協議型別。如 1表示icmp協議,6表示tcp協議,17表示 udp協議等。ip資料報為簡化資料**時間,僅採用頭校驗的方法,資料正確性由高層協議保證。
icmp(網間網控制報文協議)協議應用廣泛。在此僅給出最常見的回應請求與應答報文格式,使用者命令ping便是利用此報文來測試信宿機的可到達性。報文格式如下圖所示:
型別0 為回應應答報文,8 為回應請求報文。整個資料報均參與檢驗。注意icmp封裝在ip資料報裡傳送。
udp報文格式如下圖:
tcp報文格式如下圖:
tcp 是面向連線的可靠資料傳輸協議,因此比較複雜,在此僅作簡單介紹。「序號」指資料在傳送端資料流中的位置。「確認號」指出本機希望下乙個接收的位元組的序號。與ip校驗不同的是tcp,udp校驗採用偽頭標加整個報文一同校驗的方法。tcp協議工作原理另行介紹。
TCP IP協議詳解
一 tcp ip 和 iso osi iso osi模型,即開放式通訊系統互聯參考模型 open system interconnection reference model 是國際標準化組織 iso 提出的乙個試圖使各種計算機在世界範圍內互連為網路的標準框架,簡稱osi。tcp ip協議模型 tr...
TCP IP協議詳解
tcp ip協議並不是我們通常所認為的tcp協議和ip協議,而是基於tcp和ip這兩個最初的協議之上的不同的通訊協議的大集合。用於從應用程式到網路的資料傳輸控制。我們通常稱他們為tcp ip協議族,它是70年代中期美國國防部為其arpanet廣域網開發的網路體系結構和協議標準,其中大致包含了下面這些...
TCP IP協議分層詳解
一 tcp ip 和 iso osi模型區別 tcp ip 和 iso osi iso osi模型,即開放式通訊系統互聯參考模型 open system interconnection reference model 是國際標準化組織 iso 提出的乙個試圖使各種計算機在世界範圍內互連為網路的標準框...