首页 > 其他分享 >流量分析九之HTTP协议

流量分析九之HTTP协议

时间:2023-03-12 23:22:45浏览次数:37  
标签:协议 浏览器 请求 首部 Accept 流量 HTTP 客户端

HTTP协议

超文本传输协议(HyperText Transfer Protocol,HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。

HTTP 是一个基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。

HTTP 的 URL 是由 http:// 起始与默认使用端口 80,而 HTTPS 的 URL 则是由 https:// 起始与默认使用端口443

  • HTTP 是无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。

  • HTTP 是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送,客户端以及服务器指定使用适合的 MIME-type 内容类型。

  • HTTP 是无状态:HTTP 协议是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP消息结构

客户端请求

  • 请求行:包括了客户端的请求方法,URI、HTTP版本。·
  • 请求首部字段:允许客户端传递关于自身的信息和希望的响应形式。
  • 通用首部字段:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联。
  • 实体首部字段:定义被传送资源的信息。即可用于请求,也可用于响应。
  • 报文主体:一般在GET方法中没有报文主体,在使用POST方法的时候才有。

常见的请求首部字段:

  • Accept:浏览器可接受的MIME类型。
  • Accept - Charset:浏览器可接受的字符集。
  • Accept - Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
  • Accept - Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
  • Authorization:授权信息,通常出现在对服务器发送的WWW - Authenticate头的应答中。
  • Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep - Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content - Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。
  • Content - Length:表示请求消息正文的长度。
  • Cookie:这是最重要的请求头信息之一,参见后面《Cookie处理》一章中的讨论。
  • From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。
  • Host:初始URL中的主机和端口。
  • If - Modified - Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。
  • Pragma:指定“no - cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。
  • Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
  • User - Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。
  • UA - Pixels,UA - Color,UA - OS,UA - CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。

请求方法

服务器响应

  • 状态行:通过提供一个状态码来说明所请求的资源情况。·
  • 响应首部字段:服务器端向客户端发送响应报文使用的首部包括相应的附加内容,要求客户端补充的消息等。
  • 通用首部字段:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联。
  • 实体首部字段:定义被传送资源的信息。即可用于请求,也可用于响应。
  • 报文主体:一般在GET方法中没有报文主体,在使用POST方法的时候才有。

最常用的状态码有:

  • 200 (OK): 找到了该资源,并且一切正常。
  • 304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
  • 401 (UNAUTHORIZED): 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。
  • 403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
  • 404 (NOT FOUND): 在指定的位置不存在所申请的资源。

常见请求头:

  • Accept:浏览器可接受的MIME类型。
  • Accept - Charset:浏览器可接受的字符集。
  • Accept - Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
  • Accept - Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
  • Authorization:授权信息,通常出现在对服务器发送的WWW - Authenticate头的应答中。
  • Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep - Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content - Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。
  • Content - Length:表示请求消息正文的长度。
  • Cookie:这是最重要的请求头信息之一。
  • From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。
  • Host:初始URL中的主机和端口。
  • If - Modified - Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。
  • Pragma:指定“no - cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。
  • Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
  • User - Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。
  • UA - Pixels,UA - Color,UA - OS,UA - CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。

 请求首部字段

  • Accept :用户代理可处理的媒体类型。
  • Accept-Charset :优先的字符集。
  • Accept-Encoding :优先的内容编码。
  • Accept-Language :优先的语言(自然语言)。
  • Authorization Web:认证信息。
  • Expect :期待服务器的特定行为。
  • From :用户的电子邮箱地址。
  • Host :请求资源所在服务器。
  • If-Match :比较实体标记(ETag)。
  • If-Modified-Since :比较资源的更新时间。
  • If-None-Match :比较实体标记(与 If-Match 相反)。
  • If-Range: 资源未更新时发送实体 Byte 的范围请求。
  • If-Unmodified-Since :比较资源的更新时间(与If-Modified-Since相反)。
  • Max-Forwards :最大传输逐跳数。
  • Proxy-Authorization: 代理服务器要求客户端的认证信息。
  • Range: 实体的字节范围请求。
  • Referer :对请求中 URI 的原始获取方。
  • TE :传输编码的优先级。
  • User-Agent HTTP :客户端程序的信息。

 响应首部字段

  • Accept-Ranges: 是否接受字节范围请求。
  • Age :推算资源创建经过时间。
  • ETag :资源的匹配信息。
  • Location: 令客户端重定向至指定URI。
  • Proxy-Authenticate: 代理服务器对客户端的认证信息。
  • Retry-After :对再次发起请求的时机要求。
  • Server HTTP :服务器的安装信息。
  • Vary: 代理服务器缓存的管理信息。
  • WWW-Authenticate :服务器对客户端的认证信息。

 通用首部字段

  • Cache-Control:控制缓存的行为。
  • Connection:逐跳首部、连接的管理。
  • Date:创建报文的日期时间。
  • Pragma:报文指令。
  • Trailer:报文末端的首部一览。
  • Upgrade:升级为其他协议。
  • Via:代理服务器的相关信息。
  • Warning:错误通知。

实体首部字段

  • Allow :资源可支持的HTTP方法。
  • Content-Encoding :实体主体适用的编码方式。
  • Content-Language :实体主体的自然语言。
  • Content-Length :实体主体的大小(单位:字节)。
  • Content-Location :替代对应资源的URI。
  • Content-MD5 :实体主体的报文摘要。
  • Content-Range :实体主体的位置范围。
  • Content-Type :实体主体的媒体类型。
  • Expires :实体主体过期的日期时间。
  • Last-Modified :资源的最后修改日期时间。

抓包分析

 

标签:协议,浏览器,请求,首部,Accept,流量,HTTP,客户端
From: https://www.cnblogs.com/wlhk/p/17207208.html

相关文章

  • JPEG编码协议--压缩数据格式
    接上篇学习了JPEG的编码原理,本篇学习JPEG文件压缩数据格式,文章内容主要来自ITU-t81标准,加之个人的理解说明。一、文件结构  JPEG文件使用JFIF格式作为交换格式标准。......
  • 【漏洞复现】Apache HTTPD 换行解析漏洞 (CVE-2017-15715)
    ApacheHTTPD换行解析漏洞(CVE-2017-15715)0x01漏洞描述ApacheHTTPD是一款HTTP服务器,它可以通过mod_PHP来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解......
  • keydb redis 兼容协议服务
    keydb是完全兼容redis协议的服务,同时支持了不少其他特性,比如多主,多复制,对于我们的集群环境部署简化了不少而且还有一个不错的优势是性能(利用了多线程提供了不错的性能)官......
  • 流量分析七之TCP协议
    TCP协议传输控制协议(TransmissionControlProtocol),位于TCP/IP模型的传输层,它是一种面向连接的,基于字节流的端到端协议,可以为主机提供可靠的数据传输。TCP报文格式......
  • TCP/IP 网络协议栈基础
    1、TCP/IP5层模型2、封包①网络层:建立主机到主机之间的通信。传输层:建立端口到端口的通信。套接字socket=主机+端口。②ip数据包的是放在以太网的数据包里......
  • Http与Https
    参考:java3y《对线面试官》介绍HTTP协议是客户端和服务器交互的一种通讯方式所谓协议是双方约定好的“格式”,让双方都能看得懂“交互”就是请求和响应   HTTP......
  • Http是默认是长连接还是短链接
    HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻......
  • Http心得
    在大二下半学期里,我的JavaWeb老师在前面几节课里为我们讲解了一下http协议概念,并且叫我们回去按自己的理解自行领悟它,以下就是我所学的内容了HTTP/HTTPS简介HTTP协......
  • 《渗透测试》HTTP数据包&Postman构造&请求方法&请求头修改&状态码判断 2023 Day10
    1    2请求头各参数及解释  3响应头参数及解释  4get请求  4post请求   -方法1、常规请求-Get2、用户登录-Post•get:向特定资......
  • 11-应用层-HTTPs
    1.QuickStartHTTPS(HyperTextTransferProtocoloverSecureSocketLayer)超文本传输安全协议1.1与HTTP的区别?HTTP是超文本传输协议,信息是明文传输,存在安全风......