ICMP端口号问题

ICMP端口号的深思

朋友面试的时候回来问我:小温,说一下ICMP的端口号是多少呢?

当时我也懵了,我是这样回答的:ICMP是Internet控制报文协议,没有端口号吧?这个不太清楚啊。

呵呵,一个常见的协议问题,很纠结:所以稍作总结:

ICMP简介:

ICMP是(Internet Control Message ProtocolInternet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

ICMP功能:

从技术角度来说,ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性﹐其功能主要有:

  • 侦测远端主机是否存在。

  • 建立及维护路由资料。

  • 重导资料传送路径。

ICMP报文格式:
ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文。

IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式;代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。RFC定义了11种ICMP报文格式(其中代码为15  信息请求;16     信息应答,的信息报文已经作废),具体如下:
类型代码     类型描述
0     响应应答(ECHO-REPLY)
3     不可到达
4     源抑制
5     重定向
8     响应请求(ECHO-REQUEST)
11     超时
12     参数失灵
13     时间戳请求
14     时间戳应答
17     地址掩码请求
18     地址掩码应答
ICMP报文格式就分析到这里了(后续我会通过抓包的形式截图分析的)。

最后补充一点:

ICMP是网络层协议;

Ping使用的是ICMP协议,ICMP不像http,FTP应用层有传输层的端口号,(它们使用TCP的端口号80和20/21)。ICMP直接封装在IP包内,所使用IP协议号为1。

总结:Ping用到的是ICMP协议。不是端口。ICMP没有端口号可言。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注