【网络】数据链路层协议——以太网,ARP协议

目录

1.局域网转发

2.MAC地址

2.1.什么是MAC地址

2.2.Mac地址的作用

2.3.MAC地址和IP地址的区别和联系

3.以太网协议

4.MTU,IP MTU,MSS

4.1.MTU

4.2. IP MTU

4.3. MSS

4.4. 区别及联系

5.局域网的数据碰撞

5.1.局域网内通信过程

 5.2.数据碰撞问题

5.3.令牌环网和以太网解决数据碰撞的策略

5.4.如何看待局域网

6.ARP协议

6.1.什么是ARP协议

6.2.ARP的作用

6.3.ARP的工作过程

6.3.1.同一子网下的主机通信

6.3.2.不同子网下的主机通信

6.4.ARP缓存

 6.5.查看ARP缓存表

 6.6.ARP报头格式

 6.7.模拟ARP过程

 6.8.ARP的周边问题

6.9.ARP欺骗

6.9.1.APR欺骗的原理

6.9.2.ARP欺骗的实现

6.9.3.ARP欺骗后可以选择进一步攻击


1.局域网转发

  • (1)IP提供了将数据包跨网络发送的能力,这种能力实际上是通过子网划分+目的ip+查询节点的路由表来实现的但实际上数据包要先能够在局域网内部进行转发到目的主机,只有有了这个能力之后,数据包才能跨过一个个的局域网,最终将数据包发送到目的主机。
  • 所以跨网络传输的本质就是跨无数个局域网内数据包转发的结果,离理解整个数据包在网络中转发的过程,我们只差理解局域网数据包转发这临门一脚了。
  • (2)而现在最常见的局域网通信技术就是以太网,无线LAN,令牌环网(这三种技术在数据链路层使用的都是MAC地址),早在1970年代IBM公司就发明了局域网通信技术令牌环网,但后来在1980年代,局域网通信技术进入了以太网大潮,原来提供令牌网设备的厂商多数也退出了市场,在目前的局域网种令牌环网早已江河日下,明日黄花了,等到后面进入移动设备时代时,在1990年,国外的一位博士带领自己的团队发明了无线LAN技术,也就是wifi这项技术,实现了与有线网一样快速和稳定的传输,并在1996年在美国申请了无线网技术专利。
  • 今天学习的正是以太网技术。

2.MAC地址

2.1.什么是MAC地址

Mac地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称局域网地址

  • Mac地址也称物理地址,硬件地址,由网络设备制造商生产时烧录在网卡上
  • Mac是制造商为网络硬件(如无线网卡或以太网卡)分配的唯一地址,
  • Mac代表媒体访问控制,每个代码对应一个唯一的设备,
  • Mac地址为六组两位字符组成,由冒号分隔,比如:00:1B:44:11:3A:B7 
  • Mac地址用于确认一个网络设备位置的位址
  • 在ISO模型中,第三层网络层负责IP地址,第二层链路层负责Mac位址
  • Mac地址用于在网络中标识一个唯一的网卡,一台设备如果由一个或者多个网卡,则每隔网卡都需要并会有一个唯一的MAC地址

MAC地址就像是计算机网络中每台计算机的身份证号码,用于唯一标识网络设备。

  1. 想象一下,你和一群朋友在一起,每个人都有一个独特的名字来区分彼此。MAC地址就像是计算机网络中设备的名字,它是一个唯一的标识符。
  2. 每台计算机和网络设备都有一个独特的MAC地址,就像是每个人都有一个唯一的名字一样。这个地址由一系列的数字和字母组成,比如00:1A:2B:3C:4D:5E。
  3. MAC地址通常被硬件制造商在设备制造过程中分配,并且无法更改。它被永久地嵌入到设备的网络接口卡中,就像是人的名字在出生时就确定下来一样。
  4. 当你的计算机连接到一个网络时,它会使用自己的MAC地址来与其他设备进行通信。就像是你在朋友圈中使用自己的名字来被别人认出一样。
  5. 网络设备使用MAC地址来识别数据包的发送者和接收者。当你发送一个数据包时,它会被标上你的MAC地址作为发送者,接收者的MAC地址则是目标设备的地址。
  6. 这样,网络设备就可以根据MAC地址将数据包正确地传送到目标设备,就像是朋友根据你的名字找到你一样。
  7. 所以,MAC地址就像是计算机网络中设备的身份证号码,用于唯一标识每台设备。它是由数字和字母组成的独特标识符,类似于每个人都有一个唯一的名字来区分彼此。

2.2.Mac地址的作用

  大多数接入internet的方式是把主机通过局域网连接在一起,然后再通过交换机或者路由器等设备和internet相连接,由于IP地址是基于逻辑上的标识,是任意人都可以修改的,所以可信度并不是很高,因此不能用来标识用户,但Mac地址对于一台设备来说是出厂设置好的,固定的,理论上来说,除非把硬件设施(网卡)盗过来,否则是无法冒名顶替Mac地址标识的设备。基于Mac地址是唯一的且不可修改的,因此局域网采用了Mac地址来标识具体用户的方法

  • IP地址相当于你的QQ网名,是可以遵从你个人的意愿随意更改的
  • Mac地址相当于你的身份证号码,从你一出生上了户口之后,你的身份证号码就是固定的
  • 局域网采用Mac地址来标识具体用户

就相当于你开学去学校报名,那么班主任肯定是通过你的身份证上的姓名和身份证号码来确定是不是你本人,虽然你和班主任加了QQ好友,但是班主任总不可能只通过你的QQ网名就确认是你本人给你办理入学手续吧?

        在具体的通信过程中,通过交换机内部的交换表把Mac地址和IP地址一一对应,当发送给本地局域网内一台主机的数据包时,交换机首先将数据包接收下来,然后把数据包中的IP地址按照对应关系映射成Mac地址,然后将数据包转发到对应的Mac地址的主机上去,这样即使IP地址被盗,没有具体对应的Mac地址,主机也不能接收到数据包

        在通信时,将数据包从某种形式的链路上一个初始节点出发,从一个节点传输到另一个节点,最终传输到目的地的节点,数据包在这些在这些节点的传递都是通过APR(Address Resolution Protocol:地址解析协议)负责IP地址映射到Mac地址上完成的

拿寄送快递的例子:

  • 你在淘宝上买东西,完成了交易,收货地址填的:南京市鼓楼XX小区5幢6楼601室,这个就是具体的IP地址
  • 卖家发货地点是“广东省深圳市福田区XX大市场1012号”
  • 在货物的运送过程中,要经过:义乌市-----苏州市-----无锡市----南京市,这里的每一站就相当于Mac地址了

2.3.MAC地址和IP地址的区别和联系

简单地说:ip地址是服务商给你的,mac地址是你的网卡物理地址。

一、IP地址

  对于IP地址,相信大家都很熟悉,即指使用TCP/IP协议指定给主机的32位地址。IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP地址,这种写法叫点分十进制格式。IP地址由网络地址和主机地址两部分组成,分配给这两部分的位数随地址类(A类、B类、C类等)的不同而不同。网络地址用于路由选择,而主机地址用于在网络或子网内部寻找一个单独的主机。一个IP地址使得将来自源地址的数据通过路由而传送到目的地址变为可能。

