IP 地址可以分为公网 IP 和私网 IP 两种类型。公网 IP 是唯一的、全球唯一标识的 IP 地址,用于识别互联网上的设备。
私网 IP 则是在一个私人网络中使用的 IP 地址,不能直接访问公共网络。
子网掩码
其实在 IP 地址分类之前,没有子网掩码一说,32 位的 IP 地址是由 8 位的网络地址(指定主机连接到哪个网络)和"剩下的"主机位(指定了主机在该网络内的地址)。
这样分配 IP 地址在局域网出现之前是可行的,因为那时只有很少大一些的网络(ARPANET)。
但局域网出现的早期,就已经显现出不够用了,所以才进行了分类,引入了掩码一说。
子网掩码不能单独存在,它必须结合 IP 地址一起使用。IP 地址我们都知道是计算机在网络内的唯一标识,而子网掩码顾名思义是用于划分子网的
首先子网掩码这名字取得很好,它是用来划分子网的网段和遮掩部分 IP 地址。换个说法就是:它是用来划分 IP 地址中哪一部分是网络号,哪一部分是机器号。
假设我们先现在有这么一个 IP 地址:192.168.1.129,我们并不知道它的网络号,也不知道它属于哪部分子网网段。我们现在就需要一个东西来划分出子网网段,这个东西就叫:子网掩码。
子网掩码用于划分网络和主机地址,可根据需要自定义。选择时需考虑子网数量和每个子网的主机容量。子网掩码越长,网络部分越大,主机部分越小,可用主机地址越少。关键规则是子网掩码的二进制表示中 1 和 0 必须连续,以确保地址的正确划分。
255.255.255.193 的二进制是 1111 1111.1111 1111.1111 1111.1100 0001,可以看出它 1 并不连续,所以 255.255.255.193 不能作为子网掩码使用。
每个 IP 地址包含网络部分和主机部分。用来区分这两部分。在子网掩码中,二进制位为"1"的部分指示 IP 地址中的网络部分,而二进制位为"0"的部分指示主机部分。
例如,对于子网掩码 255.255.255.0,它的二进制形式是 11111111.11111111.11111111.00000000。这意味着 IP 地址的前三个部分(由"1"表示)是网络地址,最后一个部分(由"0"表示)是主机地址。
IP 地址为 192.168.1.129,则他的二进制就是 1100 0000.1010 1000.0000 0001.1000 0001。子网掩码是 255.255.255.0,则他的二进制是 1111 1111.1111 1111.1111 1111.0000 0000,那么他们两个计算的结果如下:
text
1100 0000.1010 1000.0000 0001.1000 0001
1111 1111.1111 1111.1111 1111.0000 0000
------------------------------------------------------------
1100 0000.1010 1000.0000 0001.0000 0000
计算后的这段二进制代码相比于原来的 IP 地址,后面 8 位被用 0 遮掩了。因为我们不必关心后面 8 位是 1 还是 0 了。子网网段已经被划分出来了。
也就是说,从 192.168.1.0 到 192.168.1.255 都是同一个子网网段,里面的 1---254 号可以分配给不同的机器。
将 IP 地址和子网掩码进行按位逻辑与运算(每一位分别计算)。运算结果是网络地址。这个地址表示网络的标识。
如果是 0 或 255,通常是不能分配给设备的,原因如下:
- 地址以 0 结尾(网络地址):在子网中,当 IP 地址的主机部分全部为 0 时(例如,在子网掩码为 255.255.255.0 的情况下,IP 地址的最后一个字节为 0),这个地址被用作该子网的网络地址。这个地址用于标识网络本身,而不是网络上的某个特定设备。
- 地址以 255 结尾(广播地址):当 IP 地址的主机部分全部为 1 时(例如,在子网掩码为 255.255.255.0 的情况下,IP 地址的最后一个字节为 255),这个地址被用作广播地址。广播地址用于向整个网络上的所有设备发送数据。当数据包发送到广播地址时,网络上的每个设备都会接收这个数据包。
因此,在一个给定的子网中,以 0 结尾的地址和以 255 结尾的地址有特殊用途,不能分配给网络中的设备作为它们的唯一标识。
用一个例子来搞清楚子网掩码
从前有一个地主,有 256 间房子,地主家的门牌号码是"192.168.1",那么他家第一间房子的门牌号码是 192.168.1.0,第二间是 192.168.1.1,...第 256 间的编号是 192.168.1.255。
地主老了,需要把 256 间房子分给四个儿子,平均分配,每个儿子可以分 64 间。那么他可以这样子操作:
- 192.168.1.0-192.168.1.63 分给大儿子
- 192.168.1.64-192.168.1.127 分给二儿子
- 192.168.1.128 -192.168.1.191 分给三儿子
- 192.168.1.192-192.168.1.255 分给四儿子
那么这四个儿子的子网网段那就是:
- 192.168.1.0/26
- 192.168.1.64/26
- 192.168.1.128/26
- 192.168.1.192/26
那么这些网段是怎么来的呢,用大儿子来举例: 192.168.1.0-192.168.1.63,用二进制表示,他们分别为 11000000.10101000.00000001.00000000 和 11000000.10101000.00000001.00111111。
最终计算结果得出 11000000.10101000.00000001.00,一共是 26 个 0,那么用这个"192.168.1.0/26"就可以表示大儿子所有房间。
一个主机 192.168.1.199/26 能否和直连主机 192.168.1.200/24 通信?答案是不可的,因为都是四儿子的房间
一个主机 192.168.1.199/26 能否和直连主机 192.168.1.1/24 通信?不可以,因为一个是大儿子的房间,一个是四儿子的房间,无法直连通信。
为什么出现 192.168.x 这样的 IP 地址?
那到底为什么会出现 10.X.X.X、176.16.X.X 和 192.168.X.X 这样的局域网 IP 地址?
那是因为,早在 1990 年代中期 IPV4 地址就已经面临了短缺的问题。于是乎就有人开动了大脑:IP 地址确实不能重复,重复了就意味着数据会送错。但
可以确定一个私域的 IP 地址供大家免费在局域网内使用,这些私域 IP 地址可以在不同的局域网重复使用,只要确保在同一个局域网不出现 IP 地址重复就可以了。
NAT 技术(网络地址转换)就在这样的场景下诞生了。
NAT(网络地址转换)是一种网络技术,主要用于在私有网络和公共网络(例如互联网)之间转换 IP 地址。它的核心作用是允许多个设备使用私有 IP 地址在内部网络中进行通信,同时通过一个或几个公共 IP 地址与外部网络进行通信。这样做的好处是节约了有限的公共 IP 地址资源,因为不需要为网络中的每个设备都分配一个唯一的公共 IP 地址。
NAT 还增加了网络的安全性,因为内部网络中的设备不会直接暴露其私有 IP 地址到互联网上。这意味着直接从互联网攻击这些设备变得更加困难。
NAT 有几种形式,其中最常见的包括静态 NAT(一对一的地址映射)、动态 NAT(私有地址和公共地址之间的动态映射)和 PAT 或 NAPT(网络地址和端口转换,即多个设备共享同一个公共 IP 地址,通过不同的端口号进行区分)。
在家庭或企业环境中,路由器通常执行 NAT 功能,允许多个设备通过单一的互联网连接进行通信,同时保护内部网络。
NAT(网络地址转换)的工作原理相对简单。它在私有网络和互联网之间充当中介,将内部设备的私有 IP 地址转换为公共 IP 地址来进行外部通信。这里是它的基本工作方式:
- 内部请求:当内部网络上的设备(比如你的电脑)尝试访问互联网时,它会首先将数据包发送到路由器。
- 地址转换:路由器接收到这个数据包后,会将包中源设备的私有 IP 地址替换为路由器自己的公共 IP 地址。如果是端口地址转换(PAT),路由器还会改变源端口号,以便于区分来自同一内部 IP 地址的多个会话。
- 数据发送:修改后的数据包通过路由器发送到互联网。
- 响应接收:来自互联网的响应首先到达路由器。
- 地址再映射:路由器根据先前的映射记录,将响应中的目标地址(即原来的公共 IP 地址和端口号)转换回内部设备的私有 IP 地址和端口号。
- 响应转发:最后,路由器将响应发送给原始请求的内部设备。
通过这种方式,NAT 允许多个设备共享同一个公共 IP 地址进行互联网通信,同时隐藏了内部网络的结构,提供了一定程度的安全保护。
在上图中,前面的是家里的 WiFi,后面的是学校的 WiFi。10.100.x.x 是较大范围的 10.x.x.x 内的一个子网,适合更大的组织使用,而 192.168.10.x 是较小范围的 192.168.x.x 内的一个子网,更适合小型网络。
为什么局域网的 IP 普遍是 192.168 开头?
每个人都管自己的爸爸叫爸爸,为啥到了社会上爸爸们不会冲突呢? 因为爸爸是私有概念,大多时候一家一个. 出门他们用真名,不用爸爸. 此处爸爸可理解为 192.168.1.1
你只要是公网地址唯一,私网地址你要怎么玩都可以,如果说,你用的私网地址和公网地址重复了,那么你是访问不了该公网地址的。
只要你愿意,你私网地址用 1.1.1.1 都是可以的。
参考资料
总结
局域网中普遍使用 192.168 开头的 IP 地址是因为这个地址段被专门划分为私有网络使用,不在互联网上路由。这样做主要是为了解决公共 IPv4 地址短缺的问题,同时也便于小型网络如家庭和小型办公室网络的管理。使用这个范围的地址可以保证局域网内的通信在安全性上更加隔离,不会直接暴露在互联网上。此外,这些地址可以在不同的私有网络中重复使用,避免了与互联网上的地址发生冲突。