我们知道,IP协议提供的是尽力而为的服务。
IP协议的优点是简单,但缺少差错控制和查询机制。IP分组一旦发出去,是否到达主机,以及在传输的过程中出现哪些错误,源主机是不知道的。在这种情况下,如果出现一些问题,例如:路由器找不到目的主机,分组生存时间超过而必须被丢弃。
针对这些问题,设计了一种差错报告与查询、控制机制来了解信息,决定如何处理。ICMP协议就是为解决以上问题而设计的,ICMP的差错与查询、控制功能对于保证TCP/IP协议的可靠性运行时至关重要的。*ICMP协议是在网络层*的协议。
ICMP的特点 * ICMP协议是在网络层的协议,但是报文不是直接传送给数据链路层,而是封装成IP分组,然后再传送给数据链路层。* ICMP不能独立于IP协议而单独存在,是IP协议的一个组成部分。* ICMP只能搭配IPV4使用,如果是IPV6,需要使用的是ICMPv6. ICMP的功能 * 确认IP包是否成功到达目的地址;* 通知在发送过程中IP包被丢弃的原因; ICMP报文格式
ICMP报文分为两类:差错报告报文与询问报文。
以下几种情况不产生差错报告报文
(1)对于分片的分组,如果不是第一个分片出错,则不产生ICMP差错报文。
(2)多播分组出错,不产生ICMP差错报文。
(3)具有特殊地址(127.0.0.0或0.0.0.0)的分组出错,不产生ICMP差错报文。
ping后面跟的是域名,不是URL。
ping是Windows、Unix和Linux系统下的一个命令。也属于一个通信协议,是TCP/IP的一部分,用于在IP主机、路由器之间传递控制信息。
ping的作用 利用ping可以查看网络的连通性,更好的帮助我们分析和判断网络故障。ping发送一个ICMP,回声请求消息给目的地并报告是否收到所希望的ICMP echo(ICMP回声应答),是用来检测网络是否畅通或者网络连接速度的命令。ping也会统计响应时间和TTL(生存周期)。在Windows下:
在Linux下:
ping命令通常用来作为网络可用性的检查。ping命令可以对一个网络地址发送测试数据包,看该网络地址是否有响应并统计响应时间,以此测试网络。
向指定的网络地址发送一个长度的数据包(ICMP Echo Request),按照约定,若指定网络地址存在,会返回同样大小的数据包(ICMP Echo Reply)。若没有返回,就是超时了,会认为指定的网络地址不存在。
ICMP协议通过IP协议发送的.
在Linux/Unix系统下,序号从0开始计数,依次递增。而Windows ping程序的ICMP是没有规律的。 ping和ICMP的关系ping命令发送数据使用的是ICMP协议。
我们知道,telnet是23号端口,ssh是22号端口。那么,ping是什么端口呢?谈到这句话,有的人可能就会懵了,ping是没有端口的,在网络层,端口号是传输层的内容,ping不使用TCP/UDP,跨过传输层,在网络层用的是ICMP协议,属于原生套接字,不需要端口号。