31-IP、子网、子网掩码、网关、默认网关

IP

IP 地址(Internet Protocol Address)是互联网上用于唯一标识和定位计算机设备的数字地址。它是在 TCP/IP 协议中使用的一种地址,用于在网络上标识设备和进行数据传输。

IP 地址是由 32 位(IPv4)或 128 位(IPv6)的二进制数字组成,通常以点分十进制的形式表示。IPv4 地址通常以四个十进制数表示,每个数的取值范围是0到255,例如:192.0.2.1。IPv6 地址则采用更长的表示方式,通常以 8 组四位十六进制数表示,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。

在 IPv4 地址中,通常将地址划分为网络部分和主机部分,划分的位置取决于地址所属的网络类别。IPv4 地址的网络部分和主机部分之间是通过子网掩码来确定的。

IP 地址 = 网络地址 + 主机地址(又称:网络号和主机号),我们把网络号相同的主机称之为本地网络中的主机,网络号不相同的主机称之为远程网络中的主机。

本地网络中的主机可以直接相互通信,远程网络中的主机要相互通信必须通过本地网关(Gateway)来传递转发数据。

IP 地址主要有 A、B、C、D、E 五类地址:

  • A类:第一个字节(即第一个句点之前的部分)用来表示网络,后三个字节用来表示主机。网络地址的最高位必须是“0”。 地址范围是 1.0.0.0 到 127.255.255.255,共 126=2^7 个网络,每个网络中的主机数:2^24-2=16777214,默认子网掩码为 255.0.0.0,也可写作/8。 主要分配给大量主机而局域网网络数量较少的大型网络;
  • B类:前两个字节(即前两个句点之间的部分)用来表示网络。后两个字节用来表示主机。网络地址的最高位必须是“10”。 地址范围是 128.0.0.0 到 191.255.255.255,共 2^14=16384 个网络,每个网络中的主机数:2^16-2=65534,默认子网掩码为 255.255.0.0,也可写作/16。 一般用于国际性大公司和政府机构;
  • C类:前三个字节(即前三个句点之间的部分)用来表示网络,后一个字节用来表示主机。网络地址的最高位必须是“110”。地址范围是 192.0.0.0 到 223.255.255.255,共 2^21=2097152 个网络,每个网络中的主机数:2^8-2=254, 默认子网掩码为 255.255.255.0,也可写作/24。用于一般小公司校园网研究机构等;
  • D类:第一个字节由“1110”开始。地址范围是 224.0.0.0 到 239.255.255.255,又称做广播地址,因此任何第一个字节大于 223 小于 240 的IP地址是多点播送地址。无子网掩码。
  • E类:由“11110”开始,地址范围是 240.0.0.0 到 255.255.255.255,暂时保留。




注:

  • 只有 A,B,C 有网络号和主机号之分,D 类地址和 E 类地址没有划分网络号和主机号。A 类地址第一组数字为 1~126,数字 0 和 127 不作为 A 类地址。

  • 私有地址:不直接用于互联网,通常在局域网中使用。

    • A类私有地址:10.0.0.0/8,范围是:10.0.0.0~10.255.255.255。保留了 1 个 A 类网络。
    • B类私有地址:172.16.0.0/12,范围是:172.16.0.0~172.31.255.255。保留了 16 个 B 类网络。
    • C类私有地址:192.168.0.0/16,范围是:192.168.0.0~192.168.255.255。保留了 256 个 C 类网络。
  • 主机位全0,表示本网络的网络地址,主机位全1,表示本网络的广播地址

  • 一些特殊地址:

    • 0.0.0.0:不是一个真正意义上的IP地址。它表示所有不清楚的主机和目的网络(代表任意地址)。如果计算机的IP地址和网络中的其他计算机地址冲突,使用ipconfig命令看到的就是0.0.0.0,子网掩码也是0.0.0.0。
    • 255.255.255.255:广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。
    • 127.0.0.1~127.255.255.254:本机回环地址,主要用于测试。用的最多的是127.0.0.1。在传输介质上永远不应该出现目的地址为 127.0.0.1 的数据包。
    • 主机ID全为0的地址:特指某个网段,比如:192.168.10.0 255.255.255.0,指192.168.10.0网段。
    • 主机ID全为1的地址:特指该网段的全部主机,比如:192.168.10.255,如果你的计算机发送数据包使用主机ID全是1的IP地址,数据链层地址用广播地址FF-FF-FF-FF-FF-FF。
    • 169.254.0.0:169.254.0.0-169.254.255.255实际上是自动私有IP地址。

网络地址

计算网络地址就是判断网络中的计算机在不在同一网络,在就能通,不在就不能通,需要借助本地网关的帮助。

将IP地址和子网掩码全部转换为二进制形式,然后二者逐位相与的结果就是网络地址。

1
2
3
4
5
6
7
8
9
10
11
12
IP 十进制:192.168.1.1
IP 二进制:11000000 10101000 00000001 00000001

子网掩码 十进制:255.255.255.0
子网掩码 二进制:11111111 11111111 11111111 00000000