二、MAC地址

  对于MAC地址,由于我们不直接和它接触,所以大家不一定很熟悉。在OSI(Open System Interconnection,开放系统互连)7层网络协议(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层)参考模型中,第二层为数据链路层(Data Link)。

        它包含两个子层,上一层是逻辑链路控制(LLC:Logical Link Control),下一层即是我们前面所提到的MAC(Media Access Control)层,即介质访问控制层。所谓介质(Media),是指传输信号所通过的多种物理环境。常用网络介质包括电缆(如:双绞线,同轴电缆,光纤),还有微波、激光、红外线等,有时也称介质为物理介质。MAC地址也叫物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。这个地址与网络无关,也即无论将带有这个地址的硬件(如网卡、集线器、路由器等)接入到网络的何处,它都有相同的MAC地址,MAC地址一般不可改变,不能由用户自己设定。

三、MAC地址的长度、表示方法、分配方法及其唯一性

  MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20:0A:8C:6D就是一个MAC地址,其中前6位16进制数08:00:20代表网络硬件制造商的编号,它由IEEE(Istitute of Electrical and Electronics Engineers,电气与电子工程师协会)分配,而后3位16进制数0A:8C:6D代表该制造商所制造的某个网络产品(如网卡)的系列号。每个网络制造商必须确保它所制造的每个以太网设备都具有相同的前三字节以及不同的后三个字节。这样就可保证世界上每个以太网设备都具有唯一的MAC地址。

四、IP地址与MAC地址在互连网中的作用

  既然每个以太网设备在出厂时都有一个唯一的MAC地址了,那为什么还需要为每台主机再分配一个IP地址呢?或者说为什么每台主机都分配唯一的IP地址了,为什么还要在网络设备(如网卡,集线器,路由器等)生产时内嵌一个唯一的MAC地址呢?

主要原因有以下几点:

  • (1)IP地址的分配是根据网络的拓朴结构,而不是根据谁制造了网络设置。若将高效的路由选择方案建立在设备制造商的基础上而不是网络所处的拓朴位置基础上,这种方案是不可行的。
  • (2)当存在一个附加层的地址寻址时,设备更易于移动和维修。例如,如果一个以太网卡坏了,可以被更换,而无须取得一个新的IP地址。如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡。
  • (3)无论是局域网,还是广域网中的计算机之间的通信,最终都表现为将数据包从某种形式的链路上的初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的移动都是由ARP(Address Resolution Protocol:地址解析协议)负责将IP地址映射到MAC地址上来完成的。

下面我们来通过一个例子看看IP地址和MAC地址是怎样结合来传送数据包的。

  1. 假设网络上要将一个数据包(名为PAC)由北京的一台主机(名称为A,IP地址为IP_A,MAC地址为MAC_A)发送到华盛顿的一台主机(名称为B,IP地址为IP_B,MAC地址为MAC_B)。
  2. 这两台主机之间不可能是直接连接起来的,因而数据包在传递时必然要经过许多中间节点(如路由器,服务器等等)。
  3. 我们假定在传输过程中要经过C1、C2、C3(其MAC地址分别为M1,M2,M3)三个节点。
  4. A在将PAC发出之前,先发送一个ARP请求,找到其要到达IP_B所必须经历的第一个中间节点C1的MAC地址M1,然后在其数据包中封装(Encapsulation)这些地址:IP_A、IP_B,MAC_A和M1。
  5. 当PAC传到C1后,再由ARP根据其目的IP地址IP_B,找到其要经历的第二个中间节点C2的MAC地址M2,然后再将带有M2的数据包传送到C2。
  6. 如此类推,直到最后找到带有IP地址为IP_B的B主机的地址MAC_B,最终传送给主机B。
  7. 在传输过程中,IP_A、IP_B和MAC_A不变,而中间节点的MAC地址通过ARP在不断改变(M1,M2,M3),直至目的地址MAC_B。


  综合上面所述,我们可以归纳出IP地址和MAC地址相同点是它们都唯一,不同的特点主要有:

  • 1. 对于网络上的某一设备,如一台计算机或一台路由器,其IP地址可变(但必须唯一),而MAC地址不可变。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址永远唯一且不能由用户改变。
  • 2. 长度不同。IP地址为32位,MAC地址为48位。
  • 3. 分配依据不同。IP地址的分配是基于网络拓朴,MAC地址的分配是基于制造商。
  • 4. 寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。

五,mac地址和ip地址有什么区别

        IP地址是指Internet协议使用的地址,而MAC地址是Ethernet协议使用的地址。IP地址与MAC地址之间并没有什么必然的联系,MAC地址是Ethernet网卡上带的地址,长度为48位。
每个Ethernet网卡生产厂家必须向IEEE组织申请一组MAC地址,在生产网卡时在网卡的串行EEPROM中写入一个唯一的MAC地址。任何两个Ethernet网卡的MAC地址,不管是哪一个厂家生产的都不应相同。Ethernet芯片厂家不必负责MAC地址的申请,MAC地址存在于每一个Ethernet包中,是Ethernet包头的组成部分,Ethernet交换机根据Ethernet包头中的MAC源地址和MAC目的地址实现包的交换和传递。

        IP地址是Internet协议地址,每个Internet包必须带有IP地址,每个Internet服务提供商(ISP)必须向有关组织申请一组IP地址,然后一般是动态分配给其用户。IP地址现是32位长,正在扩充到128位。IP地址与MAC地址无关,因为Ethernet的用户,仍然可通过Modem连接Internet,取得一个动态的IP地址,这个地址每次可以不一致。IP地址通常工作于广域网,路由器处理的就是IP地址。 MAC地址工作于局域网,局域网之间的互连一般通过现有的公用网或专用线路,需要进行网间协议转换。可以在Ethernet上传送IP信息,此时IP地址只是Ethernet信息包数据域的一部分,Ethernet交换机或处理器看不见IP地址,只是将其作为普通数据处理。

3.以太网协议

 (1)上面是MAC帧的格式,MAC帧主要有两类,

  • 一类是有效载荷为正常的从上层传输下来的IP报文,另一类是数据链路层自己的有效载荷,包含ARP请求/应答 或 RARP请求/应答,这类报文在讲ARP协议时会重点谈论,ARP协议和以太网技术是当前有线局域网通信中最重要的两个部分。
  • 第二类的报文末尾有PAD字段,该字段为填充字段,用于填充报文长度,因为MAC帧层规定有效载荷最小下限不能低于46字节,所以需要填充18字节的长度,但在接收方填充字段会被直接忽略掉,PAD并不会对通信产生实际影响,我们可以直接忽略掉他。

(2)MAC帧包括6字节的目的MAC地址和源MAC地址,以及两个字节的类型字段,0800是普通MAC帧,0806和8035分别代表封装ARP和RARP请求应答的MAC帧,以及4字节的CRC校验和,这个CRC校验和在传输层,网络层,数据链路层我们都见到过,算是老朋友了。

