**網路
tcp/ip協議是乙個比較複雜的協議集,有很多專業書籍介紹。在此,僅介紹其與程式設計密切相關的部分:乙太網上tcp/ip協議的分層結構及其報文格式。我們知道tcp/ip協議採用分層結構,其分層模型及協議如下表:
協議採用分層結構,因此,資料報文也採用分層封裝的方法。下面以應用最廣泛的乙太網為例說明其資料報文分層封裝,如下圖所示:
任何通訊協議都有獨特的報文格式,tcp/ip協議也不例外。對於通訊協議程式設計,我們首先要清楚其報文格式。由於tcp/ip協議採用分層模型,各層都有專用的報頭,以下就簡單介紹乙太網下tcp/ip各層報文格式。
乙太網幀格式如下圖:
8位元組的前導用於幀同步,crc域用於幀校驗。這些使用者不必關心其由網絡卡晶元自動新增。目的位址和源位址是指網絡卡的實體地址,即mac位址,具有唯一性。幀型別或協議型別是指資料報的高階協議,如 0x0806表示arp協議,0x0800表示ip協議等。
arp/rarp(位址解析/反向位址解析)報文格式如下圖:
「硬體型別」域指傳送者本機網路介面型別(值「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協議工作原理另行介紹。
這是我截圖的ip格式:
網路協議格式(二)
9.乙太網幀格式 46 1500 前導碼 時鐘同步,結束定界符 定界符 10101011 目的mac 源mac 型別 ip,arp,rarp 其他層資料 效驗碼 檢驗資料是否損壞 10.arp協議,位址解析協議 arp欺騙,構造arp資料報使兩台主機通訊,實際上是與乙個中間 資料報的三方通訊 arp...
(others)一些常見的幀格式
鏈路層常見報文格式及長度 2011 09 20 13 13 24 分類 1.ethernet幀 除去上層負載後長度為18位元組 以太幀有好多種,我們最常用到的是ethernet ii ethernet ii即dix 2.0 xerox與dec intel在1982年制定的乙太網標準幀格式。cisco...
網路 IP協議頭格式
網路層 在複雜的網路環境中確定乙個合適的路徑 路由選擇 網路層的目的是實現倆個端系統之間的資料透明傳輸,具體工能包括定址,路由選擇,連線的建立,保持和終止。ip協議 基本概念 節點 主機和路由器的統稱 ip協議的功能 定址和路由 根據對方的ip位址,尋找出最佳的路徑傳輸資訊 傳遞服務 不可靠 ip協...