网络地址 = IP & 子网掩码
IP 二进制: 11000000 10101000 00000001 00000001
子网掩码 二进制:11111111 11111111 11111111 00000000
-----------------------------------
网络地址 二进制:11000000 10101000 00000001 00000000
网络地址 十进制:192.168.1.0

网络地址计算小技巧: IP地址和子网掩码做与运算,把IP地址的主机位直接归0,就快速得到网络地址。所以只要一看到IP地址和子网掩码,就能马上确认网络地址。

主机地址

IP与 子网掩码的非 的结果相与就是主机地址。

1
2
3
4
5
6
7
8
9
IP十进制:192.168.1.1
IP二进制:11000000 10101000 00000001 00000001

子网掩码十进制:255.255.255.0
子网掩码二进制:11111111 11111111 11111111 00000000

主机地址 = IP & (~子网掩码)
主机地址二进制:00000000 00000000 00000000 00000001
主机地址十进制:0.0.0.1

子网

子网划分简单来说就是将一个大网(主机数多,主机id多)分割成多个小网。做法是把一个两级IP地址划变为三级地址,从原来的主机号中借用若干位作为子网ID,划分成 2^n 个子网。


为什么要划分子网?

在 A 类 IP 地址中,每个 A 类网络可能有 16777214 台主机,它们处于同一广播域。在同一广播域中有这么多主机是不可能的,网络会因为广播通信而饱和。另一方面,IP 地址资源越来越少。为实现更小的广播域,就需要进一步分成更小的网络。划分子网后,通过使用掩码,把子网隐藏起来,使得从外部看网络没有变化,这就是子网掩码。

子网划分是为了更有效地管理网络资源和提高网络性能而进行的。

  1. 减少广播域的大小:在一个大的网络中,广播会消耗大量的带宽和资源。通过将网络划分成多个子网,可以减少广播域的大小,限制广播消息只在子网内传播,从而减少了网络中的广播量,提高了网络的性能。

  2. 提高网络安全性:通过子网划分,可以在网络中实施更细粒度的访问控制策略。不同的子网可以设置不同的访问规则和安全策略,从而提高网络的安全性。此外,子网划分还可以减少潜在的网络攻击面,使得网络更加安全。

  3. 简化网络管理:将网络划分成多个子网后,可以更轻松地管理网络资源和设备。每个子网可以由不同的管理员负责管理,这样可以更有效地分配管理任务,简化网络管理流程。

  4. 提高网络性能:子网划分可以减少数据包在网络中传输的距离,从而减少了数据包的传输时延和丢包率,提高了网络的性能。此外,子网划分还可以使网络中的流量更加均衡,避免了网络拥塞和性能瓶颈。

IPv4 子网划分与聚合

为了解决 IPv4 的不足,提高网络划分的灵活性,诞生了两种非常重要的技术,那就是 VLSM(可变长子网掩码)和 CIDR(无类别域间路由),把传统标准的 IPv4 有类网络演变成一个更为高效,更为实用的无类网络。

VLSM 用于 IPv4 子网的划分,也就是把一个大的网络划分成多个小的子网;而 CIDR 则用于 IPv4 子网的聚合,当然主要是指路由方面的聚合,也就是路由汇总。通过 CIDR 可以把多个小的子网路由条目汇总成一个大网络的路由条目,以减少路由器中路由条目的数量,提高路由效率。

子网掩码

如果只有一个 IP 地址,我们根本不知道它的网络号是什么,同一个 IP 地址都有可能表示的是不同的网络。这时,就需要子网掩码了。

子网掩码就是划分子网的一个标志,通过子网掩码可以判断是否是在同一个网络里面。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

子网掩码(Subnet Mask)是一个32位的二进制数字,用于将IP地址划分为网络部分和主机部分,并确定数据包在网络中的路由。它在网络内部使用,用于指示哪些位表示网络地址,哪些位表示主机地址。

子网掩码的表示方法

  1. 点分十进制表示法

    二进制转换十进制,每8位用点号隔开。

    例如:子网掩码二进制 11111111.11111111.11111111.00000000,表示为 255.255.255.0

    左边连续的1的个数代表网络号的长度,(使用时必须是连续的,理论上也可以不连续),右边连续的0的个数代表主机号的长度。

  2. CIDR 斜线记法

    CIDR 表示法通过使用单个数字来表示子网掩码,以更紧凑的方式表示子网。形式:IP地址/n。斜杠(“/“)和数字来指示子网。斜杠后面的数字表示地址的网络部分保留的位数。

    • 例1:192.168.1.100/24,其子网掩码表示为255.255.255.0,二进制表示为 11111111.11111111.11111111.00000000

    • 例2:172.16.198.12/20,其子网掩码表示为255.255.240.0,二进制表示为 11111111.11111111.11110000.00000000

不难发现,例1中共有24个1,例2中共有20个1,所以 n 是这么来的。运营商 ISP 常用这样的方法给客户分配IP地址。

