计算机网络•自顶向下方法:IP编址

IP编址

接口(interface):

  • 主机/路由器与物理链路的边界
  • 路由器有多个接口
  • 主机典型地有一个或两个接口(比如以太网接口、Wifi接口)

IP address:

  • 每个网络接口对应一个IP地址
  • IP地址是一个32位的二进制数,通常用点分十进制数表示

基于类的编址(早期)

单播地址结构

单播地址除类别标识外,其余比特被划分成网络号和主机号两部分:

  • 网络号:在因特网范围内标识一个物理网络
  • 主机号:标识该物理网络上的一个网络接口

根据该编址方法可知,同一个物理网络上的网络接口,它们的IP地址具有相同的网络号

地址分配

因特网中的每个接口必须具有唯一的IP地址

为在因特网范围内保证IP地址的全局唯一性:

  • 网络号由ICANN统一分配
  • 主机号由网络管理员统一分配

建立私有网络的组织可以自己选择网络号,但同样必须保证每个网络号在私有网络内的唯一性

特殊的地址

全0或全1的网络号及主机号是特殊地址,从不分配给特定的网络接口:

  • 网络号有效、主机号全为0的地址:保留给网络本身。
  • 网络号有效、主机号全为1的地址:保留作为定向广播,即在网络号指定的网络中广播(仅用作目的地址)
  • 32位全1的地址:本地广播地址,表示仅在发送节点所在的网络中广播(仅用作目的地址)
  • 32位全0的地址:指示本机(仅用作源地址)
  • 网络号为0、主机号有效的地址:指代本网中的主机
  • 形如127.x.y.z的地址:保留作为回路测试,发送到这个地址的分组不输出到线路上,而是送回内部的接收端。
网络数量与地址数量

A、B、C类地址对应不同规模的网络

一个A类、B类及C类地址可提供的接口地址数:

  • A类地址: 2 24 − 2 = 16777214 2^{24}-2 = 16777214 224−2=16777214
  • B类地址: 2 16 − 2 = 65534 2^{16}-2 = 65534 216−2=65534
  • C类地址: 2 8 − 2 = 254 2^8-2 = 254 28−2=254

A类、B类、C类地址的个数:

A类地址: 2 7 − 2 = 126 2^7-2 = 126 27−2=126

B类地址: 2 14 − 2 = 16382 2^{14}-2 = 16382 214−2=16382

C类地址: 2 21 − 2 = 2097152 2^{21}-2 = 2097152 221−2=2097152

子网

子网(Subnet) 是对一个 IP 网络进行划分的技术。通过子网划分,能够将一个大的网络分割成多个更小的网络,这样可以提高网络的管理、性能和安全性。子网的划分是基于 IP 地址子网掩码(Subnet Mask) 来进行的。

  • 子网划分 :通过调整 子网掩码,将一个大的网络地址空间划分为多个小的地址空间。每个子网都有自己的网络地址、广播地址和可用地址。
  • 子网掩码(Subnet Mask) :子网掩码是一个与 IP 地址一样长度的二进制数,用来确定 IP 地址中哪些位是网络位,哪些位是主机位。通过子网掩码,路由器可以判断一个 IP 地址是否属于本地网络。
    • 子网掩码通常采用四个字节的格式(如 255.255.255.0)。
    • 在二进制中,子网掩码的网络部分是连续的 1,主机部分是连续的 0

如何从IP地址中获取子网地址?

  • 将IP地址与子网掩码做"与"运算
  • 例如:128.10.1.1 AND 255.255.255.0 = 128.10.1.0
  • 注意:子网地址 ≠ 子网号,子网地址包括主机号之前的所有比特

子网:更确切的含义

  • 具有相同子网地址且不需要通过路由器就可以相互到达的网络接口构成一个子网
  • 在因特网文献中,子网也称为IP网络或直接称为网络
  • 子网内部的接口具有相同的子网地址
  • 子网内部的通信不需要经过路由器
  • 子网之间通信一定要经过路由器

IP数据报转发

