计算机网络核心之IPv4

在用 TCP/IP 通信时,用 IP 地址识别主机和路由器,为了保证正常通信,有必要为每个设备配置正确的 IP 地址。在互联网通信中,全世界都必须设定正确的 IP 地址,否则无法实现正常的通信。因此,IP 地址就像是 TCP/IP 通信的一块基石。

IP 地址的定义

IP(Internet Protocol)地址是网络中每个设备的唯一标识符,用于在基于 IP 的网络(如互联网)中识别和定位这些设备。

它是一个数值标记,分配给所有接入互联网或局域网的设备。IP 地址允许设备之间的相互通信,通过确保数据包能够从发送者正确路由到接收者。

由 32 位二进制数构成,通常表示为四个十进制数字的序列,每个数字代表 8 位(一个字节),使用点(.)分隔,例如 192.168.1.1。例如,二进制的 11000000.10101000.00000001.00000001 在点分十进制中表示为 192.168.1.1。

由于是 32 位,IPv4 理论上可以提供大约 43 亿个唯一地址。但由于某些地址被保留用于特殊目的,实际可用地址少于这个数目。

IP 地址由网络和主机两部分标识组成

IPv4 地址包含两个主要部分:网络部分和主机部分。网络标识在数据链路的每个短配置不同的值。网络表示必须保证相互连接的每个段的地址不重复。而相同段内相连的主机必须要相同的网络地址。IP 地址的主机标识则不允许在同一个网段内重复出现。

因此,可以通过设置网络地址和主机地址,在相互连接的整个网络中保证每台主机的 IP 地址都不会相互重叠。即 IP 地址具有了唯一性。

网络部分标识特定的网络,而主机部分则标识该网络上的特定设备。

主机标识

如下图所示,网络标识在数据链路中的每个段的配置不同的值。网络标识必须保证相互连接的每个段的地址不相重复。而相同段内相连的主机必须要相同的网络地址。IP 地址的主机标识则不允许在同一个段内重复出现。

在 IP 网络中,每个设备的 IP 地址包含了网络标识和主机标识。例如,在 IPv4 地址 192.168.1.10 中,如果子网掩码是 255.255.255.0,则 192.168.1 部分标识网络,而.10 部分标识特定的主机。

子网掩码决定了 IP 地址中哪些部分属于网络地址,哪些部分属于主机地址。不同的子网掩码可以在相同的网络地址范围内定义不同的主机数。

在下图中,IP 包被转发到途中某个路由时,正是利用目标 IP 地址的网络标识进行路由。因为即使是看不到主机标识,只要一见到网络标识就能判断出是否为该网段内的主机。

IP 地址的分类

IP 地址的分类主要涉及到 IPv4,因为它采用了一个结构化的地址方案,根据不同的网络大小和需求将地址空间分成几个类别。这些类别被称为 A 类、B 类、C 类、D 类和 E 类地址。

A 类地址

A 类地址是首位以 0 为开头。从第一位到第八位是它的网络标识。用十进制标识的话。0.0.0.0 ~ 127.0.0.0 是 A 类的网络地址。A 类地址最后的 24 位相当于主机标识。

A 类地址的一般用途:

  1. 大型国际公司:由于 A 类网络可以支持大约 1677 万个主机,因此非常适合大型跨国公司,他们可能在全球范围内拥有大量的设备和网络基础设施。

  2. 政府机构:一些国家的政府机构,特别是在互联网早期,被分配了 A 类地址以满足其广泛的网络需求,包括各种公共服务、安全系统和通信设施。

  3. 大学和研究机构:全球一些大型的大学和研究机构也被分配了 A 类地址,以支持他们庞大的研究网络,涵盖了大量的学术和研究设施。

  4. 互联网服务提供商(ISP):一些大型的 ISP 可能会被分配 A 类地址,尤其是在早期的互联网发展阶段,用于管理他们的广泛网络基础设施。

  5. 特殊用途:一些 A 类地址被保留用于特殊用途,如 127.0.0.0 被用作回环地址(用于测试本地机的网络接口)。

