/ 计算机基础  

IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字含义

IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字含义

1. ip地址概述

互联网中有数百万台的主机和路由器,为了确切的标识它们,TCP/IP建立了一套编址方案,为每台主机和路由器分配一个全网唯一的地址,即IP地址。任何两台主机的ip地址不能相同,但是允许一个主机拥有多个ip地址。

2. ip地址结构及分类

这里介绍的是ipv4版本的ip地址,也是大家现阶段都在用的ip地址。

ip地址是由32位二进制数,即4个字节组成的,由网络号和主机号两个字段组成。总的来说,寻址的过程是:先按网络号把网络找到,再按主机号把主机找到。

为了便于对ip地址进行管理,同时还考虑到网络的差异很大,ip地址分为5类,即A类到E类,如下所示

ip address

这些32位的地址通常写成四个二进制的数,其中每个整数对应一个字节,这就是点分十进制记法,例如我的ip地址就是171.48.163.10。

关于上图中的网络号范围:

  • A类地址网络号占用一个字节,但是由于有一位是类别位,只有7位可供使用,但是由于规定,网络字段全0是个保留字段表示本网络,而127(01111111)是另外一个保留字段,作为本地软件的环回测试。我们常见的127.0.0.1表示本机,原因也是出自这里。所以A类地址可以指派的网络号个数为(2^7-2).
  • B类网络地址网络号有两个字节,前两位为10已经固定,只剩下14位可用,由于这14位无论怎么取值都不会使得网络号为全0或者全1,但是实际上规定,B类不指派128.0.0.0,所以最小网络地址为128.1.0.0。因此B类地址可指派的网络号个数为(2^14-1).
  • C类地址有3个字节的网络字段号,前三位固定110,只有剩下21位可用,同样C类地址192.0.0.0也不指派,可指派的最小网络地址也是192.0.1.0。因此C类地址可指派的网络号个数为(2^21-1).

可以看出区分各类地址最简单的方法就是看它的第一个十进制整数:

类型 范围
A 0.0.0.0到127.255.255.255
B 128.0.0.0到191.255.255.255
C 192.0.0.0到123.255.255.255
D 224.0.0.0到239.255.255.255
E 240.0.0.0到247.255.255.255

目前大量使用的是A、B、C三类地址,当某单位申请一个ip地址时,实际上只是申请到了一个网络号,具体主机号由本单位自行分配。

3. 建立子网

现在所有的主机都支持子网编址,不是把ip地址看成单纯的网络号+主机号,而是把主机号再分成一个子网号和一个主机号。这个分配的过程就是管理员建立子网的过程。

举个例子,假设这里有个A类网络地址(120.252),在剩下的16bit中,8bit用于子网号,8bit用于主机号,格式如下所示。

16位 8位 8位
网络号=120.252 子网号 主机号

这样就允许有254个子网,每个子网有254台主机。

子网对于外部来说隐藏了内部网络组织的细节。在我们的网络例子中,所有的ip地址都有一个B类网络号120.252。但是其中有超过30多个子网,多于400台主机分配在这些子网中,由一台路由器提供Internet的接,在各子网之间用路由器互连。

4. 子网掩码

上例中对于主机号的分配我们是把16位拆分成8位子网号和8位主机号,那么为什么不是7位子网号9位主机号呢,这里就涉及到子网掩码的作用了。

TCP/IP体系规定用一个32位的子网掩码来表示子网号字段对应的长度。具体的做法是:子网掩码由一连串的’1’和一连串的’0’组成,’1’对应于网络号和子网号字段,而’0’对应主机号。

现在我们来看一个例子。假设还是分配到一个A类地址120.252。其子网掩码是11111111.11111111.11111111.00000000。可以看出前24位为’1’,后’8’位是’0’,说明网络号+子网号为前24位,子网号为24-16=8位,主机号为后8位。划分的主机地址格式为

16位 8位 8位
网络号=120.252 子网号 主机号

如果子网掩码为11111111.11111111.11111110.00000000,那么子网号有23-16=7位,主机号有9位。对应的主机地址格式就变成:

16位 7位 9位
网络号=120.252 子网号 主机号

通过上述例子我们便可以知道子网掩码的作用就是用来确定对主机号的划分。

A、B、C类ip地址默认的子网掩码分别为:255.0.0.0255.255.0.0255.255.255.0

有了子网掩码,总路由器才可以确定把数据转发到哪个子网。举个例子:

假设一个公司网络的网段为120.252。子网掩码11111111.11111111.11111111.11000000(前26位是网络号+子网号,后6位是主机号)。

