当前位置: 首页 > 后端技术 > PHP

网络协议2——IP地址和MAC地址

时间:2023-03-29 16:45:06 PHP

了解了网络协议后,我们会发现在网络通信的五层模型中有两个非常重要的概念:IP地址和MAC地址。那么IP地址是怎么来的,为什么没有呢?MAC地址和IP地址有什么区别?在回答上面的问题之前,我们先来个热身。你知道如何查看本机的IP吗?对于这个问题,即使是没有专业学过计算机的人,只要把电脑折腾过,重装过系统,大部分都会知道答案:Windows下是ipconfig,Linux下是ifconfig。Windows下输入ipconfig,我们会看到这个界面:Linux下输入ifconfig,我们会看到这个界面:可以看到IP地址,无论是Windows下还是Linux下,输入相关命令都可以显示本机所有网卡.大多数网卡都有一个IP地址。比如192.168.1.73,这是我的本地以太网IP地址。IP地址是网络世界中一张网卡的通讯地址,相当于我们现实世界中的门牌号。注意IP地址是网卡的通讯地址,不是机器的通讯地址。很多时候,我们会说一台电脑只有一个IP地址。这种说法本质上是不正确的。准确的说应该是:一张网卡只能同时有一个IP地址,一台机器可以有多个IP地址。地址。就像我们的笔记本一般有有线网卡和无线网卡之分,有线网卡有IP地址,无线网卡也有IP地址。如果一台机器有多个IP地址,IP地址会不会重复?其实我们应该会遇到IP地址重复的情况。有时候我们的电脑会弹出网络地址冲突,出现无法上网的情况,很可能是IP地址冲突。格式如上输出,192.168.1.73是一个IP地址。这个地址被点号(.)分成四部分,每部分有8位,所以IP地址总共是32位。显然,32位生成的IP地址在当今互联网社会显然是“狼多肉少”。于是就有了IPv6,也就是上面结果中的fe80::515d:5483:ff4d:6db9/64。这个有128位,可以满足我们现在的需求。至于以后会不会出现IPv8,就看后面互联网世界的发展了。我们应该都听说过分类。IP地址分为五类:A、B、C、D、E。对于A、B、C类型,主要分为两部分,第一部分是网络号,后面部分是主机号。下图是A、B、C三种地址可以包含的主机数,这里有个问题。C类地址包含的主机太少,而B类地址包含的主机太多。因此,有一种折中的方法叫做无类型域间路由。TypelessInter-DomainRouting顾名思义,TypelessInter-DomainRouting(CIDR)的基本思想是取消地址的分类结构,取而代之的是允许网络号以变长分界的方式进行分配。192.168.1.73/24是无类型域间路由格式的IP地址。这种格式的IP地址将32位的IP地址一分为二,前面是网络号,后面是主机号。从哪里?如果注意的话,可以看到上面的地址中有一个斜杠,斜杠后面是一个数字24。这个24的意思就是前24位是网络号,后8位是主机号。公共IP地址和私有IP地址见上表。表的最右边一列是私有IP地址范围。通常我们在一个局域网中,看到的IP地址都是私有IP地址。因为这些地址可以让组织内部的IT人员自己管理和分配,而且还可以重复。所以会出现你局域网的私有IP地址段和我的局域网是一样的。上面我们说了,小明跟同单位的朋友说他是5单元101号,朋友可以理解,但是如果他这样跟小红说,小红会问,你是哪个区的??这里的小区其实是公网IP地址,5单元101号是私网IP地址。表中的192.168.0.x是最常见的私有IP地址范围。就像我们家里的路由器地址一般都是192.168.0.1。IP分配和释放IP分配我们平时接触的比较少。还记得上大学的时候,刚入学第一件事就是赶紧交网费。支付网络费用时会有一个步骤。网络管理员会要求你提供MAC地址,然后将IP地址绑定到MAC地址上。这也是博主无法通过隔壁宿舍的网线上网的原因。其实,如果你积累了相关知识,完全可以使用命令行自己配置IP地址。当然,能不能交流,还要看你的知识储备。除了命令行配置外,我们通常应该使用“带”来分配IP。无论是在学校还是在办公室,都会有网络管理员给你分配IP,你可以直接使用。但有时我也疑惑,网管是怎么分配IP的?是否可以通过命令行一一配置?此时,使用动态主机配置协议(DHCP)。动态主机配置协议如何工作?让我们以一台新机器加入网络为例来了解DHCP工作流程。一台机器刚加入网络的时候,肯定是一头雾水,不知道怎么回事,只知道自己的MAC地址。如果没有人关心你怎么办?不管发生什么,我们吼一声告诉大家,我来了,有人吗?这时候的交流基本靠“吼”。此步骤称为DHCP发现。新来的机器发送一个IP地址为0.0.0.0的广播包,目的IP地址为255.255.255.255。广播包封装在UDP中,UDP封装在BOOTP中。在这个广播包中,新人喊道:我是新来的(BootRequest),我的MAC地址是xxx,我还没有IP,谁能给我一个IP地址?格式如下:此时网络中的DHCPServer就相当于这个局域网的管理员。他知道来了一个“新人”,需要给它分配一个IP地址。这个过程就是DHCPOffer。同时DHCPServer会保留本机提供的IP地址,这样相同的IP地址就不会被分配给其他机器。DHCPOffer的格式如下图,其中包含分配给新人的地址。DHCPServer仍然使用广播地址作为目的地址,因为此时新请求分配的人没有自己的IP地址。如果一个局域网中有多个DHCPServer,那么这台新机器会收到多个DHCPOffer。它会选择其中一个DHCPOffer,通常是最先到达的那个,并会向网络发送一个DHCPRequest广播数据表,其中包含客户端的MAC地址,要分配的IP地址,DHCP的地址提供这个IP的服务器等,并告诉所有的DHCP服务器哪个服务器将接受它提供的IP地址,并告诉其他DHCP服务器撤销他们提供的IP地址,以便提供给下一个IP请求分配器。新人广播包格式如下:此时,由于还没有得到DHCPServer的最终确认,新机仍然使用0.0.0.0作为源IP地址,255.255.255.255作为目的地址进行广播。当DHCPServer收到新机器的DHCPRequest时,会广播并返回一个DHCPACK报文包给新机器,表示接受新机器的选择,并把IP地址分配信息等配置信息放入广播包,发送给新机器。DHCPACK的格式如下:新机器收到DHCPACK后,会检查分配的IP地址是否可以使用。如果不能使用,它会向DHCPServer发送一个DHCPDecline报文,通知DHCPServer禁用该IP地址,然后新机器开始新的地址申请过程。当新机器的IP租用期超过50%时,DHCPClient会以单播的形式向DHCPServer发送DHCPRequest报文,续租租用的IP地址。如果DHCPClient成功收到DHCPServer发送的DHCPACK报文,IP地址租期将根据相应的时间延长;如果DHCPClient没有收到DHCPServer发送的DHCPACK报文,DHCPClient会继续使用这个IP地址。当新机器的IP租用期超过87.5%时,DHCPClient会向DHCPServer广播一个DHCPRequest报文,续租租用的IP地址。如果DHCPClient成功收到DHCPServer发送的DHCPACK报文,IP地址的租期将根据相应的时间延长;如果DHCPClient没有收到DHCPServer发送的DHCPACK报文,DHCPClient会继续使用这个IP地址,直到该IP地址租约到期,DHCPClient会向DHCPServer发送一个DHCPRelease报文来释放IP地址,开始新的IP地址申请流程。MAC地址在我们查询IP地址的输出结果中,有一行:Linkencap:EthernetHWaddr28:d2:44:ce:77:51这个叫做MAC地址,就是一个网卡的物理地址,十六进制,用6个字节表示。MAC地址是一个非常具有误导性的地址。因为据说MAC地址是全球唯一的,所以不会有MAC地址相同的网卡。这就很容易让我们想到,既然是全球唯一,难道不能直接使用MAC地址进行网络通信吗?为什么要加上一个IP地址,再封装一层,然后才能通信呢?当然不是。我们想将一个网络数据包从一个地方传输到另一个地方。除了要有明确的地址,我们还需要有定位的功能。就像你去广州找博主一样,我只告诉你我的身份证号码,你在广州能找到我吗?这种搜索无异于大海捞针。但是如果我告诉你我的详细地址,你可以直接通过导航找到对应的地址,然后找到我。IP地址在一定程度上承担了详细地址远程状态的功能。MAC地址更像是一个身份证号,是一个唯一的标识。其独特的设计是在联网时将不同的网卡放在一个网络中。不用担心冲突。当然,MAC地址也有一定的定位作用。就好像你来到博主所在的办公室,办公室里的身份证号码是XXX,你能给谁打电话?博主一听就站起来回答你。但是如果你喊出博主的听觉范围,是不会有人回答的。这意味着MAC地址的通信范围比较小,仅限于一个子网。参考:刘超-Internet网络协议系列;百度百科-DHCP入门;

猜你喜欢