linux的ping命令属于OSI七层模型的哪一层?

  OSI七层模型,自顶向下为:应用、表现、会话、传输、网络、数据链路、物理这7层。常用的一些协议如http、ftp都是应用层,tcp/udp是传输层,ip是网络层,等等。到此为止,这些估计大部分人都知道。现在问题来了,ping这个命令,它不需要端口,你猜它属于哪一层?

  这是个有意思的问题,其实也简单,知道它用的协议,就知道它是哪一层了。我们用的最多的是ping一个ip看它通不通,这时用的是ICMP协议,全称Internet Control Message Protocol,Internet控制消息协议。该协议用于在IP网络中发送控制消息,获取在通信环境中可能发生的各种问题的反馈。ICMP属于网络层协议,自然ping命令就在第三层。

  ping的命令格式如下:

ping [-t][-l字节数][-a][-i]目标主机IP或者域名

  参数说明:

-t:参数会一直不停的执行
-a:参数可以显示主机名称
-l:参数可以设定ping包的大小
-n:指定发送包的个数

  ping就只有在第三层吗?其实也未必,当使用ping 域名 这样的形式时,不仅用到了ICMP去检测两台设备之间的双向连通性,还需要通过DNS协议先把域名转为IP,那么DNS属于哪一层呢?应用层,那是不是也能说ping是属于第7层了?我觉得,这个就见仁见智了。单就ping这个命令的目的来说,就是为了发送数据包到目标IP去,域名解析的目的还是获取IP,所以属于第三层是肯定没错的。但既然用到了DNS协议了,如果你非得说它也算第7层了,我也认。

原文地址:https://www.cnblogs.com/wuxun1997/p/14581782.html