http报文分析

http报文分析

一、什么是报文

  1. 用于HTTP协议交互的信息被称为报文。
  2. 请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文。
  3. HTTP报文本身是由多行数据构成的字符串文本。
  4. HTTP报文大致上可分为报文首部和报文主体两块,两者由最初出现的空行划分。

5. 通常,并不一定要有报文主体。

二、组成

  1. 起始行:报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况
  2. 报文头:起始行后面有零个或多个字段。每个字段都包含一个名字和一个值,为了便于解析,两者之间用冒号(:)来分隔,首部以一个空行结束。
  3. 主体:空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体是要发送给服务器的数据;响应主体是要返回给客户端的数据。起始行和报文都是文本且都是结构化的,而主体则不同,主体中可以包含任意的二进制数据(比如图片、视频)。当然,主体中也可以包含文本。

二、请求报文和响应报文的结构

请求报文

一个请求报文起始行的例子:

GET /bk/index.html HTTP/1.12

·GET:这里指明请求方法是GET,还有其它方法比如POST、DELETE、HEAD、OPTIONS、PUT、TRACE

·/dir/index.html:这里指明URL,它和报文头的Host属性组成完整的请求URL

·HTTP/1.1:这里指明协议名称及版本号

报文头里有很多的字段,具几个常见的例子:

  1. Host:请求的服务器地址,比如www.google.com
  2. Accept: 指明客户端可以接受的数据类型,比如text/html
  3. Cookie:携带的Cookie信息
  4. Cache-Control:对缓存进行控制,指明一个请求希望响应返回的内容在客户端要被缓存多。

最后举一个请求主体的例子:

name=zhangsan&age=24

这里的请求主体就是我们提交的表单里的数据。

响应报文

一个响应报文起始行的例子:

HTTP/1.12   200   OK

跟请求报文比,响应报文的起始行里多了一个状态码来告诉客户端本次请求的处理结果。以下是状态码的类型:

原文地址:https://www.cnblogs.com/111zq/p/10264067.html

时间: 2024-10-07 21:59:20

http报文分析的相关文章

wcf第3步之报文分析及原生调用

最简单的调用当然是服务引用,但是我更想原生调用,所以希望能通过报文有如下研究 1.报文分析 <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-

常用http响应报文分析

这是我在使用Asp.Net的时候,整理的的一些关于Http响应报文的分析笔记,零零散散的记录, 现在贴出来,抛砖引玉,如果有什么不对或者不严谨的地方,请各位大神不吝赐教. 一.HTTP响应码响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行. 响应码分五种类型,由它们的第一位数字表示: 1xx:信息,请求收到,继续处理 2xx:成功,行为被成功地接受.理解和采纳 3xx:重定向,为了完成请求,必须进一步执行的动作 4xx:客户端错误,请求包含语法错误或者请求无法实现 5xx

TCP三次握手报文分析

1.TCP客户进程发送请求连接SYN报文[SYN=1,ACK=1](不携带数据但是要消耗一个序号,所以确认报文ACK=1) 2.TCP服务进程同意建立连接,发送确认SYN连接接受报文(SEQ=0 ACK=1) 3.TCP客户进程再次确认(ACK报文段[SYN=0,ACK=1]不携带数据则不消耗序号,所以数据传送接到TCP客户进程SEQ仍未1) 第一次数据传送(1bytes~153bytes,则确认报文段ACK=154) 第一次确认  第二.三次数据传送 第二次确认 TCP连接释放四次挥手分析:正

DHCP协议报文分析

DHCP协议分析 一.DHCP简介 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)用来为网络设备动态地分配 IP地址等网络配置参数. DHCP 采用客户端/服务器通信模式,由客户端向服务器提出请求分配网络配置参数的申请,服务器返回为客户端分配的 IP 地址等配置信息,以实现 IP 地址等信息的动态配置. 二.DHCP工作过程 1.IP 地址动态获取过程 2.主要通过四个阶段进行: A.发现阶段,即 DHCP 客户端寻找 DHCP 服务器的阶段

golang实现dns域名解析(三):响应报文分析

前面说了构造请求发送报文,接下来我们好好研究下如何解析服务器端发回来的应答信息. 首先还是用前面的程序代码发一个请求,用抓包工具看看应答的内容有哪些: 截图的第一部分是返回信息的统计,表明这个返回的包数据包含一个问题,5个权威应答,5个附加信息.第二部分是问题的内容,第三部分是权威应答的内容,第四部分是附加信息的内容.再往下面就是接收到的原始数据的展示,这里需要提及的一点就是为了减小报文,域名系统使用一种压缩方法来消除报文中域名的重复.使用这种方法,后面重复出现的域名或者labels被替换为指向

Linux网络编程——原始套接字实例:MAC 头部报文分析

通过<Linux网络编程——原始套接字编程>得知,我们可以通过原始套接字以及 recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢? 链路层封包格式 MAC 头部(有线局域网) 注意:CRC.PAD 在组包时可以忽略 链路层数据包的其中一种情况: 1 unsigned char msg[1024] = { 2 //--------------组MAC--------14------ 3 0xb8, 0x88, 0xe3, 0xe1, 0x10, 0xe6,

ICMP报文分析

一.概述: 1.   ICMP允许主机或路由报告差错情况和提供有关异常情况.ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议.通常ICMP报文被IP层或更高层协议(TCP或UDP)使用.一些ICMP报文把差错报文返回给用户进程. 2.   ICMP报文作为IP层数据报的数据,加上数据报的首部,组成数据报发送出去. 3.   ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文. 二.ICMP报文的格式 1.   类型:占8位 2.   代码:占8位 3.   检

报文分析 - 抓包

界面演示 核心接口 public interface I项目 { M项目 获取项目(); void 保存当前映射(List<M设备映射> 当前通信); } public class M项目 { [DBKey] public Int64 Id { get; set; } public string 名称 { get; set; } public List<M设备映射> 设备通信模板 { get; set; } public List<M设备映射> 当前通信设备 { get

抓包报文分析

尽管用到的抓包工具次数比較多.可是还是记不住这些16进制代码的含义.上次參加CTF居然有这种题,今天有时间就分析了一下,记下来 00 23 69 B7 81 24 0C 82 68 56 D3 AC 08 00 45 00 00 32 07 9D 40 0040 06 F9 B9 C0 A8 01 68 3A DD 3C 82 13 A1 21 24 D6 70 14 2F 0F A7 F7 86 50 18 40 98 F8 5E 00 0069 66 6F 66 31 75 D6 77 36