【计算机网络】网络层 : ICMP 协议 ( ICMP 差错报文 | 差错报文分类 | ICMP 询问报文 | ICMP 应用 | Ping | Traceroute )
文章目录
一、ICMP 协议
网络层 协议 :
① IP 协议 : IP 协议是 网络层 核心协议 ;
② ARP 协议 : ARP 协议 是 网络层 与 数据链路层 之间的协议 , 通过 IP 地址查找 物理地址 ;
③ ICMP 和 IGMP 协议 : ICMP 和 IGMP 协议 是 网络层 与 传输层 之间的协议 ; 目的是更加有效的转发 IP 数据报 , 提高交付的成功率 ;
二、ICMP 协议 简介
ICMP 协议 简介 :
① ICMP 协议 全称 : 网际控制报文协议 ;
② ICMP 协议 功能 :
- 差错报告 : 对应 发送 差错报文 ;
- 网络探寻 : 对应 发送 探寻报文 ;
③ ICMP 报文 在 IP 数据报中位置 : ICMP 报文 属于 IP 数据报 的 数据部分 ;
ICMP 报文内容 : 其中的类型是 差错报文 / 探询报文 ;
三、ICMP 五种差错报告报文
ICMP 五种差错报告报文 :
① 终点不可达报文 : 路由器 / 主机 不能交付数据报时 , 就会向源点 发送 终点不可达报文 ;
② 源点抑制报文 : 路由器 / 主机 拥塞 , 丢弃 IP 数据报 , 向源点发送源点抑制报文 , 让源点降低发送速率 ;
③ 时间超过报文 :
- 生存周期为
: 路由器 生存周期 TTL =
时 , 丢弃该报文 , 同时向源点发送 时间超过报文 ;
- 分组丢失 : 终点 在预定时间内 没有收到 数据报的全部数据分组时 , 就会将已收到的数据分组全部丢弃 , 向源点发送时间超过报文 ;
④ 参数问题报文 : 路由器 / 主机 收到的 数据报 首部 字段由错误值 , 丢弃该数据报 , 向源点发送 参数问题报文 ;
⑤ 改变路由报文 : 路由器 将 改变路由报文 发送给主机 , 让主机下次将数据报发送给另外的路由器 ; 又称为 “重定向报文” ;
四、ICMP 差错报文形成
ICMP 差错报文形成 :
① 取出 IP 数据报内容 : 取出 IP 数据报 首部 , 以及 数据部分的 前
字节 ;
② ICMP 差错报文 组成 : ICMP 前
个字节 + IP 数据报 首部 + IP 数据报数据部分前
字节 ;
③ 组装 IP 数据报 : 将 ICMP 数据报 装入 IP 数据报 数据部分 ;
五、ICMP 差错报文 不发送 情形
ICMP 差错报文 不发送 情形 :
① ICMP 差错报文错误 : IP 数据报 中 , 如果 ICMP 差错报文部分出错 , 就不用再发送 ICMP 差错报告报文了 ;
② 后续数据报分片 : ICMP 差错报文只针对数据报的第一个分片 , 后续分片就不发送 ICMP 差错报告报文了 ;
③ 组播地址 : 如果 IP 数据报的地址是 组播地址 , 不发送 ICMP 差错报文 ;
④ 特殊地址 : 如果 IP 数据报的地址是 特殊地址 , 不发送 ICMP 差错报文 ; 如 : 默认路由地址 等 ;
六、ICMP 询问报文
ICMP 询问报文 :
① 回送请求 和 回答报文 : 主机 / 路由器 询问特定主机 , 目的主机收到该报文后 , 必须给源主机 发送 ICMP 回答报文 ; 目的是 测试该 目的主机是否可达 ;
② 时间戳请求 和 回答报文 : 请求 主机 / 路由器 当前的日期 和 时间 ; 用于进行时钟同步 和 时间测量 ;
七、ICMP 应用
ICMP 应用 :
① PING : 测试连通性 , 使用 ICMP 回送请求 和 回答报文 ;
② Traceroute : 追踪 分组 从原点 到 终点 路径 , 使用 ICMP 时间超过差错报告报文 ;
Traceroute 应用 细节 :
源主机 与 目的主机之间 有
个路由器 ;
第
个数据报 TTL =
, 第
个路由器收到该数据报 , 发现其生存周期为
, 向源主机回送 ICMP 时间超过差错报告报文 , 这样就得到了第
个路由器的地址 ;
第
个数据报 TTL =
, 第
个路由器收到该数据报 , 发现其生存周期为
, 向源主机回送 ICMP 时间超过差错报告报文 , 这样就得到了第
个路由器的地址 ;
第
个数据报 TTL =
, 第
个路由器收到该数据报 , 发现其生存周期为
, 向源主机回送 ICMP 时间超过差错报告报文 , 这样就得到了第
个路由器的地址 ;
相关文章
- zigbee协议栈应用(二)基础协议栈入门
- OSPF高级配置——学习OSPF路由协议的高级应用
- 区块链原理说明及其应用场景
- 【BSP视频教程】BSP视频教程第24期:应用实战,设计一款属于自己的Modbus RTU主从协议栈(2022-10-03)
- NLP涉及技术原理和应用简单讲解【一】:paddle(梯度裁剪、ONNX协议、动态图转静态图、推理部署)
- 【Android】使用Android开发应用过程中遇到ViewGroup的简单效以及aw和assets文件夹下的文件(Http协议的底层工作)
- 【Android 逆向】Android 进程简介 ( Android 应用启动流程 )
- 【Google Play】Android 应用用户协议 ( 生成用户协议 | HTML 用户协议模板 | Markdown 用户协议模板 )
- 锁MySQL的排他锁的优势及应用(mysql排他)
- MySQL中常用函数支持及其应用(mysql函数支持)
- Oracle数据库触发器类型及应用(oracle触发器类型)
- 构建一个即时消息应用(八):Home 页面
- 模板引擎注射:针对现代web应用的新型命令执行
- 深入了解Linux POSIX标准:实现高效多平台应用(linuxposix)
- Linux能做什么?——探究Can协议在嵌入式系统中的应用(linuxcan)
- Oracle数据库在毕业设计中的应用(oracle毕业设计)
- Linux及ed2k协议技术的应用(linuxed2k)
- MySQL的主从数据表设置与应用(mysql中主从数据表)
- 探索Redis协议抓包分析技术及应用(抓包分析redis)
- Redis长连接池实现高性能应用的突破(redis 长连接连接池)
- 苹果官方给ARKit开发者的22条建议,你家AR应用做到没?
- javascript之水平横向滚动歌词同步的应用
- Apache环境下PHP利用HTTP缓存协议原理解析及应用分析