在讨论IP编址之前,我们需要讨论一下主机与路由器连入网络的方法。一台主机通常只有一条链路链接到网络;当主机中的IP想发送一个数据报时,它就在链路上发送,主机与物理链路之间的边界叫做接口(interface)。现在考虑一套路由器及其接口。因为路由器的任务是从链路上接收数据报并将这些数据报从某些其他链路转发出去,所以路由器必须拥有两条或更多条链路与它链接。路由器与它的任意一条链路之间的边界也叫做接口。因此,一台路由器有多个接口,每个路由器有一条链路。因为每台主机与路由器都能发送和接收IP数据报,所以IP要求每台主机和路由器接口都拥有自己的IP地址。因此,一个IP地址在技术上是与一个接口相关联的,而不是与包括该接口的主机或路由器相关联的。

  每个IP地址长度为32比特(等于4字节),因此总共有大概40(232)亿个可能的IP地址。这些地址一般按照所谓点分十进制记法(dotted-decimal notation)的方式书写,即地址中的每个字节用十进制形式书写,各字节之间用句号(点)隔开。例如,地址193.32.216.9的二进制记法是:11000001 00100000 11011000 00001001。在全球因特网中,每台主机和路由器上的每个接口都必须有一个全球唯一的IP地址(在NAT后面的除外。

  传统的IP地址是分类的地址。分为A、B、C、D、E五类。无论哪类IP地址,都是由网络号和主机号两部分组成。其中,网络号代表主机所连接的网络,主机号代表该主机或路由器中的地址。

  分类的IP地址如下所示:

特殊的IP地址:

有一些IP地址用于表示特殊用途,不用作主机IP地址:

  

  与子网相关:

  主机号全为0表示网络本身。比如,在192.168.0.0/24的子网中,192.168.0.0表示这个子网本身。

  主机号全为1表示本网络的广播地址。比如,在192.168.0.0/24的子网中,192.168.0.255表示这个子网的广播地址。

  0.0.0.0表示整个TCP/IP网络。

  255.255.255.255表示整个TCP/IP网络的广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。这个地址不能被路由器转发。

  保留地址:

  A类:127.X.X.X (127.0.0.0~127.255.255.255)是为环回接口预留的。根据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。一个传给环回接口的IP数据报不能在任何网络上。

  B类:169.42.X.X 如果主机使用了动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)功能自动获得一个IP地址,那么当动态主机设置协议服务器(DHCP服务器)发生故障,或响应时间太长而超出了一个系统规定的时间,系统会分配这样一个地址。如果发现主机IP地址是一个这样的地址,该主机的网络大都不能正常运行。

  私有地址:

  私有IP地址值用于LAN,不用于WLAN连接。因此私有IP地址不能直接用于Internet,必须通过网关理由NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet。私有IP地址有效解决了IP地址不足的问题,私有IP地址网段如下:

  A类:10.0.0.0 ~ 10.255.255.255

  B类:172.16.0.0 ~ 172.31.255.255

  C类:192.168.0.0 ~ 192.168.255.255

CIDR:

  CIDR(无类别域间选路,Classless Interdomain Routing)是在使用变长子网掩码(VLSM)的基础上提出的一种消除A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的网络划分方法。这样可以大幅度提高IP地址空间的利用率,并减小路由表的大小,提高路由器的路由转发能力。

  注意,路由协议可以分为有类路由协议和无类路由协议。有类路由协议的数据包中不包括子网掩码。所以只有无类路由协议才(RIPv2, BGP,OSPF)才可以支持CIDR。

  CIDR的主要特点如下:

  1) 消除了传统的A、B、C类地址以及子网的概念。这样IP地址分为两部分:网络前缀、主机号。

  CIDR使用斜线记法,即IP地址/网络前缀所占比特数。其中,网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续1的部分。

  2)将网络前缀都相同的连续的IP地址组合成“CIDR地址块”。一个CIDR地址块可以包括多个A、B、C类地址,这种地址的聚合称为路由聚合,或称为构成超网。路由聚合使得路由表中的一个项目可以表示很多个原来传统分类地址的路由,有利于减少路由之间的路由选择信息的交换,从而提高网络性能。

参考资料:

  1.《计算机网络-自顶向下方法》(第四版) 2.7/4.4

  2. 《王道程序员求职宝典》

  3. http://baike.baidu.com/view/39496.htm

  4. http://baike.baidu.com/view/2558390.htm

