分类寻址(网络号+主机号)

在最初定义Internet地址结构时,每个单播IP地址都有一个网络部分,用于识别接口使用的IP地址在哪个网络中可被发现;以及一个主机地址,用于识别由网络部分给出的网络中的特定主机。因此,地址中的一些连续位称为网络号,其余连续位称为主机号。
基于上述分类方法,IPv4地址按照网络号和主机号的长度被分为五大类。A、B、C类用于为Internet(单播地址)中的设备接口分配地址,以及其他特殊情况下使用。类由地址中的头几位来定义:0为A类,10为B类,110为C类,1110为D类,1111为E类。D类地址供组播使用,E类地址保留。分类如下图所示:

由此可得出按此分类方式得到的IPv4地址空间划分:

上述地址空间划分只是理论上的,而实际上有几个地址通常不作为单播地址使用,特别是地址块中的第一个和最后一个地址通常不使用。
这种IP地址结构分类的特点与缺陷是显而易见的,例如A类地址的网络数少但主机数多,C类地址的网络数多而主机数少,这往往会造成一个网络号内的主机号无法完全分配,造成IP地址资源的利用率低下的问题。从而使IPv4的地址资源很快就出现了枯竭的趋势,寻找进一步细分IP地址的方法也就成为了必然。

子网寻址(细分主机号)

最初分类寻址的方法很难为接入Internet的新网段分配一个新的网络号,随着20世纪80年代初局域网(Local Area Network,LAN)的发展这一问题更为突出。为了解决这一问题,人们自然想到一种方式,在一个站点接入Internet后为其分配网络号,然后由站点管理员进一步划分本地的子网数。也即在初始的网络号+主机号的结构的基础上,将主机号划分为子网号+主机号,这样就可以在不改变核心路由基础的前提下细分网络。这种方法被称为子网寻址。
子网寻址改变了最初一个IP地址的网络部分和主机部分的限制,但这样做只是针对一个站点自身而言,Internet的其余部分仍然只能看到传统的A~E的网络。从本质上来说,子网寻址为IP地址结构增加了一个额外部分,但它没有为地址增加长度。因此,一个站点管理员能在子网数和每个子网中预期的主机数之间灵活划分,不需要与其他站点协调。
子网寻址提供这种灵活性的代价是增加成本。由于当前的子网字段和主机字段是由站点指定而不是由网络号分类决定,一个站点中所有路由器和主机需要一种新的方式来确定地址中的子网部分和其中的主机部分。在出现子网之前,这个信息可直接从一个网络号中获得,只需知道是A类、B类或C类地址。

子网掩码

子网掩码(subnet mask)是由一台主机或路由器使用的分配位,以确定如何从一台主机对应IP地址中获得网络和子网信息。IP子网掩码与对应的IP地址长度相同(IPv4为32位,IPv6为128位)。其格式如下:

掩码由路由器和主机使用,以确定一个IP地址的网络/子网部分的结束和主机部分的开始。子网掩码中的一位设为1表示一个IP地址的对应位与一个地址的网络/子网部分的对应位相结合,并将结果作为转发数据报的基础。相反,子网掩码中的一位设为0表示一个IP地址的对应位作为主机号的一部分。如图所示:

一个IP地址与一个子网掩码按位与后就形成了用于路由的地址的网络/子网标识符(前缀),这是边界路由器需要的信息,以确定子网。Internet路由系统其余部分不需要识别子网掩码,因为站点之外的路由器做出路由决策只基于地址的网络号部分,并不需要网络/子网或主机部分。因此,子网掩码纯粹是站点内部的局部问题。

可变长度子网掩码

子网掩码的出现让网络划分的细粒度更高,提高了IP地址资源的利用率。将一个分配给站点的网络号进一步细分为多个可分配大小相同的子网,并根据网络管理员的合理要求使每个子网能支持相同数量的主机。这种方式在复杂的网络环境中,其IP地址资源还是会有不小的浪费。因此我们自然想到了放宽一个网络的子网掩码的限制,让其长度可变,即在同一站点的不同部分,将不同长度的子网掩码应用于相同网络号。虽然这样增加了地址配置管理的复杂性,但也提高了子网结构的灵活性,因为不同子网可以容纳不同数量的主机。这就是可变长度子网掩码(Variable Length Subnet Mask,VLSM),用于分割一个网络号,使每个子网支持不同数量的主机。VLSM可对子网进行层次化编址,使得多级子网成为可能,这种高级IP寻址技术允许网络管理员对已子网进行划分,以便最有效地利用现有的地址空间。

