网络基础——ICMP协议

时间:2022-12-05 05:06:04

ICMP是“Internet  Control  Message  Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,属于网络层协议,用于在IP主机、路由器之间传递控制消息,包括报告错误、交换受限控制和状态信息等。

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


  • ICMP功能

ICMP是一种面向连接的协议,用于传输出错报告控制信息。它对于网络安全具有极其重要的意义。

ICMP主要功能包括:

    (1)确认IP包是否成功到达目标地址;

    (2)通知在发送过程中IP包被丢弃的原因;

    (3)ICMP也是基于IP协议工作的,但是它并不是传输层的功能,因此人们仍然把它归结为网络层协议;

    (4)ICMP只能搭配IPv4使用。如果是在IPv6的情况下,需要是用ICMPv6。


  • ICMP的报文格式
网络基础——ICMP协议


ICMP大概分为两类报文:

    (1)一类是通知出错原因

    (2)一类是用于诊断查询

网络基础——ICMP协议


  • ping命令

ping命令底层使用的是ICMP协议。

网络基础——ICMP协议

注意:这里ping的是域名,而不是URL。一个域名可以通过DNS协议解析成IP地址。

ping命令不光能验证网络的连通性,同时也会统计响应时间和TTL(IP包中的Time  To  Live,生存周期)。

ping命令首先会发送一个ICMP  Echo  Request给对端,对端收到以后,会返回一个ICMP  Echo  Reply。


一个需要特别注意的问题:

Telnet是23号端口,ssh是22号端口,那么ping是什么端口呢?

正解:ping命令基于ICMP,是在网络层。而端口号是传输层的内容,在网络层无端口号这个概念!