HTTP、HTTP1.0、HTTP1.1、HTTP2.0、HTTPS

一、HTTP

HTTP(超文本传输协议,HyperText Transfer Protocol)是应用层的协议,目前在互联网中应用广泛。

它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的。 HTTP遵循经典的客户端-服务端模型

,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。 HTTP是

无状态协议,意味着服务器不会在两个请求之间保留任何数据(状态)。

二、HTTP1.0 ——构建可扩展性

HTTP原有的应用非常局限,浏览器和服务器迅速扩展使其用途更广:

  • 版本信息现在会随着每个请求发送(HTTP1.0 被追加到GET行)
  • 状态代码行也会在响应开始时发送,允许浏览器本身了解请求的成功或失败,并相应地调整其行为(如以特定方式更新或使用本地缓存)
  • 引入了HTTP头的概念,无论是对于请求还是响应,允许传输元数据,并使协议非常灵活和可扩展。
  • 在新的HTTP头的帮助下,增加了传输除纯文本HTML文件外的其他类型文档的能力。(感谢 Content-Type头)。

同时还开始支持一种被称为keep-alive连接的早期实验性持久连接,下图显示了keep-alive连接的一些性能优点,图中将在串行连接上实现4个HTTP事务的时间线与在一条持久连接上实现同样事务所需要的时间线进行了比较。由于去除了进行连接和关闭连接的开销,所以时间有所缩短。

必须发送一个connection:Keep-Alive请求首部来激活keep-alive连接

三、HTTP1.1 ——标准化的协议

HTTP/1.0的多种不同的实现运用起来有些混乱,HTTP1.1是第一个标准化版本,重点关注的是校正HTTP设计中的结构性缺陷:

  • 连接可以重复使用,节省了多次打开它的时间,以显示嵌入到单个原始文档中的资源。
  • 增加流水线操作,允许在第一个应答被完全发送之前发送第二个请求,以降低通信的延迟。
  • 支持响应分块。
  • 引入额外的缓存控制机制。
  • 引入内容协商,包括语言,编码,或类型,并允许客户端和服务器约定以最适当的内容进行交换。
  • 感谢 Host 头,能够使不同的域名配置在同一个IP地址的服务器。
  • 安全性得到了提高

在http1.1中,client和server都是默认对方支持长链接的, 如果不希望使用长链接,则需要在header中指明connection:close;

四、HTTP2.0——为了更优异的表现

HTTP/2在HTTP/1.1有几处基本的不同:

  • HTTP2是二进制协议而不是文本协议。不再可读和无障碍的手动创建,改善的优化技术现在可被实施。
  • 这是一个复用协议。并行的请求能在同一个链接中处理,移除了HTTP/1.x中顺序和阻塞的约束。
  • 压缩了headers。因为headers在一系列请求中常常是相似的,其移除了重复和传输重复数据的成本。
  • 其允许服务器在客户端缓存中填充数据,通过一个叫服务器推送的机制来提前请求。

五、HTTPS

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure
Sockets
Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词。

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。

#s3gt_translate_tooltip_mini { display: none !important }

原文地址:https://www.cnblogs.com/zytrue/p/8568181.html

时间: 2024-10-29 19:10:45

HTTP、HTTP1.0、HTTP1.1、HTTP2.0、HTTPS的相关文章

http1.0、http1.1和http2.0的区别

http1.1和http1.0的区别 http1.1默认持久连接,即它默认就支持长连接,而http1.0需要使用keep-alive参数来告知服务器端要建立一个长连接.http是基于TCP/IP协议的,每次建立都需要经过三次握手,如果每次通讯都需要建立一个新连接的话那会对性能造成影响.因此可以用长连接来发送多个请求. 管线化,客户端可以同时发送多个HTTP请求,而不用一个个等待响应. 另外还支持传送内容的一部分,当客户端已经有了一部分资源后只需要跟服务器端请求另一部分资源即可.这是支持文件断点续

