计算机网络之IP地址

2021年6月19日 5点热度 0条评论 来源: Franco蜡笔小强

IP地址的分类

整个的因特网就是一个单一的、抽象的网络。IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围内唯一32位的标识符。

所谓分类的IP地址,就是将IP地址划分为若干固定类,每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,一个网络号在整个因特网范围内必须是唯一的。而另一个字段则是主机号 host-id,它标志该主机(或路由器),一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个因特网范围内是唯一的。

 

由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。

用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号。

路由器只根据目的站的IP 地址的网络号进行路由选择

 

两级的 IP 地址可以记为:

IP 地址 ::= { <网络号>, <主机号>}      

上图中的A类、B类、C类地址都是单播地址(一对一通信),是最常用的。

网络号字段的最前面有1-4位的类别位,A类、B类、C类地址的类别位分别为0、10、110。

为了提高可读性,我们常常把32位的IP地址中的每8位用其等效的十进制数字表示。

A类地址的网络号字段占一个字节,只有7位可供使用(第一位已固定为0),但是可指派的网络号是126个(27-2),减2的原因:第一,IP地址中全为0的地址是个保留地址,表示“本网络”;第二,网络号为127(01111111)保留作为本地软件环回测试本主机的进程间的通信。

A类地址的主机号占3字节,因此每一个A类网络中的最大主机数是224-2。减2的原因:第一,全为0的主机号字段表示该IP地址是本主机所连接到的单个网络地址,第二,全为1的主机号字段表示该网络上的所有主机。

B类地址的网络号字段有2字节,但是前两位已经固定为10,只剩下14位可以进行分配,因为前面两位是10,不会出现全为0或全为1的网络号,但实际上,B类网络地址128.0.0.0是不指派的。所以最大网络数为214-1。最大主机数为216-2。

C类地址有3字节的网络号字段,前三位固定位110,还有21位可以进行分配。但实际上192.0.0.0是不指派的,因此C类地址可指派的网络总数为221-1,最大主机数为28-2。

IP地址与硬件地址

硬件地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。

发送数据时,数据从高层下到地层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成了MAC帧。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部。

连接在通信链路上的设备在接受MAC帧时,其根据是MAC帧首部中的硬件地址。在数据链路层看不见隐藏在MAC帧的数据中的IP地址。只有在剥去了MAC帧的首部和尾部后把MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。

划分子网

一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网(subnet)。划分子网纯属一个单位内部的事情。单位对外仍然表现为一个网络。

划分子网的方法是从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。于是两级IP地址在本单位内部就变为三级IP地址:网络号、子网号和主机好。

IP地址 ::= {<网络号>, <子网号>, <主机号>}      

凡是从其他网络发送给本单位某个主机的 IP数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。最后就将 IP 数据报直接交付目的主机。

下面通过一个例子来展示划分子网的方法与效果。

下图表示某单位拥有一个B类IP地址,网络地址是145.13.0.0(网络号是145.13)。

现把上图中的网络划分为三个子网,这里假定子网号占用8位,因此主机号只剩8位。所划分的子网分别是:145.13.3.0、145.13.7.0、145.13.21.0。

划分子网后,整个网络对外仍表现为一个网络,其网络地址仍为145.13.0.0,但是路由器R1在收到外来的数据报后,再根据数据报的目的地址把它转发到相应的子网。

假定有一个数据报的目的地址是145.13.3.10已经到达路由器R1,那么这个路由器如何把它转发到子网145.13.3.0呢?这就需要借助子网掩码(subnetmask)来实现了。

路由器会把子网掩码和收到的数据报地址的目的IP地址145.13.3.10进行按位“与”操作,得出所要找的子网的网络地址。

子网掩码与IP地址进行“与”操作之后,就将主机号“过滤”掉了,只剩下了网络号与子网号。

实际上,因特网的标准规定:所有网络必须使用子网掩码。即便一个网络没有划分子网,也要使用默认子网掩码。默认子网掩码中1的位置和IP地址中的网络号字段正好相对应,因此,两者进行“与”操作后,就能得出该IP地址的网络地址。A类、B类、C类地址的默认子网掩码是固定的:

例,已知 IP 地址是141.14.72.24,子网掩码是 255.255.192.0。试求网络地址。

 

应当注意,划分子网后,路由表必须包含以下三项内容:目的网络地址、子网掩码和下一跳地址

 

在划分子网的情况下路由器转发分组的算法:

(1) 从收到的分组的首部提取目的IP 地址 D。

(2) 先用各网络的子网掩码和 D逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。

(3) 若路由表中有目的地址为 D的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)。

(4) 对路由表中的每一行的子网掩码和 D 逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)。

(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。

(6) 报告转发分组出错。

    原文作者:Franco蜡笔小强
    原文地址: https://blog.csdn.net/w372426096/article/details/78484119
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。