注:n 为 1 到 32 的数字,表示子网掩码中网络号的长度,通过 n 的个数确定子网的主机数=2(32-n)-2(-2的原因:主机位全为0时表示本网络的网络地址主机位全为1时表示本网络的广播地址,这是两个特殊地址)。

为什么要使用子网掩码?

子网掩码可以分离出IP地址中的网络地址和主机地址。如果两台主机要通信,首先要判断是否处于同一网段,即网络地址是否相同。如果相同,那么可以把数据包直接发送到目标主机,否则就需要路由网关将数据包转发送到目的地。

可以这么简单的理解:A 主机要与 B 主机通信,A 和 B 各自的 IP 地址与 A 主机的子网掩码进行按位 and 运算(与运算,符号表示为 &),看得出的结果:

  • 结果如果相同,则说明这两台主机是处于同一个网段,这样 A 可以通过 ARP 广播发现 B 的 MAC 地址,B 也可以发现 A 的 MAC 地址来实现正常通信。
  • 如果结果不同,ARP 广播会在本地网关终结,这时候 A 会把发给 B 的数据包先发给本地网关,网关再根据 B 主机的 IP 地址来查询路由表,再将数据包继续传递转发,最终送达到目的地B。

子网掩码的分类

  1. 缺省子网掩码。也叫默认子网掩码,即未划分子网,对应的网络号的位都置 1 ,主机号都置 0

    未做子网划分的IP地址:网络号+主机号,则:

    • A 类网络缺省子网掩码:255.0.0.0, 用 CIDR 表示为/8
    • B 类网络缺省子网掩码:255.255.0.0, 用 CIDR 表示为/16
    • C 类网络缺省子网掩码:255.255.255.0,用 CIDR 表示为/24
  2. 自定义子网掩码。将一个网络划分子网后,把原本的主机号位置的一部分给了子网号,余下的才是给了子网的主机号。其形式如下:

    做子网划分后的 IP 地址:网络号+子网号+子网主机号,举个例子:

    • 192.168.1.100/25,其子网掩码表示:255.255.255.128,意思就是将 192.168.1.0 这个网段的主机位的最高1位划分为了子网。

网关

计算机的网关(Gateway)就是到其他网段的出口,也就是路由器接口 IP 地址。路由器接口使用的IP地址可以是本网段中任何一个地址,不过通常使用该网段的第一个可用的地址或最后一个可用的地址,这是为了尽可能避免和本网段中的主机地址冲突

在如下拓扑图示例中,A 与 B,C 与 D,都可以直接相互通信(都是属于各自同一网段,不用经过路由器),但是 A 与 C,A 与 D,B 与 C,B 与 D 它们之间不属于同一网段,所以它们通信是要经过本地网关,然后路由器根据对方IP地址,在路由表中查找恰好有匹配到对方IP地址的直连路由,于是从另一边网关接口转发出去实现互连。

在这里插入图片描述

默认网关

默认网关地址是主机位除了最后一位全置1后得到的

假设现有一个IP地址为 193.6.7.0/24,根据网络前缀 24 可知前 24 位为网络位,后 8 位为主机位,因此该网络的默认网关地址就是IP地址 193.6.7.11111110(加粗的部分为网络位),换算成十进制数即 193.6.7.254/24。

一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的主机,从而无法与其他网络的主机通信。默认网关的设定有手动设置和自动设置两种方式。

  • (1)手动设置
    手动设置适用于电脑数量比较少、TCP/IP 参数基本不变的情况,比如只有几台到十几台电脑。因为这种方法需要在联入网络的每台电脑上设置“默认网关”,非常费劲,一旦因为迁移等原因导致必须修改默认网关的 IP 地址,就会给网管带来很大的麻烦,所以不推荐使用。

    在 Windows 9x 中,设置默认网关的方法是在“网上邻居”上右击,在弹出的菜单中点击“属性”,在网络属性对话框中选择“TCP/IP协议”,点击“属性”,在“默认网关”选项卡中填写新的默认网关的 IP 地址就可以了。

    需要特别注意的是:默认网关必须是电脑自己所在的网段中的 IP 地址,而不能填写其他网段中的 IP 地址。

  • (2)自动设置

    自动设置就是利用 DHCP(Dynamic Host Configuration Protocol, 动态主机配置协议)服务器来自动给网络中的电脑分配 IP 地址、子网掩码和默认网关 。这样做的好处是一旦网络的默认网关发生了变化时,只要更改了 DHCP 服务器中默认网关的设置,那么网络中所有的电脑均获得了新的默认网关的 IP 地址。这种方法适用于网络规模较大、TCP/IP 参数有可能变动的网络。另外一种自动获得网关的办法是通过安装代理服务器软件(如MS Proxy)的客户端程序来自动获得,其原理和方法和 DHCP 有相似之处。由于篇幅所限,就不再详述了。

Reference


31-IP、子网、子网掩码、网关、默认网关
https://flepeng.github.io/010-network-31-IP、子网、子网掩码、网关、默认网关/
作者
Lepeng
发布于
2021年3月8日
许可协议