TCP IP學習筆記(二)

2021-05-21 17:59:53 字數 3115 閱讀 6294

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...