IP地址详解

Posted zkccnb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IP地址详解相关的知识,希望对你有一定的参考价值。

IP地址详解

接下来我们来看看网络层是怎么工作的,可以说网络层是整个计算机网络的心脏,起到了主要的抽象和转发报文作用。网络层最主要的协议就是IP协议,它是整个网络层的中心。除了IP协议,还有很多协议为更好的服务IP协议而工作。

不过在介绍IP协议之前,我们必须先了解IP协议是如何对网络环境进行抽象的。这种抽象就是IP地址

一、IP地址的定义

1. IP地址的意义

网络设备指处在网络层工作互联的设备,包括网络层交换机(路由器)和各种形式的主机。IP协议为连接互联网的每一个网络设备分配一个IP地址。而IP协议的终极目的就在于将数据包从一个IP地址发送到另一个IP地址。

需要注意的是,IP地址实际上并不是为一个网络设备直接编址,其编址对象是网卡(网络驱动器),有些网络设备可能会有多个网卡(路由器、服务器等),那么它们就会有多个IP地址。

2. IPv4的结构

IPv4地址用32位二进制串来表示一台网络设备。为了方便人类记忆,常用“点分十进制”形式来表示IPv4地址:

图1 IPv4地址表示形式

不难看出,IPv4最多支持编址2^32≈43亿个网络设备的同时接入。这个数量在计算机网络创立之初肯定绰绰有余的,但是随着互联网行业的迅猛发展,这个数量也越来越不够用了。

解决方法有两种:

  • NAT协议:用路由器的 一个IP+若干端口号来映射多个网络设备,就可以起到复用IP的效果了。
  • 迁移至IPv6:简单粗暴,直接弄成128位的。。

3. IPv6的结构

上面说到,IPv4不够用了,本质原因是因为IPv4只有32位,位数太少了。。

所以IPv6直接使用了128位编址,可以为地球上的每一粒沙子编址。。除了位数多了以外,IPv6还有其他优点:

  • 不需DHCP协议,可以自动分配地址。
  • IPv6协议简化了首部结构,减轻了网络分组交换的负荷。
  • IPv6还对通信的安全性进行考虑,可以防止IP地址被伪造或线路窃听。

由于IPv6太长了,点分十进制可能不太适合。。所以IPv6采用8组16进制串来表示:


图2 IPv6的表示

二、IP地址的管理

1. 地址分类策略

1.1 地址分类方式:

计算机网络投入使用早期,还没有那么多的网络设备。所以人们设计了地址分类策略来管理这些IP地址:

图3 IP地址的分类

其中ABC类网直接用于为各局域网的网络设备分配地址,D类网用于组播,E类网待用。

有了网络分类,那么查找一个IP地址就相对容易了:先根据地址头n位确定它是哪一类网,可以转发到该类网的路由器;再由此路由器继续向下解析网络号分析其具体属于哪一个网络,可以转发到该网络的路由器;最后再由此路由器分析其主机号,将其转发至网内主机。

你可以想象邮局邮寄包裹的过程:邮寄一个省外的包裹,先需要知道它要发往哪个省,将其交给对方的省邮局;再由省邮局去分析它属于哪个城市,交给对方市邮局。。。以此类推,分而治之地运送包裹。

1.2 ABC类网


图4 ABC类网络的公网地址范围

由于ABC类网的网络号与主机号划分,使得这三类网络有着数量不同的网路和最大支持主机:

  • A类网最多支持有7位网络号(27个网络),24位主机号(224-2个主机)
  • B类网最多支持14位网络号(214个网络),24位主机号(216-2个主机)
  • C类网最多支持21位网络号(221个网络),24位主机号(28-2个主机)

为什么主机数要减2呢??

因为在每个网络中,有2个IP地址不能被分配到具体主机,留作他用:

  • **主机号全0:**指定某个网络本身(地址为主机号全0时,不指定当前网络的任一台主机,而代之发往此网络)
  • **主机号全1:**指定某网络的所有主机(当地址为全1时,数据包将发往此网络的所有主机,用于广播)

另外,广播又分为2种:本地广播异地广播。也很好理解,前者指发往本网络的广播地址;而后者指发往其他网络的广播地址。

1.3 网络分类策略的优缺点

这样做的优点很明显:

