天天看点

数据链路层(四)

数据链路层(四)

3.7 MAC地址、IP地址以及ARP协议

数据链路层(四)

MAC地址

  • 使用点对点信道的数据链路层不需要使用地址
  • 使用广播信道的数据链路层必须使用地址来区分各主机
数据链路层(四)

广播信道的数据链路层必须使用地址(MAC)

数据链路层(四)
数据链路层(四)
数据链路层(四)
MAC地址又称为硬件地址或物理地址。请注意:不要被 “物理” 二字误导认为物理地址属于物理层范畴,物理地址属于数据链路层范畴
数据链路层(四)

IEEE 802局域网的MAC地址格式

数据链路层(四)
组织唯一标识符OUI
  • 生产网络设备的厂商,需要向IEEE的注册管理机构申请一个或多个OUI
网络接口标识符
  • 由获得OUI的厂商自行随意分配
EUI-48
  • 48是这个MAC地址的位数
数据链路层(四)
对于使用EUI-48空间的应用程序,IEEE的目标寿命为100年(直到2080年),但是鼓励采用EUI-64作为替代

关于无效的 MAC 帧

  • 数据字段的长度与长度字段的值不一致
  • 帧的长度不是整数个字节
  • 用收到的帧检验序列 FCS 查出有差错
  • 数据字段的长度不在 46 ~ 1500 字节之间
  • 有效的 MAC 帧长度为 64 ~ 1518 字节之间
对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。

IEEE 802局域网的MAC地址发送顺序

数据链路层(四)

单播MAC地址举例

数据链路层(四)
主机B给主机C发送单播帧,主机B首先要构建该单播帧,在帧首部中的目的地址字段填入主机C的MAC地址,源地址字段填入自己的MAC地址,再加上帧首部的其他字段、数据载荷以及帧尾部,就构成了该单播帧
数据链路层(四)

主机B将该单播帧发送出去,主机A和C都会收到该单播帧

主机A的网卡发现该单播帧的目的MAC地址与自己的MAC地址不匹配,于是丢弃该帧

主机C的网卡发现该单播帧的目的MAC地址与自己的MAC地址匹配,于是接受该帧,并将该帧交给其上层处理

广播MAC地址举例

数据链路层(四)
假设主机B要发送一个广播帧,主机B首先要构建该广播帧,在帧首部中的目的地址字段填入广播地址,也就是十六进制的全F,源地址字段填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成了该广播帧
数据链路层(四)
主机B将该广播帧发送出去,主机A和C都会收到该广播帧,发现该帧首部中的目的地址字段的内容是广播地址,就知道该帧是广播帧,主机A和主机C都接受该帧,并将该帧交给上层处理

多播MAC地址举例

数据链路层(四)

假设主机A要发送多播帧给该多播地址。将该多播地址的左起第一个字节写成8个比特,第一个字节的最低比特位是1,这就表明该地址是多播地址

快速判断地址是不是多播地址,就是上图所示箭头所指的第十六进制数不能整除2(1,3,5,7,9,B,D,F),则该地址是多播地址

假设主机B,C和D支持MAC多播,各用户给自己的主机配置多播组列表如下所示

数据链路层(四)
主机B属于两个多播组,主机C也属于两个多播组,而主机D不属于任何多播组
数据链路层(四)
主机A首先要构建该多播帧,在帧首部中的目的地址字段填入该多播地址,源地址字段填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成了该多播帧
数据链路层(四)

主机A将该多播帧发送出去,主机B、C、D都会收到该多播帧

主机B和C发现该多播帧的目的MAC地址在自己的多播组列表中,因此主机B和C都会接受该**多播帧,**并交付给上层处理

主机D发现该多播帧的目的MAC地址不在自己的多播组列表中,则丢弃该多播帧

注意:

当给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址

随机MAC地址

iOS系列设备、Windows 10、安卓 6.0、内核版本 3.18都开始提供随机MAC地址的功能

目前,大多数移动设备已经采用了随机MAC地址技术

总结

数据链路层(四)

IP地址

IP地址属于网络层的范畴,不属于数据链路层的范畴

下面内容讲的是IP地址的使用,详细的IP地址内容将在网络层中介绍

基本概念

数据链路层(四)

从网络体系结构看IP地址与MAC地址

数据链路层(四)

数据包转发过程中IP地址与MAC地址的变化情况

图中各主机和路由器各接口的IP地址和MAC地址用简单的标识符来表示

数据链路层(四)
数据链路层(四)
数据链路层(四)

如何通过 ip 地址找出其对应的 MAC 地址,这是我们下面将要介绍的地址解析协议ARP所要实现的功能

练习

数据链路层(四)

总结

数据链路层(四)

ARP协议

如何通过 IP地址找出其对应的MAC地址 ?

  • ARP协议

流程

数据链路层(四)

ARP高速缓存表

数据链路层(四)
当主机B要给主机C发送数据包时,会首先在自己的​

​ARP高速缓存表​