MAC帧的构成还是非常简单的,最重要的字段就是类型和源MAC地址和目的MAC地址。

如何将报头和有效载荷做分离呢?

MAC协议采取的是定长报头的方式来将报头和有效载荷作分离,读取时可以先正向读取14字节的报头数据,然后再反向读取4字节的剩余报头数据,这样就可以将报头和有效载荷做分离了。

 如何进行分用呢?

分用时,我们依靠的是类型字段来进行分用,如果0800就向上交付给IP协议,如果是0806就向上交付给ARP协议,如果是0835就向上交付给RARP协议

4.MTU,IP MTU,MSS

4.1.MTU

        最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议在某一层上面所能通过的最大数据报大小(以字节为单位),它通常与链路层协议有密切的关系。

EthernetII(以太网) 帧结构如图 2.1所示。

        由于以太网传输电气方面的限制,每个以太网帧最小64字节,最大不能超过1518字节,对于小于或者大于这个限制的以太网帧,以太网都可以视之为错误的数据帧。一般的以太网转发设备会丢弃这些数据帧。(注:小于64字节的数据帧一般是由于以太网冲突产生的“碎片”或者线路干扰或者坏的以太网接口产生的,对于大于1518字节的数据帧我们一般把它叫做Giant帧,这种一般是由于线路干扰或者坏的以太网口产生)。

        由于以太网EthernetII最大的数据帧是1518字节,除去以太网帧的帧头(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14字节和帧尾CRC校验部分4字节(这个部分有时人们也把它叫做FCS),那么剩下承载上层协议的地方也就是Data域最大就只能有1500字节,这个值就称之为MTU。

        这个MTU是网络层协议非常关心的地方,因为网络层协议比如IP协议会根据这个值来决定是否把上层传下来的数据进行分片。就好比一个盒子没法装下一大块面包,就需要把面包切成片,装在多个盒子里面一样的道理。当两台远程PC互联的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的MTU各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU不同)通过这段水管最大水量就要由中间最细的水管决定。

4.2. IP MTU

        对于网络层的上层协议而言(以TCP/IP协议族为例),网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。分片最大的坏处就是降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(传输层)的实现中往往会对此加以注意!有些高层因为某些原因就会要求本层这个面包不能切片,需要完整的“面包”,所以会在IP数据包包头里面加上一个标签:DF(Do not Fragment)。这样当这个IP数据包在一大段网络(水管里面)传输的时候,如果遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包,然后返回一个错误信息给发送者。这样往往会造成某些通讯上的问题,不过幸运的是大部分网络链路MTU都是等于1500或者小于1500。

  1. 对于UDP协议而言,这个协议本身是无连接的协议,对数据包的到达顺序以及是否正确到达不甚关心,所以一般UDP应用对分片没有特殊要求。
  2. 对于TCP协议而言就不一样了,这个协议是面向连接的协议,对于TCP协议而言它非常在意数据包的到达顺序以及是否传输中有错误发生,所以有些TCP应用对分片有要求——不能分片(DF)。

4.3. MSS

MSS是最大传输大小的缩写,它是TCP协议里面的一个概念。如下图 4.1 所示。

注:URG等参数指的是ACK URG PSH SIN FIN RST 等参数。

        在TCP报文中MSS的位置就在选项的位置,根据RFC1323和RFC793规定,选项中内容有很多种,MSS是其中的一种,用kind=2表示;kind=1表示无操作,kind=4、5、6、7称为选择ACK及回显选项,但是由于回显选项已经被时间戳选项取代,同时,目前定义的选择ACK选项仍未定论,也没有包括在RFC1323中,所以具体代表什么含义还无定论。

        在实际网络数据传输中,要求MSS+20TCP包头+20IP包头不大于MTU。

        MSS在TCP报文中是可选项,不是必选项,换句话说,MSS是可协商项,而且在协商过后,该选项内容可以改变,也可以没有;在协商MSS时,一般是建立TCP连结的两端发送SYN标志报文时互相通报,然后选取最小MSS作为双方的约定。如果双方都不通报或有一方不通报,MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能,TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20字节和TCP数据段的包头20字节),所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。

4.4. 区别及联系

由上文叙述可知:

  1. MTU是一个二层的概念,以太网最大的MTU就是1500(它是不包含二层头部的,加上头部应该为1518字节),当然这里说的是很常规的情况,也有些server,比如server2008,发出的就是jumbo frame了,这里讨论常规情况。
  2. IP MTU是一个三层概念,它包含了三层头部及所有载荷,根据下层为上层服务的,上层基于下层才能做进一步的扩展的原则,尽管IP MTU的变化范围很大(68-65535),但也不得不照顾以太网MTU的限制,说白了就是IP对以太网的妥协。
  3. MSS是TCP里面的一个概念,它是TCP数据包每次能够传输的最大数据分段,不包含包头部分,它与IP MTU满足如下关系:IP MTU=MSS+20字节(IP包头)+20字节(TCP包头)。当然,如果传输的时候还承载有其他协议,还要加些包头在前面,简言之,MTU就是总的最后发出去的报文大小,MSS就是需要发出去的数据大小,比如PPPoE,就是在以太网上承载PPP协议(点到点连接协议),它包括6字节的PPPoE头部和2字节的PPP协议ID号,此时,由于以太网的MTU值为1500,所以上层PPP负载数据不能超过1492字节,也就是相当于在PPPOE环境下的MTU是1492字节,MSS是1452字节。

5.局域网的数据碰撞

5.1.局域网内通信过程

假设有如下子网,有若干设备

如果主机A想和主机D通信,那么MAC帧的报头字段的源地址为macA,目的地址为macD。如果有效载荷为ip数据包,那么类型为0800

数据帧发送到网络中,所有该局域网的主机都会收到该数据帧,但其数据链路层解包发现目的地址不是自己的时候,会直接在数据链路层丢弃该报文。如此就只有主机D会解包,提取有效载荷,向上交付ip数据包

 补充:网卡可以设置混杂模式,不论是不是发给自己的数据帧,都向上交付,这就做到了抓包

 5.2.数据碰撞问题

  • (1)局域网中,一定是多台主机同时在发送数据的,而只要所有主机都在发送着数据,就会形成数据之间的干扰,在计算里面我们称为数据碰撞。(老师叫张三回答问题,结果全班同学都在叽叽喳喳的说,张三听不清老师在说什么,其他同学互相之间说话也会互相干扰)
  • (2)所以数据链路层规定,任何时刻,只能有一个主机在发送消息,如果有多个主机在同时发,这些数据发送碰撞后,这样的数据就变成了无效数据。
  • (3)如何判断主机发送的数据发生了碰撞呢?m1发送的数据,m1自己也会收到,如果m1接收到的数据和自己发送的数据不一致的话,则接收的数据帧在进行CRC校验时,一定会出错,此时就说明m1发送的数据帧发生了碰撞。所以局域网还有另一种称呼,叫做碰撞域。

 

        局域网一定不能很大,因为大了之后,主机数就会变多,发生碰撞的概率就会变高。

        手机的wifi其实就是无线式的以太网,在学校中比如操场举办活动,大家都去参加,此时大家都连接的是校园wifi,这个时候,大家就会同处于一个局域网中,进行网络数据传输时,发生碰撞的概率就会变得很高,而一旦发生碰撞,就会执行碰撞检测和避免算法,手机或其他入网设备都会等一等,而直观上体现出来的就是我们感觉网速很慢,感觉网太卡了。

        就算手机用的是流量,其实也会很卡,因为你所处的环境周围可能只有一个基站,比如你在上大课的时候,有很多同学用的都是联通流量卡,你们坐在一间大教室里面,那你们访问互联网时,你和其他同学的数据其实都会被转发到附近的联通基站,而基站的功率一定是有上限的,你和你的同学都在向基站发送数据,此时数据可能在无线信道上发生数据碰撞,所以你的手机上网就会很卡,除此之外还有可能是因为基站负载已经比较高了,无法及时处理数据请求,此时就会导致网络延迟增加,直观上也是我们的手机感觉会很卡。

