地址解析協議 (ARP) 是什么

地址解析協議?(ARP) 是通過解析網路層地址來找尋數據鏈路層地址的一個在網絡協議包中極其重要的網絡傳輸協議。?


ARP是通過網絡地址(例:IPv4)來定位MAC地址?(也稱為乙太地址)。?

ARP已經在很多網路層和數據鏈接層之間得以實現,包括IPv4,Chaosnet,?DECnet和Xerox?PARC Universal Packet?(PUP) 使用IEEE 802標準,?光纖分布式數據接口,?X.25,?幀中繼和異步傳輸模式?(ATM),?IEEE 802.3和IEEE 802.11標準上IPv4占了多數流量。

在IPv6中鄰居發現協議?(NDP)用于代替地址解析協議。


在以太網協議中規定,同一局域網中的一臺主機要和另一臺主機進行直接通信,必須要知道目標主機的MAC地址。而在TCP/IP協議中,網絡層和傳輸層只關心目標主機的IP地址。這就導致在以太網中使用IP協議時,數據鏈路層的以太網協議接到上層IP協議提供的數據中,只包含目的主機的IP地址。于是需要一種方法,根據目的主機的IP地址,獲得其MAC地址。這就是ARP協議要做的事情。所謂地址解析(address resolution)就是主機在發送幀前將目標IP地址轉換成目標MAC地址的過程。


另外,當發送主機和目的主機不在同一個局域網中時,即便知道目的主機的MAC地址,兩者也不能直接通信,必須經過路由轉發才可以。所以此時,發送主機通過ARP協議獲得的將不是目的主機的真實MAC地址,而是一臺可以通往局域網外的路由器的MAC地址。于是此后發送主機發往目的主機的所有幀,都將發往該路由器,通過它向外發送。這種情況稱為委托ARP或ARP代理(ARP Proxy)

在點對點鏈路中不使用ARP,實際上在點對點網絡中也不使用MAC地址,因為在此類網絡中分別已經獲取了對端的IP地址。

數據包結構

地址解析協議的消息格式很簡單,僅包含單一的地址解析請求或響應。ARP 消息的長度取決于上下兩層地址的大小,上層地址由所使用的網絡協議類型(通常是?IPv4)決定,下層地址則由上層協議所使用的硬件或虛擬鏈路層的類型決定。消息的報頭中包含了這些類型以及對應的地址長度信息,此外還包含了表示請求(1)和應答(2)的操作碼。數據包的有效負載為收發雙方的硬件地址、協議地址,總計四個地址。

為了把IP地址映射到48位以太網地址用于傳輸,需要一個體現地址轉換協議的包格式。

以太網傳輸層

  • 目標以太網地址:目標MAC地址。FF:FF:FF:FF:FF:FF (二進制全1)為廣播地址。
  • 源以太網地址:發送方MAC地址。
  • 幀類型:以太類型,ARP為0x0806。

以太網報文數據

  • 硬件類型:如以太網(0x0001)、分組無線網。
  • 協議類型:如IP網際協議(0x0800)、IPv6(0x86DD)。
  • 硬件地址長度:每種硬件地址的字節長度,一般為6(以太網)。
  • 協議地址長度:每種協議地址的字節長度,一般為4(IPv4)。
  • 操作碼:1為ARP請求,2為ARP回顯,3為RARP請求,4為RARP應答。
  • 源硬件地址:n個字節,n由硬件地址長度得到,一般為發送方MAC地址。
  • 源協議地址:m個字節,m由協議地址長度得到,一般為發送方IP地址。
  • 目標硬件地址:n個字節,n由硬件地址長度得到,一般為目標MAC地址。
  • 目標協議地址:m個字節,m由協議地址長度得到,一般為目標IP地址。

報文格式

長度(位)4848161616881648324832
數據類型目標以太網地址源以太網地址幀類型硬件類型協議類型硬件地址長度協議地址長度操作碼源硬件地址源協議地址目標硬件地址目標協議地址
組成14字節 以太網首部28字節 ARP請求/應答

