有了IP地址,还需要MAC地址嘛?二选一可否?

有了IP地址,还需要MAC地址嘛?二选一可否?_第1张图片


概要 

在计算机网络中,IP地址和MAC地址是两个最基本的概念。IP地址在互联网中是用于标识主机的逻辑地址,而MAC地址则是用于标识网卡的物理地址。虽然它们都是用于标识一个设备的地址,但是它们的作用和使用场景是不同的。

IP地址是在网络层OSI模型中的第三层)使用的,它是一个动态分配且具有结构化特性的地址,可以实现跨网络的通信和路由。

MAC地址是在数据链路层OSI模型中的第二层)使用的,它是一个固定且扁平化的地址,可以实现局域网内部的寻址和数据传输。

因此,在网络通信中,使用IP地址和MAC地址这两种不同类型的地址是非常必要的。


IP地址和MAC地址的定义和格式

IP地址

IPInternet Protocol)是互联网协议的简称,它是一种规定了网络设备如何在互联网上进行通信的协议。IP协议定义了一种逻辑地址,即IP地址,用于在互联网上唯一标识一个网络设备。

有了IP地址,还需要MAC地址嘛?二选一可否?_第2张图片

 

IP协议目前有两个版本,分别是IPv4IPv6

有了IP地址,还需要MAC地址嘛?二选一可否?_第3张图片

 

IPv4Internet Protocol version 4)是目前最广泛使用的IP协议版本,它使用32二进制数来表示一个IP地址,通常以点分十进制形式来显示,例如192.168.1.1

一个IPv4地址由两部分组成:网络号主机号

网络号表示该设备所属的网络,

主机号表示该设备在该网络中的编号。

不同长度的网络号可以划分出不同等级的网络,例如A类、B类、C类等。为了方便表示不同长度的网络号,IPv4引入了子网掩码(subnet mask)的概念,它是一个32位二进制数,其中与网络号对应的位为1,与主机号对应的位为0。例如255.255.255.0就是一个子网掩码,表示前24位为网络号,后8位为主机号。

IPv6Internet Protocol version 6)是为了解决IPv4地址耗尽问题而设计的新一代IP协议版本,它使用128二进制数来表示一个IP地址,通常以冒分十六进制形式来显示,例如2001:db8::1

一个IPv6地址由两部分组成:前缀接口标识符

前缀表示该设备所属的网络或子网,

接口标识符表示该设备在该网络或子网中的编号。

IPv6没有固定长度的网络号或主机号,而是使用前缀长度(prefix length)来表示前缀占用多少位。例如2001:db8::1/64就表示前64位为前缀,后64位为接口标识符。

MAC地址

MACMedia Access Control)是媒体访问控制的简称,它是一种规定了数据链路层如何访问物理媒介(如电缆、光纤等)进行数据传输的协议。MAC协议定义了一种物理地址,即MAC地址,用于在局域网内部唯一标识一个网卡或其他网络设备。MAC协议有多种类型,其中最常见的一种是以太网(Ethernet)协议。

以太网协议使用48二进制数来表示一个MAC地址,通常以冒分十六进制形式来显示,例如00-16-EA-AE-3C-40。一个以太网MAC地址由两部分组成:OUINICI

OUIOrganizationally Unique Identifier)是组织唯一标识符,占用前24位,表示该网卡或其他网络设备的制造商编号。

NICINetwork Interface Card Identifier)是网卡标识符,占用后24位,表示该制造商分配给该网卡或其他网络设备的序列号。

有了IP地址,还需要MAC地址嘛?二选一可否?_第4张图片

 

因此,一个以太网MAC地址可以唯一地标识一个网卡或其他网络设备,并且不能被更改。

IP地址和MAC地址的工作原理和过程

IP地址

IP协议工作在网络层OSI模型中的第三层),它负责将数据封装成数据包(packet),并根据目标IP地址进行路由选择和转发。当一个主机要发送数据给另一个主机时,它需要知道目标主机的IP地址,并将其写入数据包头部。然后根据路由表(routing table),选择合适的下一跳(next hop),也就是下一个转发该数据包的路由器或其他网络设备,并将数据包发送出去。