怎么解决这个数据碰撞问题呢? 

可以使用交换机

        交换机位于OSI参考模型中的第二层(数据链路层),交换机的工作依赖于对MAC地址的识别(所有的网络设备都有一个唯一的MAC地址,通常是由厂商直接烧录进网卡中)。

        当交换机从其某个端口收到一个数据包时,先读取包头中的源MAC地址(即发送该数据包的设备网卡的MAC地址),将该MAC地址和端口对应起来添加到交换机内存里的地址表中;然后再读取包头中的目的MAC地址,对照内存里的地址表看该MAC地址与哪个端口对应,如果地址表中有该MAC地址的对应端口,则将该数据包直接复制到对应的端口上,如果没有找到,则将该数据帧作为一个广播帧发送到所有的端口,对应的MAC地址设备会自动接受该帧数据,同时,交换机将接受该帧数据的端口与这个目的MAC地址对应起来放入内存中的地址表中。

    交换机是起到划分碰撞区域的作用,这样子就可以尽量减少数据碰撞。

        交换机通常用在大的局域网内,并且搭配路由器使用,而家庭的网络布局,通常一个小路由器就能搞定,没必要再搭配交换机,因此大家通常是只听说过交换机,而很少见到交换机。

  • 交换机目前是在以太网中使用最广泛的互连设备
  • 工作在数据链路层(也包括物理层)
  • 交换机对数据帧的转发是根据其MAC地址进行转发的
  • 使用交换机做为互连设备的以太网,称为交换式以太网,交换机可以根据MAC地址过滤数据帧,即隔离碰撞域

  • 交换机的每一个接口都是一个独立的碰撞域
  • 交换机隔离碰撞域但不隔离广播域(VLAN除外)

交换机左侧的主机也可以和右侧的通信,交换机负责数据转发,如果左侧出现数据碰撞,交换机可以防止数据碰撞影响右侧的网络

5.3.令牌环网和以太网解决数据碰撞的策略

其实不同的局域网通信技术,有着不同的解决方案。

令牌环网

        令牌环网采取的方式是向局域网中流放一份令牌环数据,只有持有该令牌环数据的主机才能发送消息,发完消息之后,再将令牌环数据丢到局域网中,这样就可以保证任意时刻,都只会有一个主机在发数据,不会产生多个主机同时发数据而造成碰撞的问题。

以太网

       当A主机和B主机在发送数据时,发生了碰撞,此时会触发以太网协议的策略,策略也很简单,就是暂时不让A主机和B主机发送数据,让他们各自都等一等再发,等待的时间随机,视情况而定,在A和B等待的时候,局域网中的其他主机就可以发送数据帧了,当A和B等待结束之后,重新向局域网中发送数据,碰撞的概率就会非常低了。

        当数据发生碰撞后,以太网执行的策略,我们称之为碰撞检测和碰撞避免算法,其实这个策略很简单,说白了就是等一等再发,但你不要高估了局域网中各个主机发送数据的量,也不要低估了光电信号(二进制数据)在局域网中传播的速度,局域网并没有那么的大,容纳的主机数并不是非常多,所以对于飞快的光电信号来讲,发生碰撞的概率本身就低,所以等一等再发这样听起来很不靠谱的策略,在实际中却是很有效的。

        其实早在1980年的时候,当时以太网技术推出时,很多人都不看好以太网的技术标准,不仅我们觉得碰撞检测和避免的算法也太随意了一些,当时的人们也这么觉得,并且当时有相关的专业机构也得出过结论,从理论上来讲,令牌环网碰撞避免的效率和可靠性应该更高一些,但当实际中真正采纳以太网时,才知道以太网是很香的,随后以太网就大面积快速的推广,而令牌环网却慢慢的变得无人问津。

       既然局域网中多主机在发送数据时,可能产生数据碰撞,那是不就意味着,如果我搞一台主机,不断的向局域网中发送垃圾数据,同时这台主机不执行碰撞检测和避免的算法,那这个局域网中的其他主机是不就一直不能发送数据呢?也就意味着这台主机黑掉了这个局域网?

        确实是这样子的,网上是有这样的工具的,但我不知道这个工具是啥,如果你有的话,可以尝试在自己家里面的局域网中搞一下,看是否能够黑掉你家的局域网。

5.4.如何看待局域网

        我们上面说,任何时刻在局域网中只能有一个主机在向局域网中发送数据,那我们不就可以把局域网看作临界资源吗?而像碰撞检测和避免算法能够保护临界资源,保证只能有一个主机在访问临界资源,那这不就相当于互斥锁或条件变量吗?而所谓的令牌环数据,不也就相当于互斥锁吗?谁拿着锁谁才能访问临界资源!

        所以系统和网络是不分家的,可能在代码层面上两者是划分开的,但在设计理念,和某些策略的设计思想上,两者一定是有重叠的!

6.ARP协议

  • 源主机只知道目的IP却不知道目标主机的MAC地址,当报文千里迢迢来到目的IP地址后,需要找到对应的主机递交报文。在局域网通信中,必须得知道目标主机的MAC地址才能将数据封装成MAC帧。
  • 此时目的IP的路由器通过报文只知道该报文的目的IP,想知道这个IP对应的主机MAC地址是多少,路由器就需要使用ARP协议来查找IP和MAC地址的映射关系。

6.1.什么是ARP协议

ARP协议并不是数据链路层的协议,而是介于数据链路层和网络层之间的协议

        ARP(Address Resolution Protocal,地址解析协议)是将IP地址解析为以太网的MAC地址(或者称为物理地址)的协议。在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址还是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因为发送站还必须有接收站的物理地址,所以需要一个从IP地址到物理地址的映射。ARP就是实现这个功能的协议。

最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。

注意:ARP 只用于 IPv4 协议中,IPv6 协议使用的是 Neighbor Discovery Protocol,译为邻居发现协议,它被纳入 ICMPv6 中。

6.2.ARP的作用

        在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。

        在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。

        所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

6.3.ARP的工作过程

6.3.1.同一子网下的主机通信

