一、基本信息

1、英文简称

HyperText Transfer Protocol

2、一种网络协议,在网络中传输的特定格式的字符串。所以该协议并没有强调下层协议的类型,即承载方,所以不必须为 TCP/IP,只要是可靠的协议就行,因为 HTTP 协议通信仅仅是交互特定格式的字符串,只要保质保量能够传输双方的字符串即可,故对底层协议无过多要求。

3、一般 HTTP 底层网络使用 TCPIP,提供 HTTP 服务的服务器提供的端口号为 80 。

4、HTTP 协议是基于请求 / 响应模型的协议。请求和响应必须成对,先有请求后有响应。

5、HTTP 协议可以传输任何类型的数据,例如 JSON,XML等,其格式的说明由 Content-Type 加以标记。

6、面向无连接,即:每个连接只能处理一个客户端的请求,服务器处理完该请求并收到客户端的应答之后,就断开了连接。

7、版本

  • HTTP / 1.0,发送请求,创建一次连接,获得一个 web 资源,连接断开。
  • HTTP / 1.1,发送请求,创建一次连接,获得多个 web 资源,连接断开。

二、诞生原因

提供一种发布和接收 HTML 页面的方法,该 HTML 页面在网络中就是特定格式的字符串。

三、协议组成

http 请求包括:请求行、请求头、请求体。

http 响应包括:响应行、响应头、响应体。

1、请求协议

(1)请求行

格式:请求方式      资源路径      协议 + 版本

注意:请求行必须在http请求格式的第一行。

栗子:POST /chapter17/user.html HTTP/1.1

请求方式 作用 优点 缺陷 其他
get 请求从服务器中获取数据  

参数位于 URL 中,有安全隐患;

URL 长度限制 get 请求方式数据的大小。

 
post

向服务器中提交数据,

数据位于请求体中

     
HEAD 服务器只返回响应行和响应头 较 get 速度快,节省带宽    
DELETE 删除服务器上资源      
OPTIONS

用于获取当前URL所支持的方法。

若请求成功,会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。

     
PUT 把一个资源存放在指定的位置上。     与 POST 相似,区别在于 PUT 指定了资源的存放位置,而 post 上传的数据由服务器决定存放位置。
TRACE 回显服务器收到的请求,主要用于测试或诊断。      

(2)请求头

① Accept:告诉服务端,该请求所能支持的响应数据类型,采用 MIME 格式(文件类型的一种描述方式)。

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

栗子:

text / html,html 文件

text / css,css 文件

text / javascript,js 文件