这时外界计算机要将一个数据传送给ip地址为120.252.16.98的主机,那么这个数据会先到公司的总路由器,进入120.252网络中。总路由器接收到了这个数据该转发到哪个子网中呢?

首先将120.252.16.98转化为2进制为1111000.11111100.00010000.01100010,根据子网掩码便可以确定网段为1111000.11111100(120.252),子网号为0001000001(65),主机号为100010(34)。

最终路由器把数据转发到第65个子网上,在由子网路由器转发到第34个主机上。

5. 同一网段

想在同一网段,必须做到网络标识相同。各类IP的网络标识算法都是不一样的,需要根据子网掩码的位数来判断。

算法只要把IP和子网掩码的每位数AND就可以了。(AND方法:0和1=0 0和0=0 1和1=1)

如:And 192.168.0.1,255.255.255.0,先转换为二进制,然后AND每一位。\
IP: 11000000.10101000.00000000.00000001\
子网掩码: 11111111.11111111.11111111.00000000\
得出AND结果:  11000000.10101000.00000000.00000000\
转换为十进制192.168.0.0,这就是网络标识。

其实很容易理解,只要两个ip地址的网络号和子网号都一样就是同一网段。 而网络号和子网号的位数是需要根据子网掩码才可以知道了,上述算法的原理也是基于此。

举例: 假设我们的主机地址是140.252.1.1(一个B类地址),而子网掩码是255.255.255.0(子网号8位,主机号8位主机号)

  • 如果目的ip地址为140.252.1.5,那么我们就知道b类网络号是相同的(140.252),子网号是相同的(1),属于同一网段
  • 如果目的ip地址为140.252.4.5,那么我们就知道b类网络号是相同的(140.252),但是子网号是不同的(1和4)。不属于同一网段
  • 如果目的ip地址为140.251.4.5,那么我们就知道b类网络号是不相同的(140.252和140.251),后面比较就没必要了,不属于同一网段。

一般来说,如果主机没有设置防火墙禁止别人访问的话,位于同一网段是主机是可以直接访问的。

6. 私有地址

A、B、C三类地址是我们常见的IP地址段。在这三类地址中,绝大多数的IP地址都是公有地址,需要向国际互联网信息中心申请注册。但是在IPv4地址协议中预留了3个IP地址段,作为私有地址,供组织机构内部使用。这三个地址段分别位于A、B、C三类地址内:

  • 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

这些地址是不会被Internet分配的,它们在Internet上也不会被路由。也就是说在外界公网上,不可能有ip地址是上述范围之中的。

绝大部分计算机都是在一个内网中,而不是直接分配一个公网ipv4地址,我们可以用ipconfig查看一下本地的吧ip地址,然后对比一下公网ip地址:

内网ip\
公网ip

ipconfig查出来的是你本机的IP地址,也就是内网私有地址,此类地址仅在局域网使用,不能联通外网。

百度查出来的地址是你上网的公网地址。

为什么要使用这种机制呢?

ipv4的数目看起来很多,实际上全世界分一分就捉襟见肘了,因此我们使用私有ip,大量的内网ip地址转换为一个或少量的公网IP地址,就减少对公网IP地址的占用;有时候一家公司不需要连接Internet,只需要内部之间相互通信,便可以建立一个局域网,分配私有ip给公司的每个电脑,这样可以防止hacker的入侵。

实际上这个公网地址就是内网连接Internet的身份。外界只会知道你的公网ip地址,内网的地址可以根据需要自行分配,对外界是不可知的。

公网ip的数量稀少,导致一般一个公司或者单位才会分到一个公网ip,一般企业内部或者学校的计算机都是只分配了内网ip。

那如果我们的ip是私有地址,那怎么连接Internet呢?

既然我们都是用的私有ip,那么我们应该只可以在内网内部进行通信,你可能会疑问那么我们是怎么连接上Internet的呢?

这是使用了NAT技术。NAT英文全称是”Network Address Translation”,中文意思是”网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。

简单的说,NAT就是在内部网络中使用私有地址,而当内部计算机连接Internet时,就在网关(可以理解为出口,打个比方就像院子的门一样)处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接。

实现NAT转换的地方一般是路由器。我们也可以通过对路由器的设置来让外界对公网的访问映射成对局域网某一主机的访问,当我们要将计算机做成服务器时,需要用到此技术。

最后让我们来模拟一下我们上网的流程。