假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:

  • 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。
  • 如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
  • 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。
  • ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。
  • 由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
  •  主机B比较自己IP地址和ARP请求报文中的 目标IP 地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。
  • 之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
  • 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

例子1

        假如:主机 A 要和主机 B 通信,主机 A 知道主机 B 的IP地址。知道IP地址是通信的前提。首先,要通进行通信,IP地址和MAC地址是必不可少的,IP地址已经知道了,那么主机 A 必须要知道主机 B 的MAC地址,先在ARP表中查看有无该IP地址,如果有,就找出对应的硬件MAC地址,如果没有,主机 A 广播发送ARP请求来获取目的MAC地址,说 who is 192.168.1.102 ?

        当IP地址是192.168.1.102的主机 B 收到后,会回复主机 A ,说 “我是192.168.1.102,我的MAC地址是:xx-xx-xx-xx-xx-xx”(ARP应答)。这样一来,主机 A 就知道主机 B 的MAC地址了,当然,由于主机 A 在广播发送的ARP报文时,主机 A 的MAC地址被作为源MAC地址而封装在MAC帧中,所以主机 B 收到广播报文后也会知道主机 A 的MAC地址,这时,主机 A 的源IP地址、目的IP地址、源MAC地址和目的MAC地址都能确定了,就能够进行通信了。这也就是平时说的同一网段中的主机相互通信。 

6.3.2.不同子网下的主机通信

当主机A和主机B不在同一个网段时,它们之间的通信需要通过一个或多个路由器进行转发。以下是这种情况下的地址解析和通信过程的详细步骤:

  1. 主机A检查ARP表
    主机A首先检查自己的ARP表,看是否含有直接到达主机B的MAC地址(主机B是不是在当前子网里面)。由于它们不在同一网段,主机A的ARP表中很可能不包含主机B的MAC地址。

  2. 查找默认网关
    如果ARP表中没有主机B的MAC地址,主机A会查找其路由表以找到通往主机B所在网段的默认网关(通常是路由器)。主机A知道与默认网关(路由器)在同一网段,因此它接下来会尝试解析网关的MAC地址。

  3. ARP请求网关MAC地址
    如果主机A的ARP表中没有网关的MAC地址,它会发送一个ARP请求给本网段内的所有设备(通过广播),请求网关的MAC地址。这个ARP请求包含主机A的源IP地址和MAC地址,以及网关的IP地址(目标IP)和一个全0的MAC地址(目标MAC)。

  4. 网关响应ARP请求
    网关(路由器)收到ARP请求后,比较自己的IP地址与ARP请求中的目标IP地址。如果匹配,网关将用自己的MAC地址作为响应发送给主机A。

  5. 主机A封装数据包
    主机A收到网关的MAC地址后,将其加入到ARP表中,并将原始IP数据包(目标IP为主机B的IP)封装在以太网帧中,使用网关的MAC地址作为目的MAC地址。然后,主机A将封装好的帧发送给网关。

  6. 网关转发数据包
    网关(路由器)收到数据包后,根据数据包中的目标IP地址(主机B的IP)查找其路由表,以确定如何转发该数据包。路由器将数据包转发到下一个网络段,该网络段更接近目标主机B。

  7. 跨多个网络段的转发
    如果主机A和主机B之间相隔多个网络段,数据包将在多个路由器之间被转发,直到它到达与主机B同一网段的路由器。

  8. 目标网络段内的ARP请求
    当数据包到达与主机B同一网段的路由器时,该路由器会将数据包发送到网络上,并且如果它自己的ARP表中没有主机B的MAC地址,它可能还需要发送一个ARP请求来解析主机B的MAC地址。但通常情况下,如果这是路由器直接连接的网络段,它可能已经知道主机B的MAC地址。

  9. 数据包最终到达主机B
    一旦数据包到达主机B所在的网络段,并且路由器或主机B的ARP表中有主机B的MAC地址,数据包就会被封装成带有主机B MAC地址的以太网帧,并发送给主机B。

  10. 主机B接收数据包
    主机B接收到数据包后,会检查IP头部中的目标IP地址,确认是自己后,解封装数据包,并将数据传递给上层应用程序。

这个过程展示了当两台主机不在同一网段时,如何通过ARP和路由选择协议(如RIP、OSPF等)实现通信。

 举个例子

        假如:主机 A 要和主机 D 进行通信,那么同样的,主机 A 如果广播发送 ARP 请求,询问192.168.1.22在哪里,很显然,主机 A 和主机 D 不在同一个网段内,路由器默认不转发广播报文,那么主机 D 就收不到 ARP 请求,也就无法回应主机 A,主机 A 也就无从获取主机 D 的MAC地址。

其实,主机 A 会首先检查目的IP地址是否与自己在同一网段,如果在,就直接广播ARP请求来获取目的主机的MAC地址,如果不在同一网段,又配置有网关地址的话,那么主机 A 就通过 ARP 请求,询问192.168.0.1(网关)在哪里,网关收到后就会回应主机 A ,把网关的MAC地址告诉主机 A ,当获取到网关的MAC地址后,把网关的MAC地址作为MAC帧中的目的MAC地址,然后就把数据丢给网关 192.168.0.1 ,网关根据路由表,转发给下一个路由器,再由下一个路由器交付给主机 D 所在的网络,即网关,网关再通过ARP,找到目的主机 D ,完成数据交付 

6.4.ARP缓存

        现在知道了发送一次 IP 分组前通过发送一次 ARP 请求就能够确定 MAC 地址。那么是不是每发送一次都得经过广播 -> 封装 ARP 响应 -> 返回给主机这一系列流程呢?

        想想看,浏览器是如何做的呢? 浏览器内置了缓存能够缓存最近经常使用的地址,那么 ARP 也是一样的。ARP 高效运行的关键就是维护每个主机和路由器上的 ARP 缓存(或表)。

        无论是主机,还是交换机都会有一个用来缓存同一网段设备IP地址和MAC地址的ARP映射表,用于数据帧的转发。设备通过ARP解析到目的MAC之后,将会在自己的ARP映射表中增加IP地址到MAC地址的映射表,以用于后续到同一目的地数据帧的转发。ARP表项分为动态ARP表项和静态ARP表项。

        这个缓存维护着每个 IP 到 MAC 地址的映射关系。通过把第一次 ARP 获取到的 MAC 地址作为 IP 对 MAC 的映射关系到一个 ARP 缓存表中,下一次再向这个地址发送数据报时就不再需要重新发送 ARP 请求了,而是直接使用这个缓存表中的 MAC 地址进行数据报的发送。每发送一次 ARP 请求,缓存表中对应的映射关系都会被清除。

        通过 ARP 缓存,降低了网络流量的使用,在一定程度上防止了 ARP 的大量广播。

 

一般来说,发送过一次 ARP 请求后,再次发送相同请求的几率比较大,因此使用 ARP 缓存能够减少 ARP 包的发送,除此之外,不仅仅 ARP 请求的发送方能够缓存 ARP 接收方的 MAC 地址,接收方也能够缓存 ARP 请求方的 IP 和 MAC 地址,如下图所示:

