第 四 章
TCP/IP协议
ZhangDongyan TCP/IP Protocols 2
4.1 IP 协议
?IP协议为传输协议提供了基本 (不可靠、无连接 )的发
送服务。所有的 TCP,UDP,ICMP数据都以 IP数据报格
式传输 IP负责获取信息并发送到目的主机和网络。
?不可靠( unreliable):它不保证 IP数据报能成功地
到达目的地,仅提供最好的传输服务。如发生某种错
误时,IP有一个简单的错误处理算法:丢弃该数据报,
然后发送 ICMP消息报给信源端。任何要求的可靠性必
须由上层来提供(如 TCP)。
?无连接( connectionless),IP并不维护任何关于后
续数据报的状态信息。每个数据报的处理是相互独立
的。
ZhangDongyan TCP/IP Protocols 3
4.1 IP 协议
?分离的层次可以在不干扰其他服务的情况下替
换某个服务
?底层的无连接包发送服务是基础
Internet服务的三个层次
ZhangDongyan TCP/IP Protocols 4
4.1 IP 协议
?无连接 -Conectionless
– 发送方
? 组装数据包发送
? 将地址放入数据包中已经定义好的位置
? 将数据包送到网络上传输
– 网络
? 使用目的地址转发数据包
? 传输者
ZhangDongyan TCP/IP Protocols 5
4.1 IP 协议
?无连接网络的特点
– 数据包含有确切的目的地址
– 每个包独立处理
– 传输数据之前不需要任何 setup
– 发送数据之后不需要任何 cleanup
– 不可靠
? 数据包可能延迟、丢失、重复、乱序
– 每个包经过的路径可能不一样
– Best-effort
– 类似于发送明信片
ZhangDongyan TCP/IP Protocols 6
4.1 IP 协议
?IP包( Internet Packets)
– 动机
? Router无法在异构网络之间传递数据帧
? 必需定义独立于硬件的数据包格式
– 抽象的
– 只能被软件创建和识别
– 包括发送方和接收方地址
– 大小取决于所传送的数据
– 称为 IP数据报 (IP Datagram)
ZhangDongyan TCP/IP Protocols 7
4.1 IP 协议
?头部
– 包括目的地址
– 固定字段
?数据区
– 最高为 64k的可变长度
– 没有最小长度限制
?IP数据报 (IP Datagram)
ZhangDongyan TCP/IP Protocols 8
4.1 IP 协议
?IP数据报和 IP包
– IP数据报, 不是, IP发送的东西
– 作为 IP包来发送
– IP包将 IP数据报 hop by hop发送到目的系

