首页 > 其他分享 >05 地址解析协议ARP

05 地址解析协议ARP

时间:2023-08-28 12:55:12浏览次数:39  
标签:ARP 缓存 05 IP 报文 地址 MAC 解析

地址解析协议(ARP)

ARP(Address Resolution Protocol)地址解析协议:
根据已知的IP地址解析获得其对应的MAC地址

ARP工作流程

1.HOST1 ARP缓存

HOST1通信之前需要封装数据包,其中在封装二层数据链路层时,终端查询自己的ARP缓存表,ARP缓存表维护一个IP和MAC地址的对应关系,根据对端IP地址再查询ARP缓存表可知道对方的MAC地址,然后直接封装就好了,默认ARP缓存表是没有对应关系的(ARP的默认老化时间为180秒,就是原本的ARP记录如果180秒没有被使用,那么此对应关系会被删除)

image

2.HOST1 ARP请求

终端1发生ARP请求来获取IP和MAC地址的对应关系并存到自己的ARP表中,由于不知道对方的MAC地址因此在封装ARP请求的Ether_II目的MAC为ff:ff:ff:ff:ff:ff(广播地址),在ARP报文中由于不知道对端的MAC地址因此设置目的MAC为00:00:00:00:00:00

image

3.HOST2 ARP缓存写入

HOST1发送的ARP请求为广播,在同一广播域的主机都会收到,HOST2在收到ARP请求报文后,对比ARP报文中的目的IP,发现和本机的IP匹配,讲ARP请求报文中的源IP和源MAC的对应关系写入到自己的ARP缓存表中

image

4.HOST2 发送ARP响应

HOST2需要对ARP请求进行回复,由于上一步中已经从ARP请求将HOST1的IP和MAC地址的对应关系写入到了ARP缓存中,在封装ARP回复时目的MAC就可以封装进去了,不用以广播的形式,而是单播,ARP Replay的封装和ARP请求一样,只是ARP类型该成了ARP Replay,在ARP Replay报文中封装了源目IP和MAC地址

image

5.HOST1写入ARP缓存表

HOST1收到ARP Replay后将ARP报文中的源IP和源MAC记录进ARP缓存表中,之后HOST1和HOST2通信就不需要考虑二层封装目的MAC未知问题

image

免费ARP报文

在终端获取到了自己的IP地址后,会发送一个免费的ARP报文,免费ARP是一个ARP请求报文,封装ARP时源目IP和源MAC都是自己,Ether_II的源MAC是自己,目的MAC是广播地址,如果有人回ARP Replay,代表此IP已经和其他MAC地址绑定了,免费ARP报文的作用是查询自己的IP是否和其他终端冲突了

抓包


在GE0/0/0上抓
AR1

sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys AR1
[AR1]inte gi 0/0/0
[AR1-GigabitEthernet0/0/0]ip addr 192.168.1.1 255.255.255.0
Aug 27 2023 22:47:03-08:00 AR1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP
on the interface GigabitEthernet0/0/0 has entered the UP state.

AR2

sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys AR2
[AR2]inte gi 0/0/0
[AR2-GigabitEthernet0/0/0]ip addr 192.168.1.2 255.255.255.0
Aug 27 2023 22:48:50-08:00 AR2 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP
on the interface GigabitEthernet0/0/0 has entered the UP state.

AR1 ping AR2

[AR1]ping 192.168.1.2
PING 192.168.1.2: 56 data bytes, press CTRL_C to break
Reply from 192.168.1.2: bytes=56 Sequence=1 ttl=255 time=90 ms
Reply from 192.168.1.2: bytes=56 Sequence=2 ttl=255 time=20 ms
Reply from 192.168.1.2: bytes=56 Sequence=3 ttl=255 time=20 ms
--- 192.168.1.2 ping statistics ---
3 packet(s) transmitted
3 packet(s) received
0.00% packet loss
round-trip min/avg/max = 20/43/90 ms

标签:ARP,缓存,05,IP,报文,地址,MAC,解析
From: https://www.cnblogs.com/Metkey/p/17662016.html

