arp協議學習

2021-05-22 08:53:03 字數 4719 閱讀 9019

arp定義

arp(address resolution protocol,位址解析協議),是tcp/ip底層的協議,負責把ip位址轉為對應的mac位址(即網上48位的實體地址)。

之所以要arp協議,因為tcp/ip有兩個位址,網絡卡的48位實體地址和32位(ip4是32位,ip6是128位)的ip位址。而網絡卡的驅動程式工作在第一層,即鏈路層,只能識別48位的實體地址,不能識別工作在第二層網路層的ip位址。如,網絡卡不在混雜模式下,只接收自己實體地址的乙太網包和ffffffff的廣播位址乙太網包。所以需要乙個ip位址與實體地址的轉換對映。arp協議就是把ip位址轉換成實體地址的對映的一種協議。

arp實驗

本機的ip是192.168.6.2,閘道器192.168.6.254,子網掩網255.255.255.0,192.168.6.9是本網路不存在的乙個主機,192.168.6.1是本網路存在的乙個主機。

1、同乙個網路的不存在主機資料報訪問:

telnet 192.168.6.9 90

trying 192.168.6.9...

telnet: unable to connect to remote host: no route to host

10:50:52.487602 00:24:2c:e6:06:95 > ff:ff:ff:ff:ff:ff, ethertype arp (0x0806), length 42: ethernet (len 6), ipv4 (len 4), request who-has 192.168.6.9 tell 192.168.6.2, length 28

10:50:53.487601 00:24:2c:e6:06:95 > ff:ff:ff:ff:ff:ff, ethertype arp (0x0806), length 42: ethernet (len 6), ipv4 (len 4), request who-has 192.168.6.9 tell 192.168.6.2, length 28

10:50:54.487623 00:24:2c:e6:06:95 > ff:ff:ff:ff:ff:ff, ethertype arp (0x0806), length 42: ethernet (len 6), ipv4 (len 4), request who-has 192.168.6.9 tell 192.168.6.2, length 28

分析:對於同一網路的訪問,本機如果在快取的arp不存在記錄,就會向網路發廣播請求(一般網路的廣播位址為ff:ff:ff:ff:ff:ff),如果發了三次都沒有主機回應,就會判斷此網路沒有此主機。

2、同乙個網路的存在主機資料報訪問:

telnet 192.168.6.1 90

11:03:13.766703 00:24:2c:e6:06:95 > ff:ff:ff:ff:ff:ff, ethertype arp (0x0806), length 42: ethernet (len 6), ipv4 (len 4), request who-has 192.168.6.1 tell 192.168.6.2, length 28

11:03:13.780199 00:21:29:6c:eb:e2 > 00:24:2c:e6:06:95, ethertype arp (0x0806), length 42: ethernet (len 6), ipv4 (len 4), reply 192.168.6.1 is-at 00:21:29:6c:eb:e2, length 28

11:03:13.780223 00:24:2c:e6:06:95 > 00:21:29:6c:eb:e2, ethertype ipv4 (0x0800), length 74: (tos 0x10, ttl 64, id 35044, offset 0, flags [df], proto tcp (6), length 60)

192.168.6.2.45654 > 192.168.6.1.90: flags [s], cksum 0xe512 (correct), seq 2666822389, win 5840, options [mss 1460,sackok,ts val 2028049 ecr 0,nop,wscale 6], length 0

11:03:16.758611 00:24:2c:e6:06:95 > 00:21:29:6c:eb:e2, ethertype ipv4 (0x0800), length 74: (tos 0x10, ttl 64, id 35045, offset 0, flags [df], proto tcp (6), length 60)

192.168.6.2.45654 > 192.168.6.1.90: flags [s], cksum 0xe224 (correct), seq 2666822389, win 5840, options [mss 1460,sackok,ts val 2028799 ecr 0,nop,wscale 6], length 0

11:03:22.758628 00:24:2c:e6:06:95 > 00:21:29:6c:eb:e2, ethertype ipv4 (0x0800), length 74: (tos 0x10, ttl 64, id 35046, offset 0, flags [df], proto tcp (6), length 60)

分析:對於同一網路的訪問,本機如果在快取的arp不存在記錄,就會向網路發廣播請求(一般網路的廣播位址為ff:ff:ff:ff:ff:ff)。192.168.6.2先向ff:ff:ff:ff:ff:ff傳送廣播請求。192.168.6.1收到廣播請求,發現是自己的ip位址,就會向匯流排傳送自己的實體地址封裝在arp應答報文以192.168.6.2的實體地址為目的地的乙太網包。192.168.6.2收到arp應答,知道192.168.6.1位址的存在,就會向192.168.6.1的實體地址為目的地傳送tcp建立連線的同步(sync,flag為s)的同步請求,接著進一步的通訊。