– 很多时候一个 IP数据报同时就是一个 IP包
– IP数据报作为主机发送的实体
– IP包作为数据帧中传送的实体
ZhangDongyan TCP/IP Protocols 9
4.1 IP 协议
?IP数据报和 IP包-示意图
– 到 192.168.20.60
ZhangDongyan TCP/IP Protocols 10
IP数据报格式
类型 总长度 组号 存活时间 协议 校验和
0 15 16 31 32 47 48 63 64 71 72 79 80 95
分段
IP数据区IP头部
控制码 源 IP地址 目的 IP地址
0 95 96 127 128 159
IP报文长,576 - 64K之间本分组的唯一序号
报文所允许经过的“跳”的
最大次数,以此避免死循环当前协议编号,如 IP,TCP,UDP等
将所有以 16位为单位的双字节
相加,不考虑进位部分,其 16位以
内的结果即为校验和。版本 头长度 服务类型
0 3 4 7 8 15
标志
48 50 56 63
偏移
可以是 4版本或 6版本以 32位的四字节为单位,范围为 5 - 15。
4种服务类型:
延迟类:请求最低的延迟
吞吐量:希望是高的吞吐链路
可靠性:选择高可靠链路
开销:廉价的路径
再次分段后本段在原分组的相对位置
允许再次分段标志
ZhangDongyan TCP/IP Protocols 11
IP 数据报字段说明
? 生命期 TTL
– 避免数据报无限期占用网络资源
– 以秒为单位或者以执行时间不足一秒的发送行为为单位的量度
– 一般认为每经过一跳数值减 1
– 缺省值为 64
? 头部校验和
– 检查数据报头部是否损坏
– 数据部分不需要检查
? 浪费时间
? 高层协议提供了检查机制
? 一些应用协议能够处理部分破坏了的数据
? 头部长度
– 说明 IP头部大小,以 32比特倍数表示,最大值 60字节?
– 大部分 IP数据报头部为 20字节
ZhangDongyan TCP/IP Protocols 12
IP 数据报字段说明
C-Minimize Cost,
最小费用
R-Maximize Reliability,
最高可靠性
T-Maximize Through-put,
高大吞吐量
D-Minimize Delay,
最小延迟
优先级 定义
0 常规
1 优先
2 立刻
3 急速
4 超急速
5 火急
6 互联网控制
7 网络控制
数据服务类型和优先级 TOS
ZhangDongyan TCP/IP Protocols 13
IP 数据报字段说明
常见应用协议建议的 TOS值
应用协议 建议 TOS值
Telnet D
FTP控制信息 D
FTP数据信息 T
SMTP命令 D
SMTP数据 T
DNS UDP查询 D
DNS TCP查询 普通
DNS区域传送 T
ICMP错误信息 普通
ZhangDongyan TCP/IP Protocols 14
4.1 IP 协议 --数据报的传输
?数据报经过传统的网络被发送
– 从源主机到 router
? 组装数据报,包括目的地址
? 送到最近的 Router
– 在中间 routers中传输
? 将数据报转发到下一个路由器
– 从最后的 router送到目的主机
?网络硬件不识别数据报
– 数据报格式
– IP地址
?需要封装 - Encapsulation
ZhangDongyan TCP/IP Protocols 15
4.1 IP 协议主机
IP
网络接口
应用
TCP
主机
IP
网络接口
应用
TCP
主机
IP
网络接口
应用
TCP
主机
IP
网络接口
应用
TCP
IP
网络接口
路由器
IP
网络接口
路由器
IP
网络接口
路由器
网络网络
网络网络
TelnetTelnetTelnetTelnet
TelnetTelnetTelnetCP包TCP包
TCP包TCP包TCP包TCP包
TCP包IP包包IP包IP包IP包
IP包IP包IP包帧 帧
帧 帧
帧 帧 帧 帧
帧 帧 帧
帧 帧
帧帧帧 帧 帧 帧 帧 帧 帧 帧 帧
帧 帧 帧
帧帧帧IP包IP包
IP包IP包IP包IP包
IP包包
进行路由选择
包包包包
包包包帧帧
帧帧帧帧帧帧帧帧帧帧
帧 帧帧帧帧
帧帧
帧帧帧
帧帧
帧帧帧IP包IP包
IP包IP包IP包IP包
IP包TCP包TCP包TCP包TCP包
TCP包TCP包TCP包elnetTelnet
TelnetTelnetTelnetTelnet
Telnet


包帧




