数据链路层 -------- 以太网 和 ARP

目录

 一.数据链路层解决的问题

二.以太网协议

1.认识以太网

2.以太网帧格式

3.认识MAC地址

4.理解MAC地址和IP地址

5.认识MTU

6.MTU对IP协议的影响

7.MTU对UDP协议的影响

8.MTU对TCP协议的影响

9.数据跨网络传输

三.ARP协议 

1.ARP协议的引出

2.为什么要有ARP协议

3.ARP协议的定位

4.ARP数据的格式


 一.数据链路层解决的问题

  • IP拥有将数据跨网络从一台主机送到另一台主机的能力,但IP并不能保证每次都能够将数据可靠的送到对端主机,因此IP需要上层TCP为其提供可靠性保证,比如数据丢包后TCP可以让IP重新发送数据,最终在TCP提供的可靠性机制下IP就能够保证将数据可靠的发送到对端主机。
  • TCP除了对下层IP提供可靠性机制之外,TCP对上还提供进程到进程的服务,我们在进行socket编程时,本质就是在使用TCP或UDP为我们提供的进程到进程的服务。
  • 但数据在网络传输时需要一跳一跳的从一台主机跳到另一台主机,最终才能将数据转发到目标主机,因此要将数据发送到目标主机的前提是,需要先将数据转发给与当前主机直接相连的下一跳主机,而两台主机直接相连也就意味着这两台主机属于同一网段,因此将数据转发到下一跳主机实际是属于局域网通信范畴的,而这实际就是链路层需要解决的问题。
  • 网络层IP提供的是跨网络发送数据的能力,传输层TCP是为数据发送提供可靠性保证的,而链路层解决的则是局域网两台相连主机之间的通信问题。

                

                        

二.以太网协议

1.认识以太网

(1)不同局域网所采用的通信技术可能是不同的,常见的局域网技术有以下三种:

  • 以太网:以太网是一种计算机局域网技术,一种应用最普遍的局域网技术。
  • 令牌环网:令牌环网常用于IBM系统中,在这种网络中有一种专门的帧称为“令牌”,在环路上持续地传输来确定一个节点何时可以发送包。(可以简单理解为令牌环网就相当于网络中有一个令牌,只有拿到令牌的主机才能发送数据(互斥锁)         )
  • 无线LAN/WAN:无线局域网是有线网络的补充和扩展,现在已经是计算机网络的一个重要组织部分. 

(2)虽然网络中各个局域网所采用的通信技术可能的不同的,但是IP屏蔽了底层网络的差异,对于网络通信双方的IP层及其往上的协议来说,它们并不需要关心底层具体使用的是哪种局域网技术, 即IP以上的通信标准是一样的。

(3)局域网本身就是临界资源,每台主机都想在这个网络上面发送数据。 

(4)以太网通信原理

  • “以太网”不是一种具体的网络,而是一种技术标准,它既包含了数据链路层的内容,也包含了一些物理层的内容。例如,以太网规定了网络拓扑结构,访问控制方式,传输速率等。
  • IP网络从A主机经过路径选择到B主机的过程,这个过程是一个宏观的,抽象的概念,具体办事的还要是底层的协议去做。这种底层保证相连两个主机通信的协议叫做:以太网协议
  • 以太网中的网线必须使用双绞线,传输速率有10M,100M,1000M等。
  • 以太网中所有的主机共享一个通信信道,当局域网中的一台主机发出数据后,该局域网中的所有主机都能够收到该数据。

 ①两台主机通信

  • 当局域网中的主机A想要发送数据给主机B时,其实局域网当中的每一台主机都能收到主机A发出去的数据,只不过最终只有主机B会将主机A发来的数据向上进行交付。
  • 局域网当中的其他主机虽然也收到了主机A发出的数据,但经过识别后发现这个数据不是发送给自己的,于是就会直接将该数据丢弃而不会向上进行交付。
  • 在进行局域网通信的时候,局域网当中的所有主机都能够看到局域网中传输的任何数据,只不过每个主机都只关心发送给自己的数据罢了。

②补充

  • 网络抓包不仅能够抓到发送给自己的报文数据,也能抓取到发给别人的报文数据,实际就是因为在进行网络抓包时,主机将从局域网中收到的所有报文数据都向上交付了而已。
  • 网卡有一种模式叫做混杂模式,被设置为混杂模式的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。

                                 

