《17【协议分析】【超文本传输协议HTTP协议分析】》由会员分享,可在线阅读,更多相关《17【协议分析】【超文本传输协议HTTP协议分析】(10页珍藏版)》请在金锄头文库上搜索。
1、计算机网络协议原理实验教程实验十七超文本传输协议 HTTP 分析【实验目的】1、掌握 HTTP 协议的原理和报文格式;2、了解 HTTP 协议的工作过程;3、了解应用层协议与传输层协议的关系。【实验学时】2 学时【实验环境】本实验要求实验室主机能够连接到Internet ,并可浏览网页。实验拓扑如图5- 96 所示:图 5- 96 实验拓扑图【实验内容】1、学习 HTTP 协议的格式和与TCP 协议的关系;2、了解 HTTP 协议的工作过程;3、学习协议编辑软件的使用方法。196第五章应用层协议分析【实验流程】图 5- 97 实验流程图【实验原理】超文本传输协议(HTTP )是应用层协议,由于
2、其简捷、快速的方式,适用于分布式的超媒体信息系统。自1990 年起, HTTP 就已经是主要应用于 WWW系统上存取数据的协议。HTTP 是一种请求 /响应式的协议。一个客户机与服务器建立连接后,发送一个请求给服务器,请求的格式是:统一资源标识符(URI ) 、协议版本号,后面是类似 MIME (通用因特网邮件扩充协议,Multipurpose Internet Mail Extensions)的信息,包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式是:一个状态行包括信息的协议版本号、一个成功或错误的代码,后面也是类似 MIME 的信息,包括服务器信息、实体
3、信息和可能的内容。HTTP 在知名端口80 上使用 TCP 的服务。HTTP 报文由从客户机到服务器的请求和从服务器到客户机的响应构成,下面详细描述2 种报文的格式。HTTP 的请求报文197计算机网络协议原理实验教程请求报文的一般格式包括请求行、首部、一个空行,以及只在某些报文中出现的主体。如图 5- 98 所示:图 5- 98 HTTP请求报文格式其中:请求行:包括请求类型、空格、URL 、空格以及HTTP 版本。z请求类型:此字段定义了几种不同方法的报文,常用的几种方法包括:? GET:客户要从服务器读取文档时使用。? HEAD:客户想得到关于文档的某些信息,但并不是要这个文档时使用。?
4、 POST:当客户要给服务器提供某些信息时使用。? PUT:当客户将新的或更新的文档存储在服务器上时使用。? COPY:当需要将文件复制到另一个位置时使用。? MOVE:当需要将文件移到另一个位置时使用。? DELETE:当需要将服务器上的文档移走时使用。? LINK:当需要创建从一个文档到另一个位置的链按时使用。? UNLINK:当需要删除由LINK 方法创建的链接时使用。? OPTION:当客户向服务器询问到一些可用的选项时使用。z统一资源定位符(URL) :有 4 个要素:方法、主机、端口、路径,格式为:方法: /主机:端口 /路径?方法:用来读取文档的协议。?主机:放置信息的计算机。?
5、端口:服务器的端口号,可选。?路径:放置文件的路径名。首部: 在客户和服务器之间交换附加的信息。例如, 客户可以请求文档以特殊的形式发送,或服务器可以发送关于该文档的额外信息。首部可以有一个或者多个首部行,每一个首部行由一个首部字段名、一个冒号、一个空格和一个首部字段值组成。一个首部行属于4个种类中的一个:通用首部、请求首部、响应首部和实体首部。请求报文可以只包含通用首部、请求首部和实体首部;响应报文则只包含通用首部、响应首部和实体首部。198第五章应用层协议分析主体:主体可以出现在请求报文或响应报文中。通常,它包含要发送的或接收的文档。HTTP 的响应报文响应报文的一般格式包括状态行、首部、
6、一个空行,以及只在某些报文中出现的主体,如图 5- 99 所示:图 5- 99 HTTP响应报文格式其中:状态行:包括HTTP 版本、空格、状态码、空格、状态短语。z状态码:用在响应报文中,由3 位数字组成, 100 系列的代码只是提供信息,200系列的代码指示成功的请求,300系列的代码把客户重定向到另一个URL ,400系列的代码指示客户端差错,500 系列的代码指示服务器端差错,z状态短语:是对原文的状态码作简短的描述,以文本形式解释状态码。下面列出了一些常用的状态码及状态短语:表 5-13 状态码列表状态码状态短语含义100 Continue 初始的请求已经接受,客户应当继续发送请求的
7、其余部分。101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议200 OK 一切正常,对GET 和 POST 请求的应答文档跟在后面。201 Created 服务器已经创建了文档,Location头给出了它的URL 。202 Accepted 已经接受请求,但处理尚未完成。204 No Content 没有新文档,浏览器应该继续显示原来的文档。301 Moved Permanently 客户请求的文档在其他地方,新的URL 在 Location 头中给出,浏览器应该自动地访问新的URL 。302 Found 类似于301, 但新的 URL 应该被视为临时性的
8、替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily ” 。199计算机网络协议原理实验教程304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求,服务器告诉客户,原来缓冲的文档还可以继续使用。400 Bad Request 请求出现语法错误。401 Unauthorized 客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝
9、处理它。通常由于服务器上文件或目录的权限设置导致。404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。405 Method Not Allowed 请求方法( GET 、POST 、HEAD 、DELETE 、PUT、TRACE 等)对指定的资源不适用。406 Not Acceptable 指定的资源已经找到,但它的MIME 类型和客户在Accpet 头中所指定的不兼容。500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。501 Not Implemented 服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支
10、持的PUT 请求。503 Service Unavailable 服务器由于维护或者负载过重未能应答。状态码用来支持自动操作,而状态短语用来供用户使用。首部和主体的内容在请求报文中已经讲过,此处不再重复。【实验步骤】步骤一:使用浏览器打开网页,捕获数据包并分析:1、在主机上打开协议分析仪,点击工具栏上的“ 过滤器 ” ,“ 类型过滤器 ” 的下拉列表中选择“HTTP协议 ” ,确定后开始进行数据捕获:图 5- 100 设置 HTTP 协议过滤器200第五章应用层协议分析2、使用实验室主机上安装的浏览器,例如IE,打开一个网页,如图5- 101 所示:图 5- 101 使用浏览器打开一个网页3、
11、此时在协议分析仪中可以看到捕获的数据包,可以看到HTTP 请求报文和响应报文,以及其中所使用的命令。如图 5- 102 ,显示的是一个HTTP 请求报文,命令为GET ,使用的HTTP 协议版本为1.1 ,并且可以从十六进制数据区中可以看到请求的URL 是 :图 5- 102 HTTP请求报文图 5- 103 显示的是一个HTTP 响应报文,在状态行里可以看到HTTP 版本是 1.1,状态码是 200,状态短语是“OK ” ,表示紧随其后的报文中就携带了网页的内容:201计算机网络协议原理实验教程图 5- 103 HTTP响应报文4、依据捕获报文中建立和断开连接的过程,完成下面的填空:表 5-
12、14 建立连接与断开连接列表客户端 TCP连接建立阶段 WWW服务器Port ( ) SYN= ( ),ACK=( ),PSH=( ),PIN=( ) SEQ=( ),ACK SEQ=( ) Port ( ) SYN= ( ),ACK=( ),PSH=( ),PIN=( ) SEQ=( ),ACK SEQ=( ) SYN= ( ),ACK=( ),PSH=( ),PIN=( ) SEQ=( ),ACK SEQ=( ) 客户端 TCP断开连接阶段 WWW服务器Port ( ) SYN= ( ),ACK=( ),PSH=( ),PIN=( ) SEQ=( ),ACK SEQ=( ) Port (
13、) SYN= ( ),ACK=( ),PSH=( ),PIN=( ) SEQ=( ),ACK SEQ=( ) SYN= ( ),ACK=( ),PSH=( ),PIN=( ) SEQ=( ),ACK SEQ=( ) SYN= ( ),ACK=( ),PSH=( ),PIN=( ) SEQ=( ),ACK SEQ=( ) 202第五章应用层协议分析步骤二:编辑一个HTTP 报文:1、在主机上打开协议数据发生器,在工具栏上选择“ 添加 ” ,会弹出 “ 网络包模版 ” 对话框,选择 “HTTP协议模版 ” ,建立一个HTTP 数据报文:图 5- 104 建立 HTTP 协议报文2、填写其中以太网帧
14、头、IP 首部、 TCP 首部和 HTTP 报文的内容:z填写以太网协议首部信息:?目的物理地址:在地址本中选择实验室网关的IP 地址(例如: 192.168.1.1 ) ,确认后自动填入网关的MAC 地址: 00-D0-F8-B5-24-8F;?源物理地址:在地址本中选择实验主机(例如:192.168.1.2 ) ,确认后自动填入实验主机的MAC 地址: 02-00-4C-4F-4F-50;?类型或长度:该字段应为0800 (即 IP 协议的类型值) 。z填写 IP 协议头信息:?总长度字段:包括TCP 段内容的总长度,20 IP+20 TCP+14 HTTP = 54;?高层协议字段:即上
15、层协议类型为6(TCP 协议的类型为6) ;?发送 IP 地址:在地址本中选择实验主机的IP 地址,确认后自动填入主机的IP地址 192.168.1.2 ;?目标IP地址:手工填写某个WWW服务器的IP地址,例如上例中的地址: 220.181.37.55;?点击工具栏中的“ 校验和 ” 按钮计算IP 头校验和。z填写 TCP 协议的各个字段信息:? 16位源端口号:任意大于1024 的数;? 16位目的端口号:25;203计算机网络协议原理实验教程? 32位序号:选择一个序号(例如:19425898 ) ;? 32位确认序号:设置为0;?首部长度:首部长度设为5,即长度为20 字节;?标志位:
16、标志位设为2,即标志位SYN=1 ;?窗口大小:任意,例如填入32768 ;?紧急指针: 0;?校验和:点击工具栏中的“ 校验和 ” 按钮计算 TCP 校验和(覆盖TCP 首部(包含伪首部 )和 TCP 数据两部分,计算方法同UDP 协议一样)。z5、填写 HTTP 协议报文的内容:可填入 HTTP 的常用命令及参数,例如:GET / HTTP/1.1。最终的编辑结果如下图所示:图 5- 105 编辑 HTTP 报文的内容3、点击工具栏上的“ 发送 ” 按钮,将编辑好的HTTP 数据报文发送,可设置循环发送。4、在实验主机上运行网络协议分析仪,捕获数据,捕获结果如图5- 106 所示。其中可以清晰地看到,这个TCP 报文的标志位是SYN ,里面携带的是HTTP 请求报文,其请求行内容为: GET / HTTP/1.1。204第五章应用层协议分析图 5- 106 捕获编辑的HTTP 报文【思考问题】结合实验过程中的实验结果,问答下列问题:1、当实验主机上同时打开多个浏览器窗口并访问同一WEB 站点的不同页面时,系统是根据什么把返回的页面正确地显示到相应窗口的?2、一个主页是否只有一个连接