帧 帧 帧 帧 帧 帧帧IP包包IP包
IP包IP包IP包IP包
IP包包包包包包
包包包帧帧 帧 帧
进行路由选择
帧 帧 帧 帧 帧 帧 帧 帧 帧 帧
帧 帧 帧
帧 帧 帧 帧IP包包IP包
IP包IP包IP包IP包
IP包包包包包包
包包包帧帧 帧
帧 帧 帧 帧
帧 帧 帧 帧
帧 帧 帧 帧 帧 帧帧帧
帧帧 帧 帧帧帧
进行路由选择
帧 帧 帧 帧
帧 帧 帧 帧 帧 帧
帧帧
ZhangDongyan TCP/IP Protocols 16
4.1 IP 协议 --数据报的封装
?整个数据报作为帧的数据
?数据帧的帧类型字段指明数据区里为 IP数据报
?数据帧的目的地址为, 下一站, 的硬件地址
IP数据报的封装
ZhangDongyan TCP/IP Protocols 17
4.1 IP 协议 --数据报的地址
?数据帧和数据报的目的地址
– 数据帧中的地址
? 硬件地址 (MAC地址 )
? 下一站 next hop
– 数据报中的地址
? IP地址
? 最终的目的地址
?帧的头部在数据报传输中的作用
ZhangDongyan TCP/IP Protocols 18
4.1 IP 协议 --最大传输单元 MTU
?每一个物理网络都规定了数据帧所能传
输的最大数据量
– 称为 Maximum Transmission Unit (MTU)
– MTU随网络不同而不同
?Internet
– 存在异构的网络
– 必需能够容纳不同的 MTU
?常见的 MTU大小
ZhangDongyan TCP/IP Protocols 19
MTU不同带来的问题
?主机 H1
– 产生发往 H2的数据报
– 选择数据报尺寸为 1500B
– 通过网络 1传输数据报
?Router R
– 收到网络 1传来的数据报
– 必需通过网络 2传送之
– 使用分段 fragmentation
ZhangDongyan TCP/IP Protocols 20
与分段有关的 IP头部字段
?Fragmentation Identifier-分段标识符
– 标识来自于同一个 IP数据报的分段
– 16 bit
?Fragmentation Offset-分段偏移
– 标识一个分段在整个数据报中的位置
– 其值 × 8B为实际的偏移
?Fragmentation Flag-分段标志位
– 16-保留,为 0
– 17-DF,禁止分段
– 18-MF,为 1时表示还有更多分段
ZhangDongyan TCP/IP Protocols 21
关于分段的说明
?Who?
– Router
?When?
– 数据报尺寸比目的网络 MTU大
?How?
– 为每一个分段拷贝原有的数据报头
– 单独修改每一个头部,如标志位、分段偏移、
长度等等
– 向每一个分段拷贝数据
ZhangDongyan TCP/IP Protocols 22
4.1 IP 协议 --分段的例子
数据报分段的计算
ZhangDongyan TCP/IP Protocols 23
4.1 IP 协议 --分段的例子
原始数据报和分段的头部比较
ZhangDongyan TCP/IP Protocols 24
分段的进一步说明
?分段仅仅出现在包的数据部分
?分段过程不包括包的头部
?每一个分段都会产生一个包含它自己的
IP头部的新包
?必须以 8字节的倍数分段
– 若数据报有 576字节数据,则需要两个分
段,512和 64
?分段偏移以 8字节块为单位存储字节数
– 如值为 31,则表示 31× 8
ZhangDongyan TCP/IP Protocols 25
4.1 IP 协议 --分段的重组
?Who?
– 目的主机还是最后的 Router?
?条件
– 所有分段全部到达
ZhangDongyan TCP/IP Protocols 26
4.1 IP 协议 --分段
?分段丢失
– 到来的分段存储在内存中
– 若有的分段在规定时间内 (UNIX,60秒 )没有到达,则
删除所有分段
?对分段进行分段
– 若互联网 MTU次序如下:
1500->1000->576->1500
– 两次分段
– 不考虑子分段,所有分段均在同一级
– 重组为原始数据报
ZhangDongyan TCP/IP Protocols 27
4.1 IP 协议 -- IP选项
?缺省头部提供了 IP发送数据包需要的所有事情
?IP选项 提供了对一个数据包的特殊处理服务
– 不是必需的
– 0-40B
?IP选项字段
– 记录路由
– 源站路由选择
? 严格的源站路由选择
? 松的源站路由选择
– 时间戳 …,
分段对选项的处理:
某些选项复制到所有分段(源站路由选择)
部分选项放到第一个分段(记录路由)
ZhangDongyan TCP/IP Protocols 28
4.2 IP数据报的转发
?从概念上说,IP路由选择是简单的。若目的主机与源
主机直接相连(如点对点链路)或都在一个共享网络
上(以太网或令牌环网),IP数据报就直接送到目的
主机上。否则,主机把数据报发往一默认的路由器上,
由路由器来转发该数据报。
?数据报的发送
– 直接 (本地 )
– 间接 (远程 )
?Hop by Hop
ZhangDongyan TCP/IP Protocols 29
4.2 IP数据报的转发
IP路由选择 IP路由选择IP数据报
IP数据报进入物理网络
加上帧头 去掉帧头
IP数据报进入虚拟网络
IP数据报封装 IP数据报
解封
直接路由选择
物理帧
ZhangDongyan TCP/IP Protocols 30
4.2 IP数据报的转发
?基于表的数据报选路
?路由选择表
– 存储 IP节点连接的网络、连接到该网络的网络接口
的 IP地址等等
– 每一 IP设备都有
ZhangDongyan TCP/IP Protocols 31
4.2 IP数据报的转发
?192.168.10.1的缺省路由表
ZhangDongyan TCP/IP Protocols 32
4.2 IP数据报的转发
?有一个远程 Router的 192.168.10.1的路由表
ZhangDongyan TCP/IP Protocols 33
4.2 IP数据报的转发
?显示完整网络的 192.168.10.1的完全路由表
?192.168.10.1的简化路由表
– Router不可能维护所有网络的路由信息
– 设置缺省路由
ZhangDongyan TCP/IP Protocols 34
下一跳路由的算法
? 执行:拆开 IP数据报,从中抽取目的 IP地址,D,通过, 位与, 运
算求出目的地址的网络 ID,N
? if N 和某个与路由器直接相连的网络匹配,则直接转发到该网络
中的相应主机(需要执行:从 IP地址 D 解析出目的主机的物理地址,
封装 IP数据报为帧,帧头包含目的主机的物理地址,发送帧)。
? else if 路由器的路由表中包含有为该主机 D指定的路由,则按路
由表中所指定的发送到下一跳(需要执行:解析所指定的下一跳路
由的物理地址,封装 IP数据报为帧,帧头包含下一跳路由的物理地
址,发送帧)。
? else if 路由器的路由表中包含有到达该网络 N的路由,则按路由
表中所指定的发送到下一跳(需要执行:同上)。
? else if 路由器的路由表中包含有默认路由,则发送到路由表中所
指定的默认路由(需要执行:解析所指定的默认路由的物理地址,
封装 IP数据报为帧,帧头包含默认路由的物理地址,发送帧)。
? else 发回路由出错消息。
ZhangDongyan TCP/IP Protocols 35
4.2 IP数据报的转发
?关于路由表的补充说明
– 为一个网络指定一个路由器,而不必为每个主机指
定一个路由器。可以极大地缩小路由表的规模,比
如 Internet上的路由器有只有几千个表目,而不会
是超过 100万个表目。
– IP路由选择是逐跳( hop-by-hop)进行的。 IP并不
知道到达任何目的的完整路径。所有的 IP路由选择
只为数据报传输提供下一站路由器的 IP地址。
– 只有最后一个 Router知道目的主机的是否可用,需
要为 Router安排方法向源主机来报告问题
– 路由可能不对称
? A->B和 B->A路径可能不一致
ZhangDongyan TCP/IP Protocols 36
4.2 IP数据报的转发
?数据包处理过程示意图
ZhangDongyan TCP/IP Protocols 37
有关路由表的一些命令
?Route
– Route print--用于显示路由表中的当前项目
– route add--添加路由。添加目标为 10.41.0.0,子网
掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,
跃点数为 7 的路由:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7
– route change—修改现有路由。将目标为 10.41.0.0,
子网掩码为 255.255.0.0 的路由的下一个跃点地址由
10.27.0.1 更改为 10.27.0.25:
route change 10.41.0.0 mask 255.255.0.0 10.27.0.25
– route delete—删除路由。删除目标为 10.41.0.0,
子网掩码为 255.255.0.0 的路由:
route delete 10.41.0.0 mask 255.255.0.0
ZhangDongyan TCP/IP Protocols 38
有关路由表的一些命令
?Netstat
– 用于显示与 IP,TCP,UDP和 ICMP协议相关的统计数
据,用于检验本机各端口的网络连接情况。
– 使用时如果不带参数,netstat显示活动的 TCP连接
– netstat -s--能够按各个协议分别显示其统计数据。
如果你的应用程序(如 Web浏览器)运行速度比较
慢,或者不能显示 Web页之类的数据,那么你就可
以用本选项来查看一下所显示的信息。
– netstat -a--本选项显示一个所有的有效连接信息
列表,包括已建立的连接( ESTABLISHED),也包
括监听连接请求( LISTENING)的那些连接。
– netstat -n--显示所有已建立的有效连接。
ZhangDongyan TCP/IP Protocols 39
有关路由表的一些命令
?IPConfig( WinIPcfg)
– 显示当前的 TCP/IP配置的设置值。这些信息一般用
来检验人工配置的 TCP/IP设置是否正确。
– ipconfig--不带任何参数选项, 为每个已经配置了
的接口显示 IP地址, 子网掩码和缺省网关值 。
– ipconfig /all--当使用 all选项时, IPConfig能为
DNS和 WINS服务器显示它已配置且所要使用的附加
信息 ( 如 IP地址等 ), 并且显示内置于本地网卡中
的物理地址 ( MAC) 。
?Tracert( Pathping)
– 显示到达目标的路径, 使用很简单, 只需要在
tracert后面跟一个 IP地址或 URL。
ZhangDongyan TCP/IP Protocols 40
4.3 路由协议 —路由器
?Internet可以看作是由许多路由器互连在一起的网络,
而每个计算机则连在其中的一个路由器上。由此,对
分组信息的分发与捕获功能由路由器来完成。
RR
RR
主机主机
主机 主机
R R
R主机
校园网
主机
局域网
子网
ZhangDongyan TCP/IP Protocols 41
4.3 路由协议 —路由器
?连接不同类型的网络并完成协议转换
– Internet所面对的是各种不同类型的网络,各网之
间需要进行桥接
– 不同的网络运行的是不同的通信协议,需要转换
?路由搜索与选择
– 在 Internet范围内采用的是网状自由联接,信息发
送不能采用广播方式,因此需要进行路由选择。常
见的路由搜索方式是 距离向量路由协议 与 链路状态
路由协议 两种。
?网络管理和安全
– 一个网络如果确定一个或有限个出入口,可以通过
限制出入的方式对内部网络进行保护。
ZhangDongyan TCP/IP Protocols 42
?路由协议在协议栈中的位置
4.3 路由协议
ZhangDongyan TCP/IP Protocols 43
Internet路由选择的两种形式
?静态路由选择
– 根据系统启动时初始化的路由表
– 不再修改
?动态路由选择
– 根据系统启动时初始化的路由表
– 路由选择协议获得路由并更新路由表
– 路由表可能会不断改变
ZhangDongyan TCP/IP Protocols 44
Internet路由选择的两种形式
?静态路由选择
– 绝大多数的 Internet主机使用之
– 典型的路由选择表有两个条目
? 本地网络 ->直接发送
? 缺省网关 ->最近的路由器
?动态路由选择
– 由 IP路由器使用
– 需要特殊的协议软件
– 每个 Router与其邻居相互通信传递路由信