(5)以太网通信形象举例

 ①我的主机以及Server上是有路由表的,当我进行数据包发出的时候我要先查找我的目的网络,我虽然不知道外网是什么样子,但我一定认识自己所在的网络号,可以根据自己的子网掩码和目的IP地址进行按位与确定清楚这个报文是发给同一局域网内的主机还是外网,如果确定是发给外网的只需要把这个报文转给路由器即可,如果是给自己局域网内的某台主机就要需要以太网通信协议

②局域网相当于一个教室。每个人站起来说一句话所有人都能听见,张三和李四通话其他人也能听见。老师提问某个同学就相当于进行了一次网络通信(当然其他人也听到了但是没站起来);正在提问时有两个同学在讨论其他的话题,我们彼此会有干扰(这叫数据碰撞), 导致彼此之间谁都无法通信。会产生垃圾数据,被所有人识别,发送的主机会进行检测再发送(这叫局域网的碰撞检测); 重新发的过程仍有可能发生碰撞,要避免碰撞,而且在不断的检测有没有人发。碰撞避免之后还有可能碰撞但是概率降低。(虽然是单对单通信,但是其他人都听到了,但是其他人没有站起来是因为他们知道不是叫自己的)

③以太网通信当中任意时刻只允许有一个人在向另一个人通信。局域网比作一件教室,主机比作同学。局域网的资源是大家(同一局域网内的主机)共享的想占有这块资源的计算机有很多,站在OS角度,这个局域网就可以被称之为跨主机多个主机之间的临界资源局域网的争用问题,(和多线程的争互斥锁有点像)。

④碰撞就相当于一个教室正在上课,老师提问一个同学,低下有人说话,互相干扰整个局域网可以称为一个碰撞域每一台主机发送数据时都有可能和别人出现冲突。每台主机发送数据其他主机都要进行碰撞检测要进行冲突避免,发生冲突之后要在合适的时机进行重传MAC帧层也有重传机制,但是MAC帧的重传更多的目的是为了保证它的数据在网络当中被正确的发送给对方

⑤有人说岂不是效率太低,一发生碰撞我们就要等?       不要担心效率问题,因为我们在同一个局域网,距离就这么近,而且网线上跑的都是光电信号非常快。

⑥交换机工作在数据链路层; 交换机的作用: 划分碰撞域,减少碰撞概率(能够识别碰撞,就不用转发了,减少碰撞) ,转发数据帧。

⑦同一个局域网中的主机数越多,发生碰撞的概率越大。没有交换机的时候A想和C通信 ,B想和E通信,但是只能有一个进行通信;有了交换机划分了碰撞域,交换机左边AC通信,交换机右边BE通信。

在局域网中,你以为的两个主机之间在单独通信,但是其他主机也能收到信息只不过是不处理罢了,都是吃瓜群众所以一些抓包工具可以抓到不是自己的报文广播,1:n所有主机都能收到,大家约定一个目的MAC地址,只要大家识别到这个约定的就可以。一般是全1 or 全F。

路由器也是这个局域网的一台主机,主机的下—跳可以是路由器目的iP地址给我们以宏观指导,MAC地址给我们微观导向(一跳—跳)。
                        

(6)碰撞避免算法

①由于以太网中的所有的主机共享一个通信信道,因此在同一时刻只允许有一台主机发送数据,否则各个主机发送的数据就会相互干扰。站在系统的角度来看,这里各个主机所共享的通信信道就是一种临界资源,这个临界资源同一时刻只允许一台主机使用。

  • 对于这个问题,以太网的做法就是先不限制各个主机发送数据的能力,局域网中的每个主机想发数据的时候直接发就行了,但是只要发送出去的数据与其他主机发送的数据产生了碰撞,那就得执行碰撞避免算法。
  • 所谓的碰撞避免算法就是,当主机发送出去的数据产生碰撞时,该主机需要等待一段时间后再进行数据重发,在主机等待的时候就能够就能够尽可能让局域网当中的数据消散。
  • 以太网通信的原理就像现实生活中开会一样,在开会过程中同一时刻只允许一个人发言,如果两个人突然同时说话,那么双方都会有礼貌的等待别人先说。
  • 也就是说,以太网中主机发送的数据产生碰撞后该主机会执行碰撞避免算法,所以我们说以太网是基于碰撞区和碰撞检测的局域网通信标准。

②碰撞避免算法就是主机等待一段时间后重新发送数据,因此以太网底层也有重传机制,只不过以太网的重传机制只是为了保证将数据从局域网中的一台主机发送到另一台主机。

                         