​​中查找主机C的IP地址所对应的MAC地址,但未找到。因此,主机B需要发送 ​

​ARP请求报文​

​,来获取主机C的MAC地址
数据链路层(四)

ARP请求报文有具体的格式,上图的只是简单描述。

ARP请求报文被封装在MAC帧中发送,目的地址为广播地址。

主机B发送封装有ARP请求报文的广播帧,总线上的其他主机都能收到该广播帧。

数据链路层(四)
数据链路层(四)

收到ARP请求报文的主机A和主机C会把ARP请求报文交给上层的ARP进程

主机A发现所询问的IP地址不是自己的IP地址,因此不用理会

主机C发现所询问的IP地址是自己的IP地址,需要进行响应

数据链路层(四)
数据链路层(四)

ARP请求报文被封装在MAC帧中发送,目的地址为主机B的MAC地址。

主机C给主机B发送封装有ARP响应报文的单播帧。

总线上的其他主机都能收到该单播帧。

数据链路层(四)
数据链路层(四)
动态与静态的区别
数据链路层(四)

ARP协议只能在一段链路或一个网络上使用,而不能跨网络使用

数据链路层(四)

注意:

对于本例,ARP协议的使用是逐段链路进行的

总结

数据链路层(四)
ARP表中的IP地址与MAC地址的对应关系记录是会定期自动删除的,因为IP地址与MAC地址的对应关系不是永久性的

3.8、集线器与交换机的区别

集线器-在物理层扩展以太网

概念

数据链路层(四)
数据链路层(四)
  • 传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。
  • 采用双绞线的以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器 (HUB)。
  • 集线器是也可以看做多口中继器,每个端口都可以成为一个中继器,中继器是对减弱的信号进行放大和发送的设备
  • 集线器的以太网在逻辑上仍是个总线网,需要使用 CSMA/CD 协议来协调各主机争用总线,只能工作在半双工模式,收发帧不能同时进行

集线器HUB在物理层扩展以太网

使用集线器扩展:将多个以太网段连成更大的、多级星形结构的以太网

数据链路层(四)
优点
  1. 使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信。
  2. 扩大了以太网覆盖的地理范围。
缺点
  1. 碰撞域增大了,但总的吞吐量并未提高。
  2. 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。

碰撞域

  • 碰撞域(collision domain)又称为冲突域,是指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络。
  • 碰撞域越大,发生碰撞的概率越高。

以太网交换机 - 在数据链路层扩展以太网

概念

  • 扩展以太网更常用的方法是在数据链路层进行。
  • 早期使用网桥,现在使用以太网交换机。
数据链路层(四)
网桥
  • 网桥工作在数据链路层。
  • 它根据 MAC 帧的目的地址对收到的帧进行转发和过滤。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的MAC 地址,然后再确定将该帧转发到哪一个接口,或把它丢弃。
交换机
  • 1990 年问世的交换式集线器 (switching hub) 可明显地提高以太网的性能。
  • 交换式集线器常称为以太网交换机(switch) 或第二层交换机(L2 switch),强调这种交换机工作在数据链路层。
  • 以太网交换机实质上就是一个多接口的网桥

集线器HUB与交换机SWITCH区别

数据链路层(四)

使用集线器互连而成的共享总线式以太网上的某个主机,要给另一个主机发送单播帧,该单播帧会通过共享总线传输到总线上的其他各个主机

使用交换机互连而成的交换式以太网上的某个主机,要给另一个主机发送单播帧,该单播帧进入交换机后,交换机会将该单播帧转发给目的主机,而不是网络中的其他各个主机

很显然,交换机具有明显的优势

这个例子的前提条件是忽略ARP过程,并假设交换机的帧交换表已经学习或配置好了

数据链路层(四)
以太网交换机的交换方式
  • 存储转发方式
  • 把整个数据帧先缓存后再进行处理。
  • 直通 (cut-through) 方式
  • 接收数据帧的同时就立即按数据帧的目的 MAC 地址决定该帧的转发接口,因而提高了帧的转发速度。
  • 缺点是它不检查差错就直接将帧转发出去,因此有可能也将一些无效帧转发给其他的站。
这个例子的前提条件是忽略ARP过程,并假设交换机的帧交换表已经学习或配置好了

对比集线器和交换机

数据链路层(四)
数据链路层(四)

多台主机同时给另一台主机发送单播帧

集线器以太网:会产生碰撞,遭遇碰撞的帧会传播到总线上的各主机

交换机以太网:会将它们缓存起来,然后逐个转发给目的主机,不会产生碰撞

这个例子的前提条件是忽略ARP过程,并假设交换机的帧交换表已经学习或配置好了

集线器扩展以太网和交换机扩展以太网的区别

单播

数据链路层(四)

广播

数据链路层(四)

多个单播

数据链路层(四)
数据链路层(四)

广播域(broadcast domain):指这样一部分网络,其中任何一台设备发出的广播通信都能被该部分网络中的所有其他设备所接收。

总结

数据链路层(四)

继续阅读