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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 2021-10-28 -> 正文阅读

[网络协议]2021-10-28

HTTP详解


前言

关于网络分层,我个人比较喜欢的就是TCP/IP协议,TCP/IP协议更符合大家的认知,今天我们就来研究一下顶层—应用层的一个重要协议HTTP协议,HTTP协议支持万维网应用,是超文本传输协议的缩写。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。这也就意味着设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。目前HTPP有多个版本,目前广泛使用的是HTTP/1.1版本。


一、HTTP原理

HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件,、图片文件, 查询结果等。HTTP协议一般用于B/S架构()。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。比如访问百度:
在这里插入图片描述

二、HTTP报文

1.请求报文

请求报文结构:
请求行:包括请求方法、URL、协议/版本
请求头(Request Header)
空行
请求正文
在这里插入图片描述
首先我们来看一下请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT,其中GET、POST最为常用。当然我建议掌握前面五种。

其次我们要关注的就是请求头,典型的请求头有:

  • User-Agent:产生请求的用户代理信息(浏览器信息): Mozilla/5.0 (Macintosh; Intel Mac OS X10_12_3) AppleWebKit/537.36等;
  • Accept:客户端可识别的内容类型列 :text/html,application/xhtml+xml,application/xml;
  • Accept-Language:客户端可接受的自然语言 - zh-CN,zh;q=0.8,en;q=0.6,id;q=0.4;
  • Accept-Encoding:客户端可接受的编码压缩格式 - gzip, deflate, sdch, br
  • Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机
  • connection:连接方式,有close和keep-alive两种。
  • close:告诉WEB服务器或代理服务器,在完成本次请求的响应后,断开连接
  • keep-alive:告诉WEB服务器或代理服务器。在完成本次请求的响应后,保持连接,以等待后续请求
  • Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie - PSTM=1490844191;BIDUPSID=2145FF54639208435F60E1E165379255;

2.响应报文

响应报文结构:
状态行
响应头
空行
响应正文
在这里插入图片描述
我们重点关注一下状态码

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

然后就是响应头,典型的响应头有:

  • Server:包含处理请求的原始服务器的软件信息;
  • Date:服务器日期;
  • Content-Type:返回的资源类型 (MIME);
  • Connection:连接方式;
  • close:连接已经关闭;
  • keep-alive:连接已保持,在等待本次连接的后续请求;
  • Cache-Control:缓存控制;
  • Expires:设置过期时间;
  • Set-Cookie:设置 Cookie 信息。

三、HTTP VS HTTPS

HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。
HTTPS传输流程:
在这里插入图片描述
HTTPS和HTTP的区别
1.HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
2.HTTP和HTTPS使用连接方式不同,默认端口也不一样,http是80,https是443。

四、HTTP 1.1VS HTTP 2.0

HTTP/1.1 存在的问题:
1.TCP 连接数限制
对于同一个域名,浏览器最多只能同时创建 6~8 个 TCP 连接 (不同浏览器不一样)
2.线头阻塞 (Head Of Line Blocking) 问题
每个 TCP 连接同时只能处理一个请求 - 响应,浏览器按 FIFO 原则处理请求,如果上一个响应没返回,后续请求 - 响应都会受阻。

HTTP2.0是实现了多路复用的。
在这里插入图片描述
正是因为实现了多路复用,我们更推荐使用HTTP2.0。
请求优先级
在每个 HTTP 2.0 的 流 里面有个 优先值 ,这个 优先值 确定着客户端跟服务器处理不同的 流 采取不同的 优先级策略 ,高优先级的应该优先发送,但这不会绝对的。

总结

总而言之,HTTP是目前常用的应用层协议,而且还有封装好的httpservlet可以使用,对于开发而言,还是有很大优势的。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-30 12:49:11  更:2021-10-30 12:49:56 
 
开发: 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年11日历 -2024/11/26 6:53:34-

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