zoukankan      html  css  js  c++  java
  • 网络基础之IP地址和子网掩码

    IP地址

    IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此,IP协议也可以叫做“因特网协议”。

    互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。

    IP地址是32位的二进制数值(IPV6是128位)用于在TCP/IP通讯协议中标记每台计算机的地址。通常我们使用点式十进制来表示,如192.168.1.5等等。

    每个IP地址又可分为两部分。即网络号部分和主机号部分:网络号表示其所属的网络段编号,主机号则表示该网段中该主机的地址编号。按照网络规模的大小,IP地址可以分为A、B、C、D、E五类,其中A、B、C类是三种主要的类型地址,D类专供多目传送用的多目地址,E类用于扩展备用地址。A、B、C三类IP地址有效范围如下表:

    image

    image

    子网掩码

    子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。

    子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。翻译一下就是:一是用于屏蔽IP地址的一部分以区别网络标识主机标识,并说明该IP地址是在局域网上,还是在远程网上。二是用于将一个大的IP网络划分为若干小的子网络。

    子网掩码是标志两个IP地址是否同属于一个子网的,也是32位二进制地址,其每一个为1代表该位是网络位,为0代表主机位。它和IP地址一样也是使用点式十进制来表示的。如果两个IP地址在子网掩码的按位与的计算下所得结果相同,即表明它们共属于同一子网中。

    在计算子网掩码时,我们要注意IP地址中的保留地址,即“ 0”地址和广播地址,它们是指主机地址或网络地址全为“ 0”或“ 1”时的IP地址,它们代表着本网络地址和广播地址,一般是不能被计算在内的。

    常用的子网掩码

    image

    子网掩码有数百种,这里只介绍最常用的两种子网掩码,它们分别是“255.255.255.0”和“255.255.0.0”。

    1. 子网掩码是“255.255.255.0”的网络:最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。

    2. 子网掩码是“255.255.0.0”的网络:后面两个数字可以在0~255范围内任意变化,可以提供65536个IP地址。但是实际可用的IP地址数量减2,即65534个。

    IP地址的子网掩码设置不是任意的。如果将子网掩码设置过大,也就是说子网范围扩大,那么,根据子网寻径规则,很可能发往和本地机不在同一子网内的目的机的数据,会因为错误的判断而认为目的机是在同一子网内。

    子网掩码的算法

    对于无须再划分成子网的IP地址来说:  如某B类IP地址为 10.14.3.0,无须再分割子网,则该IP地址的子网掩码为255.255.0.0; 如果它是一个C类地址,则其子网掩码为 255.255.255.0。

    一、利用子网数来计算:

    【使用子网是为了减少IP的浪费。因为随着互联网的发展,越来越多的网络产生,有的网络多则几百台,有的只有区区几台,这样就浪费了很多IP地址,所以要划分子网。使用子网可以提高网络应用的效率】

    在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。

    1)将子网数目转化为二进制来表示

    2)取得该二进制的位数,为 N

    3)取得该IP地址的类子网掩码,将其主机地址部分的的前N位置 1 即得出该IP地址划分子网的子网掩码。

    如欲将B类IP地址168.195.0.0划分成27个子网:

    1)27=11011

    2)该二进制为五位数,N = 5

    3)将B类地址的子网掩码255.255.0.0的主机地址前5位置 1,得到 255.255.248.0

    即为划分成 27个子网的B类IP地址 168.195.0.0的子网掩码。

    另: 把B类地址172.16.0.0划分成30个子网络,求掩码[255.255.248.0]

    二、利用主机数来计算

    1)将主机数目转化为二进制来表示

    2)如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数,为 N,这里肯定 N<8。如果大于254,则 N>8,这就是说主机地址将占据不止8位。

    3)使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。

    如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台:

    1) 700=1010111100

    2)该二进制为十位数,N = 10

    3)将该B类地址的子网掩码255.255.0.0的主机地址全部置 1,得到255.255.255.255

    然后再从后向前将后 10位置0,即为: 11111111.11111111.11111100.00000000

    即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址 168.195.0.0的子网掩码。

    另:把B类地址172.16.0.0划分成若干子网络,每个子网络能容纳500台主机,求掩码[255.255.254.0]

          三、利用子网掩码计算最大有效子网数

    A类IP地址,子网掩码为255.224.0.0,它所能划分的最大有效子网数是多少?

    ①将子网掩码转换成二进制表示11111111.11100000.00000000.00000000

    ②统计一下它的主机位 + 网络位共有11位

    ③A类地址网络位的基础数是8,二者之间的位数差是3

    ④最大有效子网数就是2的3次方,即最多可以划分8个子网络。

    四、利用子网掩码计算最大可用主机数

    A类IP地址,子网掩码为255.252.0.0,将它划分成若干子网络,每个子网络中可用主机数有多少?

    ①将子网掩码转换成二进制表示11111111.11111100.00000000.00000000

    ②统计一下它共有18位

    ③最大可用主机数就是2的18次方减2(除去全是0的网络地址和全是1广播地址),即每个子网络最多有262142台主机可用。

    五、利用子网掩码确定子网络的起止地址

    B类IP地址172.16.0.0,子网掩码为255.255.192.0,它所能划分的子网络起止地址是多少?

    ①利用子网掩码计算,最多可以划分2^2=4个子网络  --> 子网二进制  11111111.11111111.11.00000000000000

    ②利用子网掩码计算,每个子网络可容纳2^14=16384台主机(包括网络地址和广播地址,即二进制中的0全部改为1)

    ③用16384除以256(网段内包括网络地址和广播地址的全部主机数,因为一个最多256个),结果是64

    ④具体划分网络起止方法如下:

    172.16.0.0~172.16.63.255

    172.16.64.0~172.16.127.255

    172.16.128.0~172.16.191.255

    172.16.192.0~172.16.255.255

    六、其他

    1.一个主机的IP地址是211.112.18.137,掩码是255.255.255.224,要求计算这个主机所在网络的网络地址和广播地址。

    常规办法是:把这个主机地址和子网掩码都换算成二进制数,两者进行逻辑与运算后即可得到网络地址。

    另一种方法:255.255.255.224的掩码所容纳的IP地址有256-224=32个(包括网络地址和广播地址),那么具有这种掩码的网络地址一定是32的倍数。而网络地址是子网IP地址的开始,广播地址是结束,可使用的主机地址在这个范围内,因此略小于137而又是32的倍数的只有128,所以得出网络地址是211.112.18.128。而广播地址就是下一个网络的网络地址减1。而下一个32的倍数是160,因此可以得到广播地址为211.112.18.159。

    2.根据每个网络的主机数量进行子网地址的规划和计算子网掩码。

    比如一个子网有10台主机,那么对于这个子网需要的IP地址是:

    10+1+1+1=13

    注意:加的第一个1是指这个网络连接时所需的网关地址,接着的两个1分别是指网络地址和广播地址。因为13小于16(16等于2的4次方),所以主机位为4位。而

    256-16=240

    所以该子网掩码为255.255.255.240。

    如果一个子网有14台主机,不少人常犯的错误是:依然分配具有16个地址空间的子网,而忘记了给网关分配地址。这样就错误了,因为:

    14+1+1+1=17

    17大于16,所以我们只能分配具有32个地址(32等于2的5次方)空间的子网。这时子网掩码为:255.255.255.224

    以下是资深人士经验总结的关系表

    私为地址:有一类IP地址是不用申请可直接用于企业内部网的,这就是Private Address,Private Address不会被INTERNET上的任何路由器转发,欲接入INTERNET必须要通过NAT/PAT转换,以公有IP的形式接入。

    10.0.0.0-10.255.255.255(一个A类地址)
    172.16.0.0-172.31.255.255(16个B类地址)
    192.168.0.0-192.168.255.255(256个C类地址)
     

    A类IP地址段:1.0.0.0~126.255.255.255 私有地址段:10.0.0.0~10.255.255.255

    子网数、主机数与子网掩码的关系

    B类IP地址段:128.0.0.0~191.255.255.255 私有地址段:172.16.0.0~172.31.255.255
    子网数、主机数与子网掩码的关系

     

    C类IP地址段:192.0.0.0~223.255.255.255 私有地址段:192.168.0.0~192.168.255.255
    子网数、主机数与子网掩码的关系

    【更多参考】

    https://blog.csdn.net/yinshitaoyuan/article/details/51782330

    https://www.cnblogs.com/duhuo/p/4253964.html

    https://www.toutiao.com/i6575740167594705416/

  • 相关阅读:
    Network In Network
    UNIX环境高级编程之第4章:文件和文件夹-习题
    SqlServer 错误日志切换和查看
    hihoCoder
    Mono源码学习笔记:Console类(四)
    Java transientkeyword使用小记
    高速排序算法具体解释与实现
    The Triangle
    iOS开发实践之GET和POST请求
    C#重构经典全面汇总
  • 原文地址:https://www.cnblogs.com/ftl1012/p/9508259.html
Copyright © 2011-2022 走看看