可以快速地确定一个IP属于哪个类网,并将其交付类网路由器,进行分治转发;而不是茫然地在43亿的IP地址中胡乱查找。。

但随着网络设备越来越多,网络分类策略的缺点也显现出来:

  • ABC类网的划分方式没有层次,如果有机构还需要在自己的C类网中继续划分若干子网是做不到的。
  • 不能很好地解决现实的需求,ABC类网提供的主机数量很不灵活,要是有一个企业需要1000个IP地址,那岂不是得说:“给我来4个C类网!”

正是分类策略具有这两条缺点,无分类策略发展起来了。在今天,二者相结合共同构成了网络层IP地址的抽象。

2. 无分类策略

2.1 无分类策略的地址划分

无分类策略的实现是CIDR协议(Classless Inter Domain Routing,无类别域间路由)。

无分类策略方案中,32位的IP地址被使用者按需任意划分为两部分;同样,前面是网络号,后面是主机号。

但你自己划分的时候是爽了,可是如果所有人都随意划分,那路由器心态崩了啊。。怎么找目标的网络进行分治转发呢?

这就需要网络在划分IP地址的同时,标注自己是在哪一位上划分的:

图5 无分类策略的地址划分

对人类来说,这种策略下的IP可以采用a.b.c.d/n的形式表示,其中n表示前n位为网络号。

对于机器来说,更快的方式是采用子网掩码,子网掩码的网络位均为1,其余位为0。因此,将子网掩码与IP地址相与,即可得到IP地址的网络号。

2.2 与地址分类策略的兼容

由于分类策略已经使用了很长时间,很难直接推倒之前的ABCDE类网划分。而可行的做法是将两种分类策略融合在一起工作,而这就是我们今天使用IP地址的策略:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jz8dZGff-1630663187437)(D:\\资料\\CSDN博文\\计算机网络\\网络层\\ip地址-6.jpg)]

图6 分类策略与无分类策略的兼容

可以看到,在IP地址的前部,仍保留了ABC类网络的网络号;不同的是,使用子网掩码多覆盖了若干位,作为一个灵活的子网。如此就把两种策略兼容起来一起工作了。如图6的网络地址,就是C类网“192.168.1”的一个子网。

3. 私网地址与公网地址

至此,我们描述的都是公网IP的构成。但互联网世界的IP地址不都是公网IP!每个设备都直接持有一个私网IP,而又间接地持有一个公网IP。

此话怎讲?私网IP仅在端设备所处的局域网内有效,在局域网外的互联网世界里这个地址就是个“笑话”。就好比,你家的门牌号是“3单元101”,仅在你所处的楼内有效;如果出了这栋楼还说“我家在3单元101”,那谁也不知道你住在哪。。

所以有很多初学者写网络服务器程序时(比如说我哈哈哈。。)想要让并非局域网的用户也可以连接到自己的服务器,然后发现对方怎么也找不到自己服务器IP地址。。。这就是因为你给对方的IP是一个私网IP,在公网根本没有任何效用。那么怎么做才能让外网访问到自己的服务器呢?这就需要路由器内网穿透的知识了。。如果你的目的知识验证自己的服务器的功能逻辑是否工作正常,那么在局域网里进行验证就可以了。

ABC类网除了维护一段公网IP,还维护各自的私网IP:


图7 ABC类网维护的公网IP段和私网IP段

可以看到,私网IP段比公网IP段少了不少。。这也很好理解,私网IP只在局域网内有效,所以IP地址数量只要保证足够此网内部的主机数量即可。

一般来说,家用路由器分配给我们的私网地址是“192.168.x.x”,这是因为家用局域网一般都是某个C类网下的一个子网,所以分配私网地址时就采用了C类网地址段。

另外一个问题,既然每个设备都持有一个公网IP和私网IP,那么就需要一种算法将二者进行一个转换,或者分配私网IP。这就是NAT协议的工作内容了。

总结

本文重点介绍了IP地址的相关知识,具体阐述了网络分类策略和无分类策略的IP划分方式,最后还简单讨论了公网IP和私网IP。

以上是关于IP地址详解的主要内容,如果未能解决你的问题,请参考以下文章

华为机试真题详解JAVA实现—识别有效的IP地址和掩码并进行分类统计

CentOS7IP地址的设置教程详解

IP详解

PHP转换IP地址到真实地址的方法详解

IPv4地址分类详解

IP地址详解