无类别域间路由和路由聚合

20世纪90年代初,在采用子网寻址缓解IPv4地址资源面临枯竭的危机后,Internet开始面临更严重的规模问题。主要体现在以下三个方面:
·到1994年,一半以上的B类地址已被分配。预计B类地址大约在1995年将被用尽
·32位的IPv4地址被认为不足以应付Internet在21世纪初的预期规模
·全球性路由表的条目数(每个网络号对应一条)随着子网的出现增长得更快,路由性能将受到影响
IPv6被设想于解决第2个问题,而对于更为迫切的另外两个问题,无类别域间路由和路由聚合的概念应运而生。

无类别域间路由

为了帮助换件IPv4地址的压力,分类寻址方案通常使用一个类似VLSM的方案,扩展Internet路由系统以支持无类别域间路由(Classless InterDomain Routing,CIDR)。CIDR对原来用于分配A类、B类和C类地址的有类别路由选择进程进行了重新构建。CIDR用若干位长的前缀取代了原来IP地址结构中对网络部分的限制,这提供了一种方便的分配连续地址范围的方式。

前缀

使用CIDR,未经过预定义的任何地址范围可作为一个类的一部分,但需要一个类似于子网掩码的掩码,有时也称为CIDR掩码。CIDR掩码不再局限于一个站点,而对于全球性路由系统都是可见的。因此,除了网络号之外,核心Internet路由器必须能解释和处理这种掩码。这个数字组合称为网络前缀,它用于IPv4和IPv6地址管理。
消除一个IP地址中网络号和主机号的预定义分隔,将使更细粒度的IP地址分配范围称为可能。与分类寻址类似,地址空间分割成块最容易通过数值连续的地址来实现,以便用于某种类型或某些特殊用途。一个n位的前缀是一个IP地址的前n个位的预定义值。对于IPv4,n(前缀长度)的值通常在范围0~32,对于IPv6则是0~128。它通常被追加到基本IP地址,并且后面跟着一个/字符。如图所示:

采用前缀概念的另一个原因是,早期的分类寻址方案易于被这个方案覆盖。
CIDR建立于“超级组网”的基础上,超级组网可看作是子网划分的逆过程。子网划分时,从IP地址的主机部分借位,将其合并至网络部分;而在超级组网中,则是将网络部分的某些位合并进主机部分。

路由聚合

通过取消分类结构的IP地址,能分配各种尺寸的IP地址块。但这样做只是进一步提高了IP地址的划分细粒度,而并没有减少路由表的条目数。路由聚合通过将相邻的多个IP前缀合并成一个短前缀(称为一个聚合或汇聚),可以覆盖更多地址空间。
例如,三个IP地址:190.154.27.0/26,190.154.27.64/26,190.154.27.192/26,其二进制表示如下:

190.154.27.0/26和190.15427.64/26的26位前缀中只有最后一位不同,因此这两个IP地址可以聚合为190.154.27.0/25。
路由汇聚提高了路由选择的效率,降低了对路由器内存的要求(路由表条目数减少),且当重新计算路由表或检索路由表条目,即对路由表进行分析以找出前往目标IP地址的路径时,降低了所需的CPU周期(也就是时间)。

IP地址从最初的分类寻址方式逐渐改进,增加了子网掩码,再到对有类别的路由进行重新构建,放弃了早期的有类别路由,改用无类别域间路由,都是为了更有效地利用IP地址资源。这些技术虽然大部分是为了应对IPv4地址资源不足而提出的,但对于IPv6也同样适用。这一系列技术使得IPv4的生存时间延长,但其32位的地址空间只能分配约43亿个IP地址,随着物联网等概念的兴起,接入Internet的设备将不仅仅只局限于传统意义上的计算机,且数量将大幅增加。因此IPv6的提出才是从根本上解决IP地址资源短缺的方案。

原文链接https://blog.csdn.net/qq_37653144/article/details/80344833

