计算机网络协议分析 第七课ICMP
第五章 ICMP
ICMP协议
问:当你ping一些网站的时候ping不通,是否代表着一定是数据报出错或半路丢失?
答:可能是拒绝你的请求,也可能是拒绝发响应。我们学校的官网就是属于ping不通,但用浏览器能打开
问:如何理解“IP协议没有差错报告报文”?
答:从“传输过程中IP数据报是否出错?是否到达目的主机?”方面理解
问:ICMP用于向谁报告差错?可报告哪些差错?可纠正差错吗?哪些节点需要运行ICMP?
答:ICMP中只含源地址和目的地址所以向源站报告差错。报告的差错有网络问题,路由器问题,网络构造等问题。不可纠正差错。发送方、接收方、节点都要运行ICMP
5.1 ICMPv4报文
已知ping -l出去的默认32字节
ICMP报文ping出去时,32(原默认字节)+8ICMP首部+20数据部分=60字节
ICMPv4报文的类型
详见课本P66,推荐背诵
ICMPv4差错报告报文
在ICMPv4差错报告报文中,可以得知以上4种信息。
从上到下:
- 在ICMP首部中获取
- 在ICMP首部中获取
- 后面一个IP首部中获取
- 后面一个IP首部中获取
1. 终点不可达ICMP报文
由“代码”字段指明丢弃该数据报的具体原因:
- 网络不可达(代码=0)路由器找不到目标网络后被丢弃
- 主机不可达(代码=1)最后一个路由器找不到目的MAC(由于关机等原因)
- 协议不可达(代码=2)由于路由器或主机的协议被卸载等情况而消失了
- 端口不可达(代码=3)主机或者路由器的端口没开,无法访问
- 不能分片(代码=4)DF位被置位,数据报不能分片却遇到必须分片的情况
。。。。
2.超时ICMP报文
两种情况下产生:
- TTL=0(代码=0)路由器上的问题,主机上不会遇到,因为主机不会执行TTL-1的操作
- 数据报分片重组超时(代码=1)目标主机上会遇到
3.参数错误ICMP报文
当IP数据报的首部出错时:
- IP首部某字段有差错时,代码=0,指针指向差错字段
- 缺少所需的选项时,代码=1,指针不使用
4.重定向ICMP报文
当网络拓扑发生变化时,路由重定向ICMP报文可以更新主机的路由表。(所以主机是有路由表的,用route print查看路由表)
当A向C发送数据时,A会向R1查询主机C的信息,然后发现R2是必经的路径,从A自己走会更好,于是发重定向报文给A,使A的路径改成A-R2-C
例题P77,第三题
答:因为R5不是S的网关,于是发送的信息无法改变S的路由表,下一个MAC依旧是R1。如果R4和R1在同一个位置就可以。
ICMPv4请求应答报文
功能:实现对网络的故障诊断与网络控制
ICMP请求应答报文总是在源和目标之间双向、成对出现
类型值 | 报文类型 | 作用 |
---|---|---|
8/0 | 回送请求/应答报文 | 测试两个站点之间连通性 |
13/14 | 时间戳请求/应答报文 | 测试两个站点之间的往返时间 |
9/10 | 路由器通告/恳求报文 | 通告/寻找默认路由器 |
1.回送请求和应答报文
- 类型=8/0:回送请求/回送应答报文
- 回送应答报文“数据区”=回送请求报文“数据区”
- 标识和序号:用来匹配请求报文和应答报文
- 注意:成对的请求和应答报文使用相同的“标识”和“序号”字段
2.时间戳请求和应答报文
- 初始时间戳:发送方发送请求报文时填写
- 接收时间戳:接收方收到请求报文时填写
- 传送时间戳:接收方发送应答报文时填写
问1:如何估算往返时延?
答:往返时延=发送方收到应答报文的时间-初始时间戳
问2:如何估算传输时延?
答:传输时延=往返时延-(传送时间戳-接收时间戳)
3.路由器通告和恳求报文
路由器定期(10分钟)广播发送路由器通告报文,正在监听的主机更新路由表
主机启动后广播发送路由器恳求报文,寻找默认路由器
这个报文无线用的多,移动用的少
PING程序
- 在命令行中输入:ping -f -l 1472 192.168.1.1
- 如果出现:Packet needs ti be fragmented but DF set.(表示数据包太大需要分片,DF位被置位无法分片)
- 当ping成功时:MTU=-l后面的数据+ICMP头(8字节)+IP头(20字节)
Tracert程序
Q1:描述Tracert程序的工作过程
答:主机A向R1、R2各发送3个类型值8的回送请求报文,收到超时ICMP报文,再向B发送3个回送请求报文,收到类型值为0的超时应答报文
Q2:Tracert程序运行结束时主机A发出IP数据报的总个数?
答:3*3,对R1、R2、B三个各发三个报文
Q3:主机A收到哪几种类型ICMP报文?
答:请求,相应,超时三种
衍生:windows操作系统下Tracert程序正常运行时使用了哪些类型的ICMP报文?
答:回送请求和应答报文、超时;如果是UNIX系统则是超时和终点不可达
Q4:主机A如何判断何时结束Tracert程序?
答:B向A发送的不同于R1、R2发送类型的类型值为0的超时应答报文
Traroute的区别:
A发送的是UDP,R1,R2发回的内容一致,B发的是端口不可达的网络不可达报文。
衍生:以下ICMP差错报告报文中,哪些类型是既可能由路由器生成也可能由目的主机生成的?( )
A:终点不可达 B:超时
C:重定向 D:参数错误
答案在末尾哦~
Tracert与IP记录路由选项
一句话来说就是,记录路由选项是来回的
5.2 ICMP的安全问题
课本P76
基于ICMP的DOS攻击:ICMP Smurf攻击
攻击方伪装自己的IP地址为被攻击方的IP地址给目标网络主机发送ICMP回送请求报文,目标网络向被攻击方发送ICMP回送应答报文,导致对被攻击方造成DDos攻击
基于ICMP重定向的路由欺骗
向网络中发送伪造的路由重定向ICMP报文,让所有主机将到达某些目的网络的IP数据报都转发给自己。
衍生题答案:A、B