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

简介: 摘要:     本文简单介绍了Web应用层协议理论知识,详细讲述了HTTP请求报文和响应报文各个字段含义,并从Wireshark俘获分组中选取HTTP相关报文进行分析。   一、概述     Web的应用层协议是超文本传输协议HTTP,HTTP协议由两部分程序实现:客户机程序、服务器程序,协议定义了这些报文的格式以及客户机和服务器如何进行报文交换的。

摘要:

    本文简单介绍了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响应报文常用代码

 

编码

短语

说明

200

OK

客户端请求成功

400

Bad Request

客户端请求有语法错误,不能被服务器所理解

401

Unauthorized

请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403

Forbidden

服务器收到请求,但是拒绝提供服务

404

Not Found

请求资源不存在

500

Internal Server Error

服务器发生不可预期的错误

503

Server 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   

from:http://blog.chinaunix.net/uid-9112803-id-3212057.html

目录
相关文章
|
11月前
|
缓存 监控 负载均衡
提升HTTP动态代理IP性能的最佳实践
在现代网络环境中,HTTP动态代理IP的优化配置至关重要。通过选择合适的代理类型(正向/反向代理)、配置缓存、使用负载均衡、加强安全配置(SSL/TLS加密、身份验证)、管理日志、性能监控、限制带宽、定期更新软件和优化用户体验(减少延迟、内容压缩),可以显著提升网络性能、安全性及用户满意度。根据具体需求灵活调整配置,实现最佳效果。
452 64
提升HTTP动态代理IP性能的最佳实践
|
3月前
|
网络协议 安全 网络安全
什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
|
5月前
|
网络协议 API
区分TCP/IP、HTTP、Socket三者的差异
HTTP关注于应用层的协议规范,而Socket关注于为应用程序提供编程中的网络功能,这些功能本身是建立在底层的TCP/IP协议之上;HTTP是更高层次的抽象,定义了如何包装数据,而TCP/IP定义了如何传送数据,Socket则是两者之间在程序中的桥梁,负责实现细节。在实际应用中,通常HTTP通信也是通过Socket来完成,因为HTTP仅是具体内容的封装形式,而Socket则是传送方式的实现形式。
558 16
|
5月前
|
网络协议 安全 API
WebSocket、Socket、TCP 和 HTTP 的差别与应用场景
WebSocket、Socket、TCP 和 HTTP 是网络通信中的四大“使者”,各具特色:HTTP 适合短时请求,TCP 稳定可靠,Socket 灵活定制,WebSocket 实现实时双向通信。本文用通俗语言解析它们的区别与应用场景,助你为项目选择最合适的通信方式。
2293 3
|
7月前
|
数据采集
Haskell编程中,利用HTTP爬虫实现IP抓取
以上就是利用Haskell编写IP抓取爬虫的详细步骤。希望这篇文章的演示对于理解在Haskell这种函数式编程语言中如何实现网络爬虫有所帮助,而其中的网络访问、标签解析和列表处理等技术在许多其他的问题中都有广泛的应用。
182 26
|
8月前
|
XML JSON 网络协议
利用HTTP POST协议实现简单的RPC协议:WireShark抓包分析
通过这种方式,我们可以使用HTTP POST实现简单的RPC协议,并使用WireShark进行抓包分析。这不仅可以帮助我们理解RPC协议的工作原理,也可以帮助我们调试和优化我们的代码。
449 30
|
9月前
|
负载均衡 监控 安全
优化HTTP代理IP安全稳定性的关键要点
随着科技发展,越来越多企业依赖HTTP代理IP。为确保其安全稳定,建议采取以下措施:选择可靠服务商、使用HTTPS加密、定期更换IP、监控可用性、设置访问控制、使用负载均衡、配置防火墙、定期更新维护及用户教育。这些方法能有效提升代理IP的安全性和稳定性。
387 59
|
7月前
|
数据采集 监控 安全
HTTP代理和IP代理的不同点及代理IP能带来的好处分析
总的来说,无论是HTTP代理还是IP代理,选择哪一种主要还是要看你的需求和使用场景,同时也要为可能的风险做好准备。
200 9
|
8月前
|
JSON 数据格式
利用HTTP POST协议实现简单的RPC协议,并使用WireShark进行抓包分析
通过这种方式,我们可以利用HTTP POST实现简单的RPC协议,并使用WireShark进行抓包分析。这种方式简单易懂,实用性强,可以应用于各种网络编程场景。
352 16
|
11月前
|
编解码 安全 网络安全
指纹浏览器中HTTP代理IP的重要性及使用原因
随着数字化发展,网络安全和隐私保护成为核心需求,指纹浏览器应运而生。它通过客户端信息唯一标识用户身份。搭配HTTP代理IP可增强安全性,具体表现为:1. 保护用户地址;2. 提高信息安全;3. 防止指纹检测;4. 增强网络安全。HTTP代理以其稳定性、安全性,在网络营销等领域发挥重要作用,二者结合为用户提供更强的隐私和安全保护。
393 34

热门文章

最新文章