IP地址结构(转载)的更多相关文章

  1. easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)

    easyui datagrid 禁止选中行   没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...

  2. C# 获取用户IP地址(转载)

    [ASP.NET开发]获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己 ...

  3. 在ASP.NET Core中获取客户端和服务器端的IP地址(转载)

    随着ASP.NET的发展,有不同的方式从请求中访问客户端IP地址.WebForms和MVC Web应用程序只是访问当前HTTP上下文的请求. var ip = HttpContext.Current. ...

  4. 【Linux 网络编程】网络IP地址结构体

    (1)IPv4套接口地址结构通常也称为"网际套接字地址结构",它以"sockaddr_in"命名,        定义在<netinet/in.h> ...

  5. 负载均衡实现,一个域名对应多个IP地址【转载】

    使用负载均衡实现,传统和常规做法,其他方式需要特殊处理.(dns轮询,或者自己做解析)1.一个域名设定多个dns服务或者服务器进行解析,同一个域名的每个解析都指向不同的ip地址,这样应答快的dns优先 ...

  6. IP地址结构分类(包括主机号和网络好计算)

    IP地址:互联网上的每个接口的唯一标识. 长度:32bit. 五类不同的互联网地址格式: 各类IP地址范围: 点分十进制:32位的地址通常写成四个十进制数,其中每个整数对应一个字节. 主机号和网络的计 ...

  7. 获取IP地址bash[转载]

    ipaddr=`/sbin/ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | cut -d : -f2 | awk '{print $1}'`

  8. TCP/IP 笔记 - Internet地址结构

    连接到Internet中的每台设备至少都有一个IP地址,IP地址表示了流量的来源(好比别人要找你玩,需要知道你家的地址:网络中别人需要和你通信,也需要知道IP地址),且Internet中的IP地址必须 ...

  9. 《TCP/IP 详解 卷1:协议》第 2 章:Internet 地址结构

    第二章介绍 Internet 使用的网络层地址,即熟知的 IP 地址.连接到 Internet 的设备,基于 TCP/IP 的专用网络中使用的设备都需要一个 IP 地址. 路由器(见 IP 协议 一章 ...

随机推荐

  1. 微服务架构 ------ 插曲 Linux平台 Ubuntu的安装

    1.一定要通过自定义安装 2.选择的硬件兼容性选择 14.x   这里介绍一下红框内的东西,是为了做虚拟存储使用的,也就是一批服务器对外展示位一个服务器,类似于服务器集群 3.选择稍后安装操作系统,如 ...

  2. P3028 汽水机(差分)

    题目 P3028 [USACO10OCT]汽水机Soda Machine 解析 差分,看到\(a[i]\leq 1e9\),离散化一下,在\(l\)处\(+1\),\(r+1\)处\(-1\),这样就 ...

  3. Mac下Appnium的Android的UI自动化环境搭建

    1. 安装jdk:略 检查是否安装:执行命令java -version admindeMacBook-Pro-2:~ $ java -version java version "1.8.0_ ...

  4. ubuntu与centos系统对比

    CentOS与Ubuntu该如何选择,哪个更好用.笔者在自媒体平台收集了一些网友的观点,较为经典,分享给大家.至于应该选择哪个,希望看完本文章后,读者心中有数. 观点1:CentOS适用于服务器,Ub ...

  5. 实验吧——让我进去(hash长度扩展攻击)

    题目地址:http://ctf5.shiyanbar.com/web/kzhan.php 在页面源码没发现什么,于是用burp进行抓包重放 看到有setcookie,于是重新刷新页面拦截数据包(这次才 ...

  6. SQL Server Compact 3.5环境部署<转>

    通过使用 Microsoft Visual Studio 开发环境,可以开发使用 SQL Server Compact 3.5 的应用程序.Visual Studio 是开发和部署使用 SQL Ser ...

  7. Centos7 安装配置 Rabbitmq Cluster

    Rabbitmq介绍 RabbitMQ是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能.健壮以及可伸缩性出名的 ...

  8. Docker搭建Wordpress

    搭建 wordpress 1.拉取 wordpress 镜像docker pull wordpress:latest 2.运行 wordpress 镜像 docker run --name wordp ...

  9. Django框架(九)-- 多表操作:一对一、一对多、多对多的增删改,基于对象/双下划线的跨表查询、聚合查询、分组查询、F查询与Q查询

    一.创建多表模型 一对一:OneToOneField 一对多:ForeignKey 多对多:ManyToManyField 创建表时,会自动添加一个nid字段,并且自增,所以id可以不用手动创建 On ...

  10. eclipse自定义自动补全语句

    1. Windows-->preferences 2. 弹出框选择, Java-->Editor-->Templates-->New 3. 弹出框输入, 1.Name--名字, ...