需要注意的是,随着 CIDR(无类别域间路由选择)的引入,传统的 A、B、C 类地址划分变得不那么严格。许多原本属于 A 类的地址空间已经被细分,用于不同规模和类型的网络。

B 类地址

B 类地址是前两位为 10 的地址,从第一位到第十六位是它的网络标识。用十进制表示的话,128.0.0.0 ~ 191.255.0.0 是 B 类的网络地址。B 类地址的前 16 位组表示网络部分后 16 位相当于主机标识。

B 类地址的一般用途和特点:

  1. 中型企业或组织:B 类地址非常适合中等规模的企业和组织,因为它们提供足够的网络和主机容量,可以满足上千到数万台设备的需求。

  2. 大学和教育机构:许多大学和教育机构也使用 B 类地址,这些机构通常有大量的计算机和网络设备,需要较大的地址空间来管理它们的网络。

  3. 政府部门:某些政府部门,特别是那些具有大量网络基础设施的部门,可能会使用 B 类地址来满足其广泛的网络需求。

  4. 地区性服务提供商:一些地区性的互联网服务提供商(ISP)也可能使用 B 类地址,以便为其客户提供网络服务。

B 类地址的默认子网掩码是 255.255.0.0,这反映了其网络和主机部分的划分。

与 A 类地址一样,由于 CIDR 的引入,B 类地址的固定划分在实际网络中的应用变得不那么严格。许多 B 类地址范围内的地址已被进一步划分以适应不同规模和需求的网络,使得 IP 地址的分配更加灵活和高效。

C 类地址

C 类地址是前三位为 110 的地址。是从第一位到第 34 位是它的网络标识。用十进制表示的话,192.0.0.0 ~ 223.255.255.0 是 C 类的网络地址。C 类地址的后 8 位相当于主机标识。因此,一个网段内可以容纳的主机地址上限为 254 个。

C 类地址的一般用途:

  1. 小型企业:C 类地址非常适合小型企业,因为它们提供了合适的地址数量来满足较少数量设备的需求。

  2. 家庭网络:家庭网络和小型办公网络通常使用 C 类地址,这些网络通常只有少量的连接设备。

  3. 局域网(LAN):对于需要有限数量 IP 地址的局域网(LAN),C 类地址是理想选择。

  4. 专用服务器和设备:用于托管专用服务的服务器(如邮件服务器、FTP 服务器等)可能会被分配 C 类地址。

与 A 类和 B 类地址一样,CIDR 的引入使得 C 类地址的固定划分在实际网络应用中变得更加灵活。C 类地址由于其相对较小的网络规模,特别适合那些不需要大量 IP 地址的组织或网络。

D 类地址

D 类地址是前四位为 1100 的地址。从第一位到第三十二位是它的网络标识。用十进制表示的话,224.0.0.0 ~ 239.255.255.255 是 D 类的网络地址。D 类地址没有主机标识,常用于多播。

广播地址

广播地址用于在同一个链路中相互连接的主机之间发送数据包。将 IP 地址中的主机地址部分全部设置为 1,将称为了广播地址。

例如把 172.20.0.0/16 用二进制表示如下:

markdown 复制代码
0101100. 00010100. 00000000. 00000000

对于子网掩码/16,这意味着前 16 位(前两个八位组)是网络部分,剩余的是主机部分。所以,子网掩码为 255.255.0.0,在二进制下表示为:

markdown 复制代码
11111111. 11111111. 00000000. 00000000

将这个地址的主机部分全部改为 1,则形成广播地址:

markdown 复制代码
10101100. 00010100. 11111111. 11111111

将二进制地址 10101100.00010100.11111111.11111111 转换回十进制,得到的 IP 地址是 172.20.255.255。

两种广播

广播分为本地广播和直接广播两种:

  1. 直接广播
    1. 发送到特定网络的广播地址。直接广播的地址是将目的网络的主机部分设置为所有位均为 1。
    2. 例如,如果一个网络的地址是 192.168.1.0/24,那么这个网络的直接广播地址是 192.168.1.255。
  2. 本地广播:
    1. 本地广播地址是 255.255.255.255,它用于主机向当前本地网络上的所有其他设备发送广播消息。
    2. 此广播不会被路由器转发到其他网络。

