HTTP 基本架构

下面我们用一张简单的流程图来展示 HTTP 协议基本架构,以便大家先有个基本的了解

Web Client 可以是浏览器、搜索引擎、机器人等等一切基于HTTP 协议发起 http 请求的工具。Web Server 可以是任何的能解析 HTTP 请求,并返回给Web Client 可识别的响应的服务,常见的有 apache、nginx、IIS 等等 web 服务器

浓缩就是精华,看下最简洁的 HTTP 交互图:

HTTP 报文结构

请求报文:HTTP 请求报文由请求行、请求头、空行和请求内容 4 个部分构成。如下图所示:

下面对上图进行简单的分析:请求行:由请求方法字段、URL 字段、协议版本字段三部分构成,它们之间由空格隔开。常用的请求方法有:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。请求头:请求头由 key/value 对组成,每行为一对,key 和 value 之间通过冒号(:)分割。请求头的作用主要用于通知服务端有关于客户端的请求信息。

典型的请求头有:

  • User-Agent:生成请求的浏览器类型
  • Accept:客户端可识别的响应内容类型列表;星号* 用于按范围将类型分组。*/*表示可接受全部类型,type/*表示可接受 type 类型的所有子类型。
  • Accept-Language: 客户端可接受的自然语言
  • Accept-Encoding: 客户端可接受的编码压缩格式
  • Accept-Charset: 可接受的字符集
  • Host: 请求的主机名,允许多个域名绑定同一 IP 地址
  • connection:连接方式(close 或 keeplive)
  • Cookie: 存储在客户端的扩展字段

空行:最后一个请求头之后就是空行,用于告诉服务端以下内容不再是请求头的内容了。

请求内容:请求内容主要用于 POST 请求,与 POST 请求方法配套的请求头一般有 Content-Type(标识请求内容的类型)和 Content-Length(标识请求内容的长度)

  • 响应报文:HTTP 响应报文由状态行、响应头、空行和响应内容 4 个部分构成。如下图所示:

下面对响应报文格式进行简要的分析说明:状态行:由 HTTP 协议版本、状态码、状态码描述三部分构成,它们之间由空格隔开。状态码:由 3 位数字组成,第一位标识响应的类型,常用的 5 大类状态码如下:

  • 1xx:表示服务器已接收了客户端的请求,客户端可以继续发送请求
  • 2xx:表示服务器已成功接收到请求并进行处理
  • 3xx:表示服务器要求客户端重定向
  • 4xx:表示客户端的请求有==非法内容==
  • 5xx:标识服务器未能正常处理客户端的请求而出现意外错误

常见状态码说明:

  • 200 OK: 表示客户端请求成功
  • 400 Bad Request: 表示客户端请求有语法错误,不能被服务器端解析
  • 401 Unauthonzed: 表示请求未经授权,该状态码必须与WWW-Authenticate 报文头一起使用
  • 404 Not Found:请求的资源不存在,例如输入了错误的 url
  • 500 Internal Server Error: 表示服务器发生了不可预期的错误,导致无法完成客户端的请求
  • 503 Service Unavailable:表示服务器当前不能处理客户端的请求,在一段时间后服务器可能恢复正常响应头

一般情况下,响应头会包含以下,甚至更多的信息。

  • Location:服务器返回给客户端,用于重定向到新的位置
  • Server: 包含服务器用来处理请求的软件信息及版本信息Vary:标识不可缓存的请求头列表
  • Connection: 连接方式。

对于==请求端==来讲:close 是告诉服务端,断开连接,不用等待后续的求请了。keeplive 则是告诉服务端,在完成本次请求的响应后,保持连接,等待本次连接后的后续请求。对于==响应端==来讲:close 表示连接已经关闭。keeplive 则表示连接保持中,可以继续处理后续请求。Keep-Alive 表示如果请求端保持连接,则该请求头部信息表明期望服务端保持连接多长时间(秒),例如 300 秒,应该这样写 Keep-Alive: 300

空行:最后一个响应头之后就是空行,用于告诉请求端以下内容不再是响应头的内容了。响应内容:服务端返回给请求端的文本信息。

HTTP 报文示例

在这里我们在 Firefox 下用 firebug 随意抓取一个 HTTP 包和上文的报文结构做下一一对应关系图,以便大家了解实际的包和标准报文结构的对应关系。

总结
对于 HTTP 协议的交互过程这里就不再进行说明了,大家可以搜索下相关的资料进行学习,上述的内容请务必熟练掌握、深刻了解。更详细的内容推荐大家学习 RFC 2616(http 协议 1.1 版本,有中文版本)

下面哪个字段是http请求中必须具备的_HTTP 协议报文结构及示例相关推荐

  1. 下面哪个字段是http请求中必须具备的_HTTP协议及其工作原理介绍

    HTTP,全称 HyperText Transfer Protocol,即超文本传输协议.它是互联网应用最为广泛的一种网络协议,我们平时浏览网页的时候就是使用HTTP协议.比如当你在浏览器中输入www ...

  2. 下面哪个字段是http请求中必须具备的_理解HTTP协议-HTTP协议详解总结

    一.HTTP协议的演进 HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向 ...

  3. 【计算机网络】应用层 : 万维网 和 HTTP 协议 ( 万维网概述 | HTTP 协议特点 | HTTP 协议连接方式 | HTTP 协议报文结构 | HTTP 请求报文 | HTTP 响应报文 )

    文章目录 一.万维网概述 ★ 二.HTTP 协议 ( 超文本传输协议 ) ★ 三.HTTP 协议特点 ★ 四.HTTP 连接方式 ★ 五.HTTP 协议报文结构 六.HTTP 请求报文 ★ 七.HTT ...

  4. http请求中必须具备哪个字段_HTTP访问控制(CORS)

    跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源.当一个资源从与该资源 ...

  5. HTTP概念协议报文结构请求响应数据报分析

    文章目录 前言 一.HTTP的概念.特点.工作过程.应用场景 二.HTTP协议报文格式查看方式 三.HTTP协议数据报格式解读 http请求数据报 Part1:首行 关于URL 关于http方法 Ge ...

  6. HTTP协议协议报文结构请求响应数据报分析

    目录 一. 何为HTTP 1. 简单理解HTTP协议的工作过程 2. Fiddler抓包工具 2.1 抓包工具的原理 二. HTTP 请求解析 1. 首行结构 1.1 认识URL 1.2 HTTP方法 ...

  7. vue如何强行停止ajax请求,VueJs和VueResource,从Ajax请求中删除头字段

    当我实例化Vuejs (2.2.6)和Vue-resource (1.2.1)时,我使用以下代码设置标头授权,这样我可以授权我的API的所有请求: Vue.http.headers.common.AU ...

  8. post传值php取不到数据,post请求中的参数形式和form-data提交数据时取不到的问题...

    @Controller 页面form表单请求时不会丢数据 返回json数据时需要加 注解@ResponseBody 请求格式如下 @ResponseBody public Object login(S ...

  9. 一篇文章带你详解 HTTP 协议之报文首部及字段详解(中)

    在上一篇中,我们已经讲解了一到五的内容,还没看过的可以先看, 下面接着讲剩余内容: 六.HTTP 报文首部之首部字段(重点分析) 七.HTTP 响应状态码(重点分析) 八.HTTP 报文实体 九.与 ...

最新文章

  1. 腾讯最新开源IoT操作系统登上GitHub热榜,最小体积仅1.8 KB,标星1200+
  2. Vitamio打造自己的Android万能播放器
  3. 前端学习(3297):effect的使用
  4. 计算机网络学习笔记(四)——差错控制、停等协议、回退N帧、选择性重传、滑动窗口、数据链路层HDLC、PPP协议、有限状态机
  5. 博世成立新部门布局互联交通服务
  6. SIFT算法详解(二)
  7. 掌握这些的Linux命令,你基本稳了
  8. 【小安翻唱】檄!帝国华撃団
  9. ADC信噪比计算公式
  10. WDF pci驱动开发的若干总结
  11. Python游戏编程(五)Tic Tac Toe
  12. 12306泄露数据分析(二)
  13. 用matlab求二重积分例题_数学建模matlab例题参考及练习
  14. 微信小程序wepy框架+minui踩坑之路
  15. SQL语句里将字符串转换数字类型
  16. html 禁止触摸事件,html5的触摸事件
  17. 基于Android与多媒体的英文学习APP的设计
  18. C/C++语言100题练习计划 98——最长最短单词
  19. 信息安全专业毕业设计选题推荐
  20. 微信h5支付“网站域名ICP备案主体与商户号主体不一致”的解决方法,H5微信支付 授权函下载

热门文章

  1. 计算机窗口预览图,window_Win7系统资源管理器加上预览窗格功能的方法,  图片缩略图是否太小?PPT - phpStudy...
  2. 为什么在python中整数的值没有限制_python-为什么math.log接受大整数值?
  3. python画图删除上边框和右边框
  4. 转载:使用 frida hook 插件化 apk ( classloader )
  5. 在 windows 下使用 Xming+Putty 显示 Linux 下软件图形界面
  6. Spring Data JPA 从入门到精通~Criteria概念的简单介绍
  7. java 配置写成表达式_Java的正则表达式之小结
  8. zend studio php 5.5,PHP - 下载 - Zend Studio 5.5
  9. PID控制器开发笔记之八:带死区的PID控制器的实现
  10. 风机桨叶故障诊断(七) 滑动窗与非极大值抑制NMS