MAC地址是以太网的MAC子层所使用的地址 ---数据链路层
IP地址是TCP/IP体系结构网际层所使用的地址 --- 网际层
ARP协议属于TCP/IP的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取设备的MAC地址。--- 网际层
他们三个在我们日常使用网络都离不开,虽然MAC和另外两不在同一层,但是是有关系的,所以放在一起讨论。
3.7.1 MAC地址
两台主机通过链路进行通信,很显然他们不需要地址就可以通信,因为信道上的主机只有他们两
但是总线型网络就没这么简单了,有多个主机,那发送完怎么知道接收方是谁呢?
这个时候我们就得给每个主机分配一个数据链路层的地址,用大写字母表示。
每个主机发送的帧中必须携带发送主机的地址和接收主机的地址,由于这类地址是用于媒体接入控制,因此这类地址称为MAC地址。
- 一般MAC地址在网卡里面,因此也叫硬件地址
- MAC地址有时也被称为物理地址,但这并不代表它是物理层的。不能因为姓尹就说人家是韩国人。
- 一般情况下,用户主机会包含两个网络适配器:有线网卡和无线网卡。每个网卡都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的接口,所以会拥有多个MAC地址,换句话说,MAC地址是有一个接口就有一个MAC地址,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
接下来我们介绍一下IEEE 802局域网的MAC地址格式。
由48比特构成,每8个比特为1字节
前三个字节是组织唯一标识符OUI,生产网络设备的厂商,需要向注册机构申请一个或多个OUI。
后三个字节是厂商自定义的。叫做EUI (可扩展唯一标识符)。
MAC地址的标准表示方法,是将每4个比特表示为16进制字符,共12个,每两个一组共6组。组之间用短线连接。
也可以将短线改为冒号。linus 苹果 安卓的表示方法
还可以将4个字符为一组,共三组,组之间用点连接。
请大家思考一下:我们每个人拥有几个全球管理的单播地址?EUI-48地址空间会耗尽吗?
- 台式机,笔记本电脑有多个接口那就有多个全球单播的NAC地址。EUI-48会耗尽。现在都使用EUI-64的了。地址数量也就是2的64次方个。
接下来我们介绍MAC地址的发送顺序:
外面从左往右,里面从右往左。
下面我们举例说明单播MAC地址的作用:
再来看广播MAC地址的作用:
再来看多播MAC地址的作用:
我们先来介绍一下如何快速判断一个地址是不是多播地址。
接下来我们看看A发送多播的过程
A先加上多播地址,源地址,然后帧首部,尾部,数据部分构成一个多播帧。
BC发现是发给自己的,接收并移交上层。D找不到不接受。
需要注意的是:给主机配置多播组列表进行私有应用使,不能使用公有的多播地址。
最后我们来看看随机MAC地址的概念:
据斯诺登爆料。漂亮国国家安全局有一套系统。通过监视电子设备的MAC地址,来跟踪城市中每个人的行动,因此苹果首先在IOS系列设备扫描网络时使用随机MAC地址。随后WIN10,安卓6.0,linux3.18也提供随机MAC地址的功能。
3.7.2 IP地址
IP地址的分类和详细信息我们主要在网络层介绍,本节课我们主要介绍IP地址的作用。
IP地址是因特网上的主机和路由器所使用的地址,用于标识两部分信息。
- 网络编号:标识因特网上数以百万计的网络。
- 主机编号:标识同一网络上不同主机(或路由器各接口)
同一个网络上的各主机和路由器对应的接口网络号部分相同,都是192.168.0标识是在同一个网络中的设备。主机号不相同,为1,2,254,标识是不同的设备。
因特网中各网络的编号各不相同:
需要注意的是,在一个IP地址中,哪部分是网络编号,哪部分是地址编号,并不是和上图中的是一样的结构。我们将在后续网络层继续介绍。
很显然,之间介绍的MAC地址不具备区分不同网络的功能。
- 如果只是一个单独的网络,那就不要IP地址也行,只使用MAC地址。
- 如果主机所在的网络要接入因特网,那就得IP地址和MAC地址一起使用了。
从网络体系结构看IP地址与MAC地址。
接下来我们看看转发过程中IP地址与MAC地址的变化情况。
思考:我们路由器之间明明是不同的网络的,为什么不需要IP地址,只需要填写MAC地址就能转发?
本例中主机H1 路由器R1和R2都存在一个共同的问题,知道IP地址,但是不知道MAC地址,这就涉及到我们下节课的内容了。如果把IP地址转变为MAC地址。
练习题:
记住一句话:源IP和目的IP始终不变,MAC地址反复横跳,三姓家奴。
3.7.3 ARP协议
如何通过IP地址找到MAC地址?
- ARP协议
ARP协议的工作原理:
每个主机都有一个ARP高速缓存表,里面放置IP地址和MAC地址的映射,要发送的时候先去缓存表里面找找有没有对应的。
如果没找到的话,主机B就发送一个ARP请求报文去获取主机C的MAC地址。
主机A的网卡收到ARP请求报文,交给上层的ARP进程读取,发现不是找自己的,不理会。
主机C的网卡收到ARP请求报文,交给上层的ARP请求报文处理,发现是找自己的。他先鸡贼的将B的IP地址和MAC地址记到自己的ARP高速缓存表中,
然后再给主机B发送响应报文,里面有自己的MAC地址。
之后B将C的记到自己的高速缓存表中
主机B现在就可以给主机C发送之前想要发送的数据了。
高速缓存表中的数据类型有两种:
- 动态:自动获取的,活不过两分钟。(IP地址和MAC地址并不是永久性的,比如网卡坏了换新网卡,MAC地址变了)
- 静态:手工配置的,不同操作系统下面生命周期不同。
接下来请大家思考一下:主机H1是否可以通过ARP协议获取到主机H2的MAC地址?
不能。ARP协议只能在一段链路上使用或一个网络上使用,而不能跨网络使用。
最后注意:ARP协议没有安全验证机制,存在ARP欺骗(攻击)问题。