IP地址(做地址标记)

下面是ip的PDU报头的说明:

**版本: **占4 位,指 IP 协议的版本目前的IP 协议版本号为4

首部长度: 占4 位, 可表示的最大数值是15 个单位,一个单位为4 字节
因此IP 的首部长度的最大 值是60 字节

区分服务: 占8 位, 用来获得更好的服务, 在旧标准中叫做服务类型,但
实际上一直未被使用过. 后改名为区分服务. 只有在使用区分服务时, 这
个字段才起作用. 一般的情况下都不使用

总长度: 占16 位, 指首部和数据之和的长度, 单位为字节, 因此数据报的
为 最大长度为 65535 字节.元 总长度必须不超过最大传送单元 MTU

标识: 占16 位, 它是一个计数器, 通常,每发送一个报文,改值会加1
也用于数据包分片,在同一个包的若干分片中,该值是相同的

标志(flag): 占3 位, 目前只有后两位有意义

DF: : Don‘t Fragment当 ,中间的一位,只有当 DF=0 时才允许分片

MF: : More Fragment ,最高位,MF=1 表示后面还有分片。MF=0
表示最后一个分片

片偏移: 占12 位, 指较长的分组在分片后,该分片在原分组中
的相对位置. 片偏移以8 个字节为偏移单位

生存时间: 占8 位, 记为TTL (Time To Live) 数据报在网络中
可通过的路由器数的最大值,TTL 字段是由发送端初始设置一
个 8 bit 字段. 推荐的初始值由分配数字 RFC 指定, 当前值为
64,发送 ICMP 把回显应答时经常把 TTL 值 设为最大值 255

协议: 占8 位, 指出此数据报携带的数据使用何种协议以便目的
主机的IP 层将数据部分上交给哪个处理过程, 1为 表示为 ICMP
协议, 2为 表示为 IGMP 协议, 6表示为 TCP 协议, 17 表示为UDP 协议

首部检验和: 占16 位, 只检验数据报的首部不检验数据部分.这
用里不采用 CRC 检验码而采用简单的计算方法

源地址和目的地址: 都各占4 字节, 分别记录源地址和目的地址

为了更好的了解IP的PDU报头我就在这里很认真的贴张图:

《IP地址(做地址标记)》 1.png

IP地址和MAC地址一样都可以可以唯一表示网络中的每台设备,但是ip
地址的突出优点并不在于它的唯一性,而是在于它的可管理性,是人为可以指定的

IP地址有两部分组成:

  • 网络ID:
    • 告诉我们设备处在哪个网络之中(标识网络)
    • 每个网段分配一个网络ID
  • 主机ID:

  • 唯一标示网络中的该设备(标识单个主机)

  • 由组织分配给各设备

  • 注意:网络id和主机id到底有什么区别又有什么联系?我在这里可以打个比方,就拿我们国家来说每个城市都有它的区号,比如说北京的区号是“010,”上海的区号是“021”,而区号分好以后每个城市都有自己的管理,城市里的每个地方都有自己的地址,比如你要找到你的朋友,那么你就要知道它的具体的地址(网络通信主机之间的链接实际上不是按ip地址去找的,ip地址只是帮你寻找到了你所要连接的地址是在那一段,而具体的还得需要用MAC地址去寻找,实际上ip地址就是做了一个地址标记,基于ip地址的通信实际上到最后都会转化为基于MAC地址的通信这里面有地址解析,在这里我们不做深究)才能找到它

IP地址格式:

IP地址是一个32位二进制数,可以将此32位二进制数分为四组,每组8位,每组二进制数均可以转化为十进制数使之可读,因此IP地址可以用点分十进制记录法记录

IP地址分类:

IP地址按照网络ID和主机ID各自所占用的位数不同可以分为5类

  • A类:

| 0xxxxxxx | 主机 ID | 主机 ID | 主机 ID |
| :——– | ——–:| :——: |:——–:|:———-:|

A类地址:网络ID占据前8位,首位为0标识是A类地址,后面24位都是主机ID
由于A类网络ID总共8位,首位0又被占据,因此可变为只有7位,所以A类网络
ID最多只有2^7=128个,又因为划分类别只看前8位,首位又被占据,因此A类
最小地址为为:0 0000000 (也就是0),最大地址:0 1111111(也就是127)

  • A类地址的网络ID为:1-126

  • 注意 A类地址的最小网络ID(未知ID)和最大网络ID(回环ID,每个电脑都有)是
    有特殊含义的,因此A类地址供我们使用的最小网络ID也就变成了:0 0000000
    (也就是1),最大网络ID:0 1111110(也就是126)

  • 每个网络中的主机数:2^24-2=1677万

  • 减去的两个IP一个是最小的:表示在某个网段的网络,
    例如:10.0.0.0 :表示10所在的网络

  • 最大的IP表示广播
    例如:10.255.255.255 :表示10这个网络的广播

  • 默认子网掩码:255.0.0.0

  • 私网地址:10.0.0.0

  • B类:

| 0xxxxxxx | xxxxxxxx| 主机 ID | 主机 ID |
| :——– | ——–:| :——: |

B类地址:网络ID占据前16位,首位为10标识是A类地址,后面16位都是主机ID
由于B类网络ID总共16位,前两位被10占据,因此可变为只有14位,所以B类网络
ID最多只有2^14=16384个,又因为划分类别只看前8位,因此B类地址最小为 :
10 000000 (也就是128),最大地址为:10 111111(也就是191)

  • 网络数:2^14
  • 每个网络中的主机数:2^16-2=65534
  • 默认子网掩码:255.255.0.0
  • 私网地址:172.16.0.0—-172.31.0.0
  • C类:

| 0xxxxxxx | xxxxxxxx| xxxxxxxx | 主机 ID |
| :——– | ——–:| :——: |

B类地址:网络ID占据前24位,前3位为110标识是C类地址,后面21位都是主机ID
由于C类网络ID总共24位,前三位被110占据,因此可变为只有21位,所以C类网络
ID最多只有2^21个,因为划分类别只看前8位,因此B类地址最小为 :
110 00000 (也就是192),最大地址为:110 111111(也就是223)

网络数:2^24
每个网络中的主机数:2^8-2=254
默认子网掩码:255.255.255.0
私网地址:192.168.0.0—-192.168.255.0

  • D类:多播(224–239),不讨论。
  • E类:保留(240—254),不讨论。

公共IP地址:

公共IP地址范围
A1.0.0.0—9.255.255.255 ; 11.0.0.0—126.255.255.255
B128.0.0.0—172.15.255.255; 172.32.0.0—191.255.255.255
C192.0.0.0—192.167.255.255; 192.169.0.0—223.255.255.255

私有地址(不唯一):

私有IP地址范围
A10.0.0.0—10.255.255.255
B172.16.0.0—172.31.255.255
C192.168.0.0—192.168.255.255

特殊地址:

  • 0.0.0.0
    0.0.0.0 不是一个真正意义上的IP 地址。它表示一个集合:所有不清楚的主
    机和目的网络。

  • 255.255.255.255
    限制广播地址。对本机来说,这个地址指本网段内( 同一广播域) 的所有主机

  • 127.0.0.1 ~127.255.255.254
    本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的
    数据包。

  • 224.0.0.0 到239.255.255.255
    组播地址,224.0.0.1 特指所有主机,224.0.0.2 特指所有路由器。224.0.0.5 指OSPF 路由器,
    地址多用于一些特定的程序以及多媒体程序

  • 169.254.x.x
    如果Windows 主机使用了DHCP 自动分配IP 地址,而又无法从DHCP 服务器获取地址,系统
    会为主机分配这样地址。

保留地址:

  • 网络地址:

《IP地址(做地址标记)》 2.png

  • 广播地址:

《IP地址(做地址标记)》 3.png

上面划分IP地址的方式(有类地址)存在很多缺点:

例如,一个企业里面只有2000台计算机,而我们如果去用A类地址的话,因为A类地址的每个网段都可以供1700多万台计算机使用,这样就会造成很多的浪费,同样B类地址也会造成很多的浪费,而如果去用C类地址,由于C类地址每个网段最多支持254,因此有10个网段才能够用,这样又会不方便管理。因此我们可以采用无类地址,就是把地址不在分为A、B、C类了,我们可以自由的规定网络ID和主机ID,这样我们需要多少就可以规定多少,就不会造成浪费了

无类地址:

由于无类地址的网络ID和主机ID是不确定的(我们自己规定的),将来通讯的时候还是必须要清楚哪些是网络ID,哪些是主机ID,那么我们靠什么来区分网络ID呢,这就是我们要说的子网掩码

子网掩码:

  • 子网掩码的解释:
  • 子网掩码不能单独存在,它必须结合IP地址一起使用。

  • 子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

  • 使与之相用的IP地址的网络ID全为 1 ,主机ID全为 0 ,这样就唯一表示了IP所在的网段

  • 子网划分是借助于取走主机位,把这个取走的部分作为子网位。因此这个意味划分越多的子网,主机将越少。

  • 下面是子网掩码其中的8位:

《IP地址(做地址标记)》 4.png

CIDR:

  • 表示: IP / 网络ID位数
    CIDR叫做无类域间路由,ISP 常用这样的方法给客户分配地址,类似这样:192.168.10.32/28,这排数字告诉你你的子网掩码是多少,/28 代表多少位为1,最大/32.但是你必须知道的一点是:不管是A类还是B类还是其他类地址,最大可用的只能为/30,即保留2 位给主机位。

下面我们结合实例用CIDR’算法来划分IP :

