Chinaunix首页 | 论坛 | 博客
  • 博客访问: 37610
  • 博文数量: 14
  • 博客积分: 1445
  • 博客等级: 上尉
  • 技术积分: 196
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-16 11:30
文章分类

全部博文(14)

文章存档

2010年(1)

2009年(13)

我的朋友

分类: 系统运维

2009-02-28 17:11:07

一、前言

目前,网络的速度发展非常快,学习网络的人也越来越多,稍有网络常识的人都知道TCP/IP协议是网络的基础,是Internet的语言,可以说没有TCP/IP协议就没有互联网的今天。 
目前号称搞网的人非常多,许多人就是从一把夹线钳,一个测线器联网开始接触网络的,如果只是联网玩玩,知道几个Ping之类的命令就行了,如果想在网络上有更多的发展不管是黑道还是红道,必须要把TCP/IP协议搞的非常明白。

学习过TCP/IP协议的人多有一种感觉,这东西太抽象了,没有什么数据实例,看完不久就忘了。本文将介绍一种直观的学习方法,利用协议分析工具学习TCP/IP,在学习的过程中能直观的看到数据的具体传输过程。

为了初学者更容易理解,本文将搭建一个最简单的网络环境,不包含子网。

二、试验环境

1、网络环境

如图1所示

 
图1

为了表述方便,下文中208号机即指地址为192.168.113.208的计算机,1号机指地址为192.168.113.1的计算机。

2、操作系统

两台机器都为Windows 2000 ,1号机机器作为服务器,安装FTP服务

3、协议分析工具

Windows环境下常用的工具有:Sniffer Pro、Natxray、Iris以及windows 2000自带的网络监视器等。本文选用Iris作为协议分析工具。

在客户机208号机安装IRIS软件。

三、测试过程

1、测试例子:将1号机计算机中的一个文件通过FTP下载到208号机中。

2、IRIS的设置。

由于IRIS具有网络监听的功能,如果网络环境中还有其它的机器将抓很多别的数据包,这样为学习带来诸多不便,为了清楚地看清楚上述例子的传输过程首先将IRIS设置为只抓208号机和1号机之间的数据包。设置过程如下:

1)用热键CTRL+B弹出如图所示的地址表,在表中填写机器的IP地址,为了对抓的包看得更清楚不要添主机的名字(name),设置好后关闭此窗口。

图2
2)用热键CTRL+E弹出如图所示过滤设置,选择左栏“IP address”,右栏按下图将address book中的地址拽到下面,设置好后确定,这样就这抓这两台计算机之间的包。
图3

3、抓包

按下IRIS工具栏中 开始按钮。在浏览器中输入:,找到要下载的文件 ,鼠标右键该文件,在弹出的菜单中选择“复制到文件夹”开始下载,下载完后在IRIS工具栏中按 按钮停止抓包。图4显示的就是FTP的整个过程,下面我们将详细分析这个过程。

 
图4 

说明:为了能抓到ARP协议的包,在WINDOWS 2000 中运行arp –d 清除arp缓存。

四、过程分析

1、TCP/IP的基本原理

本文的重点虽然是根据实例来解析TCP/IP,但要讲明白下面的过程必须简要讲一下TCP/IP的基本原理。

A.网络是分层的,每一层分别负责不同的通信功能。

TCP/IP通常被认为是一个四层协议系统,TCP/IP协议族是一组不同的协议组合在一起构成的协议族。尽管通常称该协议族为TCP/IP,但TCP和IP只是其中的两种协议而已,如表1所示。每一层负责不同的功能:

表1

分层的概念说起来非常简单,但在实际的应用中非常的重要,在进行网络设置和排除故障时对网络层次理解得很透,将对工作有很大的帮助。例如:设置路由是网络层IP协议的事,要查找MAC地址是链路层ARP的事,常用的Ping命令由ICMP协议来做的。

