一、HTTP 超文本传输协议
HTTP是应用层协议,定义了浏览器怎样向服务器请求文档以及服务器怎样把文档传送给浏览器
HTTP是一个基于TCP/IP协议簇来传递数据。
图来自:https://www.imooc.com/article/287873
在浏览器中输入URL并回车后都发生了什么?
通过DNS将域名转成ip地址
浏览器向web服务器 建立tcp连接(三次握手)
浏览器向web服务器发送HTTP的请求报文(请求方法)
收到请求报文解析生成应答报文,回复给浏览器 (应答状态码)
回复完了之后,就关闭tcp连接(四次挥手)
是否断开我们需要区分HTTP版本:
- 在HTTP/1.0版本的时候,客户端与服务器完成一个请求/响应之后,会将之前建立的TCP连接断开,下次请求的时候又要重新建立TCP连接,这也被称为短连接
- HTTP/1.1版本 在客户端与服务器完成一次请求/响应之后,允许不断开TCP连接,这意味着下次请求就直接使用这个TCP连接而不再需要重新握手建立新连接,这也被称为长连接
对于服务器来说建立长连接有优点也有缺点:
- 优点:当网站中有大量静态资源(图片、css、js等)就可以开启长连接,这也几张图片就可以通过一次TCP连接发送。
- 缺点:当客户端请求一次时候不在请求,而服务器却开着长连接资源被占用着,这是严重浪费资源。
二、HTTP请求
三、HTTP应答
四、HTTP 和 HTTPS 协议区别?
这两个协议都是应用层协议。
http:超文本传输协议
https : 安全的超文本传输协议, 在 HTTP 协议基础上加入了 SSL 协议保证安全传输。
HTTP 和 HTTPS 主要应用于 Web 浏览器和网站服务器之间传递数据,HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此 HTTP 协议不适合传输一些敏感信息,比如信用卡号、密码等。
而 HTTPS 为了数据传输的安全,在 HTTP 协议的基础上加入了 SSL 协议,SSL 协议依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
区别:
1) HTTPS 协议需要申请 CA 证书,一般免费的证书很少,需要交费
2) HTTP 是超文本传输协议,信息是明文传输,HTTPS 是具有安全性的 SSL 加密传输协议。
3) HTTP 和 HTTPs 使用的是完全不同的连接方式,用的端口号也不一样(HTTP: 80 HTTPS: 443)。
4)HTTP 协议的连接简单,是无状态的,HTTPS 协议是由 SSL+HTTP 协议构成的可进行加密传输,身份认证的网络协议,比 HTTP 协议安全。
推荐写的不错的博客:HTTP详解