3.7 MAC IP地址 ARP协议

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欺骗(攻击)问题。

 

原文地址:https://www.cnblogs.com/YXBLOGXYY/p/15401652.html