《TCP/IP详解 卷一》第8章 ICMPv4 和 ICMPv6

目录

8.1 引言

8.1.1 在IPv4和IPv6中的封装

8.2 ICMP 报文

8.2.1 ICMPv4 报文

8.2.2 ICMPv6 报文

8.2.3 处理ICMP报文

8.3 ICMP差错报文

8.3.1 扩展的ICMP和多部报文

8.3.2 目的不可达和数据包太大

8.3.3 重定向

8.3.4 ICMP 超时

8.3.5 参数问题

8.4 ICMP查询/信息类报文

8.4.1 回显请求 / 应答

8.4.2 路由器发现:路由器请求RS和通告RA

8.4.3 本地代理地址发现请求/应答

8.4.4 移动前缀请求/通告

8.4.5 移动IPv6快速切换报文

8.4.6 组播侦听查询/报告/完成

8.4.7 版本2组播侦听发现

8.4.8 组播路由器发现

8.5 IPv6中的邻居发现

8.5.1 ICMPv6路由器请求和通告

8.5.2 ICMPv6邻居请求和通告

8.5.3 ICMPv6反向邻居发现请求/通告

8.5.4邻居不可达检测

8.5.5安全邻居发现

8.5.6 ICMPv6邻居发现选项

8.6 ICMPv4 和 ICMPv6 转换

8.7 与ICMP相关的攻击

8.8 总结


8.1 引言

ICMP位于网络层和传输层之间。

因为路由器缓冲区溢出的丢包不会触发任何ICMP差错报文。而由TCP等处理(重传等)。

黑客在大量攻击中使用ICMP。由于担心攻击,通常防火墙封阻ICMP报文,特别是边界路由器。此时诊断程序(ping, traceroute)无法正常工作。

ICMPv6包含:

        错误报告。

        邻居请求,邻居通告。

        路由器请求,路由器通告。

        重定向:优化路由。

        报文过滤: 引入Packet Too Big报文,通知源主机包超过了链路层MTU。

8.1.1 在IPv4和IPv6中的封装

报文格式:

其中ICMPv4头:

字段介绍:

        类型:指定报文类型,常用8个值。

        代码:进一步指定报文类型。

        校验和:IP层没有对载荷完整性保护。所以ICMP需包含校验和。

8.2 ICMP 报文

ICMP报文分类:

        差错报文:用于通知发送端数据包传输中的错误情况。

        查询/信息类报文:用于信息采集和配置。

8.2.1 ICMPv4 报文

差错报文:

        目的不可达(类型3),重定向(类型5),超时(类型11 ),参数问题(类型12)

查询/信息类报文:

        回显请求(类型8),回显应答(类型0),路由器通告(类型9),路由器请求(类型10)

其中重定向报文目的:指导主机或路由器改变路由决策,将数据发送到更优路径上。

8.2.2 ICMPv6 报文

ICMPv6不仅包含差错和查询/信息类报文,还有大量IPv6路由器和主机的配置,如RS,RA,NS,NA。

ICMPv6类型字段值:

        从0到127是差错类报文,从128到255是信息类报文。

ICMPv6也使用代码字段。

ICMPv6还支持大量标准选项,而ICMPv4不支持选项。

8.2.3 处理ICMP报文

收到重定向报文:会更新路由表。

目的不可达报文:可用于路径MTU发现(PMTUD)

ICMPv6报文处理规则:

        1. 收到未知ICMPv6差错报文,须传递给上层产生差错报文的进程。

        2. 收到未知ICMPv6信息类报文,丢弃。

        3. 发送ICMPv6差错报文时,应尽可能多地包含导致差错的原始IPv6报文,但不超过最小的IPv6 MTU ( 1280字节)

        4. IPv6节点须限制发送ICMPv6差错报文速率。

IPv6网络中链路层最小MTU是1280字节。IPv4中是576字节。

8.3 ICMP差错报文

请注意8.3.1到8.3.5章节都属于ICMP差错报文。

不会用ICMP差错报文响应以下报文:

        另一个ICMP差错报文。

        头部损坏的数据报(例如校验和错误)。

        IP层广播或组播数据。

        链路层广播或组播帧数据。

        无效地址(零地址、环回地址、广播地址,组播地址)

        第一个之外的分片。

发送ICMP差错报文:应包含导致错误数据报的IP头副本,包括IP选项和原始IP载荷,生成的ICMP数据报大小不超过网络最小MTU。

差错报文包含原始IP包载荷作用:

        使接收ICMP差错报文主机能根据IP头中协议或下一个头部将该差错报文传递到对应传输层和应用进程。

8.3.1 扩展的ICMP和多部报文

