IP地址结构及分类寻址

IP地址 = <网络号> + <主机号>           
------------IPv4(32bit)点分四组表示法: 192.168.31.133
------------IPv4(32bit)二进制表示法:  11000000  11001000  00011111  10000101
在最初定义定义Internet地址结构时, 每一个单播IP地址都有一个网络部分用于识别接口使用的IP地址在哪个网络中能够被发现;另外一个就是主机部分用于确定该网络中的特定主机。
大多数主机只有一个网络接口,因此术语中接口地址和主机地址缺省都是正确的。

  IPv4地址空间划分

最初("分类")的IPv4地址空间划分
地址范围 高位前缀(掩码) 网络数量 主机数量 百分占比
A 0.0.0.0 ~ 127.255.255.255 0  (255.0.0.0) 2^7) 2^24 1/2
B 128.0.0.0 ~ 191.255.255.255 10  (255.255.0.0) 2^14 2^16 1/4
C 192.0.0.0 ~ 223.255.255.255 110  (255.255.255.0) 2^21 2^8 1/8
D 224.0.0.0 ~ 239.255.255.255 1110  (N/A) N/A N/A 1/16
E 240.0.0.0 ~ 255.255.255.255 1111  (N/A) N/A N/A 1/16

  注意:上表部分数据是不严谨的,一般地址的首位地址和末位地址是不使用的

   高位前缀与UTF-8的首字节高位很类似(类如:ASCII:0xxxxxxx     常用中文字符:1110xxxx  10xxxxxx 10xxxxxx)

   D、E类IP地址组成不区分网络号和主机号,所以没有子网掩码一说

   D类地址是一种组播地址,主要是留给Internet体系结构委员会IAB(Internet Architecture Board)使用 ;

   E类地址:网络地址的最高位必须为“11110”,第一个八位位组值的范围从240-255。可用的地址范围从240.0.0.0 到255.255.255.254,为将来使用保留。

子网寻址

Internet早起发展遇到一个问题,那就是很难为接入Internet的新网段分配一个新网络号。后来随着局域网技术的发张,这个问题变得更棘手。人们就自然想到接入网络后便为其分配一个网络号,然后由站点管理员进一步划分本地子网数。
通过子网寻址,一个站点被分配一个A类、B类或C类的网络号,保留一些剩余主机号继续进行站点内分配。从本质上讲,子网寻址为IP地址结构增加了一个额外部分,但他没有为地址增加长度。因此一个站点管理员能够在子网数和每个子网中预期的主机数之间折中,同时不需要其他站点协调

 

下面来以一个B类地址来作子网寻址的例子:

   上图是一个B类地址被划分子网的例子,假设Internet中的一个站点已被分配一个B类网络号(IP地址与255.255.0.0逐位相与得到),该站点的前16bit固定,这是由于这些位已被分配给核心机构。后16位(仅用于在无子网的B类网络中创建主机号)现在可以由站点网络管理员按需分配。在这个例子中,7位被选为子网号,剩下9位为主机号。这一特殊分配可以使得该站点支持2^7个子网, 每一个子网包含(2^9-2)台主机。注意,只有划分子网的网络中的主机和路由器知道子网结构。换句话说,子网寻址纯粹是站点内部的问题。

     

   注意:上图中站点内子网掩码为255.255.255.0

    某一个站点被分配一个典型B类网络号128.32。网络管理员决定用于站点范围内的子网掩码为255.255.255.0, 由于B类地址固定掩码为255.255.0.0,则该站点能够支配的子网ID的位数为8位,即能够分配256个子网。每一个子网能够容纳254台主机地址。图中左侧局域网段内主机的IPv4地址开始于128.32.1, 右侧局域网段内的IPv4开始于128.32.2。

   该虚拟站点使用了一个边界路由器连接Internet和两个局域网。该站点与Internet的数据交互通过一个边界路由器连接。

子网掩码