原理

在Windows命令行查看ARP緩存表

在每臺安裝有TCP/IP協議的電腦或路由器里都有一個ARP緩存表,表里的IP地址與MAC地址是一對應的,如下表所示。

主機名稱IP地址MAC地址
A192.168.38.1000-AA-00-62-D2-02
B192.168.38.1100-BB-00-62-C2-02
C192.168.38.1200-CC-00-62-C2-02
D192.168.38.1300-DD-00-62-C2-02
E192.168.38.1400-EE-00-62-C2-02
.........

以主機A(192.168.38.10)向主機B(192.168.38.11)發送數據為例。

1.當發送數據時,主機A會在自己的ARP緩存表中尋找是否有目標IP地址。如果找到就知道目標MAC地址為(00-BB-00-62-C2-02),直接把目標MAC地址寫入幀里面發送就可。


2.如果在ARP緩存表中沒有找到相對應的IP地址,主機A就會在網絡上發送一個廣播(ARP request),目標MAC地址是“FF.FF.FF.FF.FF.FF”,這表示向同一網段內的所有主機發出這樣的詢問:“192.168.38.11的MAC地址是什么?”


3.網絡上其他主機并不響應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的回應(ARP response):“192.168.38.11的MAC地址是00-BB-00-62-C2-02”,此回應以單播方式。這樣,主機A就知道主機B的MAC地址,它就可以向主機B發送信息。同時它還更新自己的ARP高速緩存(ARP cache),下次再向主機B發送信息時,直接從ARP緩存表里查找就可。


ARP緩存表采用老化機制,在一段時間內如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP緩存表的長度,加快查詢速度。


轉自**百科。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449697.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449697.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449697.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

04.React事件 方法、 React定義方法的幾種方式 獲取數據 改變數據 執行方法傳值...

2019獨角獸企業重金招聘Python工程師標準>>> 一.基本用法 在以類繼承的方式定義的組件中,為了能方便地調用當前組件的其他成員方法或屬性(如:this.state),通常需要將事件處理函數運行時的 this 指向當前組件…

代碼之美——Doom3源代碼賞析

摘要:Dyad作者、資深C工程師Shawn McGrathz在空閑時翻看了Doom3的源代碼,發出了這樣的驚嘆:“這是我見過的最整潔、最優美的代碼!”“Doom 3的源代碼讓我對那些優秀的程序員刮目相看。”因此有了本文。 背景介紹: Doom…

UDP:用戶數據報協議 是什么

用戶數據報協議(英語:User Datagram Protocol,縮寫為UDP),又稱用戶數據報文協議,是一個簡單的面向數據報的傳輸層協議,正式規范為RFC 768。在TCP/IP模型中,UDP為網絡層以上和應用層以…

隨想錄(程序員和收入)

距離上一次寫博客已經很長時間了,大約過了三個星期。這三個星期發生了很多事情,這中間也有我自己的思考積累,也有工作上的變故。總之,自己想了很多,也得到了很多。每到這個時候,畢業生朋友們都在尋找工作&a…

iOS進階之正則表達式

最近一直在弄正則表達式,于是在這里整理一下,便于日后查閱。 1、常用符號 ^:字符串的開始$:字符串的結束*:表示零個或若干個?:表示零個或一個:表示一個或若干個| :表示 或 操作. &a…

akshare分析漲停板股票數據

導入包,獲取日期數據 import pandas as pd import numpy as np import akshare as ak #畫圖 import matplotlib.pyplot as plt #正確顯示中文和負號 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False #處理時間 from dateutil.parser…

DNS(域名系統) 是什么

域名系統(英文:Domain Name System,縮寫:DNS)是互聯網的一項服務。 它作為將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網。 DNS使用TCP和UDP端口53。當前,對于每一級域…