③CSMA/CD协议的工作过程, 简单理解

 

                 

(7)令牌环网

  • 令牌环网(Token-ring network)的传输方法在物理上采用了星形拓扑结构,但逻辑上是环形拓扑结构。
  • 令牌环网的通信传输介质可以是无屏蔽双绞线、屏蔽双绞线和光纤等。
  • 令牌环网中各节点间采用多站访问部件(Multistation Access Unit,MAU)连接在一起,MAU是一种专业化集线器,用来围绕工作站计算机的环路进行传输。

  • 在令牌环网中有一种专门的帧称为“令牌”,这个“令牌”会在环路上持续地传输,只有拿到“令牌”的主机才能发送数据,因此发送出去的数据不会发生碰撞。
  • 令牌环网当中的“令牌”就像系统当中用于保护临界资源的互斥锁一样,“令牌”与互斥锁一样也有“忙”和“闲”两种状态,“忙”表示令牌已经被占用,而“闲”则表示令牌没有被占用。
  • 想要发送数据的计算机必须首先检测到“闲”令牌,并将其置为“忙”状态,然后才可以发送数据,这就和申请互斥锁的过程很像。
  • 此外,由于“令牌”在网环上是按顺序依次传递的,因此对于所有入网的计算机而言,它们获取令牌的机会都是相等的,因此不会造成某台主机发送数据的饥饿问题。

                        

2.以太网帧格式

  • 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。
  • 帧协议类型字段有三种值,分别对应IP协议、ARP协议和RARP协议。
  • 帧末尾是CRC校验码。

(1)MAC帧如何将报头与有效载荷进行分离

以太网MAC帧的帧头和帧尾都是固定长度的,因此当底层收到一个MAC帧后,直接提取出MAC帧当中固定长度的帧头和帧尾,此时剩下的就是有效载荷了。

                         

(2)MAC帧如何决定将有效载荷交付给上层的哪一个协议

在MAC帧的帧头当中有2个字节的类型字段,因此在分离出报头和有效载荷后,根据该字段将有效载荷交付给对应的上层协议即可

                 

(3)CRC校验

现假设选择的 CRC生成多项式为 G( X) = X^4 + X^3 + 1,要求出二进制序列 10110011的 CRC校验码。下面是具体的计算过程 :

  • ①将多项式转化为二进制序列,由 G( X) = X^4 + X^3 + 1可知二进制一种有五位,第四位、第三位和第零位分别为1,则序列为11001
  • ②多项式的位数位5,则在数据帧的后面加上 5-1=4 位0,数据帧变为 101100110000,然后使用模2除法除以除数 11001,得到余数。

  • ③将计算出来的CRC校验码添加在原始帧的后面,真正的数据帧为101100110100,再把这个数据帧发送到接收端。
  • ④接收端收到数据帧后,用上面选定的除数,用模2除法除去,验证余数是否为0,如果为0,则说明数据帧没有出错。

                

3.认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点。
  • 长度为48位,及6个字节,一般用16进制数字加上冒号的形式来表示,例: 08:00:27:03:fb:19。
  • 在网卡出厂时就确定了,不能修改,MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突;也有些网卡支持用户配置MAC地址)。

                        

4.理解MAC地址和IP地址

(1)实际数据在路由过程中会存在两套地址,一套是源IP地址和目的IP地址,还有一套是源MAC地址和目的MAC地址。

  • IP地址描述的是路途总体的起点和终点。
  • MAC地址描述的是路途上的每一个区间的起点和终点。

(2)因此数据在路由过程中,源IP地址和目的IP地址可以理解成是不会变化的,而数据每进行一跳后其源MAC地址和目的MAC地址都会变化。(  实际数据在路由过程中,源IP地址和目的IP地址也可能会发生变化(NAT技术))

(3)MAC地址只能在局域网中使用的根本原因?
因为数据要跨网络就必须要经过路由器,路由器会进行解包和封包,一旦解包封包了,采用的接口(路由器至少有两个IP地址和MAC地址,两个接口)就不一样了,所以MAC地址就可能发生变化。

                        

5.认识MTU

  • MTU(Maximum Transmission Unit,最大传输单元)描述的是底层数据帧一次最多可以发送的数据量,这个限制是不同的数据链路层对应的物理层产生的。
  • 以太网对应MTU的值一般是1500字节,不同的网络类型有不同的MTU,如果一次要发送的数据超过了MTU,则需要在IP层对数据进行分片(fragmentation)。
  • 此外,以太网规定MAC帧中数据的最小长度为46字节,如果发送数据量小于46字节,则需要在数据后面补填充位,比如ARP数据包的长度就是不够46字节的

                         