小明是个大学生,电信公司分给他宿舍楼一个ip是118.168.14.117,宿舍楼网络管理员给小明同学分配的私有ip是192.168.1.150。这天小明打开了浏览器想要搜索明天天气怎么样,这时的数据发给了路由器,然后路由器把数据发送给了百度的服务器(私有ip转换为公网ip)。百度接收到之后返回了一段数据到了路由器(百度以为是路由器的公网ip请求的),然后路由找到小明的私有ip(公网ip转换到私有ip),将数据发给了小明,这就是小明真实上网的流程。

7. 网关

上述小明的例子中,路由器作为公网和私网的桥梁,这时路由器便充当了网关的角色。实际上路由器并不是内外网的连接点,网关才是,这里路由器可以完成网关的功能完成网络的互连罢了。

网关就是一个网络连接到另一个网络的”关口”,也就是网络关卡,又称网间连接器、协议转换器。网关是一个网络层上的概念,既可以用于局域网互连,也可以用于广域网互连。

由于历史的原因,许多有关TCP/IP的文献曾经把网络层使用的路由器称为网关,在今天很多局域网采用都是路由来接入网络,因此通常指的网关就是路由器的IP!

网关\
网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连

网关实质上是一个网络通向其他网络的IP地址。

比如有网络A和网络B,网络A的IP地址范围为”192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为”192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。

在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。

而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。

所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。

广播地址(Broadcast Address)\
广播地址(Broadcast Address)是专门用于同时向网络中所有工作站进行发送的一个地址。

在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。例如,对于10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1.255 (255 即为2 进制的11111111 ),当发出一个目的地址为10.1.1.255 的分组(封包)时,它将被分发给该网段上的所有计算机。

根据IP地址和子网掩码求 网络地址 和 广播地址\
将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址,虚线前为网络地址,虚线后为主机地址

IP地址和子网掩码进行与运算,结果是网络地址(即主机号全0是网络地址)

将运算结果中的网络地址不变,主机地址变为1,结果就是广播地址

地址范围就是含在本网段内的所有主机

网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,\
由此可以看出地址范围是: 网络地址+1 至 广播地址-1

主机的数量=2^二进制位数的主机-2\
减2是因为主机不包括网络地址和广播地址。

示例\
一个主机的IP地址是202.112.14.137,掩码是255.255.255.224,要求计算这个主机所在网络的网络地址和广播地址

根据子网掩码可以分割网络号+主机号\
255.255.255.224 转二进制:

11111111 11111111 11111111 11100000

网络号有27位,主机号有5位

网络地址就是:把IP地址转成二进制和子网掩码进行与运算

11001010 01110000 00001110 10001001

IP地址&子网掩码

11001010 01110000 00001110 10001001

11111111 11111111 11111111 11100000


11001010 01110000 00001110 10000000\
1\
2\
3\
4\
5\
6\
7\
即:202.112.14.128

计算广播地址\
广播地址:网络地址的主机位全部变成1 ,10011111 即159 即:202.112.14.159

主机数\
主机号有5位,那么这个地址中,就只能有25-2=3025-2=30个主机

因为其中全0作为网络地址,全1作为广播地址

根据每个网络的主机数量进行子网地址的规划和计算子网掩码\
这也可按上述原则进行计算。

比如一个子网有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

5) 主机的数量

206 110 4 0/18被划分成16个子网,每个子网掩码?\
(划分成16个子网,根据子网掩码/18就表示有18个1,就要从的IP地址的主机位借4位来用作网络位!)

子网掩码是255.255.252.0

每个子网可以容纳的主机数是1024台。

下面我来给你详细解答:

206.110.1.0 /18 由最后的那个/18,我们可以知道这个IP已经规定了它的网络位是18位,它默认的子网掩码就是11111111.11111111.11 | 000000.00000000(其中1代表网络位,0代表主机位)

可以看出我们可以操作的位数就是后面的14个0,也就是说我们可以在地面划分出几位作为子网的网络位,进而来划分子网。要求是切分成16个子网,我们知道2的4次方刚好等于16,这就说明子网网络位的位数是4位,那14-4=10就是子网的主机位。所以上面我写的那串二进制就可以变成:11111111.11111111.111111 | 00.00000000(其中1代表网络位,0代表主机位)

ip段/数字-如192.168.0.1/24是什么意思?\
后面这个数字标示了我们的网络号的位数,也就是子网掩码中前多少号为1

129.168.1.1 /24 这个24就是告诉我们网络号是24位

也就相当于告诉我们了

子网掩码是:11111111 11111111 11111111 00000000

即:255.255.255.0

172.16.10.33/27 中的/27

也就是说子网掩码是255.255.255.224 即27个全1

11111111 11111111 11111111 11100000