专栏名称: 林湾村龙猫
资深后台开发
51好读  ›  专栏  ›  林湾村龙猫

系列TCP/IP协议-ping与traceroute命令(006)

林湾村龙猫  · 掘金  ·  · 2019-04-24 03:40

正文

阅读 5

系列TCP/IP协议-ping与traceroute命令(006)

一、引言

在错综复杂的网络的世界里,如何知道对方主机是否可达,链路是否畅通是一个不太简单的问题。现在有两种常用的程序或命令来检查这些问题(ping与traceroute命令)。   "ping"这个名字来源于航海的声纳定位操作。其操作类似于声纳定位。只不过这里发送的是ICMP数据包而不是声波。该命令的目的是用于确定某个主机是否可达,距离当前主机多远。   traceroute,正如它的名字一样,该命令用来打印出主机A到主机B中间走过的路由IP地址。

二、ping命令

1.原理

ping的原理实际上很简单。就是主机A想要知道主机B的某些信息(如是否可达)。这时候主机A就像主机B发送一份ICMP回显请求数据包,并且为主机B回应等待一段时间(超时);主机B收到ICMP回显请求数据包后回应一个ICMP回显应答数据包给主机A,若主机B不可达或出错,主机A会超时或收到ICMP不可达差错数据包。需要注意的是 ping命令只会检查到某个主机而不能够具体到某个端口号。

2.ICMP回显请求/应答数据包

图1.ICMP回显请求/应答数据包格式

上图为该数据包格式。

  • 具体的ICMP数据包参见: (5)TCP/IP协议-ICMP协议
  • 当前类型字段值为:0-ICMP回显请求数据包,8-ICMP回显应答数据包。
  • 代码段:都为0
  • 标识符:unix系统通常是设置称品尼高程序的进程ID
  • 序列号:没发送一次新的回显请求就加1

3.抓包

运行ping baidu.com

图2. 运行ping

用wireshark抓包可以看到,有四组ICMP回显请求/应答数据包

图3.四组抓包数据

对于其中一组(47与48)

图4. ping的ICMP回显请求数据包
图5.ping的ICMP回显应答数据包







请到「今天看啥」查看全文