扩展的ICMP差错报文: 使ICMP差错报文包含额外信息以提供更多诊断信息。

用ICMP中代码字段指明具体原因,实现扩展功能。

后续章节详解。

8.3.2 目的不可达和数据包太大

ICMPv4目的不可达差错报文:

        网络不可达:

编辑推荐 本书是网络构建原型——4.4BSD的建造者的倾力之作,《TCP/IP解析》中的第1,主要讲述TCP/IP协议方面的内容。与其他的TCP/IP书藉的最大不同在于,本书不仅仅讲述了RFCS的标准协议,而且结合大量实例讲述了TCP/IP协议包的定义原因及在各种不同的操作系统中(如Sunos4.1.3、Soloris2.2、AIX3.2.2)的应用与工作方式,这样可以以动态方式讲述TCP/IP的知识,使读者可以轻松掌握TCP/IP的知识:路由协议、寻址协议、组控制协议、简单邮件传输协议等。全书内容实用性强,是在校生学习TCP/IP知识的良师益友。 内容简介  《TCP/IP详解1:协议》是本完整而详细的TCP/IP协议指南。描述了属于每层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材教师参考书。也适用于研究网络的技术人员。 作者简介 W.Richard Stevens(1951-1999)是位非常受人尊敬的专家,除了《TCP/IP详解》三本外,他还有其他两部最为畅销的作品:《UNIX环境高级编程》《UNIX网络编程》(两本)。 目录 译者序 前言 第1 概述 1 1.1 引言 1 1.2 分层 1 1.3 TCP/IP的分层 4 1.4 互联网的地址 5 1.5 域名系统 6 1.6 封装 6 1.7 分用 8 1.8 客户-服务器模型 8 1.9 端口号 9 1.10 标准化过程 10 1.11 RFC 10 1.12 标准的简单服务 11 1.13 互联网 12 1.14 实现 12 1.15 应用编程接口 12 1.16 测试网络 13 1.17 小结 13 第2 链路层 15 2.1 引言 15 2.2 以太网IEEE 802封装 15 2.3 尾部封装 17 2.4 SLIP:串行线路IP 17 2.5 压缩的SLIP 18 2.6 PPP:点对点协议 18 2.7 环回接口 20 2.8 最大传输单元MTU 21 2.9 路径MTU 21 2.10 串行线路吞吐量计算 21 2.11 小结 22 第3 IP:网际协议 24 3.1 引言 24 3.2 IP首部 24 3.3 IP路由选择 27 3.4 子网寻址 30 3.5 子网掩码 32 3.6 特殊情况的IP地址 33 3.7 个子网的例子 33 3.8 ifconfig命令 35 3.9 netstat命令 36 3.10 IP的未来 36 3.11 小结 37 第4 ARP:地址解析协议 38 4.1 引言 38 4.2 个例子 38 4.3 ARP高速缓存 40 4.4 ARP的分组格式 40 4.5 ARP举例 41 4.5.1 般的例子 41 4.5.2 对不存在主机的ARP请求 42 4.5.3 ARP高速缓存超时设置 43 4.6 ARP代理 43 4.7 免费ARP 45 4.8 arp命令 45 4.9 小结 46 第5 RARP:逆地址解析协议 47 5.1 引言 47 5.2 RARP的分组格式 47 5.3 RARP举例 47 5.4 RARP服务器的设计 48 5.4.1 作为用户进程的RARP服务器 49 5.4.2 每个网络有多个RARP服务器 49 5.5 小结 49 第6 ICMP:Internet控制报文协议 50 6.1 引言 50 6.2 ICMP报文的类型 50 6.3 ICMP地址掩码请求与应答 52 6.4 ICMP时间戳请求与应答 53 6.4.1 举例 54 6.4.2 另种方法 55 6.5 ICMP端口不可达差错 56 6.6 ICMP报文的4.4BSD处理 59 6.7 小结 60 第7 Ping程序 61 7.1 引言 61 7.2 Ping程序 61 7.2.1 LAN输出 62 7.2.2 WAN输出 63 7.2.3 线路SLIP链接 64 7.2.4 拨号SLIP链路 65 7.3 IP记录路由选项 65 7.3.1 通常的例子 66 7.3.2 异常的输出 68 7.4 IP时间戳选项 69 7.5 小结 70 第8 Traceroute程序 71 8.1 引言 71 8.2 Traceroute 程序的操作 71 8.3 局域网输出 72 8.4 广域网输出 75 8.5 IP源站选路选项 76 8.5.1 宽松的源站选路的traceroute程序示例 78 8.5.2 严格的源站选路的traceroute程序示例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山下小童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值