6.MTU对IP协议的影响

(1)因为数据链路层规定了最大传输单元MTU,所以如果IP层一次要发送的数据量超过了MTU,此时IP层就需要先对该数据进行分片,然后才能将分片后的数据向下交付。

  • IP层会将较大的数据进行分片,并给每个分片数据包进行标记,具体就是通过设置IP报头当中的16位标识、3位标志和13位片偏移来完成的。
  • 由同一个数据分片得到的各个分片报文,所对应的IP报头当中的16位标识(id)都是相同的。
  • 每一个分片报文的IP报头当中的3位标志字段中,第2位设置为0,表示允许分片,第3位用作结束标记(最后一个分片报文设置为0,其余分片报文设置为1)。
  • 当对端IP层收到这些分片报文后,需要先将这些分片报文按顺序进行组装,拼装到一起后再向上交付给传输层。
  • 如果分片后的某个报文在网络传输过程中丢包了,那么对端在进行数据组装时就会失败,此时就需要上层传输层进行数据重传。

                         

                 

(2)数据的分片和组装发生在IP层,不仅源端主机可能会对数据进行分片,数据在路由过程中的路由器也可能对数据进行分片。因为不同网络的MTU是不一样的,如果传输路径上的某个网络的MTU比源端网络的MTU小,那么路由器就可能对IP数据报再次进行分片。

                 

7.MTU对UDP协议的影响

  • IP报头当中如果不携带选项字段,那么IP报头的长度就是20字节,而UDP采用的是定长的8字节报头,因此如果UDP一次携带的数据超过了1500−20−8=1472 字节,此时数据就需要在IP层进行分片。
  • 分片后得到的多个IP数据报中有任意一个在传输过程中丢失,都会引起接收端IP层重组失败。
  • 假设在网络传输时丢包的概率是万分之一,如果将数据拆分为一百份进行发送,那么此时丢包的概率就上升到了百分之一。
  • 因为只要有一个分片报文丢包了也就等同于这个报文整体丢失了,因此分片会增加UDP报文丢包的概率。

                        
8.MTU对TCP协议的影响

  • 对于TCP来说,分片也会增加TCP报文丢包的概率,但与UDP不同的是TCP丢包后还需要进行重传,因此TCP应该尽量减少因为分片导致的数据重传。
  • TCP发送的数据报不能无限大,还是应该受制于MTU,我们将TCP的单个数据报的最大报文长度,称为MSS(Max Segment Size)。
  • TCP通信双方在建立连接的过程中,就会进行MSS协商,最终选取双方支持的MSS值当中的较小值作为最终MSS。
  • MSS的值实际就是在TCP首部的40字节的选项字段当中的(kind=2)。
  • 最理想的情况下,MSS的值正好就是在数据不会在IP层进行分片的最大长度。

                

9.数据跨网络传输

 

以主机A将数据跨网络传输给主机B为例,数据路由的过程如下:

  • 主机A要想将数据跨网络传输给主机B,需要先将数据交给同局域网当中的路由器A,因此主机A需要将封装好的MAC帧发送到当前局域网当中,此时MAC帧当中的源MAC地址和目的MAC地址,对应就是主机A的MAC地址和路由器A的MAC地址。
  • 此时主机A所在局域网当中的所有主机都能收到这个MAC帧,但最终只有路由器A发现该MAC帧当中的目的MAC地址与自己的MAC地址相同,于是才会对该MAC帧进行解包,并将解包后剩下的IP数据报交付给IP层。
  • 路由器A的IP层拿到解包后的IP数据报后,会提取出IP报头当中的目的IP地址,然后通过查询路由表后确定需要将该数据转发给路由器B,于是路由器A再将数据向下进行交付,重新封装MAC帧的帧头和帧尾,但此时封装后的MAC帧当中的源MAC地址和目的MAC地址,就变成了路由器A的MAC地址和路由器B的MAC地址。
  • 与路由器B直接相连的主机虽然也可能有很多,但最终只有路由器B发现该MAC帧当中的目的MAC地址与自己的MAC地址相同,于是才会对该MAC帧进行解包,并将解包后剩下的IP数据报交付给IP层。
  • 路由器B的IP层拿到解包后的IP数据报后,同样会提取出IP报头当中的目的IP地址,并通过查询路由表后确定需要将该数据转发给路由器C,于是路由器B再将数据向下进行交付,重新封装MAC帧的帧头和帧尾,但此时封装后的MAC帧当中的源MAC地址和目的MAC地址又变了,变成了路由器B的MAC地址和路由器C的MAC地址。
  • 不断重复上述过程,直到最终数据转发至主机B。

