因特网 TCP/IP协议 IP路由技术 Internet接入技术 Internet服务
TCP/IP协议 概述 TCP/IP协议是以套件的形式推出的,它包括一组相互补充、相互配合的协议,又称TCP/IP协议簇。TCP/IP协议套件包括TCP(传输控制协议)、IP(互联网协议)和其它的协议 TCP/IP协议簇可以分为网络接口、网间网层、传输层和应用层等4个层次 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 SMTP、FTP、HTTP、Telnet SNMP、DNS(应用层) TCP、UDP(传输层) ICMP、IP、ARP(网络层) 数据链路层(网间网层)
TCP/IP协议 几个重要的协议 IP协议 负责主机之间的通信,有3个功能: IP协议不包含错误检测或错误恢复的编码,属于不可靠协议 对从网络接口收到的数据报,首先检查其合理性,然后进行寻径 处理网间网差错与控制报文,处理路径、流控、拥塞等问题 IP协议不包含错误检测或错误恢复的编码,属于不可靠协议 IP协议是无连接的,不进行“握手”操作 IP协议的主要功能是为数据的发送寻找一条通向目的地的路径。
TCP/IP协议 几个重要的协议 TCP协议 应用层协议 提供端到端的通信服务,功能为: 格式化信息流 提供可靠传输 解决不同应用程序的识别问题 应用层协议 依赖于面向连接的TCP:TELNET、SMTP、FTP等 依赖于无连接的UDP:TFTP、RPC等 依赖于TCP和UDP的协议:DNS、COMT等
网际协议 IP 及其配套协议 各种应用层协议 应用层 (TELNET, FTP, SMTP 等) 运输层 TCP, UDP ICMP IGMP 网际层 IP RARP ARP 与各种网络接口 网络接口层 物理硬件
TCP/IP协议 常见的TCP/IP应用的标准端口 名称 说明 端口 DOMAIN 域名协议 53 FTP 文件传输协议 20,21 FINGER Finger协议 79 HTTP 超文本传输协议 80 POP 邮局协议 110 SMTP 简单邮件传输协议 25 SNTP 简单网络管理协议 161,162 TELNET 远程访问终端协议 23
IP地址 概念 IP地址共32位,每8位为1节,共由4节组成,每节用一个10进制数字表示,中间用“.”隔开,称为“点分十进制记法”,目前正在开发16节IP地址 我们把整个因特网看成为一个单一的、抽象的网络。IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是惟一的 32 bit 的标识符。
IP 地址的编址方法 分类的 IP 地址。这是最基本的编址方法,在 1981 年就通过了相应的标准协议。 子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950]在 1985 年通过。 构成超网。这是比较新的无分类编址方法。1993 年提出后很快就得到推广应用。
分类 IP 地址 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。 两级的 IP 地址可以记为: IP 地址 ::= { <网络号>, <主机号>} ::= 代表“定义为”
IP 地址中的网络号字段和主机号字段 A 类地址 net-id 8 bit host-id 24 bit B 类地址 1 net-id net-id 8 bit host-id 24 bit B 类地址 1 net-id 16 bit host-id 16 bit C 类地址 1 1 net-id 24 bit host-id 8 bit D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 0 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 A 类地址的网络号字段 net-id 为 1 字节 A 类地址 net-id 8 bit net-id 8 bit host-id 24 bit B 类地址 1 net-id 16 bit host-id 16 bit C 类地址 1 1 net-id 24 bit host-id 8 bit A 类地址的网络号字段 net-id 为 1 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 0 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 B 类地址的网络号字段 net-id 为 2 字节 A 类地址 net-id 8 bit net-id 8 bit host-id 24 bit B 类地址 1 net-id 16 bit host-id 16 bit C 类地址 1 1 net-id 24 bit host-id 8 bit B 类地址的网络号字段 net-id 为 2 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 0 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 C 类地址的网络号字段 net-id 为 3 字节 A 类地址 net-id 8 bit net-id 8 bit host-id 24 bit B 类地址 1 net-id 16 bit host-id 16 bit C 类地址 1 1 net-id 24 bit host-id 8 bit C 类地址的网络号字段 net-id 为 3 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 0 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 A 类地址的主机号字段 host-id 为 3 字节 A 类地址 net-id 8 bit net-id 8 bit host-id 24 bit B 类地址 1 net-id 16 bit host-id 16 bit C 类地址 1 1 net-id 24 bit host-id 8 bit A 类地址的主机号字段 host-id 为 3 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 0 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 B 类地址的主机号字段 host-id 为 2 字节 A 类地址 net-id 8 bit net-id 8 bit host-id 24 bit B 类地址 1 net-id 16 bit host-id 16 bit C 类地址 1 1 net-id 24 bit host-id 8 bit B 类地址的主机号字段 host-id 为 2 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 0 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 C 类地址的主机号字段 host-id 为 1 字节 A 类地址 net-id 8 bit net-id 8 bit host-id 24 bit B 类地址 1 net-id 16 bit host-id 16 bit C 类地址 1 1 net-id 24 bit host-id 8 bit C 类地址的主机号字段 host-id 为 1 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 0 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 D 类地址是多播地址 A 类地址 net-id 8 bit host-id 24 bit B 类地址 net-id 8 bit host-id 24 bit B 类地址 1 net-id 16 bit D 类地址是多播地址 host-id 16 bit C 类地址 1 1 net-id 24 bit host-id 8 bit D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 0 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 E 类地址保留为今后使用 A 类地址 net-id 8 bit host-id 24 bit net-id 8 bit host-id 24 bit B 类地址 1 net-id 16 bit E 类地址保留为今后使用 host-id 16 bit C 类地址 1 1 net-id 24 bit host-id 8 bit D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 0 保 留 为 今 后 使 用
路由器转发分组的步骤 先按所要找的 IP 地址中的网络号 net-id 把目的网络找到。 当分组到达目的网络后,再利用主机号host-id 将数据报直接交付给目的主机。 按照整数字节划分 net-id 字段和 host-id 字段,就可以使路由器在收到一个分组时能够更快地将地址中的网络号提取出来。
点分十进制记法 10000000000010110000001100011111 机器中存放的 IP 地址 是 32 bit 二进制代码 10000000 00001011 00000011 00011111 每隔 8 bit 插入一个空格 能够提高可读性 将每 8 bit 的二进制数 转换为十进制数 128 11 3 31 采用点分十进制记法 则进一步提高可读性 128.11.3.31
常用的三种类别的 IP 地址 IP 地址的使用范围 网络 最大 第一个 最后一个 每个网络 类别 网络数 可用的 可用的 中最大的 网络 最大 第一个 最后一个 每个网络 类别 网络数 可用的 可用的 中最大的 网络号 网络号 主机数 A 126 (27 – 2) 1 126 16,777,214 B 16,384 (214) 128.0 191.255 65,534 C 2,097,152 (221) 192.0.0 223.255.255 254
IP 地址的一些重要特点 (1) IP 地址是一种分等级的地址结构。分两个等级的好处是: 第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。 第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
IP 地址的一些重要特点 (2) 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多接口主机(multihomed host)。 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
IP 地址的一些重要特点 (3) 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
图中的网络号就是 IP 地址中的 net-id 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
图中的网络号就是 IP 地址中的 net-id 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
图中的网络号就是 IP 地址中的 net-id 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
图中的网络号就是 IP 地址中的 net-id 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
路由器总是具有两个或两个以上的 IP 地址。 路由器的每一个接口都有一个 不同网络号的 IP 地址。 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
路由器总是具有两个或两个以上的 IP 地址。 路由器的每一个接口都有一个 不同网络号的 IP 地址。 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
路由器总是具有两个或两个以上的 IP 地址。 路由器的每一个接口都有一个 不同网络号的 IP 地址。 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
互联网中的 IP 地址 两个路由器直接相连的接口处,可指明也可不指明 IP 地址。如指明 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。现在常不指明 IP 地址。 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
IP 地址与硬件地址 首部 应用层数据 网络层及以上 使用 IP 地址 IP 地址 TCP 报文 首部 链路层及以下 使用硬件地址 硬件地址 尾部 MAC 帧
查找路由表 查找路由表 通信的路径 H1→经过 R1 转发→再经过 R2 转发→H2 主机 H1 主机 H2 IP1 硬件地址 IP2 HA1 HA3 HA4 HA5 HA6 HA2 局域网 局域网 局域网 通信的路径 H1→经过 R1 转发→再经过 R2 转发→H2
从协议栈的层次上看数据的流动 IP 层上的互联网 主机 H1 主机 H2 IP1 硬件地址 IP2 路由器 R1 路由器 R2 HA1 局域网 局域网 局域网 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
从虚拟的 IP 层上看 IP 数据报的流动 IP 层上的互联网 主机 H1 主机 H2 IP1 硬件地址 IP2 路由器 R1 路由器 R2 HA1 HA3 HA4 HA5 HA6 HA2 局域网 局域网 局域网 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
地址解析协议 ARP 和 逆地址解析协议 RARP 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。 每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
主机 A 广播发送 ARP 请求分组 主机 B 向 A 发送 ARP 响应分组 我是 209.0.0.5,硬件地址是 00-00-C0-15-AD-18 我想知道主机 209.0.0.6 的硬件地址 ARP 请求 ARP 请求 ARP 请求 ARP 请求 209.0.0.6 209.0.0.5 X Y Z A B 00-00-C0-15-AD-18 主机 B 向 A 发送 ARP 响应分组 我是 209.0.0.6 硬件地址是 08-00-2B-00-EE-0A ARP 响应 209.0.0.6 209.0.0.5 X Y Z A B 00-00-C0-15-AD-18 08-00-2B-00-EE-0A
ARP 高速缓存的作用 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。
应当注意的问题 ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
应当注意的问题 从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。
不直接 使用硬件地址进行通信? 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。 连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
逆地址解析协议 RARP 逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP 地址。
IP 数据报的格式 * 一个 IP 数据报由首部和数据两部分组成。 在首部的固定部分的后面是一些可选字段,其长度是可变的。
比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 首 部 版 本 首部长度 服 务 类 型 总 长 度 固 定 部 分 标 识 标志 片 偏 移 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 传送 首 部 数 据 部 分 IP 数据报
比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 固 定 部 分 版 本 首部长度 服 务 类 型 总 长 度 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 传送 首 部 数 据 部 分 IP 数据报
比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 版 本 首部长度 服 务 类 型 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 传送 首 部 数 据 部 分 IP 数据报
版本——占 4 bit,指IP协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 比特 1 2 3 4 5 6 7 优 先 级 D 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 版本——占 4 bit,指IP协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 版 本 首部长度 服 务 类 型 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
首部长度——占 4 bit,可表示的最大数值 是 15 个单位(一个单位为 4 字节) 因此 IP 的首部长度的最大值是60字节。 比特 1 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 版 本 首部长度——占 4 bit,可表示的最大数值 是 15 个单位(一个单位为 4 字节) 因此 IP 的首部长度的最大值是60字节。 首部长度 服 务 类 型 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
服务类型——占 8 bit,用来获得更好的服务 比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 版 本 服务类型——占 8 bit,用来获得更好的服务 这个字段以前一直没有被人们使用 首部长度 服 务 类 型 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
总长度——占 16 bit,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节。 比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 总长度——占 16 bit,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节。 总长度必须不超过最大传送单元 MTU。 版 本 首部长度 服 务 类 型 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
标识(identification) 占 16 bit, 比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 版 本 首部长度 服 务 类 型 总 长 度 固 定 部 分 标识(identification) 占 16 bit, 它是一个计数器,用来产生数据报的标识。 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
标识(identification) 占 16 bit, 比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 版 本 首部长度 服 务 类 型 总 长 度 固 定 部 分 标识(identification) 占 16 bit, 它是一个计数器,用来产生数据报的标识。 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
片偏移(12 bit)指出:较长的分组在分片后 比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 版 本 首部长度 服 务 类 型 总 长 度 固 定 部 分 片偏移(12 bit)指出:较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
IP 数据报分片的举例 数据部分共 3800 字节 需分片的 数据报 偏移 = 0/8 = 0 首部 字节 0 1400 2800 3799 首部 1 首部 2 首部 3 字节 0 1399 1400 2799 2800 3799 数据报片 1 数据报片 2 数据报片 3 偏移 = 0/8 = 0 偏移 = 1400/8 = 175 偏移 = 2800/8 = 350
生存时间(8 bit)记为 TTL (Time To Live) 比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 版 本 首部长度 服 务 类 型 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生存时间(8 bit)记为 TTL (Time To Live) 数据报在网络中的寿命,其单位为秒。 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
协议(8 bit)字段指出此数据报携带的数据使用何种协议 以便目的主机的 IP 层将数据部分上交给哪个处理过程 比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 版 本 首部长度 服 务 类 型 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 协议(8 bit)字段指出此数据报携带的数据使用何种协议 以便目的主机的 IP 层将数据部分上交给哪个处理过程 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
运输层 TCP UDP ICMP IGMP OSPF 网络层 首部 数 据 部 分 协议字段指出应将数据 部分交给哪一个进程 IP 数据报
首部检验和(16 bit)字段只检验数据报的首部 不包括数据部分。 这里不采用 CRC 检验码而采用简单的计算方法。 比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 版 本 首部长度 服 务 类 型 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 首部检验和(16 bit)字段只检验数据报的首部 不包括数据部分。 这里不采用 CRC 检验码而采用简单的计算方法。 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
发送端 接收端 字 1 字 1 16 bit 16 bit 数 据 报 首 部 字 2 字 2 16 bit 16 bit … … 置为全 0 检验和 16 bit 检验和 … … 字 n 字 n 16 bit 16 bit 16 bit 反码算术 运算求和 16 bit 反码算术 运算求和 取反码 IP 数据报 取反码 16 bit 检验和 16 bit 结果 若结果为 0, 则保留; 否则,丢弃该数据报 数据部分 不参与检验和的计算 数据部分
源地址和目的地址都各占 4 字节 比特 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 1 2 3 4 5 6 7 优 先 级 D T R C 未用 比特 4 8 16 19 24 31 版 本 首部长度 服 务 类 型 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源地址和目的地址都各占 4 字节 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
IP 数据报首部的可变部分 IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。 选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。 增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。 实际上这些选项很少被使用。
IP 层转发分组的流程 路由器和结点交换机有些区别: 路由器是用来连接不同的网络,而结点交换机只是在一个特定的网络中工作。 路由器是专门用来转发分组的,而结点交换机还可接上许多个主机。 路由器使用统一的 IP 协议,而结点交换机使用所在广域网的特定协议。 路由器根据目的网络地址找出下一个路由器,而结点交换机则根据目的站所接入的交换机号找出下一跳(即下一个结点交换机)。
在路由表中,对每一条路由,最主要的是 (目的网络地址,下一跳地址) 路由器 R2 的路由表 10.0.0.4 20.0.0.7 20.0.0.9 30.0.0.2 30.0.0.1 40.0.0.4 R1 R2 R3 网 1 10.0.0.0 网 2 20.0.0.0 网 3 30.0.0.0 网 4 40.0.0.0 1 路由器 R2 的路由表 目的主机所在的网络 下一跳路由器的地址 20.0.0.0 直接交付,接口 0 30.0.0.0 直接交付,接口 1 10.0.0.0 20.0.0.7 40.0.0.0 30.0.0.1 10.0.0.4 20.0.0.7 20.0.0.9 30.0.0.2 30.0.0.1 40.0.0.4 R1 R2 R3 链路 1 链路 2 链路 3 链路 4
特定主机路由 这种路由是为特定的目的主机指明一个路由。 采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
分组转发算法 (1) 从数据报的首部提取目的站的 IP 地址 D, 得出目的网络地址为 N。 (2) 若网络 N 与此路由器直接相连,则直接将数据报交付给目的站 D;否则是间接交付,执行(3)。 (3) 若路由表中有目的地址为 D 的特定主机路由,则将数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。 (4) 若路由表中有到达网络 N 的路由,则将数据报传送给路由表指明的下一跳路由器;否则,执行(5)。 (5) 若路由表中有一个默认路由,则将数据报传送给路由表中所指明的默认路由器;否则,执行(6)。 (6) 报告转发分组出错。
必须强调指出 IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。 网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。
划分子网和构造超网 划分子网 1. 从两级 IP 地址到三级 IP 地址 在 ARPANET 的早期,IP 地址的设计确实不够合理。 划分子网和构造超网 划分子网 1. 从两级 IP 地址到三级 IP 地址 在 ARPANET 的早期,IP 地址的设计确实不够合理。 IP 地址空间的利用率有时很低。 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。 两级的 IP 地址不够灵活。
三级的 IP 地址 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。 这种做法叫作划分子网(subnetting) 。划分子网已成为因特网的正式标准协议。
划分子网的基本思路 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。 从主机号借用若干个比特作为子网号 subnet-id, 而主机号 host-id 也就相应减少了若干个比特。 IP地址 ::= {<网络号>, <子网号>, <主机号>}
划分子网的基本思路(续) 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。 最后就将 IP 数据报直接交付给目的主机。
一个未划分子网的 B 类网络145.13.0.0 网络 145.13.0.0 … … … 我的网络地址 是 145.13.0.0 145.13.3.101 145.13.3.11 … 145.13.7.34 R2 145.13.3.10 145.13.7.35 网络 145.13.0.0 R1 … R3 145.13.7.56 … 所有到网络 145.13.0.0的分组均到达此路由器 145.13.21.23 145.13.21.8 145.13.21.9
划分为三个子网后对外仍是一个网络 网络 145.13.0.0 所有到达网络 145.13.0.0 的分组均到达 此路由器 145.13.3.101 145.13.3.11 145.13.7.34 145.13.3.10 … 145.13.7.35 R2 子网 145.13.3.0 子网 145.13.7.0 … 145.13.7.56 R1 R3 子网 145.13.21.0 … 145.13.21.23 网络 145.13.0.0 145.13.21.9 145.13.21.8
划分子网后变成了三级结构 当没有划分子网时,IP 地址是两级结构,地址的网络号字段也就是 IP 地址的“因特网部分”,而主机号字段是 IP 地址的“本地部分”。 划分子网后 IP 地址就变成了三级结构。划分子网只是将 IP 地址的本地部分进行再划分,而不改变 IP 地址的因特网部分。
2. 子网掩码 从一个 I P数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网的划分。 2. 子网掩码 从一个 I P数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网的划分。 使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。
IP 地址的各字段和子网掩码 因特网部分 本地部分 两级 IP 地址 网络号 net-id 主机号 host-id 因特网部分 本地部分 subnet-id 子网号 host-id 网络号 主机号 子网掩码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 划分子网时 的网络地址 net-id subnet-id host-id 为全 0
(IP 地址) AND (子网掩码) = 网络地址 因特网部分 本地部分 两级 IP 地址 网络号 net-id 主机号 host-id 因特网部分 本地部分 三级 IP 地址 net-id host-id subnet-id AND 网络号 子网号 主机号 子网掩码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 划分子网时 的网络地址 net-id subnet-id host-id 为全 0
A 类、B 类和 C 类 IP 地址的默认子网掩码 A 类 地 址 网络地址 net-id host-id 为全 0 默认子网掩码 255.0.0.0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B 类 地 址 网络地址 net-id host-id 为全 0 默认子网掩码 255.255.0.0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C 类 地 址 网络地址 net-id host-id 为全 0 默认子网掩码 255.255.255.0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
使用子网掩码的分组转发过程 在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事。 因此分组转发的算法也必须做相应的改动。
划分子网后分组的转发举例 R1 的路由表(未给出默认路由器) 子网2:网络地址 128.30.33.128 128.30.33.13 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 H1 128.30.33.1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 128.30.33.130 1 128.30.33.129 H2 128.30.33.138 R2 1 128.30.36.2 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H3 128.30.36.12
主机 H1 要发送分组给 H2 因此 H1 首先检查主机 128.30.33.138 是否连接在本网络上 要发送的分组的目的 IP 地址:128.30.33.138 R1 的路由表(未给出默认路由器) 128.30.33.13 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 H1 128.30.33.1 R1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 128.30.33.130 1 128.30.33.129 128.30.33.138 R2 H2 请注意:H1 并不知道 H2 连接在哪一个网络上。 H1 仅仅知道 H2 的 IP 地址是 128.30.33.138 因此 H1 首先检查主机 128.30.33.138 是否连接在本网络上 如果是,则直接交付; 否则,就送交路由器 R1,并逐项查找路由表。 1 128.30.36.2 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H3 128.30.36.12
主机 H1 首先将 本子网的子网掩码 255. 255. 255. 128 与分组的 IP 地址 128. 30. 33 主机 H1 首先将 本子网的子网掩码 255.255.255.128 与分组的 IP 地址 128.30.33.138 逐比特相“与”(AND 操作) R1 的路由表(未给出默认路由器) 255.255.255.128 AND 128.30.33.138 的计算 128.30.33.13 H1 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 255 就是二进制的全 1,因此 255 AND xyz = xyz, 这里只需计算最后的 128 AND 138 即可。 128.30.33.1 R1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 128 → 10000000 138 → 10001010 128.30.33.130 1 128.30.33.129 H2 逐比特 AND 操作后:10000000 → 128 128.30.33.138 R2 1 128.30.36.2 255.255.255.128 128. 30. 33.138 128. 30. 33.128 逐比特 AND 操作 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H1 的网络地址 H3 128.30.36.12
因此 H1 必须把分组传送到路由器 R1 然后逐项查找路由表 128.30.33.13 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 H1 128.30.33.1 R1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 128.30.33.130 1 128.30.33.129 H2 128.30.33.138 R2 1 128.30.36.2 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H3 128.30.36.12
路由器 R1 收到分组后就用路由表中第 1 个项目的 子网掩码和 128.30.33.138 逐比特 AND 操作 R1 收到的分组的目的 IP 地址:128.30.33.138 R1 的路由表(未给出默认路由器) 128.30.33.13 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 H1 128.30.33.1 R1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 不一致 128.30.33.130 1 128.30.33.129 R2 H2 128.30.33.138 255.255.255.128 AND 128.30.33.138 = 128.30.33.128 不匹配! (因为128.30.33.128 与路由表中的 128.30.33.0 不一致) 1 128.30.36.2 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H3 128.30.36.12
路由器 R1 再用路由表中第 2 个项目的 子网掩码和 128.30.33.138 逐比特 AND 操作 R1 收到的分组的目的 IP 地址:128.30.33.138 R1 的路由表(未给出默认路由器) 128.30.33.13 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 H1 一致! 128.30.33.1 R1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 128.30.33.130 1 128.30.33.129 128.30.33.138 R2 H2 255.255.255.128 AND 128.30.33.138 = 128.30.33.128 匹配! 这表明子网 2 就是收到的分组所要寻找的目的网络 1 128.30.36.2 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H3 128.30.36.12
在划分子网的情况下路由器转发分组的算法 (1) 从收到的分组的首部提取目的 IP 地址 D。 相应的网络地址匹配。若匹配,则将分组直接交付。 否则就是间接交付,执行(3)。 (3) 若路由表中有目的地址为 D 的特定主机路由,则将 分组传送给指明的下一跳路由器;否则,执行(4)。 (4) 对路由表中的每一行的子网掩码和 D 逐比特相“与”, 若其结果与该行的目的网络地址匹配,则将分组传送 给该行指明的下一跳路由器;否则,执行(5)。 (5) 若路由表中有一个默认路由,则将分组传送给路由表 中所指明的默认路由器;否则,执行(6)。 (6) 报告转发分组出错。
无分类编址 CIDR 网络前缀 划分子网在一定程度上缓解了因特网在发展中遇到的困难。然而在 1992 年因特网仍然面临三个必须尽早解决的问题,这就是: B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕! 因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。 整个 IPv4 的地址空间最终将全部耗尽。
IP 编址问题的演进 1987 年,RFC 1009 就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。 在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
CIDR 最主要的特点 CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。 CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。 IP 地址从三级编址(使用子网掩码)又回到了两级编址。
无分类的两级编址 无分类的两级编址的记法是: IP地址 ::= {<网络前缀>, <主机号>} CIDR 还使用“斜线记法”(slash notation),它又称为CIDR记法,即在IP地址后面加上一个斜线“/”,然后写上网络前缀所占的比特数(这个数值对应于三级编址中子网掩码中比特 1 的个数)。 CIDR 将网络前缀都相同的连续的 IP 地址组成“CIDR地址块”。
CIDR 地址块 128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的比特数,所以主机号的比特数是 12)。 这个地址块的起始地址是 128.14.32.0。 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。 128.14.32.0/20 地址块的最小地址:128.14.32.0 128.14.32.0/20 地址块的最大地址:128.14.32.255 全 0 和全 1 的主机号地址一般不使用。
128.14.32.0/20 表示的地址(212 个地址) 最小地址 10000000 00001110 00100000 00000000 10000000 00001110 00100000 00000001 10000000 00001110 00100000 00000010 10000000 00001110 00100000 00000011 10000000 00001110 00100000 00000100 10000000 00001110 00100000 00000101 10000000 00001110 00111111 11111011 10000000 00001110 00111111 11111100 10000000 00001110 00111111 11111101 10000000 00001110 00111111 11111110 10000000 00001110 00111111 11111111 所有地址 的 20 bit 前缀都是 一样的 最大地址
路由聚合(route aggregation) 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。 路由聚合也称为构成超网(supernetting)。 CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。
CIDR 记法的其他形式 10.0.0.0/10 可简写为 10/10,也就是将点分十进制中低位连续的 0 省略。 10.0.0.0/10 隐含地指出 IP 地址 10.0.0.0 的掩码是 255.192.0.0。此掩码可表示为 11111111 11000000 00000000 00000000 掩码中有 10 个连续的 0 255 192
CIDR 记法的其他形式 10.0.0.0/10 可简写为 10/10,也就是将点分十进制中低位连续的 0 省略。 10.0.0.0/10 相当于指出 IP 地址 10.0.0.0 的掩码是 255.192.0.0,即 11111111 11000000 00000000 00000000 网络前缀的后面加一个星号 * 的表示方法 如 00001010 00*,在星号 * 之前是网络前缀,而星号 * 表示 IP 地址中的主机号,即
构成超网 前缀长度不超过 23 bit 的 CIDR 地址块都包含了多个 C 类地址。 这些 C 类地址合起来就构成了超网。 网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
CIDR 地址块划分举例 ISP 大学 X 因特网 三系 四系 二系 一系 206.0.64.0/18 206.0.68.0/22 206.0.68.0/23 206.0.70.0/24 206.0.71.0/25 206.0.71.128/25 206.0.68.0/25 206.0.68.128/25 206.0.69.0/25 206.0.69.128/25 206.0.70.0/26 206.0.70.64/26 206.0.70.128/26 206.0.70.192/26 206.0.71.0/26 206.0.71.64/26 206.0.71.128/26 206.0.71.192/26 三系 四系 二系 一系 单位 地址块 二进制表示 地址数 ISP 206.0.64.0/18 11001110.00000000.01* 16384 大学 206.0.68.0/22 11001110.00000000.010001* 1024 一系 206.0.68.0/23 11001110.00000000.0100010* 512 二系 206.0.70.0/24 11001110.00000000.01000110.* 256 三系 206.0.71.0/25 11001110.00000000.01000111.0* 128 四系 206.0.71.128/25 11001110.00000000.01000111.1* 128
CIDR 地址块划分举例 ISP 大学 X 206.0.64.0/18 因特网 206.0.68.0/22 206.0.68.0/23 206.0.70.0/24 206.0.71.0/25 206.0.71.128/25 206.0.68.0/25 206.0.68.128/25 206.0.69.0/25 206.0.69.128/25 206.0.70.0/26 206.0.70.64/26 206.0.70.128/26 206.0.70.192/26 206.0.71.0/26 206.0.71.64/26 206.0.71.128/26 206.0.71.192/26 三系 四系 二系 一系 这个 ISP 共有 64 个 C 类网络。如果不采用 CIDR 技术,则在与该 ISP 的路由器交换路由信息的每一个路由器的路由表中,就需要有 64 个项目。但采用地址聚合后,只需用路由聚合后的 1 个项目 206.0.64.0/18 就能找到该 ISP。
最长前缀匹配 使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。 网络前缀越长,其地址块就越小,因而路由就越具体。 最长前缀匹配又称为最长匹配或最佳匹配。
最长前缀匹配举例 收到的分组的目的地址 D = 206.0.68.0/22(206.0.71.130) 路由表中的项目:206.0.68.0/22 (ISP) 206.0.71.128/25 (四系) 查找路由表中的第 1 个项目 第 1 个项目 206.0.68.0/22 的掩码 M 有 22 个连续的 1。 M = 11111111 11111111 11111100 00000000 因此只需把 D 的第 3 个字节转换成二进制。 M = 11111111 11111111 11111100 00000000 AND D = 206. 0. 01000100. 0 206. 0. 01000100. 0 与 206.0.68.0/22 匹配
最长前缀匹配举例 收到的分组的目的地址 D = 206.0.68.0/22 路由表中的项目:206.0.68.0/22 (ISP) 206.0.71.128/25 (四系) 再查找路由表中的第 2 个项目 第 2 个项目 206.0.71.128/25 的掩码 M 有 25 个连续的 1。 M = 11111111 11111111 11111111 10000000 因此只需把 D 的第 4 个字节转换成二进制。 M = 11111111 11111111 11111111 10000000 AND D = 206. 0. 71. 10000000 206. 0. 71. 10000000 与 206.0.71.128/25 匹配
最长前缀匹配 D AND (11111111 11111111 11111100 00000000) = 206.0.68.0/22 匹配 D AND (11111111 11111111 11111111 10000000) = 206.0.71.128/25 匹配 选择两个匹配的地址中更具体的一个,即选择最长前缀的地址。
使用二叉线索查找路由表 当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题。 为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)。 IP 地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。 为了提高二叉线索的查找速度,广泛使用了各种压缩技术。
因特网控制报文协议 ICMP 为了提高 IP 数据报交付成功的机会,在网际层使用了因特网控制报文协议 ICMP (Internet Control Message Protocol)。 ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。 ICMP 不是高层协议,而是 IP 层的协议。 ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
ICMP 报文的格式 8 16 31 前 4 个字节 都是一样的 类型 代码 检验和 (这 4 个字节取决于 ICMP 报文的类型) 8 16 31 前 4 个字节 都是一样的 类型 代码 检验和 (这 4 个字节取决于 ICMP 报文的类型) ICMP 的数据部分(长度取决于类型) ICMP 报文 首 部 数 据 部 分 IP 数据报
ICMP 报文 ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
ICMP 差错报告报文共有 5 种 终点不可达 源站抑制 时间超过 参数问题 改变路由(重定向)
ICMP 差错报告报文的数据字段的内容 IP 数据报的数据字段 收到的 IP 数据报 IP 数据报 首部 8 字节 ICMP 的 前 8 字节 IP 数据报 首部 8 字节 ICMP 差错报告报文 首部 ICMP 差错报告报文 装入 ICMP 报文的 IP 数据报 IP 数据报
不应发送 ICMP 差错报告报文 的几种情况 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
ICMP 询问报文有四种 回送请求和回答报文 时间戳请求和回答报文 掩码地址请求和回答报文 路由器询问和通告报文
PING (Packet InterNet Groper) PING 使用了 ICMP 回送请求与回送回答报文。 PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
IP地址----地址短缺的解决之道 非传统网络区域路由(Classless InterDomain Routing, CIDR),是节省B类地址的一个紧急措施。 CIDR:原理是为那些拥有数千个主机的企业分配一个由一系列连续的C类地址组成的地址块,而非一个B类地址。
IP地址----地址短缺的解决之道 授权的IP地址和非授权的IP地址。 另一个延缓IPv4地址耗尽的方法是网络地址翻译(Network Address Translation, NAT),它是一种将无法在Internet上使用的保留IP地址翻译成可以在Internet上使用的合法IP地址的机制。 授权的IP地址和非授权的IP地址。 NAT使企业不必再为无法得到足够的合法IP地址而发愁了,它们只要为内部网络主机分配保留IP地址,然后在内部网络与Internet交接点设置NAT和一个由少量合法IP地址组成的IP地址池,就可以解决大量内部主机访问Internet的需求了。
IP地址----地址短缺的解决之道 由于目前要想得到一个A类或B类地址十分困难,因此许多企业纷纷采用了NAT 。然而,NAT也有其无法克服的弊端。 首先,NAT会使网络吞吐量降低,由此影响网络的性能。 其次,NAT必须对所有去往和来自 Internet的IP数据报进行地址转换,但是大多数NAT无法将转换后的地址信息传递给IP数据报负载,这个缺陷将导致某些必须将地址信息嵌在IP数据报负载中的高层应用如FTP和WINS注册等的失败。
IP地址----IPv6 随着Internet用户在全球范围内的飞速增长,使得Internet地址出现了紧张局面,有预测表明,以目前 Internet发展速度计算,所有IPv4地址将在2005~2010年间分配完毕。 另外,在Internet网络上,安全性已经成为一个敏感而重要的问题。但是在网络安全性方面IPv4不能提供有效的服务, 最后,IPv6的出现还和多媒体应用的急剧增加有关,多媒体应用使网络带宽资源显得日益紧张,如果不合理利用的话,会造成网络运行状况的急剧恶化,因此在网络层必须对实时应用和非实时应用加以区分,根据特定情况进行特定处理,从而有效提高网络效率。 在这种情况下,Internet国际组织决定对TCP和IP协议加以修改,一方面改进协议本身执行的性能,以适应低层网络运行速度的提高,另一方面增加协议功能,以支持新的应用需求。于是推出了IPv6这一IP协议的改进版本。
IP地址----IPv6 IPv6是于1995年12月颁布的新的Internet网络层协议,由Xerox PARC的S.Deering和Ipsilon Networks的R.Hindon共同执笔完成,其RFC编号为1883,与IPv4(RFC-791)相比,主要的变化和特点有: (1)扩展了编址能力:IPv6将IP地址由32位扩展至128位,可以支持更多层次的地址编码,可指明更多的节点,可以实现更简单的地址自配置。 (2)简化了报头格式:IPv4报头中的一些域被抛弃或改为可选项,这样可以降低通用情况下报文处理代价,并限制IPv6报头的带宽代价。
IP地址----IPv6 (3)对扩展项和可选项的改进支持:IPv6报头对可选项都进行了编码,从而可以实现更为有效的转发。可选项的长度限制的放宽,为今后可选项扩展提供了更大的灵活性。 (4)流标识能力QoS:这是一项新增加的功能。它通过标识指明报文是否属于特定的交通流,这些流的发送方请求特殊处理,如非默认的服务质量或实时服务等。 (5)证实和保密能力:IPv6可以支持授权、数据完整性和数据保密性等服务。
IP路由技术 概念 直接交付 间接交付 IP路由原理 路由表 目的网络 掩码 网关 接口地址 度量值 IP包的转发
IP路由技术 IP路由原理 路由器转发分组的过程 因特网路由选择协议RIP IP层验证IP报头校验和 判断是否为直接交付 查找自己的路由表,寻找最佳路由 若路由表中有一个默认路由,则转发给下一个路由 否则将数据包丢弃 因特网路由选择协议RIP Routing Information Protocol 基于距离向量的路由选择协议(本路由器到目的网络所要经过的路由器个数+1) 各相邻路由器每30s交换一次路由信息 采用动态路由技术
IP路由技术 IP路由原理 因特网路由选择协议OSPF Open Shorts Path First,开放最短路径优先 动态路由技术 交换信息:链路状态信息 采用“泛洪法”在整个网络中交换路由链路状态信息 在链路状态发生改变时进行信息交换
Internet接入技术 PSTN ISDN 宽带接入 xDSL Cable Modem FTTH等 无线接入
Internet服务 WWW DNS E-Mail FTP BBS 其它
案例分析 1.假设你是Monroe First National Bank的顾问,你要解决该银行的网络问题,据银行经理所说,从星期一起,每天早晨16个出纳员中有两个不能登录到网络上,另两个出纳员偶然也会遇到问题。但若他们在其他人之前开始工作,就不会出现这些问题,他们只收到一条像另一台机器正在使用那个名字的错误信息。你得知其中一台机器的软件、操作系统和它的属性的精确拷贝被复制到所有的计算机上,所有的PC都是新的,都运行Windows 98 ,并使用相同的硬件和软件,First National Bank的网络包括两台Windows NT服务器,运行TCP/IP和NetBIOS/NetBEUI协议。它使用DHCP协议分配TCP/IP地址。是什么使两个出纳员在早晨不能登录到网络上呢?
案例分析 2.Monroe First National Bank准备建立购买Monroe另一家银行,即Monroe Saving 使用的那种服务器或工作站,但Monroe Saving的经理提到过关于UNIX系统的某些问题。关于如何集成两个系统,你觉得该如何做?为促进集成过程你建议她使用或继续使用什么协议?
案例分析 3.随着商业迅速发展,银行调查允许用户上网查询帐户余额的可能性,但银行人员对因特网缺乏经验。银行的总经理告诉你,实际上银行当时就没有连接到因特网上,他知道他需要为所有的机器获得一个IP地址,但他们已在内部使用了IP地址,他们工作得很好,不想为新的IP地址付费给InterNIC。你是建议保留银行的IP地址还是改变它,你如何建议银行获得接入因特网的权利?关于允许用户获得他们的帐户信息,你的意见是什么?因特网的接入可能会如何影响银行的内部局域网?
练习题 选择题 1. 11111111 11111111 11111111 11111111 地址的另外一种称呼为: a.组播地址 b.广播地址 c.反馈地址 d.RARP地址 2.当已经连到FTP服务器时,使用何种命令可以看到所有FTP命令: a.Commands类型 b.Show类型 c.quit类型 d.help类型
练习题 简答题 1. 请举例说明TCP/IP协议的应用。 2.试区别IP地址、物理地址和主机名,并说明它们之间的对应关系是怎样建立起来的。 3.试简述FTP服务器的优缺点。