不过,MAC 地址的缓存有一定期限,超过这个期限后,缓存的内容会被清除。

 6.5.查看ARP缓存表

可以在 Linux 或者 Windows 中使用 arp 命令查看 ARP 缓存。选项 -a 用于显示两个系统缓存中所有的缓存项。

在 Linux 中使用 arp 查询缓存;

 6.6.ARP报头格式

ARP是一个独立的三层协议,所以ARP报文在向数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,其中包括ARP报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装。ARP报文分为ARP请求和ARP应答报文两种,它们的报文格式可以统一为下图所示。

  • 硬件类型:占两字节,表示ARP报文可以在哪种类型的网络上传输,值为1时表示为以太网地址。
  • 上层协议类型:占两字节,表示硬件地址要映射的协议地址类型,映射IP地址时的值为0x0800。
  • MAC地址长度:占一字节,标识MAC地址长度,以字节为单位,此处为6。
  • IP协议地址长度:占一字节,标识IP得知长度,以字节为单位,此处为4。
  • 操作类型:占2字节,指定本次ARP报文类型。1标识ARP请求报文,2标识ARP应答报文。
  • 源MAC地址:占6字节,标识发送设备的硬件地址。
  • 源IP地址:占4字节,标识发送方设备的IP地址。
  • 目的MAC地址:占6字节,表示接收方设备的硬件地址,在请求报文中该字段值全为0,即00-00-00-00-00-00,表示任意地址,因为现在不知道这个MAC地址。
  • 目的IP地址:占4字节,表示接受方的IP地址。

ARP报文不是直接在网络层上发送的,它还是需要向下传输到数据链路层,所以当ARP报文传输到数据链路层之后,需要再次进行封装。以以太网为例,ARP报文传输到以太网数据链路层后会形成ARP帧。ARP帧如下图所示,他就是在ARP报文前面加了一个以太网帧头。

以太网帧头的三个字段说明

  • 目的MAC地址:占6字节,如果是ARP请求帧,因为它是一个广播帧,所以要填上广播MAC地址(FF-FF-FF-FF-FF-FF),其目标主机是网络上的所有主机。
  • 源MAC地址:占6字节,这是发送ARP帧的节点MAC地址。
  • 帧类型:占两字节,这里用来标识帧封装的上层协议,因为本帧的数据部分是ARP报文,所以直接用ARP的协议号0x0806表示就可以了。 

 6.7.模拟ARP过程

有如下局域网

 如果主机A想和主机B通信,但第一次通信主机A不知道主机B的MAC地址,因此需要广播ARP请求来获取主机B的MAC地址。ARP请求如下:

 因为不知道主机B的MAC地址,所以使用广播,广播的ARP请求,目的MAC地址为全F(FF:FF:FF:FF:FF:FF)

局域网内的所有主机都会收到这个ARP请求,网卡识别目的MAC地址为全F,广播数据,需要向上交付,再根据帧类型识别是ARP请求/响应。所以向上交付给ARP协议。

ARP协议先看op字段,为ARP请求,再看目的IP地址,除主机B外,其他主机发现不是给自己的,就在ARP层丢弃报文,只有主机B会返回ARP响应,报文如下:

主机A收到ARP响应后,还会将主机B的IP地址和MAC地址的映射关系缓存在ARP缓存表中,下次访问主机B时会根据IP地址查表,有则使用,没有则先发送ARP请求获取MAC地址。 

动态ARP通过广播ARP请求和单播ARP应答这两个过程完成地址解析。

当需要通信的两台主机处于同一网段时,如上图中的Host_1和Host_3,Host_1要向Host_3发送数据。

  1. 首先,Host_1会查找自己本地缓存的ARP表,确定是否包含Host_3对应的ARP表项。如果Host_1在ARP表中找到了Host_3对应的MAC地址,则Host_1直接利用ARP表中的MAC地址,对数据报文进行帧封装,并将数据报文发送给Host_3。如果Host_1在ARP表中找不到Host_3对应的MAC地址,则先缓存该数据报文,并以广播方式发送一个ARP请求报文。如上图中所示,OP字段为1表示该报文为ARP请求报文,ARP请求报文中的源MAC地址和源IP地址为Host_1的MAC地址和IP地址,目的MAC地址为全0的MAC地址,目的IP地址为Host_3的IP地址。
  2. Switch_1收到ARP请求报文后,将该ARP请求报文在同一广播域内转发。
  3. 同一广播域内的主机Host_2和Host_3都能接收到该ARP请求报文,但只有被请求的主机(即Host_3)会对该ARP请求报文进行处理。Host_3比较自己的IP地址和ARP请求报文中的目的IP地址,当两者相同时进行如下处理:将ARP请求报文中的源IP地址和源MAC地址(即Host_1的IP地址和MAC地址)存入自己的ARP表中。之后以单播方式发送ARP应答报文给Host_1,ARP应答报文内容如上图中所示,OP字段为2表示该报文为ARP应答报文,源MAC地址和源IP地址为Host_3的MAC地址和IP地址,目的MAC地址和目的IP地址为Host_1的MAC地址和IP地址。
  4. Switch_1收到ARP应答报文后,将该ARP应答报文转发给Host_1。Host_1收到ARP应答报文后,将Host_3的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将数据报文进行帧封装,并将数据报文发送给Host_3。

当需要通信的两台主机处于不同网段时,如上图中的Host_1和Host_4,Host_1上已经配置缺省网关,Host_1首先会发送ARP请求报文,请求网关Router的IP地址对应的MAC地址。Host_1收到ARP应答报文后,将数据报文封装并发给网关,再由网关将数据报文发送给目的主机Host_4。Host_1学习网关IP地址对应的ARP表项的过程,以及网关设备学习Host_4的IP地址对应的ARP表项的过程与上述同网段主机Host_1和Host_3之间进行ARP地址解析的过程类似,不再赘述。

 6.8.ARP的周边问题

1.ARP的缓存一旦失效,就要重新设备就需要再次进行ARP请求以获取最新的MAC地址。

ARP的工作机制复杂,但我们可以从几个方面来理解其工作原理:

  1. ARP缓存:每台设备(如路由器、交换机、计算机等)都会维护一个ARP缓存表,这个表存储了已知的IP地址到MAC地址的映射关系。当设备需要发送数据包给某个IP地址时,它首先会检查自己的ARP缓存,看是否已经存在该IP地址到MAC地址的映射。

  2. 缓存命中与失效

    • 缓存命中:如果ARP缓存中已经存在所需的映射,那么设备将直接使用这个MAC地址发送数据包,而无需进行ARP请求。
    • 缓存失效:如果ARP缓存中没有所需的映射(即缓存失效),设备将发送一个ARP请求广播到网络上,询问拥有该IP地址的设备的MAC地址。收到ARP响应后,设备将更新其ARP缓存,并使用新的MAC地址发送数据包。
  3. ARP请求与响应

    • 当ARP缓存失效时,设备会发送一个ARP请求广播,询问网络上哪个设备拥有目标IP地址。
    • 拥有该IP地址的设备会发送一个ARP响应,包含其MAC地址,以回应这个ARP请求。
    • 发送ARP请求的设备收到响应后,会更新其ARP缓存,并使用新的MAC地址发送数据包。
  4. ARP的动态性:ARP缓存中的条目并不是永久有效的,它们会随着时间的推移而失效(这取决于具体的实现和配置)。一旦缓存条目失效,设备就需要再次进行ARP请求以获取最新的MAC地址。