这两种广播一般有如下使用场景:

  1. 网络配置:在网络初始化和配置过程中,例如使用 DHCP 协议为主机分配 IP 地址时,主机会向广播地址发送请求。
  2. 服务发现:广播用于发现同一网络内的服务或设备,如在使用 ARP(地址解析协议)时,主机会发送一个 ARP 请求到广播地址来查询特定 IP 地址对应的物理地址。
  3. 消息传递:某些类型的网络消息或通知需要被网络上的所有设备接收。

IP 多播

IP 多播是一种网络通信机制,用于同时向多个目的地发送信息。这与单播(一对一)和广播(一对所有)通信形式不同。在 IP 多播中,数据包仅发送给感兴趣的接收者群组。

多播用于将包发送给特定组内的所有主机。由于其直接使用 IP 协议,因此不存在可靠传输。

IP 多播使用特殊的地址范围来标识多播组。在 IPv4 中,这个范围是 224.0.0.0 到 239.255.255.255。设备可以加入或离开多播组。加入组意味着该设备对发送到该组地址的数据包感兴趣。

发送者将数据包发送到多播组地址。这个数据包不是直接发送到每个接收者,而是由网络设备(如路由器)处理,确保只有多播组成员收到这些包。

IP 多播一般被使用于:

  1. 视频会议和直播:多播非常适合视频会议和实时视频直播,因为它允许单个视频源同时发送给多个接收者,而不需要为每个接收者单独发送数据流。
  2. 股票市场更新:金融服务行业中,多播可以用于迅速传播股票价格和交易信息。
  3. 软件分发:在大型网络中,多播可以用于高效地分发软件更新和数据包。

他的优点也比较明显:

  1. 减少网络流量:多播减少了重复数据传输,特别是在发送大量数据时。
  2. 提高效率:多播允许网络资源(如带宽)更高效地使用,因为数据只发送给感兴趣的接收者。
  3. 可扩展性:适合大规模分布式应用,因为它可以轻松扩展到大量接收者。

总的来说,IP 多播是一种高效的网络通信机制,适用于需要同时向多个接收者发送相同数据的应用场景。然而,它也带来了对网络设备和协议更复杂的要求。

子网掩码

子网掩码是一种用于划分 IP 网络的机制,它在 IP 地址中分隔网络和主机部分。在子网掩码中,用二进制 1 标识网络部分,用 0 标识主机部分。

因此,按照每个分类所表示的网络标识的范围如下所示:

  • A 类地址的子网掩码:255.0.0.0,在二进制中表示为 11111111.00000000.00000000.00000000。
  • B 类地址的子网掩码:255.255.0.0,在二进制中表示为 11111111.11111111.00000000.00000000。
  • C 类地址的子网掩码:255.255.255.0,在二进制中表示为 11111111.11111111.11111111.00000000。

子网和子网掩码

子网(Subnet)和子网掩码(Subnet Mask)是计算机网络中用于组织和优化 IP 地址分配的重要概念。它们使网络管理员能够将一个较大的网络划分为多个较小的、更易于管理的子网络。

子网是指从一个较大的网络中划分出来的较小网络。它通过改变 IP 地址的子网掩码来实现,从而将一个单一的网络地址空间划分为几个较小的部分。子网化使网络更加高效,减少了广播流量,提高了安全性,并使 IP 地址管理更加灵活。

子网掩码通常有两种表示方式,一种是传统的点分十进制表示法,另一种是使用后缀(也称为 CIDR 表示法):

  1. 点分十进制表示法(无后缀)
    • 定义:在这种表示法中,子网掩码像普通的 IPv4 地址一样,由四个十进制数表示,每个数值介于 0 到 255 之间,数值之间用点(.)分隔。
    • 示例:255.255.255.0,其中每个数字代表相应八位二进制位中的数值。
  2. CIDR 表示法(有后缀):
    • 定义:CIDR(无类别域间路由选择)表示法使用斜线(/)后跟一个数字来表示子网掩码。这个数字表示子网掩码中连续"1"的位数。
    • 示例:/24,表示前 24 位是网络部分,对应于点分十进制中的 255.255.255.0。

