用协议分析工具学习TCPIP非常之经典.docx

上传人:b****2 文档编号:2678132 上传时间:2023-05-04 格式:DOCX 页数:27 大小:531.51KB
下载 相关 举报
用协议分析工具学习TCPIP非常之经典.docx_第1页
第1页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第2页
第2页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第3页
第3页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第4页
第4页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第5页
第5页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第6页
第6页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第7页
第7页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第8页
第8页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第9页
第9页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第10页
第10页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第11页
第11页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第12页
第12页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第13页
第13页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第14页
第14页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第15页
第15页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第16页
第16页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第17页
第17页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第18页
第18页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第19页
第19页 / 共27页
用协议分析工具学习TCPIP非常之经典.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

用协议分析工具学习TCPIP非常之经典.docx

《用协议分析工具学习TCPIP非常之经典.docx》由会员分享,可在线阅读,更多相关《用协议分析工具学习TCPIP非常之经典.docx(27页珍藏版)》请在冰点文库上搜索。

用协议分析工具学习TCPIP非常之经典.docx

用协议分析工具学习TCPIP非常之经典

用协议分析工具学习TCP/IP

目录

前言

试验环境

测试过程

过程分析

一、前言

目前,网络的速度发展非常快,学习网络的人也越来越多,稍有网络常识的人都知道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、操作系统

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

3、协议分析工具

Windows环境下常用的工具有:

SnifferPro、Natxray、Iris以及windows2000自带的网络监视器等。

本文选用Iris作为协议分析工具。

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

三、测试过程

1、测试例子:

将1号机计算机中的一个文件通过FTP下载到208号机中。

2、IRIS的设置。

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

设置过程如下:

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

图2

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

图3

3、抓包

按下IRIS工具栏中开始按钮。

在浏览器中输入:

FTP:

//192.168.113.1,找到要下载的文件,鼠标右键该文件,在弹出的菜单中选择“复制到文件夹”开始下载,下载完后在IRIS工具栏中按按钮停止抓包。

图4显示的就是FTP的整个过程,下面我们将详细分析这个过程。

图4

说明:

为了能抓到ARP协议的包,在WINDOWS2000中运行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段。

IP传给网络接口层的数据单元称作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应答包含IP地址及对应的硬件地址。

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

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

图8

3、实例分析

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

每组数据,按下面三步进行解释。

显示数据包

解释该数据包

按层分析该包的头信息

上篇我们搭建一个最简单的网络环境,下面通过分析用iris捕获的包来分析一下TCP/IP的工作过程,为了更清晰的解释数据传送的过程,我们按传输的不同阶段抓了四组数据,分别是查找服务器、建立连接.

目录

第一组查找服务器

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

2)解释数据包

3)头信息分析

第二组建立连接

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

2)解释数据包

3)头信息分析

第一组查找服务器

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号机的(0050FC22C7BE)。

ARP应答是直接送到请求端主机的。

表2

下表3是ARP协议的头信息。

硬件类型字段表示硬件地址的类型。

它的值为1即表示以太网地址。

协议类型字段表示要映射的协议地址类型。

它的值为0800即表示IP地址。

它的值与包含IP数据报的以太网数据帧中的类型字段的值相同。

接下来的两个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

IP协议头信息

IP是TCP/IP协议族中最为核心的协议。

从图5可以看出所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输的,有个形象的比喻IP协议就像运货的卡车,将一车车的货物运向目的地。

主要的货物就是TCP或UDP分配给它的。

需要特别指出的是IP提供不可靠、无连接的数据报传送,也就是说IP仅提供最好的传输服务但不保证IP数据报能成功地到达目的地。

看到这你会不会担心你的E_MAIL会不会送到朋友那,其实不用担心,上文提过保证数据正确到达目的地是TCP的工作,稍后我们将详细解释。

如表4是IP协议的头信息。

表4IP数据报格式及首部中的各字段

图12中所宣布分4500—7101为IP的头信息。

这些数是十六进制表示的。

一个数占4位,例如:

4的二进制是0100

4位版本:

表示目前的协议版本号,数值是4表示版本为4,因此IP有时也称作IPv4;

