{"msg":"操作成功","code":200,"data":{"createBy":"admin","createTime":"2019-12-13 14:02:30","updateBy":"admin","updateTime":"2019-12-13 14:02:30","remark":null,"id":4,"articleTitle":"CIDR的IP地址划分与表示方法","articleUrl":"cidr_ip","articleThumbnail":"https://www.asumimoe.com/imgfiles/20220908/ee03af4419724d50a127c34d6a588554.png","articleFlag":"0","draftStatus":"1","reprintStatement":"1","articleSummary":"IPV4的地址是一个32位的二进制数，由网络ID和主机ID两部分组成，用来在网络中唯一的标识一台计算机。IP地址通常用四组3位的十进制数表示，中间用.分割。为了方便IP寻址，将IP地址分为A、B、C、D、E五类。每类IP地址对各个IP地址中用来表示网络ID和主机ID的位数作了明确的规定。当主机ID的位数确定之后，一个网络中是多能够包含的计算机数目也就确定，用户可根据企业需要灵活选择一类IP地址构建网络结构。","articleContent":"## 早期IP地址划分\n\n\n\n  最初设计互联网络时，为了便于寻址以及层次化构造网络，每个IP地址包括两个标识码（ID），\n\n即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID，网络上的一个主机\n\n（包括网络上工作站，服务器和路由器等）有一个主机ID与其对应。\n\n\n\n  IP地址是一个32位的二进制字符，为了方便人类的记忆，所以，通常人们会将二进\n\n制的IP地址表示成十进制的格式，没每八位分割一下，即分成四段。（后来数字也不太容易记\n\n忆，所以，人们就用字符（域名，例如：www.jd.com）来表示IP地址，每次上网的时候，通过DNS服务器，\n\n将字符（域名）解析成IP地址，然后才能上网，这个暂且不提。）\n\n\n\n  网络ID：用来标识计算机所处的网段，网络ID相同的计算机不需要通过路由器连接就能够直接通信，我们把网络\n\nID相同的计算机组成一个网络称之为本地网络（网段）；网络ID不相同的计算机之间通信必须通过路由器连接，我\n\n们把网络ID不相同的计算机称之为远程计算机。网络ID是IP地址与子网掩码进行与运算获得，即将IP地址中表示主机ID的\n\n部份全部变为0，表示网络ID的部份保持不变。\n\n\n\n  主机ID：用来标识计该台主机在网段中的位置。\n\n\n\n## 五类地址\n\n\n\n#### 1.A类地址\n\n\n\n一个A类IP地址由1字节网络地址和3字节主机地址组成，网络地址的最高位必须是0\n\n，地址范围从0.0.0.0-126.255.255.255.可用A类网络有126个，每个网络可容纳1亿多台主机。\n\n\n\n```bash\n\n0 000 0000-0 111 1111:0-127\n\n网络数：2^7（0：用于表示未知地址，127：表示回环地址，两个都不可用）\n\n每个网络中的主机数：2^24-2\n\n**注意**：主机位全为0，表示网络ID；主机位全为1表示本网段内的广播地址。\n\n默认子网掩码：255.0.0.0\n\n私网地址：10.0.0.0\n\n```\n\n\n\n#### 2.B类地址\n\n\n\n一个B类IP地址由2字节网络地址和2字节主机地址组成，网络地址最高位必须是“10”，地址\n\n范围从128.0.0.0到191.255.255.255.可用B类网络有16382个，每个网络可容纳6万多台主机。\n\n\n\n```bash\n\n10 00 0000 - 10 11 1111： 128-191\n\n网络数： 2^14（128~191）\n\n每个网络中的主机数： 2^16-2\n\n默认子网掩码： 255.255.0.0\n\n私网地址： 172.16.0.0-172.31.0.0\n\n```\n\n\n\n#### 3.C类地址\n\n\n\n一个C类IP地址由3字节的网络地址和1字节的主机地址组成，网络地址的最高位必须是“110”。\n\n范围从192.0.0.0到223.255.255.255。C类网络可达209万余个，每个网络能容纳254个主机。 \n\n\n\n```bash\n\n110 0 0000 - 110 1 1111: 192-223\n\n网络数： 2^21（192~223）\n\n每个网络中的主机数： 2^8-2\n\n默认子网掩码： 255.255.255.0\n\n私网地址： 192.168.0.0-192.168.255.0\n\n```\n\n\n\n#### 4.D类地址\n\n\n\nD类地址用于多点广播（Multicast）：D类IP地址第一个字节以“1110”开始，它是一个专门保留的地址。它并不指向特定的网络，目前这一类地址被用在多点广播（Multicast）中。多点广播地址用来一次寻址一组计算机，它标识共享同一协议的一组计算机。224.0.0.0到239.255.255.255用于多点广播 。\n\n\n\n```bash\n\n1110 0000 - 1110 1111: 224-239\n\n```\n\n\n\n#### 5.E类地址\n\n\n\n240-255：ping十进制的ip地址也可以ping通。\n\n\n\n#### 6.特殊地址\n\n\n\n1）（0.0.0.0）地址对应于未知地址。指在本机的路由表里没有特定条目指明如何到达。一般用户主机为了获得一个可用的IP地址，就给DHCP服务器发送IP分组，并用这样的地址作为源地址，目的地址为255.255.255.255（因为主机此时并没有自己的确定的IP地址，防止自己随便定的IP地址与别的主机发生冲突。）。\n\n\n\n2）（255.255.255.255）是当前子网的广播地址。这个地址指本网段内(同一个广播域)的所有主机，该地址用于主机配置过程中IP数据包的目的地址（例如通过DHCP服务器获取本机的IP地址的时候，由于不知道DHCP服务器的IP地址，便会通知数据链路层，发送广播包，来寻找DHCP），这时主机可能还不知道它所在网络的网络掩码，甚至连它的IP地址也还不知道。在任何情况下，路由器都会禁止转发目的地址为受限的广播地址的数据包，这样的数据包仅会出现在本地网络中。\n\n\n\n3）（127.*.\\*.\\*）是一个A类地址，但是它已被保留作闭环（look back ），一般用作测试之用而不能分配给一个网络。127中的所有地址都代表发送方自己。\n\n\n\n4）（169.254.\\*.*）仅限于windows使用，如果你的主机是使用DHCP功能，来自动获得一个IP地址的。那么当你的DHCP服务器发生故障或响应时间太长而超出系统规定的一个时间，Windows系统会为你分配这样一个地址。如果你发现你的 主机IP地址是个诸如此类的地址，很不幸，十有八九是你的网络不能正常运行了，linux没有这种现象。\n\n\n\n5）（私有地址）在IP地址3种主要类型里，各保留了3个区域作为私有地址，其地址范围如下： \n\n\n\n```bash\n\nA类地址：10.0.0.0～10.255.255.255\n\nB类地址：172.16.0.0～172.31.255.255 （16个B类）\n\nC类地址：192.168.0.0～192.168.255.255\n\n```\n\n\n\n私有地址，这些地址被大量用于企业内部网络中。一些宽带路由器，也往往使用192.168.1.1作为缺省地址。私有网络由于不与外部互连，因而可能使用随意的IP地址。保留这样的地址供其使用是为了避免以后接入公网时引起地址混乱。使用私有地址的私有网络在接入Internet时，要使用地址翻译 (nat)，将私有地址翻译成公用合法地址。在Internet上，这类地址是不能出现的。\n\n\n\n6）（直接广播地址）主机位全为1，网段中的最后一个地址为直接广播地址。主机使用这种地址把一个IP数据报发送到本地网段的所有设备上，路由器会转发这种数据报到特定网络上的所有主机。注意：这个地址在IP数据报中只能作为目的地址。另外，直接广播地址使一个网段中可分配给设备的地址数减少了1个。\n\n\n\n7）（子网中的第一个IP）主机位全为0的地址，用作标识网络ID，一个网段中可分配给设备的地址数会减少1个。\n\n\n\n8）（网络位为0的IP地址）当某个主机向同一网段上的其他主机发送报文时就可以使用这样的地址，分组也不会被路由器转发。比如12.12.12.0/24这个网络中的一台主机12.12.12.2/24在与同一网络中的另一台主12.12.12.8/24通信时，目的地址可以是0.0.0.8。\n\n\n\n## CIDR无间断路由\n\n\n\n由于早期的IP地址的划分会浪费太多的IP地址，所以，现在都是用CIDR表示法，为此引入了子网掩码的概念，即网络位的个数可以任意指定。该方法兼容早期的IP划分方法。\n\nCIDR表示方法：IP地址/网络ID的位数（网段的划分更加灵活）\n\n\n\n1.子网掩码：子网掩码的作用，就是将某个IP地址划分成网络地址和主机地址两部分。子网掩码是一个32位地址，用于屏蔽IP地址的一部分，并说明该IP地址是在局域网上，还是在远程网上，具体方法待会儿再讲。子网掩码不能单独存在，它必须结合IP地址一起使用。子网掩码的二进制格式中的网络位全为1。这样二进制格式的子网掩码和二进制的IP地址进行“与”运算，可以得出该IP地址的网络位。\n\n允许的子网掩码的值：\n\n\n\n```bash\n\n10000000-128；11000000-192；11100000-224；11110000-240；\n\n11111000-248；11111100-252；11111110-254；11111111-255；\n\n```\n\n\n\n2.最小IP：主机ID不能全为0，全为0表示网络ID\n\n\n\n3.最大IP：主机ID不能全为1，全为1表示本地广播\n\n\n\nCIDR技术用子网掩码中连续的1部份表示网络ID，连续的0部份表示主机ID。比如，网络中包含2000台计算机，只需要用11位表示 主机ID，用21位表网络ID，则子网掩码表示为11111111.11111111.11111000.00000000，转换为十进制则为 255.255.248.0。此时，该网络将包含2046台计算机，既不会造成IP地址的浪费，也不会利用路由器连接网络，增加额外的管理维护量。\n\n\n\n## 例子\n\n\n\n#### 例1：192.168.23.35/21计算子网的网络ID、子网掩码、起止IP地址？\n\n\n\n```bash\n\n子网掩码：11111111 11111111 11111-000 00000000（子网掩码）=255.255.248.0（子网掩码的第二种表示方法。）\n\n网络ID：192.168.16.0（192.168.00010111.0和子网掩码进行“与”运算。）\n\n起始IP地址：192.168.16.1（192.168.16.0是本网端中的第一个IP，可是他已经表示网络ID了，所以，为了避免与该IP地址与网络ID混淆，所以，起始IP为192.168.16.1。）\n\n结束IP地址：192.168.23.254（192.168.00010（网络位）-111.11111110（主机位）主机ID不能全为1，全为1表示本地广播。）\n\n```\n\n\n\n#### 例2：将163.135.0.0/20划分为16个子网，计算第一个和最后一个子网的网络ID、子网掩码、起止IP地址？\n\n\n\n```bash\n\n第1步：用CIDR表示163.135.0.0/20，则子网掩码为255.255.240（11110000）.0。\n\n第2步：第一网络ID（子网掩码与IP地址与运算）：163.135.16.0（163.135.0000-0000.0）\n\n第一个IP地址：163.135.0.1\n\n结束IP地址：163.135.15.254\n\n第3步：第二网络ID：163.135.16.0（163.135.0000-1111.0）\n\n第一个IP地址：163.135.16.1\n\n结束IP地址：163.135.31.254\n\n```\n\n\n\n#### 例3：192.168.10.14/28，192.168.10.15/28，192.168.10.16/28，192.168.10.31/28哪些是合法IP，哪些是非法IP地址？\n\n\n\n```bash\n\n主机ID全为0和主机ID全为1的为非法IP地址：192.168.10.15/28、192.168.10.16/28、192.168.10.31/28都是非法IP地址。\n\n```\n\n\n\n#### 例4：192.168.10.14/28，192.168.10.15/28，192.168.10.16/28哪个不是同一网段？\n\n\n\n```bash\n\n网络ID相同的就属于同一网段，则192.168.10.16/28不属于同一网段。（192.168.10.14/28，192.168.10.15/28属于非法IP，但是他仍然属于192.168.0.0网段）\n\n```\n\n\n\n#### 例5：172.168.34.56/20，一共划分为了多少个子网，各子网可以包含多少台主机。\n\n\n\n```bash\n\n172.168.34.56是一个B类地址，B类地址用16位表示网络ID，题目中20位表示网络ID，则子网位数为4位，那么子网就有24次个（即从0000、0001到1111的16种变化）。由于IP地址是32位，用20位表示网络ID，则主机ID的位数为12位，则每个子网可以包含212－2个IP地址，即可以包含4096个IP地址。\n\n\n\n划分子网：将一个大网络（主机ID位多）划分多个小的网络（主机ID位少），网络ID向主机ID借位，络ID变多，主机ID变少（划分子网，会减少可用IP地址）\n\n注意：由于人们习惯了将IP地址分成，四段十进制的表示格式，所以，借过位的IP地址，依然是四段。例如：12.100.100.100/8；表示该IP的子网掩码有8位。\n\n该IP的二进制表示格式为：00001010.01100100.00000000.00000000/11111111.00000000.00000000.00000000\n\n即该IP的网络位（二进制）为：00001010.00000000.00000000.00000000\n\n即该IP的网络位（十进制）为：12.0.0.0\n\n如果将该网络划分成4个子网，那么就需要借2个主机位作为网络位来使用，具体方法为：\n\n00000000.00-000000.00000000.00000000（前面的黑色部分为网络位）\n\n\n\n第一个子网的网络位为（二进制）：00001010.00-000000.00000000.00000000（第一个网段，即借来的网络位全为0）\n\n第一个子网的网络位为（十进制）：12.0.0.0\n\n最后一个子网的网络位为（二进制）：00001010.11-000000.00000000.00000000（最后一个网段，即借来的网络位全为1）\n\n最后一个子网的网络位为（十进制）：12.192.0.0\n\n\n\n划分超网：\n\n将多个小网合并一个大网，主机ID向网络ID借位（找共同点）\n\n公式：\n\n1、主机数=2^主机ID位-2\n\n2、网络数=2^可变的网络ID位\n\n3、网络ID=IP和netmask 相与\n\n4、划分子网数=2^网络ID向主机ID借的位数\n\n5、划分子网损失IP数=2*（划分子网数-1）（因为每段子网中的第一个IP地址用来表示网络位，而最后一个IP地址都被用来表示本网段中的广播。）\n\n```\n\n\n\n#### 例6：A主机的IP地址为192.168.1.100/24，B主机的IP地址为192.168.2.100/16，请问两个主机可以相互通信吗？\n\n\n\n```bash\n\n答案：在通讯之前，主机首先需要判断目标IP是不是跟自己在一个网段中（因为源主机只知道目标主机的IP地址，并不知道他的子网掩码，所以，源主机会将目标IP与自己的子网掩码进行比较，得出一个网络ID）。\n\nA主机发起通讯：A经过计算，会得出B主机跟自己不在一个网段中，会将将ping包发送给网关（路由器）：目标主机不可到达。\n\nB主机发起通讯：B经过计算，会得出A主机跟自己在一个网段中，B发出ping包，A可以收到，但是A找不到B：超时。\n\n```\n\n\n\n参考自：[https://blog.csdn.net/han156/article/details/77817031](https://blog.csdn.net/han156/article/details/77817031?_blank)","categoryId":1,"viewCount":1984,"categoryName":"Linux","author":"球接子","authorAvatar":null,"tagIds":[10],"tagNames":["Linux基础"]}}