IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP协议 -> 正文阅读

[网络协议]HTTP协议


1、介绍

? HTTP协议(超文本传输协议:Hyper Text Transfer Protocol)用于从万维网服务器传输超文本到本地浏览器的传送协议。其基于TCP/IP通信协议来传递数据,是一个属于应用层面向对象的协议。
? 特点:
? 1)简单快速;
? 2)灵活;
? 3)无连接;
? 4)无状态;
? 5)支持B/S及C/S模式。


2、HTTP请求组成

2.1 请求行

请求类型 请求路径 协议版本

GET / HTTP/1.1
2.2 请求头
2.3 请求体

3、HTTP响应组成

3.1 状态行

协议版本 状态码 请求结果

HTTP/1.1 200 OK
3.2 响应头
3.3 响应体

4、状态码

4.1 状态码分类

1xx: 指示消息 – 表示已接收请求,继续处理
2xx: 成功 – 表示请求已被成功接收、理解、接受
3xx: 重定向 – 要完成请求必须进行更进一步的操作
4xx: 客户端错误 – 请求有语法错误或请求无法实现
5xx: 服务端错误 – 服务器未能实现合法的请求

4.2 常见状态码

200: 请求成功
400: 请求有语法错误
401: 未授权
403: 鉴权失败
500: 服务端发生错误
503: 服务端当前不能处理请求,一段事件后可能恢复正常


5、请求方式

GET: 请求指定的页面信息,并返回实体主体
HEAD: 类似于GET,只不过响应中没有具体内容(可用于记录用户行为)
POST: 提交表单数据或者上传文件
PUT: 向服务端传送数据取代指定文档的内容
DELETE: 请求服务器删除指定的内容
CONNECT: HTTP/1.1协议中预留能够将连接改为管道方式的代理服务器
OPTIONS: 允许客户端查看服务器的性能
TRACE: 会先服务器收到的请求(主要用于测试或诊断)
Restful、Restless


6、HTTP请求/响应步骤(浏览器输入url地址到页面渲染的整个过程)

1
2
3
4
5
6
7
8
客户端
DNS解析
建立TCP套接字连接
发送HTTP请求
服务器
接受请求并返回HTTP响应
释放TCP连接
解析内容并呈现
6.1 客户端连接到Web服务器

HTTP客户端,通常是浏览器,首先进行DNS解析,再与Web服务器的HTTP端口(默认80)建立一个TCP套接字连接。

6.2 发送HTTP请求

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,请求报文由请求行请求头部空行请求数据4部分组成。

6.3 服务器接受请求并返回HTTP响应

Web服务器 解析请求鉴权定位请求资源按照HTTP协议进行响应。服务器将资源复本写到TCP套接字,由客户端读取。响应由状态行响应头部空行响应数据4部分组成。

6.4 释放TCP链接

Connection模式close,则服务器主动关闭TCP连接客户端被动关闭连接释放TCP连接;Connection模式keep-alive,则该连接会保持一段时间,在该时间内可以继续接收请求。

6.5 客户端浏览器解析HTML内容

首先解析状态行,查看表明请求是否成功的状态码。然后解析每个响应头响应头告知以下为HTML文档的字符集。客户端读取响应数据HTML,根据HTML语法对其进行格式化,并在浏览器窗口中显示。


7、HTTP/1.0、 HTTP/1.1、HTTP/2.0

7.1 HTTP/1.0、 HTTP/1.1、HTTP/2.0在并发请求上的主要区别
7.1.1 HTTP/1.0

每个TCP连接只能发送一次请求,当服务器响应后就会关闭这个连接,下一次请求需再次建立TCP连接。

7.1.2 HTTP/1.1

默认采用持久连接Connection: keep-alive。取消持久连接Connection: close。增加了管道机制,在同一个TCP连接里允许多个请求同时发送,按照到达服务器的顺序开始处理,当前请求处理完后再处理下一个请求。
缺点:队头阻塞

7.1.3 HTTP/2.0

加了双工模式,服务器也可以同时处理多个请求了,=解决了队头阻塞的问题==。多路复用,没有了次序的概念。加了服务器推送功能

7.2 HTTP/1.1的长连接和HTTP/2.0多路复用的区别
7.2.1 HTTP/1.1

同一时间一个TCP连接只能处理一个请求,采用一问一答的形式,上一个请求响应后才能处理下一个请求。

7.2.2 HTTP/2.0

同域名上的所有通信都在单个连接上完成。单个连接上可以并行交错的进行请求和响应。

7.3 为什么HTTP/1.1不能实现路由的复用

HTTP/2.0是基于二进制帧的协议,HTTP/1.1是基于文本分隔解析的协议。
HTTP/1.1的报文结构中,服务器需要不断的读入字节,直到遇到换行符,处理顺序是串行的。
HTTP/2.0为最小数据单位,每个都会标识自己属于哪个多个帧组成一个流多路复用,其实就是TCP里存在多条

7.4 HTTP和HTTPS的区别

HTTPSHTTP请求的内容进行了加密,比HTTP更安全。

HTTP
TCP
HTTPS
SSL/TSL 加密/解密
7.5 更多

HTTP/1.0、 HTTP/1.1、HTTP/2.0的详细区别参考博文:https://www.cnblogs.com/heluan/p/8620312.html


http的相关学习、整理,若有错误烦请大佬们指出哈
Best regards!

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:45:03  更:2021-08-17 15:46:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 6:20:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计