快速了解HTTP协议与HTTPS

一、HTTP协议的起源与发展

HTTP(超文本传输协议)是Hyper Text Transfer Protocol的缩写,是万维网的数据通信的基础,也是互联网应用最为广泛的一种网络传输协议。HTTP是一种用于分布式、协作式和超媒体信息系统的应用层协议,最初设计HTTP的目的是为了提供一种发布和接收HTML页面的方法。HTTP是一种无状态的协议。
HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起,标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,目前HTTP协议中最广泛使用的版本是HTTP 1.1。
最早的版本是HTTP/0.9,这时的HTTP协议不涉及数据包的传输,没有规定客户端和服务器之间通信格式,只能GET请求。这时的HTTP协议没有作为正式的标准。
在1996年,HTTP/1.0问世,但是传输的格式依然没有限制,但是增加了PUT、PATCH、HEAD、OPTIONS、DELETE命令。HTTP/1.0正式作为标准。
在1997年,HTTP更新到1.1版本,这时的HTTP协议已经支持持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码。该版本在2015年前广泛使用。
在2015年,HTTP/2.0诞生,新的HTTP协议增加了多路复用、服务器推送、头信息压缩、二进制协议等功能,逐渐覆盖市场。

二、HTTP报文格式

1.请求格式
请求报文格式如下:
请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
请求行以方法字段开始,后面分别是 URL 字段和 HTTP 协议版本字段,并以 CRLF 结尾。SP 是分隔符。除了在最后的 CRLF 序列中 CF 和 LF 是必需的之外,其他都可以不要。
快速了解HTTP协议与HTTPS
2.应答格式
应答报文格式如下:
状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体
状态码元由3位数字组成,表示请求是否被理解或被满足。原因分析是对原文的状态码作简短的描述,状态码用来支持自动操作,而原因分析用来供用户使用。客户机无需用来检查或显示语法。
快速了解HTTP协议与HTTPS
3.请求方法

快速了解HTTP协议与HTTPS
4.状态码
1xx 指示信息——表示请求已接收,继续处理
2xx 成功——表示请求已被成功接收,理解,接收
3xx 重定向——要完成请求必须进行更进一步的操作
4xx 客户端错误——请求有语法错误或请求无法实现
5xx 服务端错误——服务器未能实现合法的请求
常见状态码:
200 OK 正常返回信息
400 Bad Request 客户端请求有语法错误,不能 被服务器所理解
401 Unauthorized 请求未经授权,这个状态代码必须和WWW–Authenticate报头域一起使用
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在,eg,输入了错误的URL
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

三、工作原理

通常客户端在访问一个网站时,需要从中分解出协议名、主机名、端口、对象路径等部分。接下来,把以上部分结合本机自己的信息,封装成一个HTTP请求数据包。然后再封装成tcp包,进行tcp三次握手连接,握手过程如图。
快速了解HTTP协议与HTTPS
连接成功后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息等内容。
接着,服务器进行响应,将响应状态码,协议版本号,成功或失败的信息,实体信息和内容发送到客户端。(实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据)
最后,服务器关闭tcp连接。

四、HTTP与HTTPS

1.HTTPS是什么?
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯。简单点讲HTTPS就是HTTP的加密版。
2.HTTP与HTTPS的区别
1.https协议需要到ca申请证书,一般免费证书很少,需要交费。http是超文本传输协议,信息是明文传输。
2.https 则是具有安全性的ssl加密传输协议http和https。
3.使用的是完全不同的连接方式用的端口也不一样,http是80,https是443。
4.https比http消耗资源,缓存时间比较长。

以上就是我对http和https的理解,有什么没有提到的或不对的,欢迎大家在评论区指导!