关于ICMP“端口号“问题
有被朋友问:ICMP的端口号是多少呢?
当时我也懵,记得ICMP是Internet貌似没有端口号吧?这个不太清楚啊。
然后Google了一圈,做一下总结。
ICMP简介:
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是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报文格式,具体如下:
类型代码 | 类型描述 |
---|---|
0 | 响应应答(ECHO-REPLY) |
3 | 不可到达 |
4 | 源抑制 |
5 | 重定向 |
8 | 响应请求(ECHO-REQUEST) |
11 | 超时 |
12 | 参数失灵 |
13 | 时间戳请求 |
14 | 时间戳应答 |
17 | 地址掩码请求 |
18 | 地址掩码应答 |
补充:
ICMP是网络层协议;
Ping使用的是ICMP协议,ICMP不像http,FTP应用层有传输层的端口号,(它们使用TCP的端口号80和20/21)。ICMP直接封装在IP包内,所使用IP协议号为1。
总结:Ping用到的是ICMP协议。不是端口。ICMP没有端口号可言。