因此数据在进行跨网络传输时,其对应的源IP地址和目的IP地址一般是不会变化的,而该数据的源MAC地址和目的MAC地址却是一直在变化的,根本原因就是因为该数据对应的上一跳主机和下一跳主机在不断变化。
 

                         

                

三.ARP协议 

1.ARP协议的引出

(1)我们要想给目的IP发送数据,一定要知道它的MAC地址。如果我想在局域网内广播的话 ,将目的IP地址全设置为  F/1 ,我把数据交给局域网内任何一台主机的前提条件是要知道对方的MAC地址,那么我们怎么知道,这是我们就需要一种策略,一种机制,只有知道了对方的MAC地址我们才能一对一的构建MAC协议然后发送数据。

(2)发送过程∶先把数据发送到路由器中,我怎么知道路由器的MAC地址?   在同一个网段当中,路由器一定是是第一台主机,它的IP地址一定是xxx.xxx.xxx.1 。因为所有人在连上网络之前路由器要配好,路由器配好了人才能连,路由器是第一个配好的。IP地址都知道了,那么MAC地址就能知道了。

(3)接收过程:我们的数据包千里迢迢送到了入口地址路由器处,这时我们要将数据交付给目标主机。我们需要通过这一台路由器找到目标主机,把数据交付的前提是要知道目标主机的MAC地址,但是我们最多只知道目的主机的IP地址,所以我们此时需要做的是将IP地址转化为MAC地址。怎么做?        先广播,将目的IP地址填为接收方的IP,源IP地址填自己,源MAC地址填自己的,目的MAC地址填全1表示广播,MAC帧内部一定是带的ARP协议,所有人都拿到这个数据帧进行处理,发现目的IP和自己的IP是相同的主机将自己的MAC地址再发送到局域网中被路由器收到。最后再将数据发送到目标主机。

                

2.为什么要有ARP协议

  • 地址解析协议(Address Resolution Protocol,ARP)协议,是根据IP地址获取MAC地址的一个协议。
  • 在同一个局域网中要给对方发消息,就必须得知道对方的MAC地址,而实际大部分情况下我们只知道对方的IP地址,因此需要通过ARP协议来根据IP地址来获取目标主机的MAC地址

                                        

3.ARP协议的定位

  • 在TCP/IP四层模型中,网络协议栈自顶向下分为应用层、传输层、网络层和数据链路层。
  • 其中应用层最典型的协议有HTTP、HTTPS和DNS等,传输层最典型的协议有TCP和UDP,网络层最典型的协议就是IP,数据链路层最典型的协议就是MAC帧协议,但实际数据链路层还有两种协议叫做ARP和RARP。
  • ARP、RARP和MAC帧协议虽然都属于数据链路层的协议,但ARP协议和RARP协议属于MAC帧的上层协议

  • 也就是说,MAC帧的上层协议不一定就直接是网络层的协议,MAC帧的上层协议有可能也属于数据链路层的协议,但就是位于MAC帧的上层。
  • 与之类似的,网络层当中的ICMP协议和IGMP协议,这两个协议虽然与IP协议都属于网络层,但这两个协议属于IP的上层协议。

                         

4.ARP数据的格式

  • 硬件类型指链路层的网络类型,1为以太网。
  • 协议类型指要转换的地址类型,0x0800为IP地址。
  • 硬件地址长度对于以太网地址为6字节,因为MAC地址是48位的。
  • 协议地址长度对于IP地址为4字节,因为IP地址是32位的。
  • op字段为1表示ARP请求,op字段为2表示ARP应答。

从ARP的数据格式也可以看出,ARP是MAC帧协议的上层协议,ARP数据格式中的前3个字段和最后一个字段对应的就是以太网首部,但由于ARP数据包的长度不足46字节,因此ARP数据包在封装成为MAC帧时还需要补上18字节的填充字段。
 

(1)现在假设局域网内A,B主机进行通信