相关文章

  • abc265e Warp
    Warp大概就是个dpf[n][x][y]表示走了n步,第一种走了x次,第二种走了y次。不过写来写去发现都会TLE,N^3怎么会TLE呢?后面发现原来是map的写法一直有问题,比如判断一个点是否可行,我是这样的if(!h[make_pair(x,y)]){}这样的话其实是相当于将(x,y)插入进去,所以就会变慢正确的写法......
  • 20230512 java.lang.Throwable
    介绍java.lang.ThrowablepublicclassThrowableimplementsSerializableError和Exception的父类,只有该类型才可以被throw和catch不是RuntimeException或Error子类的都被认为是检查异常(checkedexception),包括Throwable构造函数共有5个构造函数,继承时可以选择性......
  • 20230516 java.lang.StringBuilder
    介绍java.lang.StringBuilderpublicfinalclassStringBuilderextendsAbstractStringBuilderimplementsjava.io.Serializable,Comparable<StringBuilder>,CharSequence此类提供与StringBuffer兼容的API,但不保证线程安全append方法总是在构建器的末尾添加这些字符;......
  • 20230525 java.lang.Enum
    介绍java.lang.EnumpublicabstractclassEnum<EextendsEnum<E>>implementsConstable,Comparable<E>,Serializable所有枚举类的父类可序列化枚举类可以实现接口,不能继承APIstatic方法valueOfpublic方法name返回枚举常量名ordinal返回enum声明......
  • 20230530 java.util.ServiceLoader
    介绍java.util.ServiceLoaderpublicfinalclassServiceLoader<S>implementsIterable<S>APIstaticload单个Class入参的方法使用当前线程上下文类加载,Thread.currentThread().getContextClassLoader()loadInstalled使用PlatformClassLoader类加载器加载pub......
  • 20230531 java.util.Objects
    介绍java.util.ObjectspublicfinalclassObjectsAPIstaticequalsdeepEquals比较数组元素hashCodehash为一系列输入值生成哈希码toStringStringtoString(Objecto)StringtoString(Objecto,StringnullDefault)compare<T>intcompare(Ta,Tb,......
  • NOIP2013提高组初赛易错题解析
    7. 正解:可以画出递归树,画出后应该是这样子的 画出递归树,就可以得出答案时间复杂度为O(Fn) 15. 正解:2T(n/2)=O(logn)T(n)=2*T(n/2)+2*n=O(nlogn)三.2. 错误原因:蒙的正解:通过观察,可以找到递推关系式,f[n]=1/n*(n+f[1]+f[2]+...+f[n]),f[1]=0,f[2]=2,经过计算......
  • NOIP2017提高组初赛易错题解析
     8.由四个不同的点构成的简单无向连通图的个数是()A.32 B.35 C.38 D.41错误原因:数重了正解:分情况计算,6条边的有1种,5条边的有C(6,1)=6种,4条边的有C(6,4)=15种,3条边,要分度数,2+2+1+1的有12种,3+1+1+1的有4种,共38种 10.若 f0​=0,f1​=1,fn+1​=(fn​+fn−1)/2​​,则随着......
  • NOIP2016提高组初赛易错题解析
    9. 正解:每一个bit,都有两种可能,0和1,所以最多可以使用232=4GB的内存 14. 正解:使用代入法,T(n)=2T(n/4)+sqrt(n),T(n/16)=2T(n/4/4/4)+1/4*sqrt(n),T(n)=2k+k*sqrt(n)=sqrt(n)+k*sqrt(n),则时间复杂度为O(sqrt(n)logn) 二.1. 正解:前三个都是无线通信技术,以太网是有......
  • NOIP2018提高组初赛易错题解析
    2.下列属于解释执行的程序设计语言是()A.C B.C++ C.Pascal D.Python错误原因:忘记了正解:C、C++和Pascal都是编译性语言,而Python是解释性语言 5.设某算法的时间复杂度函数的递推方程是 T(n)=T(n-1)+n(n 为正整数)及 T(0)=1,则该算法的时间复杂度为()A.O(logn) ......