特别注意的是,子网掩码是站点内部组网的解决方案。Internet路由系统其余部分不需要子网掩码的知识,因为站点之外的路由器作出路由决策只给予地址的网络号(例如A类的网络号为高8bit,B类的网络号为高16bit,C类的网络号为高24bit)部分。
子网掩码是由一台主机或者路由器使用的分配位,以确定一台主机对应IP地址中获得网络和子网信息。IP子网掩码与IP地址长度相同(IPv4为32位,IPv6为128位),它们既可以是静态的(一般是路由器),也可以是动态的(例如动态主机配置协议DHCP)。
掩码由路由器和主机使用,以确定一个IP地址的网络/子网部分的结束和主机部分的开始。子网掩码中的一位设为1表示一个IP地址的对应位与一个地址的网络/子网部分的对应位相结合,将结果作为转发数据报的基础。相反,为0则是对应主机ID的一部分。

  例如当子网掩码为255.255.255.0时,如何处理IPv4地址128.32.1.14

  分析: 128.32.1.14为一个B类网络,固定网络号为高16bit, 固定掩码为255.255.0.0,在当前站点(网络号为128.32)下,可以看出该站点网络管理员拿出主机位的高8bit作为子网号,尾8bit作为主机号。

  

 从上图可以看出128.32.1.14属于子网128.32.1.0/24

 再次强调,Internet其余部分不需要子网掩码的知识,因为站点之外的路由器做出决策只是基于地址的网络号部分(例如A类的网络号为高8bit,B类的网络号为高16bit,C类的网络号为高24bit),并不需要网络/子网或主机部分。因此子网掩码纯粹是站点内部的问题。

可变长度子网掩码(VLSM)

  目前为止,我们已经讨论了如何讲一个分配给站点的网络号进一步细分为多个可分配的大小相同的子网,并根据该站点网络管理员的合理要求使得每一个子网能支持相同数量的主机。

我们发现,在同一个站点的不同部分可将不同长度的子网掩码应用于相同的网络号。虽然增加了地址配置管理的复杂性,但也提高了子网结构的灵活性,这是由于不同子网可以容纳不同数量的主机。
目前大多数主机、路由器和路由协议支持可变长度子网掩码(VLSM)。

  下面以一个网络拓扑结构例子,来了解VLSM

 

  

   从上图中可以看出,该站点分配了一个128.32的B类网络号,站点管理员在此基础上进行子网划分,固定掩码为是高16bit不变(即B类掩码255.255.0.0),一共划分了四个子网,128.32.1.0/24、128.32.2.0/24(包含128.32.2.128/25)、128.32.230.129/26。

  对于128.32.230.{128-191}局域网(子网)而言,其网络前缀为(128.32.230.128/26),用于为什么呢?该子网与边界路由器137.164.23.30/32的路由器的IP为128.32.230.129/26,得知该局域网的子网掩码为11111111 11111111 11111111 11000000(即255.255.255.192.0/26),与126.32.230.129/26逐位相与操作得到10000000 00100000 11100110 10000000(即128.32.230.128),

  网络前缀有什么作用?当Internet中一台主机A要发送给B(128.32.2.134)数据要经历下述几个阶段:

  1. 查找本地或者其所在链路(局域网)上的路由器中的ARP缓存表,得到B的MAC地址,并根据路由算法找到该站点的边界路由器。

  2. 在边界路由器中取出数据报的目的IP(即128.32.2.134)和子网掩码(255.255.255.128),将两者相与,得到网络前缀128.32.2.128。

  3. 确定了B属于子网128.32.2.128,最后由内部路由器转发数据报至目的主机B。

  VLSM用于分割一个网络号,使得每一个子网支持不同数量的主机。在子网内每一个路由器和主机除了IP地址还需要配置一个子网掩码。

广播地址

  在每一个IPv4子网中,一个特殊地址被保留作为子网的广播地址。

  如何计算一个IP所在子网的广播地址呢?这里使用128.32.1.14举例

  在上图中, 我们知道128.32.1.14在站点内的子网掩码是255.255.255.0.

  第一步:子网掩码(255.255.255.0)取反得到A(0.0.0.255)

  第二步:A与IP地址进行或运算得到该子网广播地址(128.32.1.255)

使用广播地址作为目的地的数据报的过程也称之为定向广播,当接收到数据报时,数据报将转发给所在子网的所有主机和路由器
目前鉴于安全问题,定向广播仍被禁用
除了子网广播地址,特殊用途地址255.255.255.255被保留为本地网络广播(也称为有限广播),他们不会由路由器转发。
广播地址通常与某些协议一起使用,例如UDP/IP、或ICMP,因为这些协议不涉及如TCP/IP会话机制。

CIDR和聚合

CIDR全称无类别域间路由
---------------表示方式 (IP地址/网络号位数)例如128.32.1.14/24就代表前24位为网络号的IP地址
为缓解IPv4(特别是B类地址耗尽)的压力, Internet管理机构参照VLSM的方案,扩展全球性路由系统(注意范围不再是单个站点)来支持CIDR。CIDR不在局限于一个站点,而是全球性路由系统都是可见的,因此除了网络号外,核心Internet路由器必须能解释和处理掩码。而这一前缀正式命名为网络前缀

   通过取消分类结构的IP地址,能分配各种尺寸的IP地址块。但是,对路由器而言,这样做还是没能解决路由表条目数。

  路由聚合