网络层转发数据报的两种情形:

  • 直接交付(direct delivery):节点将数据包直接发送给目的主机(不需要其它路由器转发)
  • 间接交付(indirect delivery):节点将数据包转发给一个路由器去处理

判断使用直接交付还是间接交付

  • 直接交付:数据包的目的地址与本节点的某一端口在同一个子网中
  • 间接交付:数据包的目的地址不与本节点的任何一个端口在同一个子网中

间接交付的实现:

  • 节点查找转发表,将数据包发送给下一个路由器

转发表

转发表记录目的地址到输出端口的映射

取决于目的地址类型的不同,有三类转发表项:

  • 目的地址是一个子网地址:地址前缀表项
  • 目的地址是一个特定的网络接口地址:特定主机表项
  • 缺省项:不匹配所有其它表项的地址都被映射到一个默认的路由器端口

IP采用逐跳选路:

  • 每个转发表项只记录去往目的地址的下一跳信息(下一个要到达的路由器端口),而不是一条完整的端到端路由

每个转发表项包括:

  • 目的地址/掩码、下一跳地址、输出端口等
  • 下一跳地址必须与输出端口在同一个子网中(不需要通过其它路由器就可以直接到达)

CIDR:Classless Inter-Domain Routing(无类域间路由)

CIDR 的核心思想是 不再依赖固定的类(A、B、C) ,而是使用 前缀长度 来灵活地划分地址空间。CIDR 使用类似于 IP地址/前缀长度 的表示方式来标识网络,前缀长度表示网络部分的位数,而剩余的部分则用于主机地址。

  • IP 地址 :通常表示为 a.b.c.d(四个字节),每个字节的取值范围是 0-255。
  • 前缀长度 :表示 IP 地址中网络部分的位数,后面跟着斜杠(/),如 /24,表示前 24 位是网络位。

CIDR地址分配的原则:

  • 地址块的长度 L 必须是 2 的幂次
  • 所有地址的前(32-log2L)位必须

地址聚合

转发表中符合以下条件的若干个表项可以合并成一个表项:

  • 这些表项的目的地址可以聚合成一个前缀更短的地址
  • 这些表项使用相同的下一跳

若个别(少数)表项不满足路由聚合的条件:

  • 仍然可以在转发表中给出一条聚合表项: 200.23.16.0/20
  • 同时给出不能被聚合的表项: 200.23.18.0/23

最长前缀匹配:

  • 在所有匹配的路由表项中,选择前缀最长的表项

IP编址的小结

基于类的编址存在两个问题:

  • 地址空间浪费
  • 转发表空间爆炸

CIDR解决了这两个问题:

  • 按需分配解决了地址空间浪费的问题
  • 地址聚合解决了转发表空间爆炸的问题

CIDR引入的问题:

  • 地址聚合要求采用最长前缀匹配的原则查找转发表
  • 最长前缀匹配给转发表的快速查找带来了困难
相关推荐
m0_465215793 小时前
IP服务模型
服务器·网络·tcp/ip
山间朝暮-CanEve4 小时前
ONE NET MQTT+HTTP多端控制
网络·网络协议·http
别致的影分身8 小时前
Linux 传输层协议 UDP 和 TCP
linux·tcp/ip·udp
HackKong8 小时前
DeepSeek 遭 DDoS 攻击背后:DDoS 攻击的 “千层套路” 与安全防御 “金钟罩”_deepseek ddos
网络·安全·网络安全·ddos·黑客技术
杨枝甘露小码9 小时前
利用Muduo库实现简单且健壮的Echo服务器
服务器·网络
益莱储中国9 小时前
数据中心服务器对PCIe测试的需求、挑战和应用
网络
prince_zxill9 小时前
深入探索Vue 3组合式API
前端·javascript·网络·vue.js·前端框架
代码小白 ac10 小时前
路由表转发表考研知识点
计算机网络·考研
是Dream呀10 小时前
Python从0到100(八十七):CNN网络详细介绍及WISDM数据集模型仿真
网络·python·cnn
学问小小谢10 小时前
第28节课:前端项目实战—从需求分析到开发流程的全方位指南
前端·网络·安全·web安全·性能优化·html5·需求分析