综上所述,虽然ARP缓存的存在减少了ARP请求的频率,但ARP请求并不仅仅在缓存失效时才会进行。在某些情况下,如设备重启、网络配置更改或ARP缓存被手动清除时,设备也可能需要发送ARP请求来重新获取IP地址到MAC地址的映射。

2. 我可以通过我的IP和子网掩码,得到我的网络号,然后拼接IP地址,ping所有的主机,得到在本网络号下的所有主机的IP和mac

通过您的IP地址和子网掩码,您可以计算出网络号(也称为网络地址),然后理论上可以生成该子网内所有可能的IP地址,并尝试通过ping命令来检测这些IP地址的可达性。但是,直接获取每个可达主机的MAC地址并不总是通过简单的ping操作就能实现的,因为ARP(地址解析协议)通常在需要时才触发,且ARP的响应通常只发送给发起请求的设备 

3.如果我收到多次同样的arp应答,我会以最新的为准

6.9.ARP欺骗

        ARP (Address Resolution Protocol) 是一种网络层协议,用于将 IP 地址转换为物理地址(MAC 地址)。在局域网中,每台设备都有唯一的 MAC 地址,而 IP 地址是可以重复分配的。因此,当一个设备需要发送数据到另一个设备时,它需要知道另一个设备的 MAC 地址。

        ARP 欺骗(ARP spoofing)是一种网络攻击技术,通过发送伪造的 ARP 数据包,让目标设备误以为攻击者是其网关或其它设备,从而达到欺骗目标设备的目的。这样,攻击者就可以截获目标设备发出的数据包,甚至可以修改、篡改数据包中的内容。

        ARP欺骗攻击能导致网络连通性问题,网络隐私泄露,中间人攻击,欺骗目标设备的目的。而且很难发现,所以网络安全问题需要时刻保持高度警惕。

6.9.1.APR欺骗的原理

        ARP 欺骗的原理主要基于 ARP 协议的工作原理。

        ARP 协议是通过广播请求来获取目标设备的 MAC 地址的。当一个设备需要发送数据到另一个设备时,它会发送一个 ARP 请求,询问局域网内的所有设备,是否有指定 IP 地址对应的 MAC 地址。目标设备收到该请求后,会回复一个 ARP 应答,告诉请求者它的 MAC 地址。

        ARP 欺骗利用了这种工作原理,攻击者会发送伪造的 ARP 数据包,将自己伪装成网关或其它设备。目标设备收到伪造的 ARP 数据包后,会将攻击者的 MAC 地址映射到目标 IP 地址上,并将后续数据包发送给攻击者。攻击者就可以截获目标设备发出的数据包,甚至可以修改、篡改数据包中的内容。此时,攻击者已经拦截了目标设备和网关之间的数据包传输,并可能对数据包进行抓包,修改或篡改等攻击。

        同时,攻击者可以再发送伪造的ARP请求,将其它设备的IP映射到自己的MAC地址上,这样攻击者就可以中间人攻击,抓包,篡改等等。

总之,ARP 欺骗攻击通过伪造 ARP 数据包来破坏网络的正常通信,达到攻击的目的。

ARP双向欺骗原理:

        假设主机A 192.168.1.2,B 192.168.1.3,C 192.168.1.4;网关G 192.168.1.1;在同一局域网,主机A和B通过网关G相互通信,就像A和B两个人写信,由邮通员G送信,C永远都不会知道A和B之间说了些什么话。

        在ARP缓存表机制存在一个缺陷,就是当请求主机收到ARP应答包后,不会去验证自己是否向对方主机发送过ARP请求包,就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP缓存表中,如果原有相同IP对应关系,则会被替换。

举一个例子:

        C假扮邮递员G,告诉A:“我就是邮递员”( C主机向A发送构造好的返回包,源IP为G 192.168.1.1,源MAC为C自己的MAC地址), A很轻易的相信了,把C是邮递员”这个信息记在了脑子里;
        C再假扮A,告诉邮递员G:“我就是A" ( C向网关G发送构造好的返回包,源IP为A 192.168.1.2 ,源MAC地址为自己的MAC地址),邮递员G相信了,以后就把B的来信送给了C,C就可以知道A和B之间聊了些什么。

ARP单向欺骗原理:

        C向A发一条ARP数据包:B的地址是192.168.1.4 (一个错误的地址)。那么A此后向B发的数据包都会发给C,而这个地址是错误的,所以通讯中断了,但是这里只是A→B中断了,B→A没有中断,所以这个叫单向欺骗。

6.9.2.ARP欺骗的实现

ARP (Address Resolution Protocol) 攻击是指攻击者伪造 ARP 数据包来欺骗网络中的其他设备。ARP 攻击的实现过程如下:

  • 1、攻击者扫描网络中的 IP 地址和 MAC 地址。
  • 2、攻击者构造伪造的 ARP 数据包,其中包含网络中其他设备的 IP 地址和攻击者自己的 MAC 地址。
  • 3、攻击者发送伪造的 ARP 数据包到网络中。
  • 4、被攻击的设备接收到伪造的 ARP 数据包,并更新其 ARP 缓存表。
  • 5、之后,被攻击的设备将数据包发送到攻击者控制的设备上,而不是真正的目标设备,因此攻击者可以截获网络流量并篡改数据包。

6.9.3.ARP欺骗后可以选择进一步攻击

利用 ARP 欺骗进行的攻击可以进一步进行更深入的攻击,下面是一些例子:

  • 中间人攻击:通过 ARP 欺骗攻击者可以成为网络中的中间人,收集网络流量并篡改数据包。
  • 数据劫持:攻击者可以通过 ARP 欺骗来获取网络中的敏感信息,如用户名和密码。
  • 欺骗DNS:攻击者可以通过 ARP 欺骗来重定向 DNS 请求到攻击者控制的服务器上。
  • 后门攻击:攻击者可以通过 ARP 欺骗来在网络中放置后门,进一步控制被攻击主机。
  • 分布式拒绝服务攻击 (DDoS):攻击者可以通过控制多台设备进行 ARP 欺骗来发起 DDoS 攻击。

因此,防范ARP欺骗非常重要,需要采用多种手段来保护网络安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/413977.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宏集MIRO-L230工业路由器: 一站式全球联网解决方案

在日益互联的世界中,全球覆盖的稳定连接已成为业务成功的关键因素。宏集非常高兴地向您介绍我们的最新创新产品——MIRO-L230工业路由器,这是一款为现代企业量身定制的LTE路由器,为用户带来前所未有的稳定连接体验。 宏集MIRO-L230工业路由器…

墨兰:花语寓意、神秘传说与独特魅力全解析