image/*,所有图片文件

② User-Agent:浏览器通知服务器,客户端浏览器与操作系统相关信息。

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36

③ Connection:表示客户端与服务连接类型;Keep-Alive 表示持久连接,close 短链接。

Connection: keep-alive

④ Content-Length:请求体的长度。

POST http://39.108.107.149:8080/vk/app/rest/ddp/iModelServiceImpl/findModelByType HTTP/1.1
User-Agent: Fiddler
Host: 39.108.107.149:8080
Content-Length: 11name=城市

⑤ Content-Type:请求的与实体对应的MIME信息。如果是 post 请求,会有这个属性,默认值为 application/x-www-form-urlencoded,表示请求体内容使用 url 编码。

Content-Type: application/x-www-form-urlencoded

⑥ Accept-Encoding:浏览器通知服务器,浏览器支持的数据压缩格式。如 GZIP 压缩。

Accept-Encoding: gzip, deflate

⑦ Accept-Language:浏览器通知服务器,浏览器支持的语言。各国语言(国际化 i18n )

Accept-Language: zh-CN,zh;q=0.9

更多请求头属性可以参考这篇文章:HTTP响应头和请求头信息对照表 。

(3)请求体

当请求方式是 post 时,请求体会有请求的参数,格式如下:

username=zhangsan&password=123

2、响应协议

(1)响应行

① 报文协议及版本;

例如:

HTTP/1.1 200 OK

② 状态码及状态描述;

状态码:由3位数字组成,第一个数字定义了响应的类别

1xx:指示信息,表示请求已接收,继续处理。

2xx:成功,表示请求已被成功接受并处理。

  • 200 OK:客户端请求成功
  • 204 No Content:无内容。服务器成功处理,但未返回内容。一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况。不会刷新页面。
  • 206 Partial Content:服务器已经完成了部分GET请求(客户端进行了范围请求)。响应报文中包含Content-Range指定范围的实体内容

3xx:重定向

  • 301 Moved Permanently:永久重定向,表示请求的资源已经永久的搬到了其他位置。

  • 302 Found:临时重定向,表示请求的资源临时搬到了其他位置

  • 303 See Other:临时重定向,应使用GET定向获取请求资源。303功能与302一样,区别只是303明确客户端应该使用GET访问

  • 307 Temporary Redirect:临时重定向,和302有着相同含义。POST不会变成GET

  • 304 Not Modified:表示客户端发送附带条件的请求(GET方法请求报文中的IF…)时,条件不满足。返回304时,不包含任何响应主体。虽然304被划分在3XX,但和重定向一毛钱关系都没有

4xx:客户端错误

  • 400 Bad Request:客户端请求有语法错误,服务器无法理解。
  • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务
  • 404 Not Found:请求资源不存在。比如,输入了错误的url
  • 415 Unsupported media type:不支持的媒体类型

5xx:服务器端错误,服务器未能实现合法的请求。

  • 500 Internal Server Error:服务器发生不可预期的错误。
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,

(2)响应头

服务器通过响应头来控制浏览器的行为,不同的头浏览器操作不同。

响应头属性可以参考这篇文章:HTTP响应头和请求头信息对照表

(3)响应体

响应体是服务器回写给客户端的页面正文,浏览器将正文加载到内存,然后解析渲染并显示。

四、长连接和短链接区别

1、当请求头中的 Connection 为 keep-alive 时该连接为长连接(默认)。

2、当请求头中的 Connection 为 close 时该链接为短链接。

(SAW:Game Over!)

通信 / HTTP 详解相关推荐

  1. 西门子S7-1200PLC与V20变频器进行MODBUS RTU通信步骤详解

    西门子S7-1200PLC与V20变频器进行MODBUS RTU通信步骤详解 在TIA博途中创建项目,组态1200PLC,并添加CM1241 RS485模块,如下图所示,

  2. 【CTO讲堂】SaaS云端语音通信架构详解

    为了帮助IT从业者职业之路拥有更多收获,在诸多C粉的殷切期待下,由 CTO俱乐部打造的CTO线上讲堂自登场以来获得大家好评.本期邀请容联七陌CTO张杨带来"SaaS云端语音通信架构详解&qu ...

  3. ws2812b程序51单片机_51单片机串口通信程序详解

    串口通信简介 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件.一般完成这种功能的电路,我们称为串行接口电路 ...

  4. 【流媒体服务器Mediasoup】 NodeJs与C++信令通信详解及Linux下管道通信的详解(五)

    目录 前言 匿名管道进程间通信 进程间管道 的创建与图解 MediaSoup中的管道创建 MediaSoup Channel的创建 NodeJs和 C++ 管道通信的过程 MediaSoup 消息确认 ...

  5. RS485通信总线详解

    RS485 总线详解 RS-485 是美国电子工业协会(EIA)在 1983 年批准了一个新的平衡传输标准(Balanced Transmission Standard)也称作差分,EIA 刚开始将 ...

  6. TCP通信过程详解以及tcp长连接和短连接

    1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接 时它们可以释放这个连接,连接的建立是需要三 ...

  7. 单片机_串口通信知识详解

    单片机_串口通信详解      楼主在实际的项目开发过程中,特别是用一些比较常见的传感器,使用最多的通信方式可能就是串口通信了,特别是UART(通用异步收发器),线少,虽然传输速度没有并行传输高,但是 ...

  8. 串口及串口通信硬件详解UART,I2C,SPI,USB

    1.计算机与计算机或计算机与终端之间的数据传送串行通讯和并行通讯二种方式 1.1.串行通信 和 并行通信 并行通讯通常可以一次传送8bit.16bit.32bit甚至更高的位数,相应地就需要8根.16 ...

  9. 【实战】MPLS单域通信过程详解

    一.背景说明 本文专门从路由传输与数据传输两个维度详细讲解传输的过程,上文实验拓扑如下图所示,为了简单起见,只已客户A为例(紫色)进行描述 二.路由传输层面 R5与R1之间通过ospf 1学习到5.5 ...

  10. Modbus Tcp通信格式详解

    Modbus TCP  03功能码 读取一个或多个保持寄存器的数值 读取连续三个保持寄存器的数值 (40001=1000.40002=5000.40003=650) 发送:00 00 00 00 00 ...

最新文章

  1. 终于有人把云计算、物联网和大数据讲明白了!
  2. Debian,Ubuntu下安装zsh和oh-my-zsh
  3. openNebula 搭建
  4. 开源如此火热,但研究表明该领域已不再增长
  5. 中国电力环保设备行业十四五发展形势与投资机会分析报告2022版
  6. SpringAMQP--消息转换器
  7. 玩转linux文件描述符和重定向,玩转Linux文件描述符和重定向
  8. 你的搜索其实很糟糕?
  9. 为什么土豆网王微会放弃自己原有的立场,跟优酷合并 合并后有何影响
  10. 各种数据结构优缺点分析
  11. 光纤传感技术:基于Matlab的OFDR系统数值仿真
  12. Linux下cuda卸载
  13. upyun java_又拍云Java SDK使用
  14. java EE 第十二周 web前端开发的周总结 (含思维导图)
  15. buffer几种用法
  16. c:if标签多条件的逻辑判断
  17. matlab中 rgb2gray() 函数 具体实现
  18. 记 2017年初 美国游(图海、史诗级长文预警)
  19. js防抖、节流(立即执行/非立即执行 + 立即取消等待)
  20. ubuntu安装mysql详细过程

热门文章

  1. config中自定义配置
  2. Dynamic Web TWAIN扫描识别工具改变缓冲区图像大小
  3. http Error 503 server unavailable
  4. 【博客话题】我的linux心路历程
  5. 格式化输出--对齐及补全
  6. Devops (1)
  7. SpringBoot整合Spring Security——第三章异常处理
  8. 什么是nginx负载均衡高可用
  9. Redis 管道(Pipelining)
  10. Hadoop大数据——mapreduce中的Combiner/序列化/排序初步