通过连接实例解读TCPIP协议Word下载.doc

上传人:wj 文档编号:1498659 上传时间:2023-04-30 格式:DOC 页数:15 大小:328.50KB
下载 相关 举报
通过连接实例解读TCPIP协议Word下载.doc_第1页
第1页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第2页
第2页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第3页
第3页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第4页
第4页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第5页
第5页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第6页
第6页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第7页
第7页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第8页
第8页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第9页
第9页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第10页
第10页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第11页
第11页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第12页
第12页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第13页
第13页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第14页
第14页 / 共15页
通过连接实例解读TCPIP协议Word下载.doc_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

通过连接实例解读TCPIP协议Word下载.doc

《通过连接实例解读TCPIP协议Word下载.doc》由会员分享,可在线阅读,更多相关《通过连接实例解读TCPIP协议Word下载.doc(15页珍藏版)》请在冰点文库上搜索。

通过连接实例解读TCPIP协议Word下载.doc

我们可以分析TCP/IP协议数据格式以及TCP/IP连接的三次握手(ThreeWay-Handshake)情况。

下面的这些十六进制数据只是TCP/IP协议的数据,不是完整的网络通讯数据。

第一次,我向FTP站点发送连接请求(我把TCP数据的可选部分去掉了) 

192.168.1.1->

216.3.226.21 

IP头部:

450000305252400080062c23c0a80101d803e215 

TCP头部:

0d280015505fa9060000000070024000c0290000 

来看看IP头部的数据是些什么。

第一字节,“45”,其中“4”是IP协议的版本(Version),说明是IP4。

“5”是IHL位,表示IP头部的长度,是一个4bit字段,最大就是1111了,值为12,IP头部的最大长度就是60字节。

而这里为“5”,说明是20字节,这是标准的IP头部长度,头部报文中没有发送可选部分数据。

接下来的一个字节“00”是服务类型(TypeofService)。

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

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

接着的两个字节“0030”是IP数据报文总长,包含头部以及数据,这里表示48字节。

这48字节由20字节的IP头部以及28字节的TCP头构成(本来截取的TCP头应该是28字节的,其中8字节为可选部分,被我省去了)。

因此目前最大的IP数据包长度是65535字节。

再是两个字节的标志位(Identification):

“5252”,转换为十进制就是21074。

这个是让目的主机来判断新来的分段属于哪个分组。

下一个字节“40”,转换为二进制就是“01000000”,其中第一位是IP协议目前没有用上的,为0。

接着的是两个标志DF和MF。

DF为1表示不要分段,MF为1表示还有进一步的分段(本例为0)。

然后的“00000”是分段便移(FragmentOffset)。

“80”这个字节就是TTL(TimeToLive)了,表示一个IP数据流的生命周期,用Ping显示的结果,能得到TTL的值,很多文章就说通过TTL位来判别主机类型。

因为一般主机都有默认的TTL值,不同系统的默认值不一样。

比如WINDOWS为128。

不过,一般Ping得到的都不是默认值,这是因为每次IP数据包经过一个路由器的时候TTL就减一,当减到0时,这个数据包就消亡了。

这也时Tracert的原理。

本例中为“80”,转换为十进制就是128了,我用的WIN2000。

继续下来的是“06”,这个字节表示传输层的协议类型(Protocol)。

在RFC790中有定义,6表示传输层是TCP协议。

“2c23”这个16bit是头校验和(HeaderChecksum)。

接下来“c0a80101”,这个就是源地址(SourceAddress)了,也就是我的IP地址。

转换为十进制的IP地址就是:

192.168.1.1,同样,继续下来的32位“d803e215”是目标地址,216.3.226.21 

好了,真累啊,终于看完基本的20字节的IP数据报头了。

继续看TCP的头部吧,这个是作为IP数据包的数据部分传输的。

一来就是一个两字节段“0d28”,表示本地端口号,转换为十进制就是3368。

第二个两字节段“0015”表示目标端口,因为我是连接FTP站点,所以,这个就是21啦,十六进制当然就是“0015”。

接下来的四个字节“505fa906”是顺序号(SequenceNumber),简写为SEQ,

SEQ=1348446470下面的四个字节“00000000”是确认号(AcknowledgmentNumber),简写为ACKNUM。

继续两个字节,“7002”,转换为二进制吧,“0111000000000010”。

这两个字节,总共16bit,有好多东西呢。

第一个4bit“0111”,是TCP头长,十进制为7,表示28个字节(刚才说了,我省略了8字节的option数据,所以你只看见了20字节)。

接着的6bit现在TCP协议没有用上,都为0。

最后的6bit“000010”是六个重要的标志。

这是两个计算机数据交流的信息标志。

接收和发送断根据这些标志来确定信息流的种类。

下面是一些介绍:

URG:

(UrgentPointerfieldsignificant)紧急指针。

用到的时候值为1,用来处理避免TCP数据流中断 

ACK:

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

PSH:

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

RST:

