Address Resolution Protocol,用于建立和维护IPv4(IPv6使用NDP协议)地址和MAC地址的动态映射。在一个局域网中(LAN),数据包通过MAC地址来寻址的(网络层的数据包被封装在二层数据帧中进行传输),但是IPv4是用IP地址来寻址。只知道IP地址,不知道MAC地址,数据包是无法发送(不能寻址)的,这个时候就使用ARP协议获得IP地址对应的MAC地址。
注意ARP协议只在LAN中使用(LAN不仅指192.168之类的私有网络地址,公网地址也是可以组成一个一个LAN的)。那么如果目的IP不在当前LAN中呢,TCP/IP协议族是用来实现多个LAN之间的互联,网关就相当于一个国家(LAN)的海关,一个LAN中的主机发给其他LAN的数据包(货物)首先发给网关,然后网关再把数据包发送出去。所以主机需要做的事情是把数据包发送给网关,网关的IP是已知的,此时ARP协议的工作是已知网关的IP获得网关的MAC地址。
ARP协议要求链路层支持广播
假设现在有一个LAN,LAN的网段是202.117.15.0/24
主机A的IP地址:202.117.15.10,MAC地址00:00:00:00:00:10
主机B的IP地址:202.117.15.11,MAC地址00:00:00:00:00:11
A此时要给B发送一个UDP包(三层包),A不知道B的MAC地址,过程如下:
1. A发送一个ARP request(广播包,目的MAC全1),LAN中的所有主机(不考虑VLAN)都会收到这个ARP request。这个ARP request的内容主要是:哪位小哥的IP地址是202.117.15.11啊,告诉我呗,我的IP地址是202.117.15.10,MAC地址是00:00:00:00:00:11
2. B收到了这个ARP request后,发现ARP request询问的IP地址是自己,B做了N件事:1)更新自己的ARP映射,即把MAC地址00:00:00:00:00:10映射到202.117.15.10上。(不考虑静态映射)。2)给主机A发送ARP reply(单播,A的MAC地址已知),主要内容是:哎呀,A你好啊,我就是你要找的那个B(202.117.15.11)啊,我的MAC地址是00:00:00:00:00:11。其他主机收到这个广播后,会执行步骤1),更新自己的ARP映射(不考虑存在静态映射的情况)
3. A收到B发来的ARP reply,更新自己的ARP映射,即把MAC地址00:00:00:00:00:11映射到202.117.15.11上。
4. 此时A知道了B的MAC地址,B也知道A的MAC地址,于是A和B就可以没羞没臊地聊天了(互相发送三层数据包),只要某个时刻其中一个主机的MAC地址-IP地址映射过期了,就再次重复1到3的过程,然后继续愉快地聊天,一点都不影响兴致呢。
ARP在OSI七层模型中和TCP/IP四层模型中都被放在了数据链路层(二层),但是又有点像三层的,ARP有ethtype(0x0806),IP的ethtype是0x0800,貌似有称为2.5层的
下面是Ethernet & IPv4网络中的ARP包的格式
ARP包是封装在以太帧中,和IP包在以太帧中的位置是一样一样的
字段说明:
Hardware type: MAC地址类别,Ethernet中该值为1。通常所说的MAC地址,物理地址,数据链路层地址都指的同一个东西,以太网中的MAC地址又成为以太网地址。
Protocol type: 协议地址类别,IPv4网络中该值为0x0800(是的,和ethtype的值是一样的,这不是巧合,用的就是Ethtype的值)
Hardware address length:MAC地址长度,Ethernet中该值为6
Protocol address length:协议地址长度,IPv4中该值为4
Operation: 说明ARP包的类型,request时值为1,reply为2
Sender hardware address 发送者的MAC地址
Sender protocol address:发送者的协议地址(IPv4地址)
Target hardware address:目标MAC地址,ARP request中为广播地址(全1)
Target protocol address:目标协议地址,
发送者会在ARP request中填入自己的MAC地址,IP地址(Sender地址),目标MAC填入二层广播地址,目的IP地址填入询问的IP地址,目标主机收到ARP request后,发送ARP reply包,ARP reply中的Target地址是ARP request的Sender MAC地址和IP地址,ARPreply的Sender地址是主机自己的MAC地址和IP地址。
C:动态的映射,动态学习获得的,就是通过上述的那个一般过程获得的,一般超时时间为20分钟(RFC1122中规定的)
M:静态的映射,手动静态配置的ARP映射,没有超时时间,但是大多数的实现中ARP reply会更改静态的ARP映射(不管本主机是否发送过ARP request),没有做过这个实验,不清楚替换后的ARP映射是静态的还是动态的。
P:publish,主要用于代理ARP,代理ARP让主机回应(发送ARP reply)不是指向自己IP地址的ARP request,让Sender以为自己是要找的MAC地址。这个现在很少用了
无理由ARP(请无视我的翻译),GratuitousARP是指主机发送一个目标IP为自己IP的ARP request。Gratuitous ARP一般在系统bootstrap(引导程序)时间执行(这里我不太理解,计算不是系统启动时间,只要是网卡启动时应该都会发送的吧)网卡发送一个目标IP为自己ARP request。
这个ARP包主要有两个作用:
1. 主机确定当前网络中是否有主机的IP和自己的IP是一样的。如果这个ARPrequest发出后,收到了ARP reply,说明当前LAN(或者VLAN)有主机用了和本机一样的IP。这个时候系统通常会提醒用户IP地址冲突。如果没有收到ARP reply,说明LAN(或者VLAN)中没有主机和自己IP地址一样。
2. 主机的MAC地址可能发生了变化(比如修改了MAC地址,或者换了网卡)。ARP request可以让LAN(或者VLAN)中所有主机更新ARP request发送者的IP和MAC的映射关系。(静态的ARP映射关系应该不会被ARP reqeust更新,通常只会被ARP reply更新——这个是我根据上下文推测的,还没有试验过)
Gratuitous ARP发现地址冲突后什么都不能做,只能提示用户发生了地址冲突。所以RFC5227提出了一个新的机制:ACD(Address Conflict Detection)
ACD可以对地址冲突做出反应,ACD定义了ARP probe和ARP announcement两种ARP包(都是ARP request,只是填充内容不太一样)
ARP probe:用于检测IP地址冲突,Sender IP填充为0,填充为0是为了避免对其他主机的ARP cache造成污染(因为可能已经有主机正在使用候选IP地址了,不要影响别人的正常通行嘛),Target IP是候选IP地址(即本机想要使用的IP地址)
ARP announcement:用于昭示天下(LAN)本机要使用某个IP地址了,是一个SenderIP和Traget IP填充的都是本机IP地址的ARP request。这会让LAN(VLAN)中所有主机都会更新自己的ARP cache,将IP地址映射到发送者的MAC地址。
6.1 ACD流程 1. 网卡启动时(或者从睡眠状态恢复,或者链接建立时)会发送一个ARP probe。(为了避免多个网卡同时启动同时发ARP probe造成拥塞,有一个拥塞避免策略,不会立刻发送ARP probe,单个网卡的多个probe也不会连续发送,会有间隔时间)
2. 发送主机可能收到ARP reply或者ARP probe,如果收到了ARP reply,说明候选IP地址已经有主机在用了。如果收到了一个Target IP地址为候选IP的ARPprobe,说明另外一个主机也同时想要使用该候选IP地址。这种情况下,两个主机都会提醒用户出现了IP地址冲突。然后进行地址冲突处理(见后面)
3. 如果上述两种ARP包都没有收到,说明候选IP地址可用。主机发送一个ARP announcement,告诉其他主机这个候选IP有人用了,这个ARP request会让LAN(VLAN)中其他主机更新ARP cache。
4. 系统运行期间,ACD是一直在运行的,这点与Gratuitous ARP不同。主机会一直检测收到的ARP reqeust 和ARP reply,判断Sender IP域是否和本机IP地址一样,如果一样说明有主机也在用这个IP地址了。然后需要进行地址冲突处理。(见下面)
地址冲突处理:《RFC5527》提供了三种可选的解决机制:1)放弃使用该IP地址,2)发送一个ARP announcement来进行IP地址“守卫”,如果冲突仍然继续存在,放弃使用这个IP。3)无视冲突,继续使用这个IP
本文由哈喽比特于1年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/wqBkrCFTOhamwMC1pumD_w
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。