– 使用 路由传播协议
ZhangDongyan TCP/IP Protocols 45
Internet路由选择的两种形式
?路由传播的示意图
– 每个 Router通告它的邻居自己所能到达的
网络的连接信息
ZhangDongyan TCP/IP Protocols 46
4.3 路由协议
?路由信息交换的含义
– 每个 Router运行路由选择软件
– 获得其他 Routers所能到达的目的地的信息
– 通知其他 Routers自己所能到达的目的地信

– 路由选择软件使用获得的信息不断的更新
Router的路由选择表
ZhangDongyan TCP/IP Protocols 47
4.3 路由协议
?自治系统 -Autonomous System
– 处于一个管理机构控制下的网络和路由器
的集合
– 灵活可变,人为定义
– 直觉上,校园网、医院网等等
– 需要 AS是因为没有一个路由选择协议可以
覆盖整个 Internet
– 每个 AS选择一个 Routing Protocol
ZhangDongyan TCP/IP Protocols 48
自治系统 (AS)、区域及网络 (NW)
?每个 AS都有一个唯一的编号
– 编号范围 1~65535,其中 1~65411是注册的编号,其余
的为专用网络编号
– 一个大的 AS经常划分为几个较小的 路由域
ZhangDongyan TCP/IP Protocols 49
4.3 路由协议
?Internet路由选择协议的分类
– 内部网关协议 (IGP)
? 自治系统内的路由协议
? 目的地位于 AS内部
– 外部网关协议 (EGP)
? 用于自治系统之间的路由选择
? 目的地跨越 Internet
?路由选择协议的准则
– 路由协议能按照不同的路由准则为用户的通信数据
选择最适当的传输路径,如最小成本路由等等
– 以下 3个约束条件是所有准则必需考虑的
? 时延、吞吐率、连接性
ZhangDongyan TCP/IP Protocols 50
?路由信息和数据流
– 每个 ISP是一个 AS,使用外部网关协议来通
告它管辖范围内的网络客户的信息给其他
ISP
– 当 ISP通告目的地 D的路由信息后,发往 D的
数据流可以沿着通告的路由到达
4.3 路由协议
?IGP/EGP的使用范围
运 行 内 部 网 关 协 议
( I G P ), R I P
I G R P
E I G R P
O S P F
自 治 系 统 号, 1 0 0
自 治 系 统 号, 2 0 0
运 行 外 部 网 关 协 议
( E G P ), B G P
ZhangDongyan TCP/IP Protocols 51
4.3 路由协议
?路由搜索协议的类型
– 距离向量协议
?最小跳距
?距离 ->跳距;向量 ->地址
– 链路状态协议
?每条链路有一个状态值
?路由选择的标准是构成该路径的所有链路
的度量总和最小
ZhangDongyan TCP/IP Protocols 52
距离向量路由协议
?距离向量路由协议遵从以下几个基本原则:
– 每一个节点具有最基本的永久性信息,用于记录其
地址和辨识与之相连接的链路;
– 每个节点都定时向邻接节点广播其自身的路由信息,
同时也接收邻接节点广播来的路由信息;
– 接收邻接节点的路由信息后,依据该路由信息更新
本地路由信息;更新方法是对于没有的节点项则创
建一个并在其距离向量之上加一,已存在的节点项
则需比较一下两者那个更大,较小的一个将会留下
– 整个计算采用的是分布式算法,几个节点独立计算,
直到收敛为止。
ZhangDongyan TCP/IP Protocols 53
?链路状态路由协议遵从以下规则:
– 每个节点均维持一个网络图的副本,并定时更新;
– 网络图以数据库的形式表示,库中记录每个节点与
其相邻节点的连接情况;
– 库的更新是以广播的方式实现,即每个节点收到一
个路由广播报文,接收后再向其它链路广播。
– 为防止一个广播路由信息无限制地在网上传送,每
个广播报文需要给一个编号,一旦一个节点再次收
到了一个针对同一个路由信息且编号相同的报文时
则销毁而不再对外广播。
链路状态路由协议
ZhangDongyan TCP/IP Protocols 54
最短路径算法 -SPF
?网络中的每个路径均按最小成本准则分
配相应的权重
?每个节点有一个标签,记录了自己到源节
点的度量值 (初始时为 ∞ )
?每个节点对与其相邻节点的关系进行检
查,从源节点开始作为第一个工作节点
?在下一次迭代运算中,距离工作节点最近
的节点成为新的工作节点,直到检查了数
据库中所有节点为止
ZhangDongyan TCP/IP Protocols 55
最短路径算法 -SPF
?通过查询 LSA数据库,节点 B和 C被加入到当前工作节点

