展望2011

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

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

d NZ8B"gRAl L0 51Testing软件测试网2Eg;ZZ?RrD w

51Testing软件测试网-|,N5Tu%o)w ^ H

前文请看:TCP/IP协议学习之实例ping命令学习笔记(三)51Testing软件测试网0Vmp0i Q'`$h;eG

51Testing软件测试网g W8}9QYN7o

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

$K;V[S1r^051Testing软件测试网 HZ_xK2?&g

Q:什么是ICMP协议?属于哪一层?
1f,|.x$aIa T$x\B F0A:ICMP(Internet Control Message Protocal)是指Internet控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的状态信息。51Testing软件测试网{EK U/s:G4pv
I C M P经常被认为是IP层(也就是指网络层)的一个组成部分。ICMP报文通常被I P层或更高层协议(TCP或UDP)使用(在本实例中是在IP层使用)。一些ICMP报文把差错报文返回给用户进程(在本实例中的用户进程是指ping进程)。ICMP报文是在IP数据报内部被传输的。如下图所示:
rp)VY6B!Z&zr#nM051Testing软件测试网 G1J|0B(F;K'L{?a
和Ethereal中捕捉到的ICMP数据进行比较,其中包含了IP首部和ICMP报文,如下图所示:
'[;cn?i k1e0

5P+I~I*E*Kh0

4A*ExSl8L0Q:ICMP报文的格式是什么?
r\+G!u#p*eqj"D Z0A:如下图所示:51Testing软件测试网,EK$a.X)HG4I
51Testing软件测试网4T2S'ig[f A.i^t
所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。类型字段可以有1 5个不同的值,以描述特定类型的I C M P报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件。检验和字段覆盖整个ICMP报文。51Testing软件测试网3WDH n[;ef#|

tK+|9X/JsPm,v0Q:ICMP报文有哪些类型?ping所使用的是其中哪种?
6p o"OV]-R@0A:共有18种类型字段,每种类型字段对应多个代码字段,所以,不同ICMP类型由报文中的类型字段和代码字段来共同决定。每种ICMP类型属于2种报文性质中的其中一种:查询报文和差错报文,具体见TCP/IP协议详解中的图6-3。
!Qr)Xu}2`7ha)o0Ping请求和应答的ICMP报文类型是不同的:51Testing软件测试网/l:|e(R Jv,I(O0Dv
Ping请求所使用的类型字段=8,代码字段=0,对应的类型名为请求回显,属于查询报文。51Testing软件测试网:^2old3XE.L#xk.Y.\
Ping应答所使用的类型字段=0,代码字段=0,对应的类型名为回显应答,属于查询报文。

1Zs{RT/cL;z{9b051Testing软件测试网~"{,E8ys,{I^3wUl2B

Q:ping命令的请求ICMP报文格式是什么?应答ICMP报文格式又是什么?51Testing软件测试网_B(X'Y;{#KB f
A:ping命令的ICMP请求和应答报文格式如下图所示:51Testing软件测试网:iP&_*zv
 51Testing软件测试网^3L7`7kpu9v^
类型、代码、检验和在前面的问答已经得到解释。
&Ca)vP xx0标识符:U n i x系统在实现p i n g程序时是把I C M P报文中的标识符字段置成发送进程的I D号。这样即使在同一台主机上同时运行了多个p i n g程序实例, p i n g程序也可以识别出返回的信息。(那windows系统下呢?是否也是进程ID号?待解决)
5Va t2~:M#u@q"tc0
序号:序列号从0开始,每发送一次新的回显请求就加1(在本实例中,共发送了4次请求,但是序列号分别是3200、3300、3400、3500,和书中所说的不一致?在ping参数中并没有设置序列号这种功能的选项,所以第一个序列号可能是随机产生的,待解决)。p i n g程序打印出返回的每个分组的序列号,允许我们查看是否有分组丢失、失序或重复。
2_+@Z}-x%J5F2cr0选项数据:客户发送的选项数据必须回显,假设客户对这些信息都会感兴趣。也就说,应答和请求的选项数据是一样的。(那么选项数据是如何被定制的?在ping参数中同样没有设置选项数据这种功能的选项,所以可能是DOS下默认发送的数据,待解决。)
K\!g-?Y9z^Z.K0Ethereal工具捕捉到的ICMP第一次的请求报文数据,如下图所示:51Testing软件测试网k(lL|C.n

"u yU(\:a,J-s@$Gl0 
P q%C8onG:|0
cAqce1|iN#V8__0和上面所说的ICMP请求报文相比较:
U)i P'}&AzV/btBI0类型=8,代码=0,检验和=175c,标识符=0400,序列号=3200,51Testing软件测试网kW_e-[-L
选项数据=abcdefghijklmnopqrstuvwabcdefghi(第二个图的蓝色背景部分).51Testing软件测试网 cD${@i%\
观察后面的3次请求,它们的标识符都是0400,序列号是递增的,选项数据都是一样的。51Testing软件测试网'\Ve.s7U3K-T&i

51Testing软件测试网9Zs pS4i)etg da

Ethereal工具捕捉到的ICMP第一次的应答报文数据,如下图所示:
JCO#HD*Y nb0
4uL-r Z"bYc-U0 51Testing软件测试网:x j Zm$l6WX\
51Testing软件测试网{8f v+f#}0T I5q
和上面所说的ICMP应答报文相比较:51Testing软件测试网 f'~ r7jl
类型=0,代码=0,检验和=1f5c,标识符=0400,序列号=3200,51Testing软件测试网%K.W6Tbn)a#v
选项数据=abcdefghijklmnopqrstuvwabcdefghi(第二个图的蓝色背景部分)51Testing软件测试网%c|6|X4Ca$t7gc
和对应的第一次请求报文比较,除了类型字段和检验和字段不一样,其他字段都相同。

9{dE*^.s(y.K051Testing软件测试网-u:]\S_[Q

下文请看:TCP/IP协议学习之实例ping命令学习笔记(五)51Testing软件测试网8pO:mU Ma9@8H

51Testing软件测试网8b F5vO$c

 51Testing软件测试网I|cx:Q8H#X


TAG:

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

评分:0

我来说两句

Open Toolbar