《TCP/IP详解》学习笔记-第6/7/8章 ICMP/Ping/Traceroute

来源:互联网 发布:dota2第一滴血数据bug 编辑:程序博客网 时间:2024/06/16 17:34

1、ICMP:Internet控制报文协议

用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

1、ICMP报文是在IP数据报内部被传输的:

这里写图片描述

2、ICMP报文的格式:

这里写图片描述
ICMP数据包由8bit的错误类型和8bit的代码和16bit的校验和组成。而前 16bit就组成了ICMP所要传递的信息。

3、ICMP报文的类型:

ICMP协议大致分为两类,一种是查询报文,一种是差错报文。其中查询报文有以下几种用途:
(1)ping查询
(2)子网掩码查询
(3)时间戳查询(可以用来同步时间)
差错报文则产生在数据传送发生错误的时候。

2、Ping程序

目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。

ping程序还能测出到这台主机的往返时间,以表明该主机离我们有“多远” 。

它只利用ICMP回显请求和回显应答报文,而不用经过传输层(TCP/UDP) 。ping服务器一般在内核中实现ICMP的功能。

3、Traceroute程序

Traceroute程序可以让我们看到 I P数据报从一台主机传到另一台主机所经过的路由
Traceroute程序还可以让我们使用 I P源路由选项

尽管ping工具也可以进行侦测,但是,因为ip头的限制,ping不能完全的记录下所经过的路由器。所以Traceroute正好就填补了这个缺憾。

Traceroute的原理:
(1)它收到目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生一个主机不可达的ICMP数据报给主机。
(2)主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据报。
(3)如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器ip。从而避开了ip头只能记录有限路由IP的问题。

0 0
原创粉丝点击