展望2011

TCP/IP协议学习之实例ping命令学习笔记(四)

上一篇 / 下一篇  2007-08-08 15:49:39 / 个人分类:TCP/IP协议详解卷1的学习记录

51Testing软件测试网 r]0@u&D){

 

iS-mx(cq!HN:h2F:Og f0

8k!d8Zd1f&t0前文请看:TCP/IP协议学习之实例ping命令学习笔记(三)

Fl8k9ov4`051Testing软件测试网G|-@ J;R | n

2.ICMP协议的学习
&c"Ny0PjwD\ v{0《TCP/IP协议详解》中包含的章节有第6、7章。51Testing软件测试网5l6H!aJh
学习方法:从上面实例的观察中提出问题(Q),先在TCP/IP协议详解书中寻找答案,如果答案还不够详细,再从网上寻找答案。得到答案后,简短的写出答案(A)。在寻找答案中,可以对不懂的地方再次提出问题(Q),然后一样的过程寻找答案(A),如此反复进行。网上查找到的资料将会在问答(QA)的后面被记录下链接地址。书上查找到的资料位置不记录。

a V.UN G1Dp;Q051Testing软件测试网4CMY1dvqY|'[

Q:什么是ICMP协议?属于哪一层?51Testing软件测试网.[6JlX)g-P:r
A:ICMP(Internet Control Message Protocal)是指Internet控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的状态信息。51Testing软件测试网2~O4{w?5w1{t X
I C M P经常被认为是IP层(也就是指网络层)的一个组成部分。ICMP报文通常被I P层或更高层协议(TCP或UDP)使用(在本实例中是在IP层使用)。一些ICMP报文把差错报文返回给用户进程(在本实例中的用户进程是指ping进程)。ICMP报文是在IP数据报内部被传输的。如下图所示:51Testing软件测试网PV {S#mB0@:k9y(C*P
51Testing软件测试网/_u;^4?*eB}
和Ethereal中捕捉到的ICMP数据进行比较,其中包含了IP首部和ICMP报文,如下图所示:
7ph w#s!U,v051Testing软件测试网A C Z3r @N+G

51Testing软件测试网ng-t8`$Un B[W cT

Q:ICMP报文的格式是什么?51Testing软件测试网u%v wp;v(yw1U
A:如下图所示:
~Rx,Ku!y051Testing软件测试网7W?\IRyd M3w
所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。类型字段可以有1 5个不同的值,以描述特定类型的I C M P报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件。检验和字段覆盖整个ICMP报文。51Testing软件测试网z)J5c.v6W%j

51Testing软件测试网*ym T)Q en8m

Q:ICMP报文有哪些类型?ping所使用的是其中哪种?
t%UW4rL-N_9zfQ0A:共有18种类型字段,每种类型字段对应多个代码字段,所以,不同ICMP类型由报文中的类型字段和代码字段来共同决定。每种ICMP类型属于2种报文性质中的其中一种:查询报文和差错报文,具体见TCP/IP协议详解中的图6-3。51Testing软件测试网+tR6i hw'K a
Ping请求和应答的ICMP报文类型是不同的:51Testing软件测试网A?}9t1QLs4?$w
Ping请求所使用的类型字段=8,代码字段=0,对应的类型名为请求回显,属于查询报文。
O.CqP7b$U0Ping应答所使用的类型字段=0,代码字段=0,对应的类型名为回显应答,属于查询报文。

U1j E y]5kR g0^K051Testing软件测试网bR2Nt5~.K(H)jq"d F

Q:ping命令的请求ICMP报文格式是什么?应答ICMP报文格式又是什么?51Testing软件测试网p!Z-nf Bb5eu
A:ping命令的ICMP请求和应答报文格式如下图所示:
@,V;T.k$q*L3zB0 
1ym*Ar D*Q rE'W0类型、代码、检验和在前面的问答已经得到解释。51Testing软件测试网 mZ@+B;l7ug'P
标识符:U n i x系统在实现p i n g程序时是把I C M P报文中的标识符字段置成发送进程的I D号。这样即使在同一台主机上同时运行了多个p i n g程序实例, p i n g程序也可以识别出返回的信息。(那windows系统下呢?是否也是进程ID号?待解决)51Testing软件测试网 qMU:G.gu]2r
序号:序列号从0开始,每发送一次新的回显请求就加1(在本实例中,共发送了4次请求,但是序列号分别是3200、3300、3400、3500,和书中所说的不一致?在ping参数中并没有设置序列号这种功能的选项,所以第一个序列号可能是随机产生的,待解决)。p i n g程序打印出返回的每个分组的序列号,允许我们查看是否有分组丢失、失序或重复。
-~4c-yHiY:^3f0选项数据:客户发送的选项数据必须回显,假设客户对这些信息都会感兴趣。也就说,应答和请求的选项数据是一样的。(那么选项数据是如何被定制的?在ping参数中同样没有设置选项数据这种功能的选项,所以可能是DOS下默认发送的数据,待解决。)
? ?$e:J7Rmj0Ethereal工具捕捉到的ICMP第一次的请求报文数据,如下图所示:51Testing软件测试网dI!`wg:{*R(K
51Testing软件测试网A&e(|3|fx
 
3f4w+S0Ro0xY051Testing软件测试网-j1pI8\6e2Q0e+gDQ"E
和上面所说的ICMP请求报文相比较:
qmE$V8b^$@B D0类型=8,代码=0,检验和=175c,标识符=0400,序列号=3200,51Testing软件测试网&] P$V A.G&j%q~&q
选项数据=abcdefghijklmnopqrstuvwabcdefghi(第二个图的蓝色背景部分).
Z:v [\?} i0观察后面的3次请求,它们的标识符都是0400,序列号是递增的,选项数据都是一样的。

5JAr,@8XG1U0L a051Testing软件测试网!A1`X%l5Oy)R

Ethereal工具捕捉到的ICMP第一次的应答报文数据,如下图所示:51Testing软件测试网"^V(t:UzB
51Testing软件测试网z'\zp8Dd:E
 
t?x2Yw051Testing软件测试网]&u"g7S2br'};`,c
和上面所说的ICMP应答报文相比较:
T#{c'|R6~-I/O0类型=0,代码=0,检验和=1f5c,标识符=0400,序列号=3200,51Testing软件测试网 SQtS4TTg%b
选项数据=abcdefghijklmnopqrstuvwabcdefghi(第二个图的蓝色背景部分)
"pH#x)i rCC Iv+K0和对应的第一次请求报文比较,除了类型字段和检验和字段不一样,其他字段都相同。51Testing软件测试网 N!Elq^ m

GQ;| SV mEG5hL p0下文请看:TCP/IP协议学习之实例ping命令学习笔记(五)51Testing软件测试网2O*^&Ab4f0N

51Testing软件测试网KR[!C2dMq

 

'|~$eKa IB0

TAG:

silingbu的个人空间 引用 删除 silingbu   /   2010-09-21 09:28:25
5
 

评分:0

我来说两句

Open Toolbar