4位首部长度:

头部的是长度,它的单位是32位(4个字节),数值为5表示IP头部长度为20字节。

8位服务类型(TOS):

00,这个8位字段由3位的优先权子字段,现在已经被忽略,4位的TOS子字段以及1位的未用字段(现在为0)构成。

4位的TOS子字段包含:

最小延时、最大吞吐量、最高可靠性以及最小费用构成,这四个1位最多只能有一个为1,本例中都为0,表示是一般服务。

16位总长度(字节数):

总长度字段是指整个IP数据报的长度,以字节为单位。

数值为0030,换算为十进制为48字节,48字节=20字节的IP头+28字节的TCP头,这个数据报只是传送的控制信息,还没有传送真正的数据,所以目前看到的总长度就是报头的长度。

16位标识:

标识字段唯一地标识主机发送的每一份数据报。

通常每发送一份报文它的值就会加1,第3行为数值为3021,第5行为3022,第7行为3023。

分片时涉及到标志字段和片偏移字段,本文不讨论这两个字段。

8位生存时间(TTL):

TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。

它指定了数据报的生存时间。

ttl的初始值由源主机设置,一旦经过一个处理它的路由器,它的值就减去1。

可根据TTL值判断服务器是什么系统和经过的路由器。

本例为80,换算成十进制为128,WINDOWS操作系统TTL初始值一般为128,UNIX操作系统初始值为255,本例表示两个机器在同一网段且操作系统为WINDOWS。

8位协议:

表示协议类型,6表示传输层是TCP协议。

16位首部检验和:

当收到一份IP数据报后,同样对首部中每个16位进行二进制反码的求和。

由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。

如果结果不是全1,即检验和错误,那么IP就丢弃收到的数据报。

但是不生成差错报文,由上层去发现丢失的数据报并进行重传。

32位源IP地址和32位目的IP地址:

实际这是IP协议中核心的部分,但介绍这方面的文章非常多,本文搭建的又是一个最简单的网络结构,不涉及路由,本文对此只做简单介绍,相关知识请参阅其它文章。

32位的IP地址由一个网络ID和一个主机ID组成。

本例源IP地址为C0A871D0,转换为十进制为:

192.168.113.208;目的IP地址为C0A87101,转换为十进制为:

192.168.113.1。

网络地址为192.168.113,主机地址分别为1和208,它们的网络地址是相同的所以在一个网段内,这样数据在传送过程中可直接到达。

TCP协议头信息

如表5是ICP协议的头信息。

表5TCP包首部

第三行TCP的头信息是:

042800153ADF055300000000700240009A8D0000020405B401010402

端口号:

常说FTP占21端口、HTTP占80端口、TELNET占23端口等,这里指的端口就是TCP或UDP的端口,端口就像通道两端的门一样,当两机进行通讯时门必须是打开的。

源端口和目的端口各占16位,2的16次方等于65536,这就是每台电脑与其它电脑联系所能开的“门”。

一般作为服务一方每项服务的端口号是固定的。

本例目的端口号为0015,换算成十进制为21,这正是FTP的默认端口,需要指出的是这是FTP的控制端口,数据传送时用另一端口,第三组的分析能看到这一点。

客户端与服务器联系时随机开一个大于1024的端口,本例为0428,换算成十进制为1064。

你的电脑中了木马也会开一个服务端口。

观察端口非常重要,不但能看出本机提供的正常服务,还能看出不正常的连接。

Windows察看端口的命令时netstat。

32位序号:

也称为顺序号(SequenceNumber),简写为SEQ,从上面三次握手的分析可以看出,当一方要与另一方联系时就发送一个初始序号给对方,意思是:

“让我们建立联系吧?

”,服务方收到后要发个独立的序号给发送方,意思是“消息收到,数据流将以这个数开始。

”由此可看出,TCP连接完全是双向的,即双方的数据流可同时传输。

在传输过程中双方数据是独立的,因此每个TCP连接必须有两个顺序号分别对应不同方向的数据流。

32位确认序号:

也称为应答号(AcknowledgmentNumber),简写为ACK。

