ICMP协议讲解
– Checksum(16bits) – Gateway Internet Address (32 bits) :网关地址 – Internet header + 64 bits of original data dategram
27
TCPIP
3、请求应答报文
TCPIP
ICMP故障诊断与网络控制报文
类型域 12 13 14 17 18
ICMP报文类型 数据报参数错 时戳请求 时戳应答 地址模请求 地址模响应
13
TCPIP
ICMP报文格式
• 代码(code): 提供报文类型的进一步信息 ; • 校验和(checksum): 提供整个ICMP报文的校验和; • 数据区:包括出错数据报的报头及该数据报的 前64bit数据;这些信息可以帮助信源机确定出 错数据报.
• 缺点:只能用于同一网络内的网关与主机之间的路径信息 交换,不能用于网关之间的路径信息交换。
26
TCPIP
ICMP控制报文 — 重定向
• ICMP重定向报文
– type (8bits)
• =5
– code (8bits)
• • • • 0 = Redirect datagrams for the Network. 1 = Redirect datagrams for the Host. 2 = Redirect datagrams for the Type of Service and Network. 3 = Redirect datagrams for the Type of Service and Host.
• 用于故障诊断与网络控制的ICMP报文是以请求 /应答对形式双向传输的报文; • 用于故障诊断与网络控制的ICMP报文有: * 回应请求 / 回应应答 * 时戳请求 / 时戳应答 * 地址模请求 / 地址模应答
29
TCPIP
ECHO请求和应答
• 用于测试目的地址的可达性,ping命令实现了 ECHO请求/应答的功能。
回应请求/应答报文 请求/应答报文 时戳请求/应答报文 地址模请求/应答报文
9
TCPIP
ICMP报文
• ICMP差错报文
– ICMP差错报文伴随着丢弃出错数据产生的。一旦IP发现 出错,首先丢弃出错的IP数据报,之后发出ICMP差错报 文。 – ICMP差错报文不享受特别的优先级,作为一般数据传 输。为了更好地帮助源主机排错,ICMP差错报文中除 了包含出错数据报的报头,而且还包括其数据区的前 64bits的数据。 – ICMP差错报文包括目的地不可达报文、超时报文、参 数错报文等。
ICMP控制报文 — 源抑制
– 当路由器或者主机因拥塞而丢弃数据报时,它就向 数据报的发送端发送源点抑制报文。 – 目的: – 1、通知源点,数据报已经被丢弃 – 2、警告源点,路径中某处出现了拥塞,源点必须 放慢发送过程。
23
TCPIP
ICMP控制报文 — 源抑制
• ICMP源抑制包括了三个阶段:
– 网络结点发现产生拥塞,向源主机发出ICMP源抑制报 文。 – 源主机在收到源抑制报文后,按照一定的速率降低发 往某目的主机的数据报速率。源主机在降低了速率后, 一定的时间间隔内不会理会关于同一目的主机的源抑 制报文,只有在下一个时间间隔开始的时候,关于同 一目的主机的源抑制报文采会再次生效。 – 拥塞的解除由源主机自行完成。在下一个时间间隔到 达时,没有收到关于同一目的主机的源抑制报文,源 主机就结束对该目的主机的拥塞控制,逐渐恢复正常 流量。
10
TCPIP
ICMP报文
• ICMP控制报文
IP协议包括了拥塞控制和路由控制两个部分,ICMP提供了
相应的控制报文:源抑制报文和重定向报文。
• ICMP请求/应答报文
ICMP还提供了一些用于获得有用信息的一些请求/应答报 文:ECHO请求/应答报文和时间戳请求/应答报文。
11
TCPIP
ICMP 报文的格式
17
TCPIP
讨论
• 下面各种情况不会导致产生ICMP差错报文: 1) ICMP 差错报文。 2) 目的地址是广播地址或多播地址(D 类地址)的 IP 数据报。 3) 作为链路层广播的数据报。 4) 不是IP 分片的第一片。 5) 源地址不是单个主机的数据报。即源地址不能为 零地址、环回地址、广播地址或多播地址。
14
TCPIP
1、差错报文
TCPIP
ICMP差错报文 — 目的地不可达
• 当网络节点认为某数据报的目的地不可达时,就向该数据报的 源主机发送一个目的地不可达的ICMP分组。 • ICMP报文
不知如何到达B 发送ICMP报文
向B发送数据 – type (8bits) • =3 – code (8bits) 主机A • 0 = net unreachable; • 1 = host unreachable; 路由器 • 2 = protocol unreachable; • 3 = port unreachable; • 4 = fragmentation needed 向主机B发送数据 and DF set; • 5 = source route failed. 目的主机不可达 • 6、7、8——15有15个code,不一一列举。 – Checksum(16bits) – unused (32bits) – Internet header + 64 bits of original data dategram
19
TCPIP
ICMP差错报文 — 参数错
• 当网络结点或主机发现数据报中的报头参数出错(例如选 项出错,无效报头等)时,发送参数错报文。 • ICMP报文
– type (8bits) • =12 – code (8bits) • 0 =包头出错 • 1=缺少所需的选项部分 – Checksum(16bits) – Pointer(8bits) • 当code=0时,标明发生错误的八位组。 – unused (24bits) – Internet header + 64 bits of original data dategram
为了防止过去允许ICMP差错报文对广播分组响应所 带来的广播风暴。
18
TCPIP
ICMP差错报文 — 超时
• 当网络结点发现某数据报的TTL域为零,需要丢弃此数据 报时,需要向该数据报的源主机告知超时出错。 • 当目的主机在分段重组时,规定时间内由于分段丢失未完 成重组,需要发送超时报文。
• ICMP报文
24
TCPIP
ICMP控制报文 — 重定向
• 在Internet中,主机在启动时只知道最少的寻径信 息,保证主机将数据报发送出去,但未必是最优 路由。启动后,通过ICMP重定向报文,在数据传 输过程中,主机可以不断从同一个网络的网络结 点中得到新的路由信息。
25
TCPIP
ICMP控制报文 — 重定向
其它网络
16
TCPIP
讨论
• 信宿不可达的4个层次:网络、主机、协议、端口; • 网络不可到达 :寻址故障; • 主机不可到达 :信宿机所在网络的最后一个网关发 现其关闭或故障; • 协议和端口不可到达
– 网络高层可采用多种协议,通过协议端口(port)实现访问; – 协议号、端口号和网络地址、主机地址一样,作为数据报 信宿地址的一部分使用; – 同一协议可以通过不同的协议端口,同时处理多个访问;
• ECHO请求/应答报文
主机B可 以连通吗?
是的,我已经开机, 并与你连接畅通。
– type (8bits) 主机A • 8 = echo message • 0 = echo reply message – code (8bits) ICMP Echo • =0 ICMP Re-Echo – Checksum(16bits) – Identifier(16bits) – Sequence Number(16bits) • 其中标识和序号用于帮助区分不同的ECHO请求/应答对。 – Data ……
TCPIP
ICMP协议介绍
部门:产品中心测试部 科室:软件测试科 讲师:门荟 时间:2015.3.24
1
TCPIP
• Ip协议为了有效利用网络资源,提供了不 可靠和无连接的数据报交付服务,它只提 供把数据报从源点交付到终点,而不关心 过程中是否有丢失或者损坏。 • Ip协议缺少:差错控制和查询辅助机制
• ICMP的重定向功能保证主机拥有一个动态的,即小且优的 路由表。
– 如果网络X的主机A发送一个数据报到另外一个网络Y的主机B,主 机A的路由表中指示通过路由器G1可以到达网络Y。
– 该数据报被发送到路由器G1,G1通过查阅自己的路由表发现,从 网络X到网络Y经过路由器G2是一条最佳路由。
– 路由器G1在将该数据报转发到网络Y后,发送一个ICMP重定向报 文给主机A,告知到达网络Y的最佳路由为路由器G2。 – 经过不断积累,主机的路由表就越来越充实、优化了。
TCPIP
主要内容
• • • • • ICMP协议的类型 ICMP报文格式 常用ICMP差错报文 常用ICMP控制报文 常用ICMP请求/应答报文
6
TCPIP
网际控制报文协议 ICMP
• 为了提高 IP 数据报交付成功的机会,在网际层 使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。 • ICMP 允许主机或路由器报告差错情况和提供 有关异常情况的报告。 • ICMP 不是高层协议,而是 IP 层的协议。 • ICMP 报文作为 IP 层数据报的数据,加上数据 报的首部,组成 IP 数据报发送出去。
前 4 个字节 都是一样的
0 类型 8 代码 16 检验和 31
(这 4 个字节取决于 ICMP 报文的类型)