欢迎来到天天文库
浏览记录
ID:49196363
大小:742.00 KB
页数:11页
时间:2020-03-01
《【精品】TCPIP协议详解卷07.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、I卞载1第7章Ping程序7.1引言“ping”这个名字源于声纳泄位操作。Ping程序由MikeMuuss编写,目的是为了测试另一台主机是否可达。该程序发送一份ICMP冋显请求报文给主机,并等待返回ICMPld显应答(图6・3列击了所有的ICMP报文类型)。—般來说,如果不能Ping到某台主机,那么就不能Telnet^者FTP到那台丄机。反过來,如果不能Telnet到某台主机,那么通常可以用Ping程序来确疋问题出在哪里。Ping程序还能测出到这台主机的往返时间,以表明该主机离我们有“多远”。在本章屮,我们将使用Ping程序作为诊断工具來深入剖析IC
2、MP。Ping还给我们提供了检测IP记录路由和时间戳选项的机会。文献[Stevens1990]的第11章提供了Ping程序的源代码。几年前我们还可以作出这样没有限沱的断言,如果不能Ping到某台主机,那么就不能Telnet或FTP到那台上机。随着Internet^:全意识的增强,出现了提供访问控制淸单的路由器和防火墙,那么像这样没有限左的断言就不再成立了°—台主机的可达性可能不只取决于IP层是否可达,还取决于使用何种协议以及端口号。Ping程序的运行结果可能显示某台主机不可达,但我们可攻用TelnetS程登录到该台主机的25号瑞口(邮件服务器)。7.
3、2Ping程序我们称发送冋显请求的ping程序为客户,而称被ping的主机为服务器。人多数的TCP/IP实现都在内核屮丑接支持Ping服务器一这种服务器不是一个用八进程(在第6章屮描述的两种ICMP查询服务,地址掩码和时间戳请求,也都是直接在内核屮进行处理的)。ICMPAI显请缈糊糊答报蜩阴7-1所示。检验和&字节的选项数据必须冋显,假设客八对这些信息都会感兴趣。客户发送Unix系统在实现ping稈序时是把ICMP报文屮的标识符字段置成发送进程的ID号。这样即使在同一台主机上同时运行了多个ping稗序实例,ping程序也可以识别出返回的信息。序列号从
4、0开始,每发送一次新的回显请求就加loping程序打印出返回的每个分组的序列号,允许我们査看是否有分组丢失、失序或重复。IP是一种最好的数据报传递服务,因此这三个条件都有可能发生。旧版本的ping程序曾经以这种模式运行,即每秒发送一个冋显请求,并打印出返回的每个冋显应答。但是,新版本的实现需耍加上-s选项才能以这种模式运行。默认情况下,新版本的ping程序只发送一个冋显请求。如果收到回显应答,则输Ill“hostisalive”;否则,在20秒内没有收到应答就输出"noanswer(没有冋答)”。7.2.1LAN输出在局域网上运行ping程序的结果输
5、:Li—般有如下格式:bsdi%pingsvr4PINGsvr4(140.252.13.34):56databytes6464646464646464•?bytesbytesbytesbytesbytesbytesbytesbytesfromfromfromfromfromfromfromfrom140.252.13.34:140.252.13.34;140.252.13.34:140.252.13.34:140.252.13.34:140.252.13.34:140.252.13.34:140.252.13.34:icmp_seq»0icmp_se
6、q-licmp_seq-2icmp_seq-3icmp_seq»4icmp^seq^Sicmp_seq-6icmp_seq-7ttl-255ttl-255ttl-255ttl-255ttl-255ttl«255ttl-255ttl-255pingmsmsmsmsmsmsmsmstime-0time-0time-0time-0time-0time・0time-0time-0键入申断键来荐止显示svr48packetstransmitted^8packetsreceived,0%packetlossround-tripmin/avg/max■0/0/0m
7、sstatistics当返回ICMP回显应答时,要打印出序列号和TTL,并计算往返时间(TTL位于IP首部中的生存时间字段。当前的BSD系统屮的ping程序每次收至侗显应答时都打印出收到的TTL——有些系统并不这样做。我们将在第8章屮通过tgcerou*程序来介绍TTL的用法)。从上面的输出屮可以看出,冋显应答是以发送的次序返冋的(0,1,2等)。ping程序通过在ICMP报文数据屮存放发送请求的时间值来计算往返时间。当应答返冋时,用当前时间减去存放在ICMP报文屮的时间值,即是往返时间。注意,在发送端bsdi上,往返时间的计算结果都为0ms。这是因
8、为程序使用的计时器分辨率低的原因。BSD/386版本0.9.4系统只能提供10ms级的计时器(在附录由
9、
10、有
此文档下载收益归作者所有