?经过检查链路度量较小的节点将成为新的工作节点,C
变为工作节点
节点 A为源节点
ZhangDongyan TCP/IP Protocols 56
最短路径算法 -SPF
?到目前,已经知道从 A到 C,B,D,E,I的, 最短路径,
?但随着工作节点的变化, 最短路径, 也会发生变化
C成为工作节点
ZhangDongyan TCP/IP Protocols 57
最短路径算法 -SPF
? 如果某个节点的标签与其邻接节点链路度量之和小于该邻接节点
的标签值,则说明找到了一个到达源节点的更短路径
? 节点 A和 B之间还有更佳的路径,A->C->D->B,度量值为 7
– 跳距多不一定意味着链路度量值大
? 重复上述过程,最后每个节点标签反映的就是它与源节点之间具
有最小成本的路径
D成为工作节点
ZhangDongyan TCP/IP Protocols 58
最短路径算法 -SPF
?带括号的数字表示了该节点在生成树中的选择
顺序
节点 A的路由拓扑
ZhangDongyan TCP/IP Protocols 59
构造生成树的过程
?所有节点彼此相连
?不存在环路
ZhangDongyan TCP/IP Protocols 60
C X
路由信息的跨域传播
? 路由器 C和路由器 X分别为路由域 1和 2的边
界路由器
? 路由器 X利用 C的路由表获得 RD1内各节点的
可达性信息
? 路由器 X不关心 C如何获得这些信息
ZhangDongyan TCP/IP Protocols 61
F
K
C X
E
路由信息的跨域传播
? 设路由器 F和路由器 K也可以同时交换路
由信息
? 设 E和 F之间链路中断,C则更改路由表,
并且将更改之后的消息发给 X
ZhangDongyan TCP/IP Protocols 62
F
K
C X
E
路由信息的跨域传播
? 但路由器 X通过和 K交换信息知道有更
好的到达 F的路径,X->K->F
? 该信息从 X传回 C,C则相应更新自己的
路由表
ZhangDongyan TCP/IP Protocols 63
因特网主要路由协议
? 类型
– D-V距离向量
– L-S链路状态
? 路径 --通告的路径数值
? 邻居 --发现邻居的能力以
及问候 (hello)能力
? 变化,对变化的处理能力
– D:动态
– P:部分通告
– F:全路由表通告
? 聚合 --地址聚合能力
? 非对称 --两个方向上度量不同
路由信
息协议开放最短路
径优先 边界网
关协议
内部网关
路由协议
增强内部网关
路由协议
私有网络节
点接口( ATM)
ZhangDongyan TCP/IP Protocols 64
4.4 差错报告机制 ICMP
?Internet上的差错
– 可能的差错
? 通信线路、处理器、目的主机关机
? 数据报生命期变为 0
? Router拥塞 等等
– 对于同一个网络
? 可以利用特殊硬件来报告错误
– 对于互联网络
? 发送方很难判断传送失败的原因,如错误发生在
哪里
? IP协议本身没有处理错误的机制
ZhangDongyan TCP/IP Protocols 65
4.4 差错报告机制 ICMP
?Internet Control Message Protocol-ICMP
?当出现发送不能进行的网络问题时,提供 IP设
备交换关于问题信息的服务
?用于 Router向其他 Router或主机发送差错或控
制报文
?IP协议的一部分,二者相互依赖
– ICMP利用 IP传递信息
– IP利用 ICMP发送差错与控制信息
?使用者
– Router
– 主机
ZhangDongyan TCP/IP Protocols 66
差错报告与差错改正
?ICMP是一个差错报告机制,但并没有指定对错
误所应采取的措施 (交给应用程序或其他协议
处理 )
?ICMP只与源主机进行通信
– IP数据报中只有源主机和目的主机 IP
– Router没有全局的路由知识,不知道数据报
所走过的路径
– Router不能悄悄丢弃数据报,而是利用 ICMP
报告错误,由高层协议或管理员来处理问题
ZhangDongyan TCP/IP Protocols 67
ICMP报告的错误类型
?IP数据报的发送可能失败
?根据失败的原因,ICMP决定是否报告
?两种失败
– 暂时性失败
? 如校验和错误,发送者可能会发现 (根据上层协议的可靠性
机制 )这个失败,并重发
? 一个包不太可能重复出现同样的问题
? 忽略之
– 半永久性失败
? 如无效的目的 IP地址,TTL为 0等等
? 需要立即向发送源报告,说明出现了重要问题
ZhangDongyan TCP/IP Protocols 68
ICMP消息的处理
?接收者收到 ICMP消息,监测消息内容并送到合
适的协议进一步处理
– ICMP协议自身,IP
– 大部分由传输协议 (TCP,UDP)处理
?什么时候不能发送 ICMP消息?
– 另外一个 ICMP消息(除设备响应 ICMP查询消息外)
– 任意一种 IGMP消息(保证较小的通信量)
– 目的 IP地址为广播或多播地址的 IP数据报(但 ICMP
查询可以发送到广播地址)
– 没有说明源地址的数据报(全 0、回路地址、广播
或多播地址)
– 任何一个 IP数据报的分段 (第一个分段除外 )
ZhangDongyan TCP/IP Protocols 69
ICMP报文的传送
?两级封装
?一些问题
– ICMP报文有没有优先级?是否有特别的可靠
措施?
– 如果携带 ICMP报文的 IP数据报出现差错怎
么办?
– 为什么利用 IP数据报传递信息而不直接用
数据帧?
ZhangDongyan TCP/IP Protocols 70
ICMP报文的传送
?问题的说明
– ICMP消息封装在 IP数据报的数据部分,随 IP数据报
在网上转发的。由于 IP数据报是不可靠传输的,因
此 ICMP消息的传输也是不可靠。
– 为避免出现有关差错报文的差错报文,规定如果包
含 ICMP报错消息的 IP数据报出错,则不再产生新的
ICMP消息
– 一般不把 ICMP作为高层协议,而只作为 IP必须的一
个部分,之所以把 ICMP消息封装在 IP数据报中,只
是因为回送 ICMP消息需要跨越多个物理网络,因而
不可能在物理层传送
ZhangDongyan TCP/IP Protocols 71
ICMP报文格式
?ICMP有一个预先定义好的消息集合,每个消息都提供专
用的功能
?根据报告消息的功能不同,有不同类型的 ICMP报文
?都以相同的如下三个字段开头
ZhangDongyan TCP/IP Protocols 72
4.4 差错报告机制 ICMP
?ICMP报文的类别
– 差错报文
? 包含出错的数据报的头部
? 前 64bit数据
? 包含这两项的原因是使源主机能更准确地判断该
IP报是由哪种上层协议以及哪一个应用程序发送
的(因为 TCP/IP的上层协议通常把关键信息编码
放在前 64位,如端口号)
– 信息报文
ZhangDongyan TCP/IP Protocols 73
4.4 差错报告机制 ICMP
?ICMP消息类型
ZhangDongyan TCP/IP Protocols 74
Destination Unreachable错误消息
?Network Unreachable
– 报告 Router的路由表中找不到通往目的网络的路径
? 试图连接一个私有网络地址
? 路由表被破坏
? 过时的 Router
– 源系统和目的系统之间所有的 Router都会产生该错