(Resettheconnection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。

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

SYN:

(Synchronizesequencenumbers)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。

即,SYN和ACK来区分ConnectionRequest和ConnectionAccepted。

FIN:

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

这6个标志位,你们自己对号入座吧。

本例中SYN=1,ACK=0,当然就是表示连接请求了。

我们可以注意下面两个过程的这两位的变换。

后面的“4000c0290000”不讲了,呵呵,偷懒了。

后面两次通讯的数据,自己分开看吧。

我们看看连接的过程,一些重要地方的变化。

第二次,FTP站点返回一个可以连接的信号。

216.3.226.21->

192.168.1.1 

4500002cc6be40006a06cdbad803e215c0a80101 

00150d284b4f45c1505fa9076012205864070000 

第三次,我确认连接。

TCP连接建立起来。

450000285253400080062c2ac0a80101d803e215 

0d280015505fa9074b4f45c2501040b05b1c0000 

好,我们看看整个Threeway_handshake过程。

第一步,我发出连接请求,TCP数据为:

SEQ=505fa906,ACKNUM=00000000,SYN=1,ACK=0。

第二步,对方确认可以连接,TCP数据为:

SEQ=4b4f45c1,ACKNUM=505fa907,SYN=1,ACK=1。

第三步,我确认建立连接。

SEQ=505fa907,ACKNUM=4b4f45c2,SYN=0,ACK=1。

可以看出什么变化么?

正式建立连接了呢,这些东西是什么值?

我接收从216.3.226.21->

192.168.1.1的下一个数据包中:

SEQ=4b4f45c2,ACKNUM=505fa907,SYN=0,ACK=1这些都是很基础的东西,对于编写sniffer这样的东西是必须非常熟悉的。

这里只讲解了TCP/IP协议的一点点东西,主要是头部数据的格式。

深入TCP/IP全面透彻了解

举例说明该算法。

例:

给定一classcaddress:

192.168.5.0,要求划分20个子网,每个子网5个主机。

解:

因为4〈5〈8,用256-8=248――〉即是所求的子网掩码,对应的子网数也就出来了。

这是针对C类地址。

老师也只讲了针对C类地址的做法。

下面是我自己推出来的针对B类地址的做法。

对于B类地址,假如主机数小于或等于254,与C类地址算法相同。

对于主机数大于254的,如需主机700台,50个子网(相当大了),512〈700〈1024256-(1024/256)=256-4=252――〉即是所求的子网掩码,对应的子网数也就出来了。

上面256-4中的4(2的2次幂)是指主机数用2进制表示时超过8位的位数,即超过2位,掩码为剩余的前6位,即子网数为2(6)-2=62个。

欢迎指正。

Append:

Host/SubnetQuantitiesTable

----------------------------------------------------------------------

ClassAEffectiveEffective

#bitsMaskSubnetsHosts

----------------------------------------

2255.192.0.024194302

3255.224.0.062097150

4255.240.0.0141048574

5255.248.0.030524286

6255.252.0.062262142

7255.254.0.0126131070

8255.255.0.025465536

9255.255.128.051032766

10255.255.192.0102216382

11255.255.224.020468190

12255.255.240.040944094

13255.255.248.081902046

14255.255.252.0163821022

15255.255.254.032766510

16255.255.255.065536254

17255.255.255.128131070126

18255.255.255.19226214262

19255.255.255.22452428630

20255.255.255.240104857414

21255.255.255.24820971506

22255.255.255.25241943022

ClassBEffectiveEffective

2255.255.192.0216382

3255.255.224.068190

4255.255.240.0144094

5255.255.248.0302046

6255.255.252.0621022

7255.255.254.0126510

8255.255.255.0254254

9255.255.255.128510126

10255.255.255.192102262

11255.255.255.224204630

12255.255.255.240409414

13255.255.255.24881906

14255.255.255.252163822

ClassCEffectiveEffective

2255.255.255.192262

3255.255.255.224630

4255.255.255.2401414

5255.255.255.248306

6255.255.255.252622

*Subnetallzeroesandallonesexcluded.

*Hostallzeroesandallonesexcluded.

用协议分析工具学习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的工作过程,为了更清晰的解释数据传送的过程,我们按传输的不同阶段抓了四组数据,分别是查找服务器、建立连接、数据传输和终止连接。

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

显示数据包

解释该数据包

按层分析该包的头信息

第一组查找服务器

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

图9

2)解释数据包

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

在第1行中,源端主机的MAC地址是00:

50:

FC:

22:

C7:

BE。

目的端主机的MAC地址是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:

这两行反映的是数据链路层之间一问一答的通信过程。

这个过程就像我要在一个坐满人的教室找一个叫“张三”的人,在门口喊了一声“张三”,这一声大家都听见了,这就叫广播。

张三听到后做了回应,别人听到了没做回应,这样就与张三取得了联系。

3)头信息分析

如下图左栏所示,第1数据包包含了两个头信息:

以太网(Ethernet)和ARP。

图10

下表2是以太网的头信息,括号内的数均为该字段所占字节数,以太网报头中的前两个字段是以太网的源地址和目的地址。

目的地址为全1的特殊地址是广播地址。

电缆上的所有以太网接口都要接收广播的数据帧。

两个字节长的以太网帧类型表示后面数据的类型。

对于ARP请求或应答来说,该字段的值为0806。

第2行中可以看到,尽管ARP请求是广播的,但是ARP应答的目的地址却是1号机的(0050FC22C7BE)。

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

下表3是ARP

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

当前位置:首页 > 求职职场 > 简历

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

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