The Internet Protocol

The Internet Protocol

1. Introduction

IP 提供 best-effort,connectionless 的 datagram 递交服务。best-effort 的意思是不保证所有的 IP datagram 成功到达目的地。如果发生了一些错误,比如 router 暂时耗尽了所有的缓存空间,到达的 datagram 被简单的丢弃。可靠性需要由上层协议提供 (e.g.,TCP)。

术语 connectionless 意味着 IP 不维护任何关于网络元素内部 (比如,router 内部) 的相关 datagrams 的连接状态信息;每个 datagram 都独立于其他所有的 datagrams 进行处理。这也意味着 IP datagrams 能被无序递交。如果源向相同的目的地连续发送两个 datagrams (第一个是 A,然后是 B),每个都被独立路由,且可能使用不同的 paths,使 B 先于 A 到达。IP datagram 也可能发生其他的事:它们可能在传输过程中被复制,它们可能改变了自己的数据而使结果出错。再一次,一些在 IP 之上的协议 (通常是 TCP) 必须处理这些潜在的问题以为应用提供一个无错的递交抽象。
在这里插入图片描述
在这里插入图片描述

2. IPv4 and IPv6 Headers

TCP/IP headers 在网络中的传输二进制整数的字节序为 big endian 字节序,高位优先传输,即顺序为:位 0-7,位 8-15,位 16-23, 位 24-31。它也被称为 network byte order。计算机 CPUs 存储二进制整数可能使用其他格式。例如大部分 PC 使用小端格式,必须 header 值传输到网络前和接收时进行字节序转换。

在计算机中,endianness,也被称为 byte sex,是计算机内存中数字数据中一个 word 的顺序或序列。字节序主要表示为 big-endian(BE)little-endian(LE)。一个大端系统在最小内存地址上存储 word 的最高有效字节 (most significant byte),在最大内存地址上存储最低有效字节 (least significant byte)。小端系统中则相反,在最小地址上存储最低有效字节。

2.1 IP Header Fields

Version 字段包含 IP datagram 的版本号:IPv4 为 4,IPv6 为 6。

Internet Header Length (IHL) 表示 IPv4 header 中 32-bit words 的数量,包含任何可选项。

Differentiated Services Field (DS Field)

Explicit Congestion Notification (ECN)

Total Length 是 IPv4 datagram 的总长度,以字节为单位,为 16-bit 字段,所以 IPv4 datagram (包含 header) 的最大大小为 65536 字节。

虽然能够发送 65535 字节的 IP datagram,大部分链接层 (例如 Ethernet) 不能携带这样大的 packet,除非将其分割成更小的块。进一步说,host 不需要能接收超过 576 字节的 IPv4 datagram。(在 IPv6 中,host 必须能处理至少和其所关联的链接的 MTU 一样大小的 datagram,最小的链接 MTU 是 1280 字节。) 许多使用 UDP 进行传输的应用 (e.g.,DNS,DHCP,etc.) 限制数据的大小为 512 字节以避免 576-byte 的 IPv4 限制。TCP 依据一些额外信息选择它的 datagram 大小。

Identification 用于标识 fragments 属于同一个 datagram。host 维护一个自增计数器,每发生一个 IP datagram,计数器加一。

Time-to-Live 字段,或 TTL,设置 IP datagram 能经由路由器传递的最大次数。IP datagram 每经过一个路由器, TTL 减一,当 TTL 减至 0 时,该 IP datagram 被丢弃,并向发送方发送一个 ICMP 消息通知该情况。TTL 避免了 IP datagram 一直被困于网络中。

Protocol 字段包含表示 payload 部分数据的协议类型的数字,最常见的值是 17 (UDP) 和 6 (TCP)。

Header Checksum 字段仅计算 IPv4 header。IP 协议不保证 IPv4 datagram 携带的 payload 数据的完整性。

3. IPv6 Extension Headers

在 IPv6 中,特殊功能,诸如 IPv4 中作为可选项提供的功能,能通过添加 extension header 启用。时间戳,路由,fragmentation 和 extr-large packets 等功能就是如此提供的。
在这里插入图片描述

4. IP Forwarding

如果 host 的目的地与 host 直接相连 (e.g. point-to-point link) 或者在同一共享网络上 (e.g. Ethernet),IP datagram 的传输不需要路由器的转发,能直接递交到目的地。如果源主机和目的主机在不同的网络上,则 IP datagram 先递交给default 的路由器,然后由 default 路由器转发该 IP datagram 到目的主机。

当 IP 收到来自 network interface 的 IP datagram,它首先检测自己是否持有 IP datagram 的目的地址 IP 或者自己应该接收该 IP datagram,因为它是 IP broadcast 或 IP 加入了 Multicast address,如果是,向上递交 datagram 到 Protocol (IPv4) 或 Next header (IPv6) 指定的协议模块 (e.g. TCP 或 UDP);否则,(1) 如果 IP layer 被配置为路由器,它检查 routing table,或称为 forwarding table,转发该 IP datagram,(2) 如果 IP layer 没有被配置为路由器,则 datagram 被默默丢弃。在一些情况下 (e.g. (1) 情况下没有能转发下一跳路由器) ,会发送一个 ICMP 消息到IP datagram 的源地址以表示有错误发生。

4.1 Forwarding Table

通常 forwarding table 或 routing table 中的条目都包含以下信息字段,至少概念上是这样:

  • Destination:32位字段 (IPv6 为128位字段)。IP datagram 转发的最终目的地址,它可能是一个网络,也可能是一个主机 (全长 IP 地址)。全 0 表示 default route
  • Mask:对 IP datagram 中目的 IP 地址进行逐位 AND 操作,结果与 forwarding table 中条目的 Destination 进行比较以查找到正确条目。
  • Next-hop:32位 IPv4 地址或128位 IPv6 地址。表示下一跳的 IP 地址。
  • Interface:标识发送 IP datagram 到下一跳所使用的 network interface。