图5显示了各层协议的关系,理解它们之间的关系对下面的协议分析非常重要。

 
图5

b.数据发送时是自上而下,层层加码;数据接收时是自下而上,层层解码。

当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图6所示。TCP传给IP的数据单元称作TCP报文段或简称为TCP段。I P传给网络接口层的数据单元称作IP数据报。 通过以太网传输的比特流称作帧(Frame)。

数据发送时是按照图6自上而下,层层加码;数据接收时是自下而上,层层解码。

 
图6

c. 逻辑上通讯是在同级完成的

垂直方向的结构层次是当今普遍认可的数据处理的功能流程。每一层都有与其相邻层的接口。为了通信,两个系统必须在各层之间传递数据、指令、地址等信息,通信的逻辑流程与真正的数据流的不同。虽然通信流程垂直通过各层次,但每一层都在逻辑上能够直接与远程计算机系统的相应层直接通信。

从图7可以看出,通讯实际上是按垂直方向进行的,但在逻辑上通信是在同级进行的。

 
图7

 2、过程描述

为了更好的分析协议,我们先描述一下上述例子数据的传输步骤。如图8所示:

1)FTP客户端请求TCP用服务器的IP地址建立连接。

2)TCP发送一个连接请求分段到远端的主机,即用上述IP地址发送一份IP数据报。

3) 如果目的主机在本地网络上,那么IP数据报可以直接送到目的主机上。如果目的主机在一个远程网络上,那么就通过IP选路函数来确定位于本地网络上的下一站路由器地址,并让它转发IP数据报。在这两种情况下,IP数据报都是被送到位于本地网络上的一台主机或路由器。

4) 本例是一个以太网,那么发送端主机必须把32位的IP地址变换成48位的以太网地址,该地址也称为MAC地址,它是出厂时写到网卡上的世界唯一的硬件地址。把IP地址翻译到对应的MAC地址是由ARP协议完成的。

5) 如图的虚线所示,ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机,这个过程称作广播。ARP请求数据帧中包含目的主机的IP地址,其意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址。”

6) 目的主机的ARP层收到这份广播后,识别出这是发送端在寻问它的IP地址,于是发送一个ARP应答。这个ARP应答包含I P地址及对应的硬件地址。

7) 收到ARP应答后,使ARP进行请求—应答交换的IP数据包现在就可以传送了。

8) 发送IP数据报到目的主机。

 
图8

3、实例分析

下面通过分析用iris捕获的包来分析一下TCP/IP的工作过程,为了更清晰的解释数据传送的过程,我们按传输的不同阶段抓了四组数据,分别是查找服务器、建立连接、数据传输和终止连接。每组数据,按下面三步进行解释。

显示数据包

解释该数据包

按层分析该包的头信息

第一组 查找服务器

1)下图显示的是1、2行的数据

 
图9

2)解释数据包

这两行数据就是查找服务器及服务器应答的过程。

在第1行中,源端主机的MAC地址是00:50:FC:22:C7:BE。目的端主机的MAC地址是FF:FF:FF:FF:FF:FF,这个地址是十六进制表示的,F换算为二进制就是1111,全1的地址就是广播地址。所谓广播就是向本网上的每台网络设备发送信息,电缆上的每个以太网接口都要接收这个数据帧并对它进行处理,这一行反映的是步骤5)的内容,ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机。网内的每个网卡都接到这样的信息“谁是192.168.113.1的IP地址的拥有者,请将你的硬件地址告诉我”。

第2行反映的是步骤6)的内容。在同一个以太网中的每台机器都会"接收"到这个报文,但正常状态下除了1号机外其他主机应该会忽略这个报文,而1号的主机的ARP层收到这份广播报文后,识别出这是发送端在寻问它的IP地址,于是发送一个ARP应答。告知自己的IP地址和MAC地址。第2行可以清楚的看出1号回答的信息__自己的MAC地址00:50:FC:22:C7:BE。