当数据包到达下一跳时,下一跳会根据自己的路由表再次选择合适的下一跳,并将数据包转发出去。这个过程会重复多次,直到数据包到达目标主机所在的局域网为止。在这个过程中,每个路由器或其他网络设备只需要知道下一跳的IP地址,并不需要知道目标主机或其他中间节点的具体位置或物理连接方式。

MAC地址

MAC协议工作在数据链路层OSI模型中的第二层),它负责将数据封装成帧(frame),并根据目标MAC地址进行寻址和传输。当一个主机要发送数据给另一个主机时,它需要知道目标主机的MAC地址,并将其写入帧头部。然后根据物理媒介(如电缆、光纤等)的特性,将帧发送出去。

当帧到达目标主机所在的局域网时,局域网内的所有设备都会接收到该帧,并根据帧头部的目标MAC地址判断是否是自己。如果是自己,则接收该帧,并将其解封装成数据包,交给网络层处理。如果不是自己,则丢弃该帧。在这个过程中,每个设备只需要知道与自己直连的设备的MAC地址,并不需要知道目标主机或其他中间节点的逻辑位置或网络连接方式。

那么,一个主机如何获取另一个主机的MAC地址呢?

这就需要用到ARPAddress Resolution Protocol)协议,它是一种用于根据IP地址获取MAC地址的协议。ARP协议的工作原理和过程如下:

当一个主机要发送数据给另一个主机时,首先会检查自己的ARP缓存表(ARP cache),看是否已经有目标主机的IP地址和MAC地址的对应关系。如果有,则直接使用该MAC地址封装帧并发送出去。

如果没有,则需要发起ARP请求(ARP request),向局域网内广播一个特殊的帧,其中包含了自己的IP地址和MAC地址,以及目标主机的IP地址。该帧的目标MAC地址为广播地址FF-FF-FF-FF-FF-FF,表示所有设备都要接收该帧。

局域网内的所有设备都会收到该ARP请求帧,并根据其中的目标IP地址判断是否是自己。如果不是自己,则丢弃该帧,并且将发送者的IP地址和MAC地址加入自己的ARP缓存表中。如果是自己,则回复一个ARP应答(ARP reply),向发送者单播一个特殊的帧,其中包含了自己的IP地址和MAC地址,以及发送者的IP地址。该帧的目标MAC地址为发送者的MAC地址。

发送者收到该ARP应答帧后,就知道了目标主机的MAC地址,并将其加入自己的ARP缓存表中。然后就可以使用该MAC地址封装帧并发送出去。

当一个主机要发送数据给另一个主机时,如果目标主机与自己在同一局域网内,那么就可以直接使用ARP协议获取目标主机的MAC地址,并将其封装在帧中发送出去。但是,如果目标主机与自己不在同一局域网内,那么就需要经过路由器的转发。这时候,就需要知道路由器的MAC地址,而不是目标主机的MAC地址。下面我们用一个例子来说明这种情况下的工作过程。

假设有如下拓扑:

有了IP地址,还需要MAC地址嘛?二选一可否?_第5张图片

其中:

主机AIP10.0.0.1MAC00-16-EA-AE-3C-40

主机BIP10.0.0.2MAC00-16-EA-AE-3C-41

主机CIP10.0.0.3MAC00-16-EA-AE-3C-42

路由器R1Fa0/0接口IP10.0.0.254MAC00-16-EA-AE-3C-43

路由器R2Fa0/0接口IP10.1.0.254MAC00-16-EA-AE-3C-44

服务器SIP10.1.0.1MAC00-16-EA-AE-3C-45

现在假设主机A要向服务器S发送数据包,完整过程如下:

1)主机A发现目标IP与自己不在同一网段,需要经过路由器转发

2)查路由表获得R1IP地址及出接口(从哪个网卡发出),查ARP表无对应条目