forwarding table 或 routing table 仅包含下一跳的 IP 地址。

4.2 IP Forwarding Actions

当主机或路由器的 IP layer 需要发送 IP datagram 到下一跳的路由器或主机时,它检查 IP datagram 中的目的 IP 地址,并采用 longest prefix match 算法选出最佳匹配。

  1. 使用 forwarding table 条目中 Mask 对 IP 目的地址进行逐位与操作;
  2. 将与操作的结果与该条目中的 Destination 进行比较,如果相同,则成功匹配;
  3. 在所有匹配成功的条目中选择 Mask 中 1 最多的条目,如果出现多个条目,由实现决定使用哪个;
  4. 如果没有找到匹配条目,则不会递交 datagram。如果 datagram 是本地生成的,则向应用返回一个 “host unreachable” 错误;在路由器上,则返回一个 ICMP 消息向源主机报告错误。
4.3 Example

在这里插入图片描述

5. Mobile IP在这里插入图片描述

6 Host Processing of IP Datagrams在这里插入图片描述

Strong host model:仅当包含在Destination IP Address 字段中的 IP 地址与 datagram 到达的 interface 上配置的 IP 地址之一匹配,datagram 被递交到本地协议栈。
Weak host model:在任意 interface 上到达的 datagram 携带的目的地址与任一本地的 IP 地址匹配,则 datagram 被递交到本地协议栈。

7. Attacks Involving IP

在 IP 协议上的攻击主要给予选项操作,或着利用专用代码的 bugs (例如 fragment 组装)。简单的攻击比如通过使 IP header 字段的一个或多个字段非法 (e.g. header 长度或版本号不正确),尝试让路由器崩溃或性能低下。通常,当今互联网的路由器忽略或去除 IP 选项,基础 packet 处理中的 bugs 已被修复。因此这类简单的攻击问题并不大。涉及 fragmentation 的攻击可以使用其他方法引起。

没有身份验证和加密,IP 欺骗攻击可能会发生。一些早期的攻击涉及伪造源 IP 地址。因为早期的访问控制机制依赖源 IP 地址,很多这样的系统被绕过了。欺骗有时和很多源路由选项结合。在一些情况下,远程攻击者的电脑好像是本地网络的主机 (甚至是相同的计算机) 请求某种服务。虽然 IP 地址欺骗当今依然是一个问题,也有几种方法来限制它造成的伤害,包括入口过滤,ISP 检查客户流量的源地址以确保 datagram 包含来自指定 IP 前缀的源地址。

8. Summary

本章先描述了 IPv4 和 IPv6 headers,讨论了一些相关功能例如 Internet checksum 和 fragmentation。IPv6 增加了地址的大小,通过使用拓展 header,提升了 IP 在 packets 中包含选项的方法,并移除了几个 IPv4 header 中不重要的字段。IPv4 和 IPv6 headers 不是直接兼容的,通常它们只共享一个 4-bit 的 Version 字段。因此,一些互联的 IPv4 和 IPv6 节点中需要某种等级的翻译。Dual-stack 主机实现了 IPv4 和 IPv6,但是使用时必须选择某个协议。

自创建以来,IP 就包含一个 header 字段来表示相关 datagram 的流量类型或服务分类。这一机制在这些年被重新定义以期望支持 Internet 中异化的服务。

IP 转发描述了 IP datagram 在单跳或多跳网络中传输的方法。IP 转发逐跳执行,除非有特殊情况。在 datagram 通过所有跳时,目的 IP 地址从不改变,但是链接层的封装和目的链接层地址在每一跳都会改变。主机和路由器使用 forwarding table 和 longest prefix match 算法来决定最佳匹配的转发条目,和沿转发路径的下一跳。在很多情况下,仅有默认路由组成的极简表就足够了,它们能平等地匹配所有可能的目的地。

使用一套特殊的安全和信号协议,Mobile IP 在移动节点 home address 和 care-of address 间建立安全的绑定。这些节点被用于和移动节点通讯,即使它不在家。基本功能包括通过合作的 home agent 进行隧道传输,但是这可能导致效率低下的路由。大量额外的特性用于支持一个路由优化特性–允许移动节点直接与其他远程节点进行交流,反过来也是如此。这需要移动节点对应的主机支持 MIPv6 和一个可选的特性,路由优化。正在进行工作致力于减少路由优化绑定更新过程中的时延。

主机模型,强或弱,影响 IP datagram 如何被处理。在强模型中,每个接口仅被允许接收和发送使用的地址与该接口相关联的 datagrams,相较而言,weak 模型约束更少。弱主机模型在一些不可能的情况下允许通讯,但这会导致更容易受到某种类型的攻击。主机模型也与主机如何选择通讯时使用的地址相关。早些时候,大部分主机仅有一个 IP 地址,所以决定相当直接。使用 IPv6 时,主机可能有好几个地址,且对于有好几个 network interface 的多宿主机,决定就不那么直接了,可能对路由产生重要的影响。对于源地址和目的地址,出现了一系列的地址选择算法。这些算法倾向于选择范围受限的永久的地址。

我们讨论了一些对 IP 协议的攻击。这些攻击总是涉及地址欺骗,包含改变路由行为的选项,尝试利用 IP 实现的 bug,尤其是在 fragmentation 方面。协议实现的 bugs 在现代操作系统中已经被修复了,大部分情况下企业的边界路由器是不启用选项。虽然欺骗仍然是一个问题,处理比如入口过滤有助于排除这个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值