ICMP协议详解

ICMP协议是网络层的一个重要协议,用于网络诊断和错误报告。它基于IP协议工作,通过发送ICMPEchoRequest和接收ICMPEchoReply来验证网络连通性,如ping命令所示。此外,ICMP还用于通知IP包的丢弃原因和进行路径跟踪,如traceroute命令。ICMP报文包含类型、代码和检验和字段,不涉及传输层的端口号。
摘要由CSDN通过智能技术生成

ICMP协议

        一.概念

        ICMP协议是一个网络层协议。和IP协议处于同一层,但是ICMP协议底层用的是IP协议。

        一个搭建好的网络,往往需要先进行简单的测试,来验证网络是否通畅。单单使用IP协议并不提供可靠性传输。似乎用IP协议如果丢包,并不能通知传输层是否丢包以及丢包原因。

        ICMP协议,如果在网络中丢包,会返回一个丢包原因给传输层。

        二.ICMP作用

  • 确认IP包是否成功达到目标IP。
  • 通知在发送过程中的IP包被丢弃的原因。

        注意:

  • ICMP是基于IP协议工作的,但是它并不是传输层的功能,因此人们仍把它归结于网络层协议。
  • ICMP只能搭配IPv4使用。如果是IPv6的情况下,需要使用ICMPv6。

        三.ICMP报文格式

        由于ICMP底层用的是IP协议,所以ICMP报文是IP协议的有效载荷。

        所以IP报头的协议字段可能代表的是ICMP/TCP/UDP,当协议字段为1时,代表ICMP。

        由下可知ICMP报头一共8字节。

  • 类型:1字节,说明该报文属于什么类型。
  • 代码:1字节,说明ICMP报文的代码。
  • 检验和:2字节,检验ICMP报文是否有错误。

ICMP类型分两类:

  1. 通知出错原因
  2. 用于诊断查询

类型分类:

         四.基于ICMP协议的命令

        4.1 ping命令

 作用:验证网络连通性,统计响应时间和IP数据包的生存时间TTL。

 注意:ping的时一个域名,而不是url网址,域名可以通过DNS解析成IP地址。

 ping命令执行细节

  • ping命令会发送一个ICMP Echo Request给对端
  • 对端接收后,返回一个ICMP Echo Reply
  • 注意是在主机A网络层发出ICMP Echo Request,再主机B接收到网络层,再发出ICMP Echo Reply

 问题:ping是否有端口号?

没有,ping命令基于ICMP,再网络层,端口号是传输层的内容。ICMP根本就不关注端口号。

       4.2 traceroute命令

        基于ICMP协议实现,能够打印出可执行程序主机到目标主机之间尽力了多少路由器。

说明:

  • 记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关。
  • 我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间
  • 有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值