IP(Internet Protocol)旨在让最终目标主机收到数据包,但是在这一过程中仅仅有 IP 是无法实现通信的。必须还有能够解析主机名称和 MAC 地址的功能,以及数据包在发送过程中异常情况处理的功能。此外,还会涉及 IP 必不可少的其它功能。 本章主要介绍作为 IP 的辅助和扩展规范的 DNS、ARP、ICMP 以及 DHCP 等协议。

第 5 章 IP 协议相关技术 - 图1

5.1 仅凭 IP 无法完成通信

  • 访问 Web 站点或发送、接收电子邮件使,通常输入的是 Web 网站的地址或电子邮件地址等应用层地址,而不是直接输入 IP 地址。,因此需要将应用层地址映射为 IP 地址,以进行通信 —— DNS
  • 实际上 IP 数据包在网络上传输依靠数据链路,而数据链路层也不直接使用 IP 地址,而是使用 MAC 地址进行传输,因此需要了解发送端的 MAC 地址
  • ……
  • 因此需要借助 IP 的辅助技术,包括:DNS, ARP, ICMP, ICMPv6, DHCP, NAT 等,还包括:IP 隧道、IP 多播、IP 任播、质量控制(QoS)以及网络拥塞的显示通知和 Mobile IP 技术

5.2 DNS

  • 功能:将主机名(域名)转换为 IP 地址(管理主机名和 IP 地址之间的映射关系

    • DNS 系统中主机的管理机构负责维护一个用来表示组织内部主机名和 IP 地址之间对应关系的数据库。
    • 当用户输入主机名(域名),DNS 会自动检索那个注册了主机名和 IP 地址的数据库,并迅速定位对应的 IP 地址
    • 如果主机名和 IP 地址需要进行变更时,也只需在组织内部进行处理,而不必向其他机构申请 or 报告
  • 域名

    • 定义:域名是为了识别主机名称和组织机构名称的一种具有分层的名称,eg. “kusa.ac.jp”
    • 域名的分层:

image.png

  • 域名服务器:管理域名的主机和相应的软件,可以管理所在分层的域的相关信息。其所管理的分层叫做 ZONE
    • 根域名服务器:根域名服务器注册着根一下第一层域名服务器的 IP 地址。若要新增或修改第一层域名,就要在根域名服务器中进行追加或变更
    • 为了提高容灾能力,一般设置两个以上的域名服务器,避免因为一个域名服务器故障,导致该域的 DNS 查询无法正常工作
    • 所有的域名服务器都必须注册根域名服务器的 IP 地址,因为 DNS 根据 IP 地址进行检索时需要从根域名服务器开始按顺序进行
  • 解析器:进行 DNS 查询的主机或软件。PC 属于解析器
  • DNS 查询
    • 例:kusa,co.jp 域中的计算机想要访问网站 www.itef.org

image.png

  • 缓存:解析器和域名服务器会将最新了解到的信息暂时保存在缓存中,以减少每次查询时的性能消耗

5.3 ARP

  • ARP 的功能:是一种解决地址问题(IP 地址到下一网络设备 MAC 地址的转换)的协议,可以动态地进行地址解析。以目标 IP 地址为线索,用来定位下一个应该接收数据分包的网络设备对应的 MAC 地址。

    • 若目标主机不在同一链路上,则通过 ARP 查找下一跳路由器的 MAC 地址
    • ARP 只适用于 IPv4,IPv6 中用 ICMPv6 代替 ARP 发送邻居探索消息
  • ARP 的工作机制

    • ARP 借助 ARP 请求ARP 响应这两种类型的包来确定 MAC 地址
    • 工作机制:
      • 主机 A 想获得主机 B 的 MAC 地址,广播发送一个 ARP 请求包,包含主机 B 的 IP 地址(也有主机 A 的 IP 和 MAC 地址)
      • 同一链路的所有主机和路由器接收广播包,若 ARP 请求包的目标 IP 地址与自身一致,则填入自身的 MAC 地址,发送 ARP 相应包给主机 A

image.png

  • MAC 地址缓存:防止 ARP 包在网络上大量广播,造成不必要的网络流量。是有期限的
    • 接收 ARP 请求的目标主机缓存源主机的 MAC 地址
    • 接收 ARP 响应的源主机缓存目标主机的 MAC 地址
  • ARP 包格式

image.png

  • IP 地址与 MAC 地址缺一不可

  • 代理 ARP:通常 ARP 包会被路由器隔离,但采用代理 ARP (Proxy ARP) 的路由器可以将 ARP 请求转发给邻近的网段,使得两个网段的节点之间可以像在同一个网段中一样通信

RARP

RARP 是 ARP 的反转,即是从 MAC 地址定位 IP 地址的一种协议
image.png

5.4 ICMP

  • ICMP 协议的功能:确认 IP 包是否送达目标地址,通知在发送过程当中 IP 包被废弃的具体原因,改善网络设置等。可以获得网络是否正常、设置是否有误以及设备有何异常等信息,从而便于进行网络上的问题诊断
  • 但 ICMP 是基于尽力而为的 IP 上进行的,因此无法保证服务质量

image.png

  • ICMP 消息分为两类:

    • 通知出错原因的错误消息
    • 用于诊断的查询消息 | ICMP 消息类型 | 内容 | | | —- | —- | —- | | 0 | 回送应答 | | | 3 | 目标不可达 | IP 路由器无法将 IP 数据包发送给目标地址时,返回发送端主机目标不可达的 ICMP 消息,并包含不可达的具体原因(错误号) | | 4 | 原点抑制 | | | 5 | 重定向或改变路由 | 若路由器发现发送端主机使用了次优的路径发送数据,而路由器有更好的路由信息,则返回一个 ICMP 重定向消息给这个主机,包含了最合适的路由信息和源数据 | | 8 | 回送请求 | | | 9 | 路由器公告 | | | 10 | 路由器请求 | 用于发现与自己相连网络中的路由器 | | 11 | 超时 | | | 17 | 地址子网请求 | 用于主机或路由器想要了解子网掩码的情况 | | 18 | 地址子网应答 | |
  • ICMP 回送消息(类型0、8)

image.png

ICMPv6

  • 在 IPv4 中 ICMP 仅作为辅助作用,即使没有 ICMP 仍能实现 IP 通信,但在 IPv6 中,如果没有 ICMPv6 就没法正常通信。
  • ICMPv6 的邻居探索消息
    • 融合了 IPv4 的 ARP(IPv6 中 ICMP 代替 ARP 实现从 IP 地址定位 MAC 地址)、ICMP 的重定向以及 ICMP 路由器选择消息、自动设置IP 地址等功能于一体
    • 类型 135 的邻居请求消息用于查询 IPv6 地址与 MAC 地址的对应关系,有多播实现传输
    • 类型 136 的邻居宣告信息返回查询到的 MAC 地址

image.png

  • ICMPv6 消息分为两类:
    • 错误消息
    • 信息消息

5.5 DHCP(Dynamic Host Configuration Protocol)

  • 功能:实现自动设置 IP 地址、统一管理 IP 地址分配
    • DHCP 让即插即用成为可能,计算机只要连接到网络,就可以进行 TCP/IP 通信
    • DHCP 在 IPv4、IPv6 中都可使用

image.png

  • DHCP 的工作机制
    • 首先要架设一台 DHCP 服务器(很多使用用该网段的路由器充当)
    • 将 DHCP 所要分配的 IP 地址,以及相应的子网掩码、路由控制信息、DNS 服务器的地址等设置到 DHCP 服务器上
    • 从 DHCP 中获取 IP 地址
      • DHCP 发现包,DHCP 提供包
      • DHCP 请求包,DHCP 提供包

image.png

  • 为了检查所要分配的 IP 地址以及已经分配了的 IP 地址是否可用,

    • DHCP 服务器:在分配 IP 地址前发送 ICMP 回送请求包,确认没有返回应答(即该 IP 地址未被分配)
    • DHCP 客户端:针对从 DHCP 获得的 IP 地址发送 ARP 请求包,确认没有返回应答(即该 IP 地址未与其它 MAC 地址绑定)
  • DHCP 中继代理

    • 只有一个网段时(eg. 家庭网络),由路由器充当 DHCP 服务器的角色
    • 有多个网段的大规模网络环境中,需要要 DHCP 中继代理,使得对不同网段的 IP 地址分配也可以由一个 DHCP 服务器统一管理和运维。在每个网段设置一个 DHCP 中继代理

image.png

5.6 NAT

  • NAT 的功能:NAT 是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术(即转换 IP 地址)
    • 是为 IPv4 中面临地址不够用的情况提出的技术,在 IPv6 中为了提高网络安全也在使用 NAT 技术
  • 通常人们提到的 NAT,多指 NAPT(也称 IP 伪装 or Milti NAT),除了 IP 地址转换以为,还能进行 TCP、UDP 端口号的转换

  • NAT 的工作机制

    • NAT 路由器内部有一张自动生成的用来转换私有地址和全局 IP 地址的转换表,私有网络与外部网络通信时,先转换 IP 地址
    • 当私有网络内有多台机器同时与外部通信时,,采用 IP 地址与端口号一起转换的方式,即 NAPT ,避免全局 IP 地址不够用的情况

image.png
image.png

NAT-PT / NAPT-PT

  • NAT-PT: 用来翻译 IP 地址,将 IPv6 的首部转换为 IPv4 的首部,使得只有 IPv6 地址的主机也能与 IPv4 地址的其它主机通信
  • NAPT-PT:翻译 IP 首部与端口号

image.png

  • NAT/NAPT 的潜在问题(由于依赖转换表导致的问题):

    • 无法从 NAT 的外部向内部服务器建立连接
    • 转换表的生成与转换操作都会产生一定的开销
    • 通信过程中一旦 NAT 遇到异常需重新启动,所有的 TCP 连接都将被重置
    • 即使备至两台 NAT 做容灾备份,TCP 连接还是会被断开
  • 解决办法:

    • ① 改用 IPv6:IPv6 地址充足,可以给每个设备都配置一个全局 IP 地址,也就不必再使用 NAT 了
    • NAT 穿越:“NAT 穿越”即使得 NAT 外侧与内侧可以进行通信,从而解决“无法从 NAT 的外部向内部服务器建立连接”的问题

5.7 IP 隧道

  • 功能:使得不同网络之间正常通信,eg. 两个 IPv6 网络之间夹着 IPv4 网络,就需要借助 IP 隧道进行通信
    • 下图所示的情况,IP 隧道可以将从网络 A 发来的 IPv6 的包统合为一个数据,再为之追加一个 IPv4 的首部以后转发给网络 C

image.png

  • 即,“IP 隧道”,在网络层的首部后面继续追加网络层首部

image.png

  • IP 隧道的应用
    • Mobile IP
    • 多播包的传播:多播隧道
    • IPv4 网络中传送 IPv6 的包(6to4)
    • IPv5 网络中传送 IPv4 的包
    • 数据链路帧通过 IP 包发送(L2TP)

5.8 其它 IP 相关技术

5.8.1 IP 多播相关技术

  • MLD 技术(多播监听发现):多播通信中确认是否有接收端。是 IPv4 中 IGMP 和 IPv6 中 ICMPv6 的重要功能之一。主要有两个作用
    • 向路由器表明想要接收多播消息(并通知想接收多播的地址)
    • IGMP(MLD)探听:向交换集线器通知想要接收多播的地址,过滤多播帧,不向无关端口发送,减轻不接收多播消息的端口的负担

image.png

5.8.2 IP 任播

  • IP 任播主要用于 110 报警电话 和 119 消防电话系统,这两个号码的接受电话不止一个,可以拨打到一个区域管辖范围内的所有公安或消防部门
  • 功能:IP 任播为提供同一种服务的服务器配置同一个 IP 地址,并与最近的服务器进行通信。适用于 IPv4 和 IPv6

image.png

  • 问题:无法将多个包发送给同一个主机,这在面向无连接的 UDP 发出请求而无需应答的情况下没有问题,但对于面向连接的 TCP 通信或在 UDP 中要求通过连续的多个包进行通信的情况下,就显得力不从心

5.8.3 通信质量控制

  • 通信质量包括带宽、延迟、时延波动等
  • 控制通信质量的方法:RSVP 技术,包含两个内容:
    • IntServ:提供点对点的详细优先控制
      • IntServ 是针对特定应用(指源 IP 地址、目标 IP 地址、源端口、目标端口以及协议号五项完全内容一致)之间的通信进行详细的质量控制的一种机制
      • 只在必要时才在路由器上进行设置,也称“流量设置”
      • 每次通信都要设置一次流量设置,路由器也必须针对不同流量进行控制,太复杂,实施应用困难,且可能影响网络后续使用,实用性、灵活性较低
    • DiffServ:提供相对较粗粒度的优先控制
      • DiffServ 是针对特点的网络进行粗粒度的通信控制
      • 进行 DiffServ 质量控制的网络称为 DiffServ 域
      • 对期望被优先处理的包设置优先值
      • 根据供应商的合约要求以粗粒度进行质量控制,机制相对简单,实用性较好

5.8.4 显示拥塞通知 ECN

  • ECN:在 IP 层增加的显示拥塞通知机制,使得因拥堵造成数据包损坏之前减少数据包发送数量

5.8.5 Mobile IP

  • 功能:使得主机所连接的子网 IP 发生变化时,主机 IP 地址仍保持不变。应用不需要做任何改动,即使是在 IP 地址发生变化的情况下,通信也能继续

image.png