IPv4编址及子网划分的更多相关文章

  1. IPv4协议及VLSM可变长子网划分和CIDR无类域间路由

    IPv4协议及VLSM可变长子网划分和CIDR无类域间路由 来源 https://blog.csdn.net/hongse_zxl/article/details/50054817 互联网世界一切通信 ...

  2. 计算机网络之IPv4(IPv4分组、IPv4地址、NAT、子网划分与子网掩码、CIDR、ARP协议、DHCP、ICMP)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105138313 学习课程:<2019王道考研计算机网络> 学习目的 ...

  3. 网络学习day04_VLSM、子网划分

    IP子网划分 首先,在进行子网划分的学习之前,我们先来回顾一下IP地址的相关知识,同时了解一下公有和私有IP地址: 在Internet上有千百万台主机,为了区分这些主机,人们给每台主机都分配了一个专门 ...

  4. IP地址和子网划分学习笔记之《IP地址详解》

    2018-05-03 18:47:37   在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. ...

  5. HCNP学习笔记之子网划分 VLSM CIDR

    子网划分.VLSM可变长子网掩码.CIDR无类域间路由是学习网络知识或者说是学习路由知识所必备的,但很多朋友说这三者理论性太强了,不好掌握.本文将结合实例讲解子网划分的方法并对VLSM和CIDR进行简 ...

  6. 网络基础之IP地址与子网划分

    IP地址 Ipv4地址格式:点分十进制 IP地址的分类 A类 B类 C类: D类:组播 E类: 公共IP地址 私有IP地址 特殊地址 保留地址 子网掩码 什么是子网掩码 CIDR表示法 子网划分 为啥 ...

  7. 第5章 子网划分和CIDR

    第5章 子网划分和CIDR 划分网络 根据A类.B类或C类网络ID来识别网段具有一些局限性,主要是在网络级别之下不能对地址空间进行任何逻辑细分 如果一个IP是一个A类网络.数据报到达网关,然后传输到9 ...

  8. 【网络】IP子网划分详解

    1.IP地址组成                                IP地址组成示意图 IP地址由32位二进制组成,32位二进制分成了4字节,每字节8位,字节之间用符.(点)分隔,为了方便 ...

  9. [转,讲的非常精彩]CIDR地址块及其子网划分(内含原始IP地址分类及其子网划分的介绍)

    http://blog.csdn.net/dan15188387481/article/details/49873923 CIDR地址块及其子网划分(内含原始IP地址分类及其子网划分的介绍)   1. ...

随机推荐

  1. 汇编程序返回dos

    汇编程序返回dos有两种方式: 1. push ds    sub ax,ax    push ax    ...    ret 作用:一开始ds是指向psp的,在psp:0000处放着int 20h ...

  2. Asp.net Core Startup Class中是如何获取配置信息的

    默认的网站构建方式 VS2015新建asp.net core项目,项目建立完成后,有两个文件,Program.cs和Startup.cs. public class Program { public ...

  3. 20155323 2016-2017-2 《Java程序设计》第4周学习总结

    20155323 2016-2017-2 <Java程序设计>第4周学习总结 教材学习内容总结 继承的目的:继承是为了多态,能够采用父类引用指向子类对象,这样可以让代码更灵活.继承之后可以 ...

  4. 1.Delphi Rest后台+MUI前台开发App前言

    尽管不是专业的程序猿,但是对Delphi的喜爱已经10多年了.一直以来用Delphi开发一些小应用若干个,同时用Delphi给朋友开发一些中小型的业务平台也有几个.可以说Delphi对于数据库的操作, ...

  5. Android Sdk Manager更新

    现在Android Sdk Manager无法更新了,什么原因大家都知道,即使使用Goagent效果也不理想. 目前Goagent使用的3.2.2 修改C:\Windows\System32\driv ...

  6. c++ 全局变量

    一.全局变量 声明 全局变量的定义和一般变量定义相同,不同的就是它的位置.一般会放在所有共享函数的前边. 作用 在函数间共享数据. 二.全局变量的运用 三.作业: 写出代码运行结果: ; //0 in ...

  7. 自己用C语言写RL78 serial bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 之前用C实现过多款PI ...

  8. js灵活处理日期(函实例)

    基础方法: var dd = new Date() dd.getFullYear() dd.getMonth() dd.getDate() dd.getDay() //获取星期几(0~6) dd.ge ...

  9. python3 - 元组、集合

    元组(tuple) 有序集合,不可变 a(1,2,3) a[0]获取第一个值 集合(set)增删改 >>> b = set('abc') >>> bset(['a' ...

  10. CentOS7.x安装Docker1.11.1

    原文发表于cu:2016-05-30 本文属于重发,当前Docker已经分为EE与CE版本,CE版本是17.06.0-ce,最新的CE版本安装方式已略有不同:但可以指定安装版本,如1.11.1,1.1 ...