TCPIP详解Protocol 读书笔记(七) Ping程序

TCP/IP详解:Protocol 读书笔记(七)

Chapter7 Ping程序

文章目录

  • TCP/IP详解:Protocol 读书笔记(七)
    • Chapter7 Ping程序
      • Ping程序
      • IP记录路由选项
      • IP路径问题(一个例子)

好久没有更新博客了,这两个月一直在阅读TCP/IP详解,并也在写文章,但是没有一直更新到博客上。现在我把做的笔记都放上来,理解有限,希望大家多提意见。
Ping程序是对两个TCP/IP系统连通性进行测试的基本工具。它只利用ICMP回显请求和回显应答报文,而不用经过传输层(TCP/UDP)。Ping服务器一般在内核中实现ICMP的功能。

Ping程序

我们称发送回显请求的ping程序为客户,被ping的主机为服务器。大多数的TCP/IP实现都在内核中直接支持Ping服务器。

在上一篇笔记中提到的ICMP数据包格式中的其他信息没有在图中具体标注出来。下图将会给出具体答案。

TCPIP详解Protocol 读书笔记(七) Ping程序_第1张图片

对于其他类型的ICMP查询报文,服务器必须响应标识符和序列号字段。另外客户端发送的选项数据必须做出回显。具体到ping程序,在Unix系统中,在实现ping程序时,内核把ICMP报文中的标识符字段设置成发送进程的ID号。这样就可以在一台主机上运行多个ping程序,每个进程的进程号不同,可以用作区分。

序列号的作用是发送的每个数据分组的序列号。序列号从0开始,每发送一次新的回显请求就加1。ping程序打印出返回的每个分组的序列号,我们可以通过这些信息查看是否有分组丢失、失序或重复。IP协议不能保证数据包一定会传输到目的地址,因此数据分组丢失、失序、重复都有可能发生。

IP记录路由选项

我们可以通过ping -R [IP地址]的方式查看IP记录路由。这样ping程序在发送的IP数据报中设置IPRR选项。因此,每个处理该IP数据报的路由器都把自己的IP地址放入选项字段中。当数据报到达目的端时,IP地址清单应该复制到ICMP回显应答中。这样返回途中所经过的路由器也被加入清单中。当ping程序收到回显应答时,就会打印出这份IP地址清单。

需要注意的是,路由器一般都是多接口的。那么在IP地址清单中记录的是路由器入口地址还是出口地址呢?在RFC791中指定路由器记录出口IP地址。

IP路径问题(一个例子)

这是这章中列举出的一个例子,在子网140.252.1上面ping主机aix,并带有记录路由选项。在slip主机上运行有如下输出结果:

TCPIP详解Protocol 读书笔记(七) Ping程序_第2张图片

观察IP地址清单中的地址。可以看到传出的ICMP回显请求数据报直接从netb传到aix,而返回的ICMP回显应答却从aix开始经由路由器gateway再到netb。

问题在于aix不清楚需要把目的地为子网140.252.13的IP数据报发送到主机netb上。因此,aix会通过找寻其路由表中的默认选项,当没有明确某个目的主机的路由时,就把所有数据报发往默认项指定的路由器gateway。路由器gateway再把数据报转发给netb主机。

那么又引出另外一个问题,为什么gateway没有发送ICMP报文重定向到aix,以更新它的路由表,这样就可以aix可以将ICMP回显应答数据报直接发送给netb。因为数据报产生的重定向是一份ICMP回显请求报文,因此重定向没有产生。

如果我们通过Telnet登录到aix上的daytime服务器,ICMP就会产生重定向,因此aix上的路由表也会更新。这样ICMP回显应答数据报从aix返回时不会再经过gateway,而是直接到达netb。

你可能感兴趣的:(TCP/IP,计算机网络,TCP-IP协议栈)