网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者”规则“,有了这种”约定“,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。
HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
HTTP
HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。
HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。
HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
GET和POST的区别是什么
区别一:幂等性
区别二:请求参数
区别三:TCP packet
错误理解
GET 安全性低,POST 安全性高? GET 内容可以在地址栏看到参数,POST 内容可以在控制台查看。从传输角度来说,都是不安全的,因为 HTTP 在网络上是明文传输的,只要在网络节点上抓包,就能完整地获取数据报文。想要安全传输,只能用加密协议 HTTPS。 GET 传送的数据量较小,POST 传送的数据量较大? HTTP 协议没有 Body 和 URL 的长度限制,对 URL 限制的大多是浏览器和服务器的原因。服务器处理长 URL 会消耗较多资源,出于性能和安全考虑会限制 URL 长度。
HTTP 缓存有哪些方案
缓存(强缓存)
HTTP 1.0 时可用 Expires 字段为服务端返回的到期时间。即下一次请求时,请求时间小于服务端返回的到期时间,直接使用缓存数据。但问题是,到期时间是由服务端生成的,但是客户端时间可能跟服务端时间有误差,这就会导致缓存命中的误差。 所以 HTTP 1.1 的版本,使用 Cache-Control 替代。
Cache-Control 是最重要的规则。常见的取值有 no-cache、no-store、max-age、private、public,默认为private。
命中强制缓存的情况下,返回的HTTP状态码为200(from memory cache)。
HTTP 1.1
HTTP 1.0
内容协商(弱缓存)
协商缓存,也称为对比缓存。协商缓存机制下,浏览器需要向服务器去询问缓存的相关信息,进而判断是重新发起请求、下载完整的响应,还是从本地获取缓存的资源。
如果服务端提示缓存资源未改动(Not Modified),资源会被重定向到浏览器缓存,这种情况下网络请求对应的状态码是 304 Not Modified。
HTTP 1.1
HTTP 1.0
参考http缓存详解
HTTP 和 HTTPS 的区别
网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者”规则“,有了这种”约定“,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。 HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
HTTP
HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。 HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。 HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
HTTPS
HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。 HTTPS 默认工作在 TCP 协议443端口。
区别
三次握手和四次挥手是什么
建立 TCP 连接时 server 与 client 会经历三次握手
浏览器向服务器发送 TCP 数据:SYN(seq=x) 第一次握手:第一次握手是客户端发送同步报文到服务端,这个时候客户端是知道自己具备发送数据的能力的,但是不知道服务端是否有接收和发送数据的能力;
服务器向浏览器发送 TCP 数据:ACK(seq=x+1) SYN(y) 第二次握手:当服务端接收到同步报文后,回复确认同步报文,此时服务端是知道客户端具有发送报文的能力,并且知道自己具有接收和发送数据的能力,但是并不知道客户端是否有接收数据的能力;
浏览器向服务器发送 TCP 数据:ACK(seq=y+1) 第三次握手:当客户端收到服务端的确认报文后,知道服务端具备接收和发送数据的能力,但是此时服务端并不知道自己具有接收的能力,所以还需要发送一个确认报文,告知服务端自己是具有接收能力的。
关闭 TCP 连接时 server 与 client 会经历四次挥手
浏览器向服务器发送 TCP 数据:FIN(seq=x) 第一次挥手客户端发起关闭连接的请求给服务端;
服务器向浏览器发送 TCP 数据:ACK(seq=x+1) 第二次挥手:服务端收到关闭请求的时候可能这个时候数据还没发送完,所以服务端会先回复一个确认报文,表示自己知道客户端想要关闭连接了,但是因为数据还没传输完,所以还需要等待;
服务器向浏览器发送 TCP 数据:FIN(seq=y) 第三次挥手:当数据传输完了,服务端会主动发送一个 FIN 报文,告诉客户端,表示数据已经发送完了,服务端这边准备关闭连接了。
浏览器向服务器发送 TCP 数据:ACK(seq=y+1) 第四次挥手:当客户端收到服务端的 FIN 报文过后,会回复一个 ACK 报文,告诉服务端自己知道了,再等待一会就关闭连接。
浏览器同源策略和跨域
同源是两个 URL 的协议、域名和端口完全相同相同。 只要在浏览器里打开页面,就默认遵守同源策略。postman 等请求工具则不受同源策略限制。 优点:保证用户信息的安全,防止恶意的网站窃取数据。 缺点:当前端需要访问另一个域名的后端接口时,浏览器会阻止其获取响应。此时就需要跨域。
跨域方法
JSONP
CORS
Cookie、Session、LocalStorage、SessionStorage 的区别
Cookie 对比 LocalStorage
LocalStorage 对比 SessionStorage
Cookie 对比 Session
HTTP 1 和 HTTP 2 的区别