zoukankan      html  css  js  c++  java
  • IP协议

    IP地址的作用

    广义地说,IP地址唯一标示了连上互联网上的一台主机,那么只要知道了一台主机的IP地址,那么就可以给该主机发送消息。路由器会根据消息的目的地址选择合适的线路将信息转发到目的主机。

    MAC地址不也是全球唯一,不也能唯一标识互联网上的一台主机吗。为什么不使用MAC地址而使用IP地址来转发消息呢?这是因为MAC划分得太细了,不是层级化的地址,如果使用MAC地址来转发消息,那么路由器的路由表该有多大啊。而IP地址就不同了,具有相同IP前缀的主机都集中在一个地域,所以路由器的路由表只要维护哪个IP前缀的地址从哪个端口转发出去就好了。

    所以说路由器期望IP前缀越短越好,IP前缀越短,说明网络数越少,路由器需要维护的路由表的表项也就越少了,所以就产生了无分类编址CIDR,下面会说到。

    IP地址的三个阶段

    IP地址的编址方法一共经过了三个历史阶段。

    (1)分类的IP地址。将IP地址分为A,B,C,D,E五大类。

    (2)子网的划分。将一个大的网络划分成若干个更小的子网,从而提高了灵活性。

    (3)无分类编址方法(无分类域间路由选择CIDR)。

    分类的IP地址

    IPV4地址用4个字节表示,共32个字节。此阶段的IP地址 = 网络号 + 主机号

    A类地址的最高位固定为0,所以只要一个IP地址的最高位为0,该IP地址就是A类地址。A类地址用7位表示网络号,24位表示主机号。

    B类地址的前两位固定为10,所以只要一个IP地址的前两位为10,该IP地址就是B类地址。B类地址用14位表示网络号,16位表示主机号。

    C类地址的前三位固定为110,所以只要一个IP地址的前两位为110,该IP地址就是C类地址。C类地址用21位表示网络号,8位表示主机号。

    D类地址的前4位固定为1110,剩下的位数用来表示多播地址。

    E类地址的前4位固定为1111,剩下的位数用来表示预留地址。

    可以看出,IP地址的前几位固定为XXX是有含义的,即B类地址的网络号正好连在A类地址后面,C类地址地址的网络号也正好接在B类地址后面。

    (1)私有地址
    上面提到IP地址在全世界范围内唯一,任意两台主机的IP地址不能相同,或者会冲突,看到这句话你可能有这样的疑问,像192.168.0.1这样的地址在许多地方都能看到,并不唯一,这是为何?Internet管理委员会规定如下地址段为私有地址,私有地址可以自己组建内网时使用。所以使用路由器组建内网时,都是使用私有地址。当内网的电脑需要访问外部网络时,那么你的路由器必须具备一个上面所说的全球IP地址,此时路由器会使用NAT(network address translate)协议将内网地址转为全球地址,即内网的小伙伴们共用一个全球IP地址。显然的,伙伴一多,就感觉就很卡了。

    下面是A、B、C类网络中的私有地址段。你自己组网时就可以用这些地址了。

    10.0.0.0~10.255.255.255
    172.16.0.0~172.131.255.255
    192.168.0.0~192.168.255.255

    (2)回送地址
    A类网络地址127是一个保留地址,用于网络软件测试以及本地机进程间通信,叫做回送地址(loopback address)。无论什么程序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。含网络号127的分组不能出现在任何网络上。
     

    子网的划分

    第一阶段的IP地址的结构存在以下问题:

    (1)IP地址空间的利用率有时很低。每一个A类网络地址能够容纳1000多万台主机,有些组织申请到了一个A类地址,但是又没有那么多主机,就会浪费很多IP地址。

    (2)不便于管理。如果一个网络中有1000多万台主机,那么要管理这么多的主机,想想都可怕。

    (3)拖慢网络性能。一个网络中有1000多万台主机,一个网络是由一个路由器管理的,那么一个路由器要分组转发1000多万台的主机的数据,能不拖慢网络性能吗。

    所以就出现了子网划分技术,将一个很大的网络划分成若干个子网,每个子网用一个路由器转发该子网内主机的信息。就相当于就该网络划分成了若干个网络。但是对外来说,是看不到这些子网的。

    此阶段的IP地址 = 网络号 + 子网号 + 主机号

     划分子网的方法是从IP地址中的主机号借若干位来作为子网号,那么主机号也就相应减少了同样的位数。
    但是从IP地址中我们无法看到一个IP地址是不是划分了子网,所以就需要子网掩码的帮助。
    子网掩码也是用4个字节表示,共32位。子网掩码的特点是前面连续的若干位为1,后面连续的若干位为0。
    如果子网掩码的某一位为1,说明IP地址对应位用来做网络号或者子网号。那么只要将IP地址和子网掩码进行&运算得到的结果就表示了网络号+主机号,然后再根据上面A,B,C类地址的特点,就很容易得到哪几位是子网号。
     

    无分类编址(CIDR)

    无分类编址的正式名字是无分类域间路由选择CIDR(Classless Inter-Domain Routing),其最主要的特点有两个。

    (1)CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,CIDR使用两级地址结构,即IP地址 = 网络前缀 + 主机号。而且CIDR使用斜线记法,即在IP地址的后面加上斜线"/",然后写上网络前缀所占的位数,这样从IP地址就可以看出该IP地址使用多少位作为网络前缀。不过为了计算机运算方便,还是使用掩码技术来表示网络前缀的长度。

    (2)CIDR把网络前缀都相同的连续的IP地址块组成一个CIDR地址块,正是这个技术,使得CIDR可以聚合多个A类或者多个B类,或者多个C类地址为一个地址块,这样使得路由器中的路由表选项大大减少了。

    现在都是使用CIDR地址表示了,已经不使用分类地址了,但是为了方便表述,还是使用分类地址来介绍。

    如下图,该ISP有CIDR地址是206.0.64.0/18,其二进制表示是11001110.00000000.01*,共拥有64个C类网络。如果没有使用CIDR技术,那么互联网与该ISP的连接的路由器的路由表中就需要有64个C类地址的项目。但是如果使用CIDR技术,路由表中只需要记录206.0.64.0/18这个项目就能够找到该ISP了,这就是地址聚合的概念。从这点可以看出CIDR使得IP地址的分配和使用非常的灵活,而且可以大大减少路由表的表项。

    CIDR同样可以划分子网,上上图中可以看出,ISP分配给大学X一个CIDR地址块206.0.68.0/22,该大学将该地址块分成了4个子网,即只能将网络前缀变长就能够划分出子网了。其实CIDR的子网划分和第二阶段的子网划分其实差不多。

    如果IP地址的分配一开始就使用CIDR,那么就可以按照地理位置来分配CIDR地址块,这样就可以大大减少路由表的表项。例如,可以将世界划分成四大地区,每一地区分配一个CIDR地址块:

    地址块194/7(194.0.0.0至195.255.255.255)分配给欧洲;

    地址块198/7(198.0.0.0至198.255.255.255)分配给北美洲;

    地址块200/7(200.0.0.0至201.255.255.255)分配给中美洲和南美洲;

    地址块202/7(202.0.0.0至203.255.255.255)分配给亚洲和太平洋地区;

    这种分配地址的方法使得IP地址与地理位置相关联,好处是可以大大压缩路由表的表项。例如,凡是从中国发往北美洲的数据包(不管它是地址块198/7中的哪一个地址)都先交互给位于美国的一个路由器,因此在路由表中使用一个项目就好了。

    但是,在使用CIDR之前,因特网的地址管理机构没有按照地理位置来分配IP地址。现在要把已经分配出的IP地址块收回再重新分配是十分困难的事。所以这只是一个美好的想法。

    总结

    子网划分使得IP地址块的划分变得很“细”,这样就可以很灵活的分配。

    CIDR技术使得IP地址块的划分变得很”粗“,这样方便路由器的寻址。

    本文在我的独立博客的地址:http://www.alphaway.org/post-456.html

    参考:

    划分子网的意义

  • 相关阅读:
    no match for call to ‘(std::__cxx11::string {aka std::__cxx11::basic_string
    一转眼,已四年
    线程或进程绑定到特定的cpu
    微信好友信息统计-图、词云和热图
    微信聊天机器人-存储好友分享消息
    Qt之加减乘除四则运算-支持负数
    windows粘贴板操作-自己的应用和windows右键互动
    Qt之QDomDocument操作xml文件-模拟ini文件存储
    Qt之表格控件蚂蚁线
    Qt之移动硬盘热插拔监控
  • 原文地址:https://www.cnblogs.com/justPassBy/p/5426832.html
Copyright © 2011-2022 走看看