在繁花似锦的植物世界中,墨兰宛如一位优雅的隐士,静静地散发着独特的魅力。它那婀娜的身姿和淡雅的芬芳,仿佛在诉说着一个个古老而神秘的故事。当我们凝视着墨兰,不禁会被它那独特的气质所吸引,想要探寻它背后隐藏的花…

电容的分类

电容作为电子产品中不可或缺的元件,其种类繁多,各具特色。以下是电容的主要分类、作用及优缺点概述: 一、电容的分类 电容的分类方式多样,常见的分类方式包括按结构、用途、电解质类型及制造材料等。 按结构分类: 固…

C++编程-递归算法1

目录 先言 关于递归算法 例题一 题目描述 算法分析 标准程序 代码分析 例题二 题目描述 算法分析 标准程序 例题三 题目描述 算法分析 标准程序 代码分析 例题四 题目描述 标准程序 代码分析 后言 先言 从今天开始,我们将新的算法——递归&…

大二必做项目贪吃蛇超详解之中篇游戏设计与分析

贪吃蛇系列文章 上篇win32 中篇设计与分析 文章目录 贪吃蛇系列文章1. 地图1. 1 <locale.h>本地化1. 2 类项1. 3 setlocale函数1. 4 宽字符的打印1. 5 地图坐标 2. 蛇身和食物3. 数据结构设计4. 游戏流程设计5. 核心逻辑实现分析5. 1 游戏主逻辑5. 2 GameStart5. 2. 1 S…

145. 利用 Redis Bitmap实践: 用户签到统计

文章目录 一、Redis Bitmap简介二、Bitmap 的主要应用三、Go使用Redis实现签到统计用户签到查询用户签到状态统计今年累计签到天数统计当月的签到情况 总结 在现代应用程序中&#xff0c;用户签到是一个常见的功能。我们通常使用 MySQL 数据库来存储用户的签到记录。然而&#…

Go入门:gin框架极速搭建图书管理系统

Go入门:gin框架极速搭建图书管理系统 前言 本项目适合 Golang 初学者,通过简单的项目实践来加深对 Golang 的基本语法和 Web 开发的理解。 项目源码请私信,欢迎前往博主博客torna.top免费查看。 项目结构 D:. ├─ go.mod ├─ go.sum │ ├─ cmd │ └─ main │ …

Docker 容器编排之 Docker Compose

目录 1 Docker Compose 概述 1.1 主要功能 1.2 工作原理 1.3 Docker Compose 中的管理层 2 Docker Compose 的常用命令参数 2.1 服务管理 2.1.1 docker-compose up &#xff1a; 2.1.2 docker-compose down &#xff1a; 2.1.3 docker-compose start &#xff1a; 2.1.4 docker…

OpenCV绘图函数(7)从一个椭圆定义中提取出多边形的顶点坐标函数ellipse2Poly()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 近似一个椭圆弧为一个多边形线。 函数 ellipse2Poly 计算近似指定椭圆弧的多边形线的顶点。它被 ellipse 函数所使用。如果 arcStart 大于 arcEn…

景芯SoC A72实战反馈

先说结论&#xff1a; 内容非常全面&#xff0c;讲解到位&#xff0c;会有专门的工程师一对一答疑&#xff0c;整个项目跑下来提升非常大&#xff0c;绝对物超所值&#xff01; 一些细节&#xff1a; 本人微电子专业研一在读&#xff0c;有过两次简单的数字芯片流片经历&…

spring security 相关过滤器

Spring Security 提供了 30 多个过滤器。默认情况下Spring Boot 在对 SpringSecurity 进入自动化配置时&#xff0c;会创建一个名为 SpringSecurityFilerChain 的过滤器&#xff0c;并注入到Spring容器中&#xff0c;这个过滤器将负责所有的安全管理&#xff0c;包括用户认证、…

Windows系统中批量管理Windows服务器远程桌面工具——RDCMan

一、背景 在公司没有部署对应的堡垒机系统之前,做运维测试工作的人员,需要管理大量的服务器,每天需要对服务器进行必要的巡检、系统更新发布等内容,特别是有很多Windows服务器的时候,如果我们使用Windows自带的“远程桌面连接”只能一台台连接,比较繁琐。并且不能知道那台…

十二星座男女、穿越到古代会成为什麽角色 。

白羊座&#xff08; 大将军 &#xff09;&#xff1b; 金牛座&#xff08;财务大臣&#xff09;&#xff1b; 双子座&#xff08; 奸臣 &#xff09;&#xff1b; 巨蟹座&#xff08;御厨太医&#xff09;&#xff1b; 狮子座&#xff08;皇帝&#xff09;&#xff1b; …

虚幻5|按键触发学习

一&#xff0c;如图参考 1.下移 驱动阈值 越大按时间长才会触发&#xff0c;越小很快就可以触发 2.按下 当按下超出驱动阈值大小就会触发一次&#xff0c;这里的驱动阈值只能设置再0.1~1的大小 3.已松开 当按下的时候&#xff0c;先触发单次的started&#xff0c;如果按压…

精选算法编程题

一、有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0,3,10]输出&#xff1a;[0,1,9,16,100]解释&#xff1a;平方后&am…

中国各城市金融科技公司数目数据集(2009-2023年)

金融科技&#xff08;FinTech&#xff09;是金融与科技深度融合的产物&#xff0c;它利用大数据、云计算、人工智能、区块链等现代信息技术手段&#xff0c;对传统金融产品、业务、流程及服务模式进行革新&#xff0c;从而实现金融服务效率的提升、风险管理的优化以及客户体验的…

《深入浅出WPF》读书笔记.8路由事件

《深入浅出WPF》读书笔记.8路由事件 背景 路由事件是直接响应事件的变种。直接响应事件&#xff0c;事件触发者和事件响应者必须显示订阅。而路由事件的触发者和事件响应者之间的没有显示订阅&#xff0c;事件触发后&#xff0c;事件响应者安装事件监听器&#xff0c;当事件传…

我熟悉你的NLP焦虑,只因没有它

大家好&#xff0c;我是凡人。 最近凡人被一个NLP&#xff08;神经语言程序学[Neuro-Linguistic Programming]的英文缩写&#xff09;学习内容给震惊到了&#xff0c;熟悉NLP的同学都知道&#xff0c;NLP知识不仅庞大而且很有深度。 比如&#xff1a;机器信息就包含下图内容 肝…

集成电路学习:什么是IDE集成开发环境

IDE&#xff1a;集成开发环境 IDE&#xff0c;全称“Integrated Development Environment”&#xff0c;即集成开发环境&#xff0c;是一种用于提供程序开发环境的应用程序。它集成了代码编写、分析、编译、调试等多种功能于一体的开发软件服务套&#xff0c;为开发者提供了一个…

mybatis-plus中Swagger 模式和Kotlin 模式是什么?

在 MyBatis-Plus 中&#xff0c;Swagger 模式和 Kotlin 模式是为了支持特定技术栈和开发需求的两种配置选项。它们分别针对 API 文档生成和 Kotlin 语言提供了更好的支持和集成。 Swagger 模式 Swagger 模式主要用于生成 API 文档。在 MyBatis-Plus 中启用 Swagger 模式后&am…