TCP/IP 详解(第 2 版) 笔记 / 2 互联网地址架构 / 2.5 有特殊用途的地址 / 2.5.1 IPv4/IPv6 寻址翻译器

目录、参考文献


2.5 特殊用途的地址

无论是 IPv4 还是 IPv6 都包含一些有特殊用途的地址(这些地址不会被用来分配单播地址)
IPv4 中特殊用途的地址如表 2-7 所示 [RFC5735]
IPv6 中特殊用途的地址如表 2-8 所示 [RFC5156]

Table 2-7 - 中文
表 2-7
IPv4 中特殊用途的地址(2010 年 1 月的定义)

Table 2-8 - 中文
表 2-8
IPv6 中特殊用途的地址 (2008 年 4 月的定义)

无论是 IPv4 还是 IPv6,未指定为特殊、组播或保留的地址,可以分配给单播使用
某些单播地址空间(IPv4 前缀 10/8、172.16/12、192.168/16 和 IPv6 前缀 fc00::/7)被保留来构建专用网络(private network)
这些范围的地址可以被某个站点或组织里面的主机和路由器使用,但不能通过全球互联网
因此,这些地址有时候被称为不可路由的(nonroutable)地址,即,它们无法通过公共互联网路由

对专用的、不可路由的地址空间的管理完全由本地决定
IPv4 专用地址在家庭网络、中等大小的内部网络以及大型企业中都非常常见
它们经常与网络地址转换network address translation (NAT))结合使用
NAT 技术可以在 IP 数据报进入互联网时重写数据报中的 IP 地址,第 7 章将讨论 NAT 的细节

2.5.1 IPv4/IPv6 寻址翻译器

在某些网络中,在 IPv4 与 IPv6 之间进行转换可能会很有用 [RFC6127]
单播地址的 IPv4 与 IPv6 转换框架:[RFC6144];组播地址的 IPv4 与 IPv6 转换框架:[IDv-4v6mc]
它们的基本功能之一是提供自动的、算法级别的地址翻译
使用著名的 IPv6 前缀 64:ff9b::/96 或其它特定前缀,指明如何为单播地址进行翻译 [RFC6052]

可以利用一种特殊的地址格式,被称为内嵌 IPv4 的 IPv6 地址IPv4-embedded IPv6 address
这种 IPv6 地址中包含了一个 IPv4 地址
根据 IPv6 前缀的长度,可以使用 6 种格式中的一种来进行编码
对应的前缀长度分别是:32、40、48、56、64、96 位
图 2-10 展示这 6 种格式的地址

Figure 2-10
图 2-10
IPv4 地址可以内嵌到 IPv6 地址中,形成 内嵌 IPv4 的 IPv6 地址
根据 IPv6 前缀长度的不同,有 6 种不同的格式
著名的前缀 64:ff9b::/96 可以用来自动翻译 IPv4 与 IPv6 单播地址

图 2-10 中,要么是著名前缀,要么是部署翻译器的组织独有的唯一前缀
64 到 71 位必须设置为 0 以确保与 [RFC4291] 中指定的标识符兼容
后缀应该被设置为 0
现在,要产生一个内嵌 IPv4 的 IPv6 地址就比较简单了:
将 IPv6 前缀与 32 位的 IPv4 地址连接起来,并确保 63 到 71 位为 0
用 0 补全后缀,得到一个 128 位地址
有 96 位前缀的内嵌 IPv4 的 IPv6 地址,可以使用前边提到过的 IPv6 映射地址的惯例来表示([RFC4291] 第 2.2(3) 节)
例如,将 IPv4 地址 198.51.100.16 内嵌到著名前缀中,得到地址:64:ff9b::198.51.100.16


目录、参考文献

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中缀表达式是一种常见的数学表达式表示方式,在计算机科学中很常用。对于给定的中缀表达式"( ( 2 * (9 6/3 - 5) 4 ) )",我们需要进行以下步骤进行计算: 1. 创建两个栈,一个用于存储操作数(如数字),另一个用于存储操作符(如+、-、*、/)。 2. 从左到右遍历中缀表达式的每个字符: 2.1. 如果当前字符是空格,则忽略它。 2.2. 如果当前字符是数字,则将其作为一个操作数推入操作数栈。 2.3. 如果当前字符是操作符,则进行以下步骤: 2.3.1. 如果操作符栈为空,则将当前操作符推入操作符栈。 2.3.2. 否则,如果当前操作符的优先级小于或等于操作符栈顶的操作符优先级,则从操作符栈中弹出操作符,直到当前操作符的优先级大于操作符栈顶的操作符优先级,然后将当前操作符推入操作符栈。 2.4. 如果当前字符是左括号,则将其推入操作符栈。 2.5. 如果当前字符是右括号,则进行以下步骤: 2.5.1. 从操作符栈中弹出操作符直到遇到左括号,并将弹出的操作符进行相应的计算,并将计算结果推入操作数栈。 2.5.2. 从操作数栈中弹出计算结果,并将其作为一个操作数推入操作数栈。 3. 当遍历完所有字符后,进行以下步骤: 3.1. 从操作符栈中弹出操作符直到操作符栈为空,并将弹出的操作符进行相应的计算,并将计算结果推入操作数栈。 3.2. 从操作数栈中弹出计算结果,即为最终的计算结果。 根据上述步骤,对于给定的中缀表达式"( ( 2 * (9 6/3 - 5) 4 ) )",我们可以按照以上步骤进行计算并得到最终结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值