c:/documents and settings/xiaoj>arp -a
inte***ce: 192.1.8.84 on inte***ce 0x1000003
internet address physical address type
192.1.8.12 00-0b-cd-03-c4-27 dynamic
192.1.8.15 00-0d-9d-93-09-f5 dynamic
192.1.8.18 00-e0-18-c1-86-3d dynamic
192.1.8.26 00-80-2d-78-4f-81 dynamic
192.1.8.33 00-0b-cd-0f-a4-c5 dynamic
192.1.8.38 00-30-6e-36-5f-99 dynamic
192.1.8.86 00-0b-cd-b8-0c-ae dynamic
192.1.8.247 00-50-ba-e5-20-af dynamic
192.1.8.248 00-0d-56-19-ba-56 dynamic 第一列顯示的是主機的ip位址,第二列就是主機的網絡卡mac位址。
arp協議就是提供ip位址到對應的硬體位址提供動態對映。這個過程一般是系統自動完成的。arp傳送乙份arp請求給乙太網上的主機,該請求中包含目的主機的ip位址,其意思是「如果你是這個ip的擁有者,請回答你的硬體位址」。當目的主機的arp層收到這份廣播報文時,識別出這是傳送端在詢問它的ip位址,於是就會傳送乙個arp應答,這個arp應答包括ip位址及對應的硬體位址。
二、 arp分組格式
乙太網目的位址6 乙太網源位址6 幀型別2 硬體型別2 協議型別2 硬體位址長度
1 協議位址長度1 請求應答1 傳送者硬體位址6 傳送者ip位址
4 目的硬體位址6 目的ip位址4
先看定義:
//arp首部
struct arphdr(
u_short ar_hrd; //硬體型別
u_short ar_pro; //協議型別
u_char ar_hln; //硬體位址長度
u_char ar_pln; //協議位址長度
u_short ar_op; // 請求還是應答
u_char arp_sha[6]; //傳送者硬體位址
u_char arp_spa[4]; //傳送者ip位址
u_char arp_tha[6]; //目的硬體位址
u_char arp_tpa[4]; //目的ip位址
u_char arp_zero[18]; //填充字段
};說明:◆乙太網目的位址全為1的特殊位址為廣播位址。
◆ 乙太網幀型別arp對應的值為0x0806。
◆ 硬體型別表示硬體位址的型別,乙太網為1。
◆ 協議型別字段表示要對映的協議位址型別,ip位址對應的值為0x0800。
◆ 硬體位址長度:乙太網為6。
◆ 協議位址長度:乙太網為4,即ip位址長度。
◆ 操作字段:arp請求=1,arp應答=2,rarp請求=3,rarp應答=4。
◆ 當系統收到乙份目的端為本機的arp請求報文時,它就把硬體位址填進去,然後用兩個目的端位址分別替換兩個傳送端位址,並把操作欄位置為2,最後把它傳送出去。
三、 arp**:
如果arp請求是從乙個網路的主機發往另乙個網路的主機,那麼連線這兩個網路的路由器可以回答該請求,這個過程稱為arp**,這樣可以欺騙發起arp請求的傳送端,使它誤以為路由器就是目的主機。
四、 免費arp
指主機啟動時傳送arp查詢自己的ip位址,主要作用:
1、 查詢網路上有沒有相同的ip位址。
2、 更新arp快取。
五、 rarp協議:逆位址解析協議,這裡就不詳細介紹了。
rarp協議一般用於無盤工作站,根據硬體位址查詢ip位址。
rarp分組格式與arp分組格式相同。
六、 icmp協議:internet控制報文協議:
icmp經常被認為是ip層的乙個組成部分,它傳遞差錯報文以及其他需要注意的事項。icmp報文通常被ip層或更高層協議(tcp或udp)使用。icmp報文是在ip資料報內部被傳輸的。icmp報文包差錯報文和查詢報文。報文格式如下:
8位型別 8位** 16位檢驗和
不同型別和**有不同的內容
型別字段可以有15個不同的值(0、3-5、8-18)。某些報文還使用**欄位來進一步描述不同的條件。檢驗和字段覆蓋整個icmp報文,與ip首部檢驗和演算法是一樣的。
以下情況不會產生icmp差錯報文:
◆ icmp差錯報文
◆ 目的位址為廣播位址或者多播位址
◆ 作為鏈路層的資料報
◆ 不是ip分片的第一片
◆ 源位址不是單個主機的資料報,也即源位址不能為0位址、環迴位址、廣播位址或多播位址
型別(17或18) **(0) 檢驗和
識別符號 序列號
32位子網掩碼
icmp報文中的識別符號和序列號由傳送端任意選擇設定,這些值在應答中將被返回。
struct icmp_mask;說明:rfc規定,除非是位址掩碼的授權**,否則不能傳送位址掩碼應答。
向本機ip位址和環迴位址傳送位址掩碼請求結果是一樣的。
八、 icmp時間戳請求與應答:
icmp時間戳請求允許系統向另乙個系統查詢當前時間,返回的是自午夜開始記算的毫秒數。呼叫者必須通過其他方法獲取當前時間。
icmp時間戳請求與應答報文格式如下:
型別(13或14) **(0) 檢驗和
識別符號 序列號
發起時間戳
接收時間戳
傳送時間戳
請求端填寫發起時間戳,然後傳送報文。應答系統收到報文填寫接收時間戳,傳送應答時填寫傳送時間戳。實際上,大多數實現將後兩個字段一般設定為一樣的。
struct icmp_time;九、 icmp埠不可達差錯
主機如果收到乙份udp資料報而目的埠與某個正在使用的程序,那麼udp返回乙個icmp不可達報文。報文格式如下:
型別3 **(0-15) 檢驗和
保留(必須為0)
ip首部+原始ip資料報中資料的前8個位元組
當**為4時,路徑mtu發現機制允許路由器把外出介面的mtu填在這個32bit的低16bit中。
struct icmp_unreach
TCP IP學習筆記(二)
tcp ip學習筆記 二 一 arp 位址解析協議 先看 c documents and settings xiaoj arp a inte ce 192.1.8.84 on inte ce 0x1000003 internet address physical address type 192.1...
TCP IP筆記 二 TCP IP簡介
上回,主要介紹了下協議和osi參考模型,並簡單了解下網路構成要素,這回該說說tcp ip了 網際網路進行通訊時,需要相應的網路協議,tcp ip原本就是為使用網際網路而開發定製的協議族。因此,網際網路的協議就是tcp ip,tcp ip就是網際網路的協議。知道了解tcp ip的重要性了吧,那就好好看...
TCP IP學習筆記之二 鏈路層
在tcp ip協議族中,鏈路層是其最底層協議,主要有三個目的 1 為ip模組傳送和接收ip資料報 2 為arp模組傳送arp請求和接收arp應答 3 為rarp傳送rarp請求和接收rarp應答。在tcp ip世界中,乙太網ip資料報的封裝是在rfc894 hornig1984 中定義的,ieee8...