– 只是说明出现了暂时性的路由错误 (短期、可修复 )
?Port Unreachable
– 目的主机上特定目的端口号不可使用
? 客户试图连接某个服务器的应用程序,而服务器没有安装
该应用程序或没有使用客户期望的端口号
– 几乎都由 UDP产生
ZhangDongyan TCP/IP Protocols 75
Destination Unreachable错误消息
?Host Unreachable
– IP数据报不能发送到最终的目的系统
?Protocol Unreachable
– 目的系统的特定传输协议不可达
?Source Route Failed
– 路由器不能把包发送到该数据报 Source Route IP
Option字段中指定的下一跳路由器
?Destination Network Unknown
– 目的网络根本不存在 (有确切的证据 )
?Destination Host Unknown
– 目的主机确实不存在 (证据 )
ZhangDongyan TCP/IP Protocols 76
4.4 差错报告机制 ICMP
?所有 Destination Unreachable错误消息
必须发送到引发这个错误的 传输层
–, 软失败,,如 Network unreachable,传输
层不应该取消该连接,若连接因该错误失败,
则错误向上报告给应用层协议进而通知用户
–, 硬失败,,如 Network unknown,则取消连

ZhangDongyan TCP/IP Protocols 77
4.4 差错报告机制 ICMP
?Exceeded(超时 )错误消息
– Time-To-Live Exceeded in Transit
? TTL为 0,而数据报还没有到达最终目的地
? Router不能转发 TTL为 0的数据报
? 缺省值为 30或更多,除非出现路由循环一般够用
? Traceroute
– Fragment Reassembly Time Exceeded
? 没有在规定时间内收到所有的分段 (Unix,60秒 )
– 所有 Time Exceeded错误消息必须报告给引
发这个失败的传输层,但传输层不该取消这
个连接
ZhangDongyan TCP/IP Protocols 78
4.4 差错报告机制 ICMP
?Redirect错误消息
– 如果用户在网络上有一个具有多个 Router的路径,
如果没有把数据报发送到, 更好的, 路由器,缺省
路由器会用 Redirct错误消息把正确的路由告诉发
送者
– To Whom?
? 发送者
– Who?
? 和发送者在同一个子网上的, 缺省, 路由器
– 只要系统收到一个 Redirect消息,并且它和设备处
于同一网络,就必须更新自身路由表使用建议的路
由器
ZhangDongyan TCP/IP Protocols 79
4.4 差错报告机制 ICMP
? 192.168.10.10把包发送到缺省路由器 192.168.10.3
? 缺省路由器发现有, 更好, 的路由器 192.168.10.1,并且和源主
机在同一个网络
? 缺省路由器 192.168.10.3向源主机发出 Redirect错误,同时把源
主机发送给它的信息转送给, 更好, 的路由器 192.168.10.1
? 此后源主机把所有发往 192.168.30.10的包送往 192.168.10.1
Redirect的例子
ZhangDongyan TCP/IP Protocols 80
4.4 差错报告机制 ICMP
?Echo Request/Reply消息
– 是两个最常用的 ICMP消息类型。
– 主机或路由器可以向指定目的主机或路由
器发送一个 Echo Request,收到请求的目的
机器向发送端返回一个 Echo Reply–不一定
总能实现 (安全原因 )
– 每个主机必须安装 ICMP Echo服务器以及用
于实现 Echo消息的应用程序接口
– Echo Request/Reply模型与 ICMP错误消息
的单向性设计相反,ICMP错误消息只有发送
没有响应
ZhangDongyan TCP/IP Protocols 81
4.4 差错报告机制 ICMP
分段 Echo Request/Reply查询消息
ZhangDongyan TCP/IP Protocols 82
关于 Ping
?Ping允许用户向目的系统发送一个或多
个 ICMP Echo Request消息,计算从探测
开始到收到 ICMP Echo Reply消息所花费
的时间,来测试两个设备之间的网络连

