【计算机网络】网络层 - ICMP 协议

概述

ICMP(Internet Control Message Protocol) 网际控制报文协议. 是TCP/IP协议簇的一个子协议. 属于网络层

使用IP的基本支持, 用来传输控制消息.

功能: 检测网络是否正常工作, 遇到异常问题时的诊断.

ICMP报文

ICMP报文可分为两类

  • ICMP差错报告报文
  • ICMP询问报文

在这里插入图片描述

前四个字节有三个字段, 类型 代码 检验和.

后面的四个字节与ICMP类型有关, 数据部分的长度也取决于ICMP类型

  • 类型
ICMP报文种类类型的值ICMP报文的类型
差错报告报文
3终点不可达路由器主机不能交付数据报时想源点发送该报文
4源点抑制路由器主机因拥塞丢弃数据报,向源点发送,告知放慢发送速率
5改变路由(Redirect)路由器向主机发送改变路由报文,改变更适合的路由
11时间超时收到生存为0的数据报时,丢弃数据
12 参数问题 当路由器或目的主机收到错误参数时,发送该报文.
询问报文8 或 0会送请求或回答主机可发送请求报文, 接收到的主机要发回答报文,测试状态
13 或 14时间戳请求或回答主机发送时间戳请求报文,接收到的主机回复其日期和时间
  • 代码
    代码字段是为了进一步区分某种类型中的几种不同情况.

  • 检验和
    检验和字段用来检验整个ICMP报文.

差错报告报文:
将收到的需要进行差错报告的IP数据报的首部数据字段的前八个字节(运输层的端口号)提取出来.
加上相应的ICMP差错报告的前8个字节.
在加上IP数据报的首部形成数据包发送给源点.

应用

ping命令

ping命令使用ICMP的会送请求和答应报文
在这里插入图片描述

一次往返2个包, 使用抓包工具刚好抓到8个ICMP包.

在这里插入图片描述

请求

在这里插入图片描述

回应
在这里插入图片描述

tracert

tracert可以显示数据包到达目的地所经过的路径, 设置TTL从1开始递增, 则经历过的路由器依此会返回ICMP超时报文, 从而获取所经路径的详细信息.

在这里插入图片描述

第一个包 设置TTL = 1

在这里插入图片描述
在这里插入图片描述
收到一个超时时间超时报文

在这里插入图片描述

在这里插入图片描述
这样的包发了三次, 收到三次回复, 对应着tracert命令获得的三次延迟


之后再发TTL = 2的数据包 以此类推.

ICMP攻击

向目标主机长时间, 连续, 大量的发送ICMP数据包, 会导致系统占用过高, 最终有可能导致瘫痪.

或是利用ICMP协议规定的一些漏洞, 对主机发起攻击.

应对 : 选择合适的防火墙, 在路由器或主机上对ICMP访问进行限制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ICMP协议属于网络层(第三层)。 以下是IP协议的首部格式: ``` 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` 其中: - Version:IP协议的版本号,通常为4。 - IHL:IP协议首部的长度,以32位字为单位表示。因为IP协议首部的长度是可变的,所以需要使用该字段来指示首部的长度。 - Type of Service:服务类型,用于指示该数据包在网络中的优先级和重要性。 - Total Length:IP数据包的总长度,包括首部和数据部分。 - Identification:用于唯一标识IP数据包的标识符。 - Flags:标志位,用于指示该数据包是否需要进行分片处理。 - Fragment Offset:分片偏移量,用于指示该数据包在分片后的位置。 - Time to Live:生存时间,用于指示该数据包在网络中可以存活的最长时间(以跳数为单位)。 - Protocol:协议类型,用于指示该数据包的上层协议类型,如TCP、UDP、ICMP等。 - Header Checksum:IP协议首部的校验和,用于检查首部是否正确地传输。 - Source Address:发送端的IP地址。 - Destination Address:接收端的IP地址。 - Options:可选项,用于在IP协议中添加一些额外的功能。 - Padding:填充位,用于保证IP协议首部的长度是32位字的整数倍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值