HTTP1.0和HTTP1.1以及HTTP2.0的区别

HTTP1.0和HTTP1.1区别 版本 HTTP1.0 HTTP1.1 连接方面 使用 非持久连接,即在非持久连接下,一个tcp连接只传输一个web对象.每次请求和响应都需要建立一个单独的连接,每次连接只是传输一个对象,严重影响客户机和服务器的性能 默认使用持久连接(然而,HTTP/1.1协议的客户机和服务器可以配置成使用非持久连接)在持久连接下,不必为每个Web对象的传送建立一个新的连接,一个连接中可以传输多个对象.在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗

HTTP2.0那些事

1. HTTP2.0的前世 http2.0的前世是http1.0和http1.1这两兄弟.虽然之前仅仅只有两个版本,但这两个版本所包含的协议规范之庞大,足以让任何一个有经验的工程师为之头疼.http1.0诞生于1996年,协议文档足足60页.之后第三年,http1.1也随之出生,协议文档膨胀到了176页.不过和我们手机端app升级不同的是,网络协议新版本并不会马上取代旧版本.实际上,1.0和1.1在之后很长的一段时间内一直并存,这是由于网络基础设施更新缓慢所决定的.今天的http2.0也是一样,

HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事

转载自AlloyTeam:http://www.alloyteam.com/2016/07/httphttp2-0spdyhttps-reading-this-is-enough/ 1. web始祖HTTP 全称:超文本传输协议(HyperText Transfer Protocol) 伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机网络中的应用层,HTTP是建立在TCP协议之上,所以HTTP协议的瓶颈及其优化技巧都是基于TCP协议本身的特性,例如tcp建立连接的3次握手和断

ssl证书及http2.0

需求:1.用于https证书上线测试,办公环境需要通过https测试网站,外部环境全部走http访问.2.使用web端进行配置架构:nginx +多个tomcat upstream test { server 172.16.9.203:8080 weight=2; server 172.16.9.204:8080 weight=2; server 172.16.9.205:8080 weight=3; } server { listen 80; server_name www.test.com;

TCP/IP、HTTP、HTTPS、HTTP2.0

TCP/IP.HTTP.HTTPS.HTTP2.0 HTTP,全称超文本传输协议(HTTP,HyperText Transfer Protocol),是一个客户端和服务器端请求和应答的标准(TCP),互联网上应用最为广泛的一种网络协议.客户端是终端用户,服务器端是网站.通过使用Web浏览器.网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求. HTTPS,即加密后的HTTP.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非

ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0

ASP.NET 5.0 将改名为 ASP.NET Core 1.0 ASP.NET MVC 6  将改名为 ASP.NET MVC Core 1.0 Entity Framework 7.0    将改名为 Entity Framework Core 1.0 .NET新的跨平台版本将命名为.NET Core 1.0 新版本的ASP.NET和Entity Framework有一个严重的问题,就是它们同以前的版本不兼容.这不只是行为或API稍有差异的事,而基本上是进行了完全的重写,去掉了大量的功能.

传说中的MATLAB1.0(1984年DOS界面182K、运行良好)附下载

传说中的MATLAB1.0(1984年DOS界面182K.运行良好)附下载 你见过 MATLAB 最早的版本吗?下载一份 MATLAB 1.0,(只有182K, 只有20来个函数) 体会一下吧.MATLAB早期表示矩阵是用 <> 而不是 [].而今日的matlab已经发展成一个巨人了,但是思想和基因却是一路传承的. matlab1.0.rar ----------------------------------------------------------------------------

exit(0)与exit(1)、return区别

exit(0)与exit(1).return区别 exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在主函数中,则会退出函数并返回一值. 详细说: 1. return返回函数值,是关键字:  exit 是一个函数. 2. return是语言级别的,它表示了调用堆栈的返回:而exit是系统调用级别的,它表示了一个进程的结束.  3. return是函数的退出(返回):exit是进程的退出. 4. return是C语言提供的,exit是