?四点
– 源主机与目的主机之间的 Router工作正常
– 源主机为 IP数据报选路的软件工作正常
– 目的主机正在运行,IP和 ICMP正常工作
– 返回路径上 Router有正确路由
ZhangDongyan TCP/IP Protocols 83
关于 Ping
?Ping的一些细节
– 每次会话中,ICMP Echo Request/Reply消
息具有相同的 ID
– Ping本网段内的广播地址
? 一呼百应?
? RFC1122―发往 IP广播地址的 ICMP Echo Request
可以丢弃,
ZhangDongyan TCP/IP Protocols 84
关于 Traceroute
?允许用户识别数据报发送往远程设备所经过的
路径
?工作原理,
– 向目的系统发送一系列 TTL数值逐渐增加的包,监听
ICMP Time Exceeded错误消息
– 发送第一个包 (TTL为 1),本地网络上的第一跳路由
器会返回 ICMP Time Exceeded错误消息 ->获得第一
跳路由器地址
– 发送第二个包 (TTL为 2),第二跳路由器会返回 ICMP
Time Exceeded错误消息 ->获得第二跳路由器地址
– 依此类推,知道到达最终目的系统
ZhangDongyan TCP/IP Protocols 85
Traceroute的不同版本
? 不同版本的 traceroute使用不同类型的数据作为, 种子,
数据报,得到的响应会有所不同
? 大部分 UNIX缺省版本使用 UDP数据报
– 一次性发送 3个 UDP数据报 –每个数据报的目的端口号都
在增加
– 有可能出现防火墙阻断
? 其他 traceroute使用 ICMP Echo Request查询消息
– 发送 TTL不同的请求信息,一旦到达目的地则目的系统返
回响应
– 也存在被防火墙阻断的可能