2、不同乙個網路的主機資料報訪問:

telnet 192.168.7.1 90

11:21:21.857350 00:24:2c:e6:06:95 > 00:21:29:70:a5:8e, ethertype ipv4 (0x0800), length 74: (tos 0x10, ttl 64, id 1566, offset 0, flags [df], proto tcp (6), length 60)

192.168.6.2.41104 > 192.168.7.1.90: flags [s], cksum 0x32a9 (correct), seq 2546343607, win 5840, options [mss 1460,sackok,ts val 2300073 ecr 0,nop,wscale 6], length 0

11:21:24.858616 00:24:2c:e6:06:95 > 00:21:29:70:a5:8e, ethertype ipv4 (0x0800), length 74: (tos 0x10, ttl 64, id 1567, offset 0, flags [df], proto tcp (6), length 60)

192.168.6.2.41104 > 192.168.7.1.90: flags [s], cksum 0x2fba (correct), seq 2546343607, win 5840, options [mss 1460,sackok,ts val 2300824 ecr 0,nop,wscale 6], length 0

11:21:30.862609 00:24:2c:e6:06:95 > 00:21:29:70:a5:8e, ethertype ipv4 (0x0800), length 74: (tos 0x10, ttl 64, id 1568, offset 0, flags [df], proto tcp (6), length 60)

192.168.6.2.41104 > 192.168.7.1.90: flags [s], cksum 0x29de (correct), seq 2546343607, win 5840, options [mss 1460,sackok,ts val 2302324 ecr 0,nop,wscale 6], length 0

分析:對於不一網路的訪問。主機不會向本地網路發arp請求,而是把請求封裝在ip包,發往本地的路由器。00:21:29:70:a5:8e是本地的路由器的實體地址。在本地看到沒有查詢192.168.7.1的arp請求。本地的路由器會根據路由表把資料傳輸到對應的網路。ip的資料報有ttl時間,每當過乙個路由就會減1,如果目標不可達,或者ttl為0時,就會向發起方返回icmp的報文。

arp總結

arp協議主要把ip位址轉為mac位址,用來給第一層的鏈路層獲得實體地址。

arp欺騙

arp欺騙,存在的形式:

1,發出虛假的arp請求。因為在乙太網,你發出arp請求時,別人在偵聽的主機收到arp請求後,都要在緩衝的arp表,更新arp對映。如果這個arp請求是假的,那麼arp對映就會不對。會造成訪問異常。如a本來在跟c通訊的,而此時b發了乙個假的arp請求(把c的ip位址指向自己),就會把a的緩衝的arp對映改了。結果c收不到資訊。造成通訊中斷。

2,虛假的arp應答。如,a在訪問c,但a不知道c的實體地址,就發乙個arp請求,而b就發了乙個虛假的arp應答給a,告訴a c的實體地址是自己的實體地址。這樣,a就會向b傳送資訊。

arp欺騙解決方法,修改協議就不太靠譜:

1,減少arp緩衝的重新整理時間。在繁忙網路會加劇網路繁忙。

2,實施靜態的arp。這樣,對於靜態的arp就不會過期和重新整理。對網路管理成本高,因為每台主機更新實體地址都行變動。

3,禁止arp。不在arp表的主機將不能進行通訊。

網路層arp協議學習

arp協議 點對點鏈路不使用arp協議 arp協議的分組格式理解難點 對於乙個arp請求來說,除了目的端硬體位址外的其他所有欄位都是有填充值的,當系統收到乙份目的端為本機的arp請求報文後,他就把硬體位址填進去 然後用兩個目的端位址分別替換兩個傳送端位址,並把操作字段換成2,最後傳送出去 這裡要注意...

arp之協議學習路線

arp address resolution protocol 即位址解析協議,用於實現從 ip 位址到 mac 位址的對映,即詢問目標ip對應的mac位址。在網路通訊中,主機和主機通訊的資料報需要依據osi模型從上到下進行資料封裝,當資料封裝完整後,再向外發出。所以在區域網的通訊中,不僅需要源目i...

LWIP協議棧學習 一 ARP協議

arp所實現的功能就是通過ip位址獲取到mac位址,並且將ip和mac對映到一起,儲存到arp表中.dest mac src mac frame type hardware type protocol type hardware addr len protocol addr len opsend m...