《The Art of Readable Code》學習筆記(一)

放寒假回家有些頹廢,就是不想看書。但是已經大三了,春節過后就要找實習了。哎,快樂的大學生活終于要過去了。 先從簡單的書看起吧!在圖書館借了本《The Art of Readable Code》,就是教你咋寫好優雅的代碼的&#xff0c…

文件基本處理

1 打開文件,將文件句柄賦值給一個變量 2 拿句柄對文件進行操作 3 關閉文件 將一個文件第一行寫道另外一個文件 f open("test","r",encoding"utf-8") # open找的是系統的編碼 x f.readlines() f.close() f1 open("test1"…

C++ ofstream和ifstream詳細用法

ofstream是從內存到硬盤,ifstream是從硬盤到內存,其實所謂的流緩沖就是內存空間; 在C中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的文件I/O,stream這個類有兩個重要的運算符&…

如何將JAR包發布到Maven中央倉庫?

將jar包發布到Maven中央倉庫(Maven Central Repository)&#xff0c;這樣所有的Java開發者都可以使用Maven直接導入依賴&#xff0c;例如fundebug-java&#xff1a; <!-- https://mvnrepository.com/artifact/com.fundebug/fundebug-java --> <dependency><grou…

SSH、SSL與HTTPS

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 關于加密 在解釋SSH、SSL與HTTPS協議之前我先介紹一下非對稱加密協議。在1976年以前&#xff0c;所有的加密都采用對稱加密&#xff0c…

北向資金運作akshare

import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] mpl.rcParams[axes.unicode_minus]False#獲取交易日歷 import datetime def get_cal_date(start,end):dates ak.to…

網絡性能測試工具iperf詳細使用圖文教程【轉載】

原文&#xff1a;https://www.cnblogs.com/yingsong/p/5682080.html 轉載于:https://www.cnblogs.com/luo30zhao/p/10512042.html

代碼審查:程序員內煉之道

摘要&#xff1a;“關注并弄清楚橋梁修建細節&#xff0c;否則你建起來的橋梁有可能坍塌。”代碼審查更重要的是一種技術分享或者代碼共享。程序員如何提升自我修煉之道&#xff0c;歡迎來支招。 代碼審查更重要的是一種技術分享或者代碼共享。在審查過程中&#xff0c;通過被…

扎實的基礎是成功的法寶

轉載鏈接&#xff1a;https://baijiahao.baidu.com/s?id1610187127874738836&wfrspider&forpc好基礎是好成績的根本,無論做任何事情,基本功的訓練是成功的前提:“還沒有學會走,就想學跑,那不行,肯定會摔跟頭。”這是成功人士的經驗之談。要建成高樓大廈,地基必須打好。…

發送qq郵件

import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication# 寫成了一個通用的函數接口&#xff0c;想直接用的話&#xff0c;把參數…

排序代碼(python,c++) 及 基本算法復雜度

0.導語 本節為手撕代碼系列之第一彈&#xff0c;主要來手撕排序算法&#xff0c;主要包括以下幾大排序算法&#xff1a; 直接插入排序 冒泡排序 選擇排序 快速排序 希爾排序 堆排序 歸并排序 1.直接插入排序 【算法思想】 每一步將一個待排序的記錄&#xff0c;插入到前面…

TCP/IP四層模型與OSI參考模型

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 TCP/IP四層模型&#xff1a; 1.鏈路層&#xff08;數據鏈路層/網絡接口層&#xff09;&#xff1a;包括操作系統中的設備驅動程序、計算…

Metal日記:使用步驟指南

本文參考資料&#xff1a; juejin.im/post/5b1e8f… xiaozhuanlan.com/topic/04598… developer.apple.com/videos/play… github.com/quinn0809/G… cloud.tencent.com/developer/a… devstreaming-cdn.apple.com/videos/wwdc… Metal處理邏輯 無論是CoreImage、GPUImage框架&…