这两行反映的是数据链路层之间一问一答的通信过程。这个过程就像我要在一个坐满人的教室找一个叫“张三”的人,在门口喊了一声“张三”,这一声大家都听见了,这就叫广播。张三听到后做了回应,别人听到了没做回应,这样就与张三取得了联系。

3)头信息分析

如下图左栏所示,第1数据包包含了两个头信息:以太网(Ethernet)和ARP。

图10

下表2是以太网的头信息,括号内的数均为该字段所占字节数,以太网报头中的前两个字段是以太网的源地址和目的地址。目的地址为全1的特殊地址是广播地址。电缆上的所有以太网接口都要接收广播的数据帧。两个字节长的以太网帧类型表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0806。

第2行中可以看到,尽管ARP请求是广播的,但是ARP应答的目的地址却是1号机的(00 50 FC 22 C7 BE)。ARP应答是直接送到请求端主机的。

 

下表3是ARP协议的头信息。硬件类型字段表示硬件地址的类型。它的值为1即表示以太网地址。协议类型字段表示要映射的协议地址类型。它的值为0800即表示IP地址。它的值与包含I P数据报的以太网数据帧中的类型字段的值相同。接下来的两个1字节的字段,硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4。Op即操作(Opoperation),1是ARP请求、2是ARP应答、3是RARP请求和4为RARP应答,第二行中该字段值为2表示应答。接下来的四个字段是发送端的硬件地址、发送端的IP地址、目的端的硬件地址和目的端IP地址。注意,这里有一些重复信息:在以太网的数据帧报头中和ARP请求数据帧中都有发送端的硬件地址。对于一个ARP请求来说,除目的端硬件地址外的所有其他的字段都有填充值。

表3的第2行为应答,当系统收到一份目的端为本机的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送回去。

表3

第二组 建立连接

1)下图显示的是3-5行的数据

 
图11

2)解释数据包

这三行数据是两机建立连接的过程。

这三行的核心意思就是TCP协议的三次握手。TCP的数据包是靠IP协议来传输的。但IP协议是只管把数据送到出去,但不能保证IP数据报能成功地到达目的地,保证数据的可靠传输是靠TCP协议来完成的。当接收端收到来自发送端的信息时,接受端详发送短发送一条应答信息,意思是:“我已收到你的信息了。”第三组数据将能看到这个过程。TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。建立连接的过程就是三次握手的过程。

这个过程就像要我找到了张三向他借几本书,第一步:我说:“你好,我是担子”,第二步:张三说:“你好,我是张三”,第三步:我说:“我找你借几本书。”这样通过问答就确认对方身份,建立了联系。

下面来分析一下此例的三次握手过程。

1))请求端208号机发送一个初始序号(SEQ)987694419给1号机。

2))服务器1号机收到这个序号后,将此序号加1值为987694419作为应答信号(ACK),同时随机产生一个初始序号(SEQ)1773195208,这两个信号同时发回到请求端208号机,意思为:“消息已收到,让我们的数据流以1773195208这个数开始。”

3))请求端208号机收到后将确认序号设置为服务器的初始序号(SEQ)1773195208加1为1773195209作为应答信号。

以上三步完成了三次握手,双方建立了一条通道,接下来就可以进行数据传输了。

下面分析TCP头信息就可以看出,在握手过程中TCP头部的相关字段也发生了变化。

3)头信息分析

如图12所示,第3数据包包含了三头信息:以太网(Ethernet)和IP和TCP。

头信息少了ARP多了IP、TCP,下面的过程也没有ARP的参与,可以这样理解,在局域网内,ARP负责的是在众多联网的计算机中找到需要找的计算机,找到工作就完成了。

以太网的头信息与第1、2行不同的是帧类型为0800,指明该帧类型为IP。

图12

 

阅读(557) | 评论(0) | 转发(0) |
0

上一篇:XP配置IPV6

下一篇:seedit fedora10

给主人留下些什么吧!~~