①A发送的ARP以广播的形式:

  • 局域网所有主机都收到,将报头和有效载荷分离发现以太网目的地址是全F所有人都要向上交付,交付到ARP协议层(属于MAC帧协议的一种。每个主机先提取 OP发现是1,是请求,再看目的IP地址,和自己对比,如果不是则删掉。主机B发现是自己,接下来主机B要给A进行ARP应答。
  • 局域网当中其他不相干的主机在收到这个ARP请求报文后,不是在MAC帧层丢弃的,而是在ARP层发现该ARP数据包的目的IP与自己的IP不匹配后丢弃的。

                                 

②B发送的ARP专门发送给A: 

  •  每个主机都收到,解包提取以太网目的地址发现是给A的,于是就丢弃了。A收到解包发现MAC地址是自己于是解包向上交付给ARP协议,先看op发现是应答,于是提取发送端的Mac地址。

                         

 ③总结

  1. 发起方构建ARP请求,以广播的方式发送给每一台主机
  2. 每台主机都能识别接受,根据MAC地址,帧类型(0806), 交付给每个主机的ARP层!
  3. 其他不相关主机,立马根据目的IP,在自己的arp协议内部,丢弃arp请求,只有目标主机会处理!
  4. 目标主机构建好arp应答,以1对1的方式将ARP应答数据返回给源主机。
  5. 根据op判定是arp请求,还是应答,如果是应答,我们就提取arp应答中发送的MAC地址。
  6. 两台主机就可以“直接”通信了。

(2)为何arp协议主机收到arp报文的时候,一定要先看op字段?  任何一台主机都有可能被发起arp,也有可能收到arp应答。

                         

(3)ARP缓存表

①实际不是每次要获取对方的MAC地址时都需要发起ARP请求,每次发起ARP请求后都会建立对应主机IP地址和MAC地址的映射关系,每台主机都维护了一个ARP缓存表,可以用 arp -a 命令进行查看。

                         

 ②缓存表中的表项有过期时间,这个时间一般为20分钟,如果20分钟内没有再次使用某个表项,那么该表项就会失效,下次使用时就需要重新发起ARP请求来获得目的主机的硬件地址。

 

③为什么表项要有过期时间而不是一直有效?

当我们使用ARP技术找到了对应IP的MAC 地址,短期之内对方的IP地址是不会变化的。 

                

(4)MAC帧的报头当中已经涵盖了源和目的MAC地址,为什么ARP的报头当中还要有这两个字段?

  • MAC帧和ARP虽然都在数据链路层,但毕竟是上下层的关系,因此它们不会互相关心彼此报头当中的数据。
  • 此外,如果底层网络采用的不是以太网,而是其他类型的网络,此时ARP层的MAC地址就是必要的了。

                 

(5)在进行局域网通信时,为什么不直接以广播的方式发送数据?

①在进行局域网通信时,就算只知道对方的IP地址,而不知道对方的MAC地址,也可以以广播的方式将数据发送到局域网当中,此时局域网当中的主机也能够在IP层比对目的IP地址与自己是否相符,来判断收到的这个数据是否是发送给自己的。

②理论上确实可以这样,但这种方式是不合理的:

  • 对于局域网当中的大多数主机来说,收到的这个报文其实早就应该被丢弃,而现在这个报文却交付到了IP层,我们都知道IP层是属于操作系统管控的,因此这对网络资源和系统资源来说都是一种浪费。
  • 因此在底层MAC帧层就应该判定这个报文是不是发送给当前主机的,而不是当数据向上交付到了IP层再来判断。

③此外,如果无脑使用广播的方式来进行数据的发送,会使得广播和单播的概念变得模糊不清,你明明是想发送数据给局域网当中的一台主机,但你却采用了广播的方式,这显然是不合理的。

                        

(6)什么时候需要发起ARP请求?

  • 实际数据在路由过程中的每一跳可能都需要发起ARP请求,询问下一跳主机对应的MAC地址,因为在每一跳时我们一般都是只知道下一跳的IP地址,而并不知道其对应的MAC地址的。
  •  ARP属于局域网通信的协议标准,因此一台主机不能跨网络向另一台主机发起ARP请求

                

(7)RARP协议

  • RARP(Reverse Address Resolution Protocol,反向地址转换协议),是根据MAC地址获取IP地址的一个协议。
  • 也就是说,某些情况下我们可能只知道一台主机的MAC地址,此时要得知该主机的IP地址就可以使用RARP协议。
  • 理论上来说,RARP协议一定比ARP协议简单,因为既然我们已经知道一台主机的MAC地址了,那么我们就已经可以直接向给主机发送消息了,因此我们可以直接发消息询问对方的IP地址就行了。

 

 

                 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值