两种表示法在实际应用中都非常常见,选择使用哪种通常取决于上下文和个人或组织的偏好。CIDR 表示法在网络设计和路由配置中尤其流行,因为它简洁且直观地表达了网络的大小

通过下面的例子你应该能更清楚地理解子网掩码和 IP 地址了:

  1. 示例一:

    • IP 地址:192.168.1.10
    • 子网掩码(点分十进制):255.255.255.0
    • 子网掩码(CIDR 表示法):/24
    • 网络地址:192.168.1.0
    • 可用主机范围:192.168.1.1 到 192.168.1.254
  2. 示例二:

    • IP 地址:172.16.5.20
    • 子网掩码(点分十进制):255.255.0.0
    • 子网掩码(CIDR 表示法):/16
    • 网络地址:172.16.0.0
    • 可用主机范围:172.16.0.1 到 172.16.255.254
  3. 示例三:

    • IP 地址:10.0.0.15
    • 子网掩码(点分十进制):255.0.0.0
    • 子网掩码(CIDR 表示法):/8
    • 网络地址:10.0.0.0
    • 可用主机范围:10.0.0.1 到 10.255.255.254
  4. 示例 4

    • IP 地址:192.168.100.50
    • 子网掩码(点分十进制):255.255.255.128
    • 子网掩码(CIDR 表示法):/25
    • 网络地址:192.168.100.0
    • 可用主机范围:192.168.100.1 到 192.168.100.127
  5. 示例 5

    • IP 地址:10.1.1.200
    • 子网掩码(点分十进制):255.255.255.192
    • 子网掩码(CIDR 表示法):/26
    • 网络地址:10.1.1.192
    • 可用主机范围:10.1.1.193 到 10.1.1.254

这些示例展示了如何根据子网掩码确定一个 IP 地址的网络部分和主机部分,以及如何计算可用的主机地址范围。

CIDR 和 VLSM

CIDR(无类别域间路由选择)和 VLSM(可变长度子网掩码)是两种用于 IP 网络的地址分配和路由优化技术。它们使得 IP 地址空间的管理更加灵活和高效。

CIDR(无类别域间路由选择)

CIDR 是一种新的 IP 地址分配方法,允许将 IP 地址空间分配给网络和主机的需求,而不是基于固定的类别。这种方法通过消除传统的 A、B、C 类地址边界,提高了 IP 地址的使用效率。

CIDR 使用斜线表示法(如 192.168.1.0/24),其中"/24"表示网络前缀的长度。这种方法允许更灵活的子网划分和更有效的 IP 地址利用率。

随着互联网的迅速发展,传统的基于类的 IP 地址分配方法(如 A 类、B 类、C 类地址)变得不够高效,导致了 IP 地址的枯竭。

VLSM(可变长度子网掩码)

VLSM 是一种技术,允许在同一网络中使用不同长度的子网掩码,这样可以为不同大小的子网分配适当数量的 IP 地址。

VLSM 通过允许每个子网有不同大小的地址空间,解决了固定长度子网掩码的限制。这样可以根据实际需要为每个子网分配适当数量的 IP 地址,避免了地址的浪费。它在需要不同大小子网的复杂网络中非常有用。例如,在一个大型企业网络中,某些部门可能需要更多的 IP 地址,而其他部门则需要较少。

CIDR 和 VLSM 通常一起使用,CIDR 提供了一种更灵活的方式来分配和管理 IP 地址空间,而 VLSM 则允许在 CIDR 分配的地址空间内进行细粒度的子网划分。这两种技术结合使用,使网络设计者能够更有效地利用 IP 地址空间,同时满足各种规模和类型的网络需求。

全局地址和私有地址

