一、回顾
数据链路层要解决的基本的三个问题:封装成帧,透明床输、差错检测。封装成帧的步骤,如何实现透明传输,差错检测的方式。ppp点对点协议,它的三个组成,封装成帧、LCP链路控制协议、NCP网路控制协议,以及带点对点协议的过程:物理连接 → LCP连接 → NCP连接,以及对于点对点传播也需要在数据链路层实现透明传输,差错检测。广播信道局域网,以太网的CSMA/CD(多点接入、载波监听、碰撞检测)协议,碰撞检测中推出的最短有效帧,10Mb/s的以太网最短帧长度为64bit;无线局域网的CSMA/CA(多点接入、载波监听、碰撞避免)协议,碰撞避免是在发送数据之前检测总线状态,空闲等待DIFS发送数据,忙则退避,虚拟载波监听技术:信道预约: DIFS→源站发送RTS→SIFS→目的站发送CTS→SIFS后→源站发送数据帧→SIFS后→目的站发送ACK,信道预约可以避免屏蔽站问题。
二、MAC地址 IP地址 ARP协议
①MAC地址
MAC地址也叫物理地址,是硬件的唯一标识,所有硬件产品比如电脑、手机、平板等都会有全球唯一的标识,MAC地址长度为6个字节,即以太网V2帧中的6字节的目的地址和6字节的源地址所要填写的字段,MAC地址一般会被存储在硬件产品的网络适配器(即网卡)中的EPPROM中。
了解完MAC地址是什么,我们具体来看以下MAC地址的作用。对于点对点信道传输来说,其传输是不需要使用MAC地址,即不用找信息到底传输给谁,所以在ppp协议中,其数据链路层封装的帧格式并没有存储MAC地址的字段,帧格式为:1字节(7E)+1字节(7EF)+1字节(03)+2字节(协议)+数据部分(小于1500字节)+2字节(FCS)+1字节(7E)
对于局域网传输来说,其具有广播性质,主机向一台主机发送数据的时候,若不写明要发送的目的MAC地址,就会不知道到底是不是发送给自己的帧。
所以不难看出,只有以太网中才需要使用到MAC帧,对于点对点的传输是不需要使用到MAC帧的,直接传输,所以以下我们讨论以太网帧中的MAC地址。MAC长度为6个字节,即48位。6字节+6字节+2字节+数据(46字节~1500字节)+4字节FCS
。为什么以太网的帧数据长度是46字节~1500字节,而PPP协议的是需要小于等于1500字节? 是因为在以太网中使用CSMA/CA协议,为实现碰撞检测,就必须要有最小帧长度。
OUI是由IEEE管理结构分配每家公司的,例如我在我购买的平板后面看见的MAC地址为9C56362476XX。其中前3个字节的数据9C5636就是由IEEE分配的,将其查寻,可以发现该地址被分配给了华为公司,而我的平板正好就是华为品牌的。
后三个字节是由公司自己分配的。对于第一个字节中第一个数字b0,若该位为0则表示是单播地址,为1则表示为多播地址,第二位为0表示为全球管理的,第二位为1表示本地管理的;同时需要注意:全为1的MAC地址为广播地址
单播MAC帧
第一个字节的第一位为0,表示是单播MAC地址,主机B想向主机C发送数据,首先在数据链路层封装成帧,即加上源站MAC地址00-E0-F9-A3-43-77
,再加上目的站MAC地址00-0C-CF-B8-4A-82
,同时加上另外的2字节上层协议,4字节的FCS字段,以及数据,向总线发送数据,此时AC都能收到B发送的信息,AC比对帧中的目的MAC地址,A丢弃,C接受。
广播MAC帧
主机B想向主机所有主机发送数据,首先在数据链路层封装成帧,即加上源站MAC地址00-E0-F9-A3-43-77
,再将目的站MAC地址设置为FF-FF-FF-FF-FF-FF
,同时加上另外的2字节上层协议,4字节的FCS字段,以及数据,向总线发送数据,此时AC都能收到B发送的信息,AC比对帧中的目的MAC地址,发现为FF-FF-FF-FF-FF-FF
,即发现是广播地址,则AC都接受该帧。
多播MAC帧
要发送的目的MAC地址的第一个字节的第一位为1,表示是一个多播MAC帧,A要发送多播MACA帧,即添加上自己的MAC地址以及多播MAC帧以及其他字段构成多播帧,A向总线发送该多播帧,BCD接受到该多播帧,比对目的MAC地址,BC发现目的MAC帧在自己的多播组列表中,则接受该帧,D找不到,则不接受该帧。
②IP地址
IP地址是网络的唯一标识,所属网络不同,则其ip地址就不同,所以IP地址是用来区分不同网络的。IP地址的具体形式,在网络层会具体学习到,IP地址由两大部分组成 网络号+主机号,网络号区分不同的网络,主机号区分连接在同一网络上的不同主机。
数据包在传输过程中IP地址和MAC地址的变化情况如下
- H1给H2发送消息时,IP地址是写IP1→IP2的,而数据要首先经过R1路由器,所以数据链路层的MAC地址写的是MAC1→MAC3。
- 当到达路由器R1时,IP地址仍然不变,改变的是MAC地址,MAC4→MAC5。
- 所以在传送过程中,IP地址不改变,改变的只有MAC地址。
但是有个问题,数据传送的时候,在网络层H1是可以知道相应接口的IP地址为IP3的,但是在数据链路层是不知到MAC地址的,那么如何才能晓得下一个目的MAC地址是MAC3呢?即将要学习ARP协议就可以解决这个问题。
③ARP协议
ARP协议的作用就是通过IP地址找其对应的MAC地址的。
我们具体来看下ARP协议是如何通过IP地址找MAC地址的。
现在主机B想给主机C发送数据,B是只知道C的IP地址,但不知到其C的MAC地址,B的数据链路层封装MAC帧的时候,就会封装。
为了实现通过IP地址找到MAC地址,在每个主机中都会有ARP高速缓存,该缓存中存储着每一个IP地址所对应的MAC地址。假设初始时其主机B中的ARP高速访存中存储着以下内容,现在主机B想向主机C发送,主机B是知道C的IP地址为192.168.0.3
。
然后会在ARP高速缓存中,查找IP地址为192.168.0.3
的主机其所对应的MAC地址,发现没有,所以由主机B发送一个广播帧,询问IP地址为192.168.0.3
的MAC帧,C会发送一个单播帧回复给主机B,然后主机B就会记录下来,同时主机C也会将B的IP地址及其MAC地址记录在它的ARP高速缓冲中。
从而就可以进行传输了。