在握手阶段,确认序号将发送方的序号加1作为回答,在数据传输阶段,确认序号将发送方的序号加发送的数据大小作为回答,表示确实收到这些数据。

在第三组的分析中将看到这一过程。

4位首部长度:

这个字段占4位,它的单位时32位(4个字节)。

本例值为7,TCP的头长度为28字节,等于正常的长度20字节加上可选项8个字节。

,TCP的头长度最长可为60字节(二进制1111换算为十进制为15,15*4字节=60字节)。

6个标志位。

URG紧急指针,告诉接收TCP模块紧要指针域指着紧要数据

ACK置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。

PSH置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。

RST置1时重建连接。

如果接收到RST位时候,通常发生了某些错误。

SYN置1时用来发起一个连接。

FIN置1时表示发端完成发送任务。

用来释放连接,表明发送方已经没有数据发送了。

图13的3个图分别为3-5行TCP协议的头信息,这三行是三次握手的过程,我们看看握手的过程标志位发生了什么?

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

标志位SYN置为1。

如图13-2服务器1号机收到这个序号后,将应答信号(ACK)和随机产生一个初始序号(SEQ)1773195208发回到请求端208号机,因为有应答信号和初始序号,所以标志位ACK和SYN都置为1。

如图13-3请求端208号机收到1号机的信号后,发回信息给1号机。

标志位ACK置为1,其它标志为都为0。

注意此时SYN值为0,SYN是标示发起连接的,上两部连接已经完成。

16位窗口大小:

TCP的流量控制由连接的每一端通过声明的窗口大小来提供。

窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。

窗口大小是一个16字节字段,因而窗口大小最大为65535字节。

16位检验和:

检验和覆盖了整个的TCP报文段:

TCP首部和TCP数据。

这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。

16位紧急指针:

只有当URG标志置1时紧急指针才有效。

紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

选项:

图13-1和图13-2有8个字节选项,图13-3没有选项。

最常见的可选字段是最长报文大小,又称为MSS(MaximumSegmentSize)。

每个连接方通常都在握手的第一步中指明这个选项。

它指明本端所能接收的最大长度的报文段。

图13-1可以看出208号机可以接受的最大字节数为1460字节,1460也是以太网默认的大小,在第三组的数据分析中可以看到数据传送正是以1460字节传送的。

握手小结

上面我们分开讲了三次握手,看着有点散,现在小结一下。

 

上篇我们搭建一个最简单的网络环境,分别介绍了查找服务器、建立连接,下面我们来讨论数据传输和终止连接。

目录

第三组数据传输

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

2)解释数据包

3)头信息分析

第四组终止连接

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

2)解释数据包

3)头信息分析

第三组数据传输

1)下图显示的是57-60行的数据

图14

2)解释数据包

这四行数据是数据传输过程中一个发送一个接收的过程。

前文说过,TCP提供一种面向连接的、可靠的字节流服务。

当接收端收到来自发送端的信息时,接受端要发送一条应答信息,表示收到此信息。

数据传送时被TCP分割成认为最适合发送的数据块。

一般以太网在传送时TCP将数据分为1460字节。

也就是说数据在发送方被分成一块一块的发送,接受端收到这些数据后再将它们组合在一起。

57行显示1号机给208号机发送了大小为1514字节大小的数据,注意我们前文讲过数据发送时是层层加协议头的,1514字节=14字节以太网头+20字节IP头+20字节TCP头+1460字节数据

58行显示的应答信号ACK为:

1781514222,这个数是57行得SEQ序号1781512762加上传送的数据1460,208号机将这个应答信号发给1号机说明已收到发来的数据。

59、60行显示的是继续传送数据的过程。

这个过程就像我向张三借书,借给我几本我要说:

“我已借了你几本了。

”,他说:

“知道了”。

3)头信息

图15-1和图15-2分别是57行和58行的头信息,解释参考第二组。

第四组终止连接

1)下图显示的是93-96行的数据

图16

2)解释数据包

93-96是两机通讯完关闭的过程。

建立一个连接需要三次握手,而终止一个连接要经过4次握手。

这是因为一个TCP连接是全双工(即数据在两个方向上

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2