在Internet环境中,可以采用分层的思想来以一种特定的方式减少Internet路由条目数。者通过一种路由聚合的方式来实现,通过间相邻的duogeIP地址合并为一个短前缀(聚合), 就可以覆盖更多的地址

  

  

  

Internet地址结构的更多相关文章

  1. 第二章:Internet地址结构

    引言 本章主要介绍了: 如何为Internet中的设备分配IP地址. 有助于理由可扩展性的地址结构分配方式. 特殊用途的地址. 表示IP地址 IPv4地址 长32位,采用点分四组或点分十进制来表示. ...

  2. 第二章 Internet 地址结构

    注意: 这个系列的博客只是为了巩固我学习的知识,参考的价值不是很大,如果需要,请转到http://www.cnblogs.com/ZCplayground/p/7764436.html Interne ...

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

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

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

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

  5. <TCP/IP>Internet地址结构回顾

    本章介绍了Internet中使用的网络层地址,又称IP地址. 要想在网上冲浪,一个设备至少要有一个IP地址(PS:我用赛风FQ的时候,居然自动更换了IP地址,顿时感觉很神奇但是不知道为什么) ***成 ...

  6. 二、Internet地址结构

    IP路由器实现的转发程序使用IP地址来识别流量去向.IP地址也表示流量来源. 2.1 IP地址的表示 IPV4地址通常采用点分四组或点分十进制表示法,如192.168.1.1. 点分四组表示法由四个用 ...

  7. IP地址结构(转载)

    分类寻址(网络号+主机号) 在最初定义Internet地址结构时,每个单播IP地址都有一个网络部分,用于识别接口使用的IP地址在哪个网络中可被发现:以及一个主机地址,用于识别由网络部分给出的网络中的特 ...

  8. 套接字编程相关函数(1:套接字地址结构、字节序转换、IP地址转换)

    1. 套接字地址结构 1.1 IPv4套接字地址结构 IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在<netinet/in.h>头文件中.下 ...

  9. Java实现Internet地址获取

    Java实现Internet地址获取 代码内容 输入域名输出IPV4地址 输入IP地址输出域名 支持命令行输入 支持交互式输入 代码实现 /* nslookup.java */ import java ...

随机推荐

  1. Eclipse集成Git做团队开发

    在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...

  2. Mysql之索引(六)

    1.思考 在图书馆是怎么找到一本书的? 一般的应用系统对比数据库的读写比例在10:1左右(即有10次查询有1次写操作),而且插入操作和更新操作很少出现性能问题. 遇到最多,最复杂的还是一些复杂的查询操 ...

  3. centos从零开始安装elasticSearch

    前言:elasticSearch作为一款优秀的分布式搜索工具,被广泛用在数据搜集和整理的业务中,知名的比如有github就是采用es来精准的搜索几千万行代码,百度也大量应用es做数据爬取分析,本篇博客 ...

  4. 【转载】 使用宝塔Linux面板功能查看服务器内存使用情况

    运维过阿里云服务器或者腾讯云服务器的运维人员都知道,针对占用内存比较高的应用或者服务等,我们需要时刻关注服务器的内存使用率,是否存在内存瓶颈等情况的出现.阿里云和腾讯云官方后台界面的监控数据页面也有相 ...

  5. C# 后台服务器端 Get 请求函数封装

    请求参数封装 /// <summary> /// 拼接 Get请求参数 /// </summary> /// <param name="parames" ...

  6. ES6 字符串&正则表达式

    目录 第二章 字符串和正则表达式UTF-16码位codePointAt()方法String.fromCodePoint()方法normalize()方法正则表达式u修饰符其他字符串变更字符串中的字串识 ...

  7. Python学习的开端

    C语言太麻烦了,所以我打算自学Python. 自学选的书是<父与子的编程之旅>,这本书还是比较通俗易懂的. 贴上书上教我编写的猜数字游戏代码 import random secret = ...

  8. .Net core3.0 集成swagger5.0上传文件

    .Net core 3.0已经更新了,相信有挺多博主大佬们都更新了如何在.Net core3.0使用swagger,这里就不详细说了. 我们知道,如果.net core 2.x使用swagger上传文 ...

  9. Docker容器的简单使用

    1. docker的使用 1> 创建容器 创建并启动容器: docker run -it -name 容器名 镜像: 版本  /bin/sh(bash) 创建并不启动容器:docker crea ...

  10. chrome开发者工具--使用 Network 面板测量您的网站网络性能。

    转自:Tools for Web Developers   Network 面板记录页面上每个网络操作的相关信息,包括详细的耗时数据.HTTP 请求与响应标头和 Cookie,等等. TL;DR 使用 ...