3)发起ARP请求,目的IPR1,目的MAC为广播MACFF:FF:FF:FF:FF:FF),源IP和源MAC为主机A网卡的IPMAC

4R1收到ARP请求,将主机AIPMAC加入自己的ARP缓存表,用自身IPMAC响应主机AARP请求

5)主机A收到ARP响应,将R1IPMAC加入自己的ARP缓存表,用自身IPMAC为源,服务器SIPR1MAC为目的,封装数据帧,并将其转发给R1(此时数据帧源IP为主机A,目的IP为服务器S,源MAC为主机A,目的MACR1

6R1收到数据帧,根据目的IP查路由表,发现需要R2转发,查ARP表,无对应条目。以自身IPMAC为源,目的IPR2,目的MAC为广播发送ARP请求,并将来自主机A的数据帧丢弃。

7R2收到ARP请求,将R1IPMAC加入自己的ARP缓存表,用自身IPMAC响应主机R2ARP请求。

8R1收到ARP响应,将R2IPMAC加入自己的ARP缓存表

9)主机A发现超时,重发数据帧

10R1收到数据帧,查路由表,须经R2转发,查ARP表,获得R2MAC地址。将数据帧的源MAC修改为自身,目的MAC修改为R2,并将数据帧转发给R2(此时数据帧源IP为主机A,目的IP为服务器S,源MACR1,目的MACR2

11R2收到数据帧,根据目的IP查路由表,发现目标主机与自己在同一网段,查ARP表,无对应条目。以自身IPMAC为源,目的IP为服务器S,目的MAC为广播发送ARP请求,并将来自R1的数据帧丢弃。

12)服务器S收到ARP请求,将R2IPMAC加入自己的ARP缓存表,用自身IPMAC响应主机R2ARP请求。

13R2收到ARP响应,将服务器SIPMAC加入自己的ARP缓存表

14)主机A发现超时,重发数据帧

15R1收到数据帧,查路由表,须经R2转发,查ARP表,获得R2MAC地址。将数据帧的源MAC修改为自身,目的MAC修改为R2,并将数据帧转发给R2

16R2收到数据帧,查路由表,须经服务器S转发,查ARP表,获得服务器SMAC地址。将数据帧的源MAC修改为自身,目的MAC修改为服务器S,并将数据帧转发给服务器S(此时数据帧源IP为主机A,目的IP为服务器S,源MACR2。

IP地址和MAC地址区别

尽管IP地址和MAC地址都是用来标识网络中的设备,它们的本质和作用却有很大的区别。下面是两者的主要区别:

定义IP地址是用来标识网络上的设备,MAC地址是用来标识网络适配器(NIC)的。

唯一性IP地址在网络中是具有唯一性的,但是在全球范围内会有重复的情况。而MAC地址是在全球范围内都是唯一的。

分配方式IP地址由ISP分配,而MAC地址是由网络适配器(NIC)制造商分配。

使用场景IP地址是用来实现Internet上的数据传输,而MAC地址是用来实现局域网内的数据传输。

长度IP地址是32位二进制数,而MAC地址是48位二进制数。

有了IP地址,还需要MAC地址嘛?二选一可否?_第6张图片

 另外,还有一些其他的区别:

IP地址可以更改,而MAC地址无法更改。

IP地址是分级和分段的,可以根据网络的需求进行调整。而MAC地址是固定的,无法调整。

IP地址可以有多个,而MAC地址只有一个。

IP地址可以动态分配,而MAC地址一般都是静态分配。

总结

IP地址和MAC地址是计算机网络中非常重要的概念。尽管它们有着不同的作用和范围,但是它们之间存在着密切的关联。在网络通信中,IP地址和MAC地址都起着至关重要的作用。因此,学习和了解IP地址和MAC地址对于理解和解决网络通信问题非常重要。同时,了解IP地址和MAC地址也有助于我们更好地保护网络安全。

好了今天的分享就到这里,如果分享的内容对你有所帮助,欢迎点赞收藏转发!!

你可能感兴趣的:(网络,网络协议,tcp/ip)