您的位置:首页 > 理论基础 > 计算机网络

结合Wireshark捕获分组深入理解TCP/IP协议栈之HTTP协议

2018-01-19 11:17 567 查看
原文地址:结合Wireshark捕获分组深入理解TCP/IP协议栈之HTTP协议 作者:Jelline

摘要:    本文简单介绍了Web应用层协议理论知识,详细讲述了HTTP请求报文和响应报文各个字段含义,并从Wireshark俘获分组中选取HTTP相关报文进行分析。
一、概述    Web的应用层协议是超文本传输协议HTTP,HTTP协议由两部分程序实现:客户机程序、服务器程序,协议定义了这些报文的格式以及客户机和服务器如何进行报文交换的。Web服务器用于存储Web对象,每个对象由URL寻址,Web客户机通常指浏览器。浏览器向服务器发出对Web页中所包含对象的HTTP请求报文,服务器接受请求并用包含这些对象的HTTP响应报文进行响应。Web页是由对象组成,对象简单来说就是文件(如图形文件、Java小程序、声音剪辑文件),这些文件通过一个URL地址寻址。Web页通常含有一个基本的HTML文件和几个引用对象。    HTTP报文有两种:请求报文、响应报文。二、HTTP请求报文2.1 请求报文整个报文段内容是普通ASCII文本,各个字段靠空格或者回车换行符隔开,如下图:

图1 HTTP请求报文格式方法表1 HTTP请求报文方法[1]
方法说明
GET请求获取URL所标识的资源
POST在URL所标识的资源后附加新的数据
HEAD请求获取由URL所标识的资源的响应消息报头,常用于故障跟踪
PUT请求服务器存储一个资源,并用URL作为其标识
DELETE请求服务器删除URL所标识的资源
TRACE请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT保留将来使用
OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求
    使用GET方法时实体主体为空。客户机有时候需要提交表单(如搜索关键词),有两种方法可以做到这一点:其一,使用POST方法,实体主体包含表单字段的值;其二,用GET方法,此时表单的字段与原URL形成新的URL。    注:HTTP/1.0规约仅有三种方法:GET、POST、HEAD。URL    对象由统一资料定位器URL标识,URL由3部分组成(如http://www.baidu.com/index.html):协议(http)、存放对象服务器主机名(www.baidu.com)、对象的路径名(/index.html)。版本    目前有HTTP/1.0、HTTP/1.1,后者兼容前者。HTTP/1.0仅支持非持续连接,即每个TCP连接在服务器返回对象后关闭,HTTP/1.1支持持续连接,即服务器在发送响应后保持该TCP连接。早期,Web页面通常只包含HTML文件,用非持续连接就够了。如今,一个Web页面包含许多对象,用非持续连接开销太大了(TCP建立的三次握手),因此持续连接更合适。首部行    给服务器发送首部行旨在服务器为不同类型的客户机发送相同对象的不同版本,常用的首部行见表2。表2 HTTP请求报文常用首部行
字段名
User-Agent关于浏览器和它的平台信息
Accept客户机能处理的页面类型
Accept-Charset客户机可以接受的字符集
Aceept-Encoding客户机能处理的页面编码方法
Accept-Language客户机能处理的自然语言
Host服务器的DNS名字
Authorization证明客户端有权查看某个资源
Cookie将一个以前设置的cookie送回给服务器
实体数据    实体数据是报文的主体,即所请求的对象本身。2.2 实例分析

图2 HTTP请求报文实例三、HTTP响应报文3.1 报文格式

图3 HTTP响应报文格式版本    服务器使用的协议版本。状态编码、短语    状态编码码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值[1]:表3 HTTP响应报文响应类别及值
类别
1xx指示信息--表示请求已接收,继续处理
2xx成功--表示请求已被成功接收、理解、接受
3xx重定向--要完成请求必须进行更进一步的操作
4xx客户端错误--请求有语法错误或请求无法实现
5xx服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:表4 HTTP响应报文常用代码
编码短语说明
200OK客户端请求成功
400Bad Request客户端请求有语法错误,不能被服务器所理解
401Unauthorized请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403Forbidden服务器收到请求,但是拒绝提供服务
404Not Found请求资源不存在
500Internal Server Error服务器发生不可预期的错误
503Server Unavailable服务器当前不能处理客户端的请求,一段时间后,可能恢复正常
首部行    常用的HTTP响应报文首部行见下表:表5 响应报文常用首部行字段
字段名
Date消息被发送时的日期和时间
Server关于服务器信息
Content-Encoding内容是如何被编码的(如gzip)
Content-Length以字节计算的页面长度
Content-Type页面的MIME类型
Last-Modified页面最后被修改的时间和日期
Location指标客户将请求发送到别处的命令
Accept-Ranges服务器将接受指定请求的字节范围
Set-Cookie服务器希望客户保存一份cookie
实体数据    实体数据是报文的主体,即所请求的对象本身。3.2 报文实例

图2 HTTP响应报文实例
至此,服务器返回用户所请求的文件:-)
参考资料:[1] 博文《HTTP协议详解》[2] Andrew S.Tanenbaum.计算机网络[M].[3] 《计算机网络--自顶向下方法与Internet特色》[M].HTTP请求报文格式.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