应用层网络协议分析.docx

上传人:b****4 文档编号:3098176 上传时间:2022-11-17 格式:DOCX 页数:9 大小:402.43KB
下载 相关 举报
应用层网络协议分析.docx_第1页
第1页 / 共9页
应用层网络协议分析.docx_第2页
第2页 / 共9页
应用层网络协议分析.docx_第3页
第3页 / 共9页
应用层网络协议分析.docx_第4页
第4页 / 共9页
应用层网络协议分析.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

应用层网络协议分析.docx

《应用层网络协议分析.docx》由会员分享,可在线阅读,更多相关《应用层网络协议分析.docx(9页珍藏版)》请在冰豆网上搜索。

应用层网络协议分析.docx

应用层网络协议分析

应用层网络协议分析

HTTP网页访问的协议分析

在协议模型中,应用层是用户与计算机进行实际通信的地方,只有当马上就要访问网络时,才会实际上用到这一层。

例如,我们可以从系统中卸载掉任何联网组件,如TCP/IP、网卡(NIC)等,仍可以使用IE来浏览本地的HTML文档。

可如果我们试图浏览必须使用HTTP的文档,或者用FTP下载一个文件,事情就没那么容易了。

此时,IE将尝试访问应用层来响应这一类请求。

因此,应用层也可被看作是实际应用程序和下一层(OSI模型中为表示层,TCP/IP模型中为传输层)之间的接口,它通过某种方式把应用程序的有关信息送到协议栈的下面各层。

应用层协议则是实现用户和系统之间接口的工具,用户可通过这些协议方便地访问网络资源,实现信息共享,HTTP则是其中一种。

HTTP(超文本传输协议)是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。

在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。

HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

HTTP是基于请求/响应方式的。

它的运作方式很简单:

一个客户机与服务器建立连接后,发送一个请求给服务器,服务器接到请求后,给予相应的响应报文。

其中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。

因此,当网络中的任一台拥有可被访问的页面的计算机被其它计算机访问时,它便是服务器,而当它访问其它浏览非本地的HTTP文档时,它便是客户端。

因此,我们可以在局域网中搭建简单的环境来观察分析访问HTTP的工作流程。

最简单的情况可能是在用户和服务器之间通过一个单独的连接来完成,如图1-1:

图1-1

根据图连接好以及配好相应IP后,测试网络互通。

而后,在server上建立HTTP服务器。

首先在控制面板\添加删除程序\添加删除Windows组件中查看Internet信息服务(IIS)是否装上,若没有则安装,若安装好,则可以进入管理工具\Internet服务管理器,在默认WEB站点下建立自己的站点及目录。

而后,在client浏览器地址栏中键入http:

//31.0.0.1便可浏览位于server端默认站点目录下网页。

在此过程中,我们通过Ethereal所抓的数据包如下:

1、数据链路层:

 

Frame14(334bytesonwire,334bytescaptured)表示第14个帧,传输334个字节,捕获334个字节,包中的

FrameNumber:

14

PacketLength:

334bytes

CaptureLength:

334bytes

也指明该帧是第14帧,传输334字节,捕获334字节。

[Protocolsinframe:

eth:

ip:

tcp:

http]可看出所封装的层结构:

应用层用的是HTTP协议,传输层用的是TCP协议,网络层用的是IP协议。

[ColoringRuleStringName:

HTTP]

[ColoringRuleString:

http||tcp.port==80]从这里我们可以知道,HTTP对应的TCP端口号为80。

在TCP和UDP中,都采用了16bit端口号来识别应用程序。

其中,低于1024的端口号被称为众所周知的端口号,它们由RFC3232所定义,大于等于1024的端口号被上层用来建立与其他主机的会话,并且在TCP数据段中被TCP用来作为源方和目的方的地址,具体将在下面传输层中分析。

2、以太网帧:

从以太网帧中,我们可以看到,目的的MAC地址为:

00:

16:

d3:

ee:

0e:

3f,源MAC地址为:

00:

01:

02:

28:

1a:

34。

Multicast:

ThisisaUNICATframe表示是单播帧。

Type:

IP(0x0800)表示帧中封装了IP分组,若Type为0x0806表示帧中封装了ARP分组,这两种帧的分组会被取出,并交付给相应的子程序。

3、IP包:

InternetProtocol,Src:

31.0.0.2(31.0.0.2),Dst:

31.0.0.1(31.0.0.1)可了解目地IP和源IP,此包是client端向server发送的http请求报文,所以,目地IP是31.0.0.1,源IP是31.0.0.2。

Version:

4表示版本4。

IPv6的版本号为6。

Headerlength:

20bytes首部长为20字节。

它是以4B为单位进行计数的,该字段是可变的,当没有选项时,首部长为20B,对应该字段值为5;当有选项时,该字段最大值为15,对应60B的首部长度。

DifferentiatedServicesField:

0x00(DSCP0x00:

Default;ECN:

0x00)表示服务类型。

不同的应用有不同的服务质量要求,该字段则是体现网络层的IP分组有不同的服务类型,但在大多数的TCP/IP实现中并不支持服务类型,因此这些位置都为0,路由器也会忽略该字段。

TotalLength:

320表示IP数据包的总长度为320字节。

Identification:

0x0432(1074)标识位,在系统范围内,每发出一个IP包,其值自动增加1。

Flags:

0x04(Don’tFragment)表示没有分段。

保留位:

1位

不分段(DF,Don'tFragment):

1位

更多段(MF,MoreFragments):

1位

Fragmentoffset:

0表示分段偏移为0。

Timetolive:

128生命周期值,当每经过1个路由器,其值自动减1。

Protocol:

TCP(0x06)负载协议,表示IP数据包负载的协议。

Headerchecksum:

0xb783[correct]首部校验和,只对分组的首部进行校验,而不对分组的数据进行校验。

Source:

31.0.0.2(31.0.0.2)表示源IP地址。

Destination:

31.0.0.1(31.0.0.1)表示目的IP地址。

4、TCP报文:

在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。

HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。

通过数据包,我们也可清楚地了解到TCP连接的建立:

(1)SYN报文:

该报文由client发起,Sequencenumber:

0表示客户端向服务器端发送数据时的第一个数据字节的序号就是0。

Client建立的源端口号为1102,请求的是http服务(目的端口为80)。

Flags:

0x0002(SYN)该标志位表示了这是一个SYN报文,可看到SYN位置1,而ACK位置0,这表明这是一个tcp连接请求。

(2)SYN+ACK报文:

此报文为服server同意接受连接时,向client发回的报文,用于回应client的建立连接的请求。

Sequenennumber:

0表示server向client发送数据时第一个数据字节的序号为0。

Tcp的通信的全双工的,在每个方向上的编号是独立的。

Acknowledgementnumber:

1为确认号字段,表明server下一个要接受的报文段中第一个数据字节的编号。

该报文段的标志位变成了Flags:

0x00012(SYN,ACK),表示这是一个SYN+ACK报文,可看到SYN位置1,ACK位置1,这表明服务器端接受连接,则使用SYN位和ACK位作为应答来回应客户端的连接请求。

(3)ACK报文:

这是由client发送的确认报文,Sequencenumber:

1表示客户端向服务器端发送数据时的数据字节的序号为1(其值为客户端向服务器端发送数据时的第一个数据字节的序号+1),Acknowledgementnumber:

1为确认号字段,表明client下一个要接受的报文段中第一个数据字节的编号。

此报文段的标志位为Flags:

0x00010(ACK),表示这是一个ACK报文,可看到SYN位置0,而ACK位置1,客户端使用ACK标志和确认号字段来确认收到了服务器端的SYN+ACK报文。

通过这3个报文的交换,完成了TCP连接的建立。

(4)client请求http的报文:

Sourceport:

1102(1102)表示源主机所建立的源端口号为1102。

Destinationport:

http(80)表示目的端口号为80,即接收方主机本次连接建立HTTP连接。

源主机是从1024——65535中指定的源端口号,80是被定义为http服务的端口号,TCP不像在数据链路层和网络层中的协议那样,它和它的上层协议不使用硬件的和逻辑的地址来区别发送方的主机地址,它们使用端口号来实现。

Sequenennumber:

1序列号为1。

上一报文中,客户端的Acknowledgementnumber也表明将接收第一个数据字节编号为1。

[Nextsequenennumber:

281]要发送的下一序列号为:

281。

Headerlength:

20bytes首部长20B,它与IP首部长度一样是可变的,都取决于可选项。

Flags:

0x0018(PSH,ACK)

Acknowledgment:

set确认位,用来指示确认号有效,当它置0时,说明该报文不包含确认信息,确认号字段值则被忽略。

Push:

set表示请求推送,要立即将报文交给接收应用进程,而不再等到整个缓存满后才向上交付。

Windowsize:

65535指明窗口大小,其范围为0~65535,当其大小为0时,表示收到了包括确认号减1在内的所有数据,但当前接收方缓存已满,不能再接收,希望发送方不再发送数据了。

而发送方也必需要等到收到窗口大小非0的确认报文后,才能继续发送。

5、HTTP报文:

(1)请求报文:

GET/HTTP/1.1\r\n表示是请求http服务的报文,http的版本为HTTP1.1。

至今,HTTP有三个版本:

0.9、1.0、1.1,0.9只接受GET一种请求方法,没有在通讯中指定版本号,且不支持请求头。

由于该版本不支持POST方法,所以客户端无法向服务器传递太多信息;1.0这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中;1.1当前版本,持久连接被默认采用,并能很好地配合代理服务器工作。

还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度,除此之外,它还有一个明显的改进——错误通知的管理。

在http的响应报文中,200多表示正常,300多表示请求重定向到其它的URL,400多表示客户端出现差错,500多表示服务器端出现差错。

GET是表示向服务器请求一个文件,可GET仅仅是HTTP众多方法中的一种,它还有POST:

向服务器发送数据让服务器进行处理;PU和:

向服务器发送数据并存储在服务器内部;HEAD:

检查一个对象是否存在;DELET:

表示从服务器上删除一个文件;CONNET:

表示对通道提供支;TRACE:

跟踪到服务器的路径;OPTIONS:

查询Web服务器的性能。

Accept:

applicati

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1