公式1:计算网络数=2^可变的网络ID位
公式2:单个网络里可用的IP数=2^可变的主机ID位(32-网络ID位)-2
公式3:网络ID=IP与子网掩码
公式4:划分子网络的数=2^网络ID位向主机ID位借的位数
公式5:划分子网后损耗的IP=(子网数-1)*2

    1、202.110.200.100 / 26
    ①写出子网掩码;
    答:分析:网络ID总共26个1,主机位是6位
         所以这个主机的子网掩码用二进制表示为:
             11111111 11111111 11111111 11000000
         因此子网掩码为:255.255.255.192
    ②这个主机所在网络最多有多少个IP?
    答:分析:子网已经确定,因此求这个主机有多少个IP知道主机有
          多少位就行
         因此这个主机所在的网段最多有的Ip为:2^6-2=64个
    ③写出该机所在的网络ID
    分析:网络ID=IP&子网掩码
    答:由于子网掩码前3段都是255,因此与原来的IP相与还是保持原值,我们只需要
    把100化成二进制和192化为二进制相遇就行了:
       100化为二进制:01100100 
                   & 
       192化为二进制:11000000
                  = 01000000 =64
    因此该机的网络ID为:255.255.255.64
                    
         
    2、现在有两个主机:  A :192.168.1.1 / 16 ; B : 192.168.2.1 /24 问
      这两台主机是否在一个网段里。
      分析:有两种情况分别是:A访问B和B访问A
        A--->B(A访问B):
             判断A主机是否和B主机在一个网段里的方法是:
             第一步: 用A的子网掩码与本身(A)的IP相与求出A的网络ID;
             第二部: 用A的子网掩码与B的IP相与得出一个结果;
             第三部: 判断第一步和第二步的结果是否相同
             
              答:A的网络ID为:255.255.0.0
                 用A的子网掩码与B的IP相与的结果为:255.255.0.0
                 因此A、B在一个网络里
       B--->A(B访问A):
        判断B主机是否和A主机在一个网段里的方法是:
             第一步: 用B的子网掩码与本身(B)的IP相与求出A的网络ID;
             第二部: 用B的子网掩码与A的IP相与得出一个结果;
             第三部: 判断第一步和第二步的结果是否相同
             
             答:B的子网掩码为:192.168.2.0
                用A的子网掩码与B的IP相与的结果为:255.255.1.0
                 因此B、A、在一个网络里
    
    3、主机为:188.200.123.100/8,所在网络划分为8个子网
        ①子网掩码 
        答:子网掩码:255.248.0.0
        ②网络ID
        答:188.200.0.0
        ③网络有多少个IP
        答:2^19-2
        ④网络中最小IP和最大IP    
        答:最小IP:188.200.0.1
           最大IP:188.200.255.254
        ⑤损耗的IP个数:
           (8-1)*2=14

划分子网:一个大网划分成多个小网,将原有网络ID位,向主机ID位借位,结果就是网络ID变多,主机ID变少。

子网是指一个ip地址上生成的逻辑网络,它可以让一个网络地址跨越多个物理网络,即一个网络地址代表多个网络(很明显这样做可以节省ip地址)。呵呵,听起来是不是很蹊跷?一个网络就这样被莫名其妙的划分成了许多子网?那么这样做有什么用呢?

我举个例子来跟你说吧:比如你是某个学校的网管,你的学校有四个处于不同物理位置的网络教室,每个网络教室25台机器,你的任务是给这些机器配置ip地址和子网掩码。你可能会觉得这再简单不过了,申请4个C类地址,每个教室一个,然后在一一配置不就搞定了。嗯,这样做理论上没错,但你有没有想到这样做很浪费,你一共浪费了(254-25)4=916个ip地址,如果所有的网管都像你这样做,那么internet上的ip地址将会在极短的时间内枯竭,显然,你是不能这样做,你应该做子网划分。*

子网划分说白了是这样一个事情:因为在划分了子网后,ip地址的网络号是不变的,因此在局域网外部看来,这里仍然只存在一个网络,即网络号所代表的那个网络;但在网络内部却是另外一个景象,因为我们每个子网的子网号是不同的,当用化分子网后的ip地址与子网掩码(注意,这里指的子网掩码已经不是缺省子网掩码了,而是自定义子网掩码,是管理员在经过计算后得出的)做’与’运算时,每个子网将得到不同的子网地址,从而实现了对网络的划分(得到了不同的地址,当然就能区别出各个子网了)。

  4、主机:100.200.123.200/8  所在网络划分出 8个子网
            ① 每个子网子网掩码
               255.224.0.0
            ② 每个子网网络有多少个IP
               2^21-2
            ③ 最小的子网中最小IP和最大IP
               100.0.0.1
               100.31.255.254
            ④ 最大的子网中最小IP和最大IP
               100.224.0.1
               100.255.255.254

5、主机:133.222.210.200/19 所在网络划分出16个子网
①原有网络网络ID
   133.222.192.0
② 每个子网子网掩码
   255.255.244.0
③ 每个子网网络有多少个IP
   2^9-2
④ 最大的子网中最小IP和最大IP
   133.222.223.1
   133.222.223.254
⑤损耗的IP个数:
  (16-1)*2=30
    原文作者:六月天的安静
    原文地址: https://www.jianshu.com/p/afb357c53198
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