在 IP 网络中,特别是在 IPv4 中,地址空间被划分为全局地址(又称公有地址)和私有地址。这两种类型的地址有着不同的用途和特性:

  1. 全局地址:

    • 定义:全局地址是在整个互联网上唯一且可路由的 IP 地址。这意味着任何地方的设备都可以使用这个地址访问分配了该地址的设备。
    • 用途:全局地址通常用于互联网上的服务器、路由器或其他需要从任何地方访问的设备。例如,网站服务器、电子邮件服务器等都需要全局地址以确保用户可以从互联网上的任何地方访问它们。
    • 分配:全局地址由互联网号码分配机构(如 IANA 和各地区的互联网注册机构)分配和管理。
    • 特点:由于 IPv4 地址的有限性,全局地址是一种宝贵资源,需要合理分配和管理。
  2. 私有地址

    • 定义:私有地址是在单个组织或局域网内部使用的 IP 地址,不会在互联网上路由。这意味着相同的私有地址可以在不同的局域网中重复使用。

    • 用途:私有地址用于内部网络,如家庭网络、企业内部网络等。设备使用私有地址通常通过网络地址转换(NAT)与互联网通信。

    • 范围:在 IPv4 中,为私有网络预留的地址范围包括:

      1. 10.0.0.0 到 10.255.255.255:A 类网络的一个完整范围。
      2. 172.16.0.0 到 172.31.255.255:B 类网络的 16 个连续范围。
      3. 192.168.0.0 到 192.168.255.255:C 类网络的 256 个连续范围。
    • 网络地址转换(NAT):私有地址在互联网上不是唯一的,也不可路由。为了访问互联网,私有地址通常需要通过 NAT。NAT 设备(如家用路由器)将内部网络上的私有地址转换为全局地址,以便进行外部通信。

    • 优势:私有地址缓解了全球 IPv4 地址枯竭的问题,因为同一私有地址可以在不同网络中重复使用。它们还增加了内部网络的安全性,因为私有地址不直接暴露于互联网。

全局地址对应于公共身份,是网络上设备的唯一全球标识符。而私有地址则更像是内部身份,仅在特定的私有网络中有效和唯一。

使用全局和私有地址的混合网络架构可以同时实现有效的 IP 地址利用、网络安全和全球可达性。

这种设计允许组织在其内部网络中自由地使用 IP 地址,同时通过限量的全局地址与外部世界通信,是解决 IPv4 地址有限性的一个重要策略。随着 IPv6 的推广,其庞大的地址空间将缓解许多与 IPv4 地址枯竭相关的问题。

参考文献

  • 书籍:图解 TCP/IP

总结

IPv4 是互联网协议的第四版,提供了约 43 亿个唯一的地址,采用 32 位地址格式,通常以点分十进制表示。由于地址空间有限,引入了如子网划分、CIDR 和 NAT 等技术来提高地址的使用效率。IPv4 在全球范围内广泛使用,尽管如此,由于其固有的地址限制,IPv6 正在被逐步引入以扩展地址空间并解决未来的可扩展性问题。

相关推荐
Tadas-Gao3 小时前
TCP粘包现象的深度解析:从协议本质到工程实践
网络·网络协议·云原生·架构·tcp
苏三说技术3 小时前
xxl-job 和 elastic-job,哪个更好?
后端
xkxnq3 小时前
第五阶段:Vue3核心深度深挖(第74天)(Vue3计算属性进阶)
前端·javascript·vue.js
三小河3 小时前
Agent Skill与Rules的区别——以Cursor为例
前端·javascript·后端
Hilaku3 小时前
不要在简历上写精通 Vue3?来自面试官的真实劝退
前端·javascript·vue.js
三小河3 小时前
前端视角详解 Agent Skill
前端·javascript·后端
牛奔4 小时前
Go 是如何做抢占式调度的?
开发语言·后端·golang
Aniugel4 小时前
单点登录(SSO)系统
前端
颜酱4 小时前
二叉树遍历思维实战
javascript·后端·算法
鹏多多4 小时前
移动端H5项目,还需要react-fastclick解决300ms点击延迟吗?
前端·javascript·react.js