一 你知道的 HTTP 请求方式有几种?
- GET
用于使用给定的URI从给定服务器中检索信息,即从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不应对数据产生其他影响。
在GET请求的URL中发送查询字符串(名称/值对)
注:因GET请求的不安全性,数据会暴露在url中,在处理敏感数据时,绝不可以使用GET请求。
- HEAD
与GET方法相同,但没有响应体,仅传输状态行和标题部分。这对于恢复相应头部编写的元数据非常有用,而无需传输整个内容。作用是确定URL的有效性和资源更新的时间
- POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
- PUT
用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容。
它会将包含的元素放在所提供的URI下,如果URI指示的是当前资源,则会被改变。如果URI未指示当前资源,则服务器可以使用该URI创建资源。
-
DELETE 请求服务器删除指定的页面。
-
CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
用来建立到给定URI标识的服务器的隧道;它通过简单的TCP/IP隧道更改请求连接,通常实使用解码的HTTP代理来进行SSL编码的通信(HTTPS)。
-
OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法,允许客户端查看、测试服务器性能
-
TRACE
回显服务器收到的请求,主要用于测试或诊断。
- PATCH
实体中包含一个表,表中说明与该 URI 所表示的原内容的区别。
- MOVE
请求服务器将指定的页面移至另一个网络地址。
- COPY
请求服务器将指定的页面拷贝至另一个网络地址。
- LINK
请求服务器建立链接关系。
-
UNLINK 断开链接关系。
-
WRAPPED 允许客户端发送经过封装的请求。
-
LOCK
允许用户锁定资源,比如可以再编辑某个资源时将其锁定,以防别人同时对其进行编辑。
- MKCOL
允许用户创建资源
- Extension-mothed
在不改动协议的前提下,可增加另外的方法。
二 常见 HTTP 状态码都有哪些?
100 => 正在初始化(一般是看不到的)
101 => 正在切换协议(websocket 浏览器提供的)
200 或者以 2 开头的两位数 => 都是代表响应主体的内容已经成功返回了
202 => 表示接受
301 => 永久重定向/永久转移
302 => 临时重定向/临时转移(一般用来做服务器负载均衡)
304 => 本次获取的内容是读取缓存中的数据,会每次去服务器校验
400 => 参数出现错误(客户端传递给服务器端的参数出现错误)
400 => 参数出现错误(客户端传递给服务器端的参数出现错误)
401 => 未认证,没有登录网站
403 => 禁止访问,没有权限
404 => 客户端访问的地址不存在
500 => 未知的服务器错误
503 => 服务器超负荷(假设一台服务器只能承受 10000 人,当第10001 人访问的时候,如果服务器没有做负载均衡,那么这个人的网络状态码就是 503)
三 HTTP 与 HTTPS 的区别
1、HTTPS 协议需要到 CA(Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前网易官网是 HTTP,而网易邮箱是 HTTPS 。)
2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议
3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443
4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
四 描述一下 HTTP 的请求过程与原理
HTTP 请求的过程
域名解析 --> 发起 TCP 的 3 次握手 --> 建立 TCP 连接后发起 HTTP 请求 -->服务器响应 HTTP 请求,浏览器得到 html 代码 -->浏览器解析 html 代码,并请求 html 代码中的资源(如 js、css、图片等) --> 浏览器对页面进行渲染呈现给用户
请求原理
HTTP 协议是应用层的一种协议,是一种 C/S 架构服务,基于 TCP/IP 协议来通信,监听在TCP 的 80 端口上,HTTP 协议实现的是客户端可以向服务端获得 web 资源
五 HTTPS 有几次握手和挥手?HTTPS 的原理什么是
HTTPS 是 3 次握手和 4 次挥手,和 HTTP 是一样的。
HTTPS 的原理
HTTPS 在传输数据前需要客户端(浏览器)与服务器(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息.TLS/SSL 协议是一套加密传输协议,使用了非对称加密,对称加密,以及 HASH 算法
HTTPS 为什么安全
因为网络请求需要中间有很多的服务器路由器的转发。中间的节点都可能篡改信息,而如果使用 HTTPS,密钥在你和终点站才有。HTTPS 之所以比 HTTP 安全,是因为他利用 ssl/tls协议传输。它包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer 传递等。保障了传输过程的安全性
六 HTTP2 / HTTP1 之间的区别是什么
区别
1、HTTP2 采用二进制格式而非文本格式,比起文本格式,二进制格式解析起来更加高效,并且错误少
2、HTTP2 是完全的多路复用,非有序并阻塞的----只需要一个连接即可实现并行,多路复用的意思是它能同时处理多个消息的请求和响应,HTTP1 是一个连接一次只能提交一个请求的效率比较高,多了就会变慢
3、使用报头压缩,HTTP2 降低了开销,HTTP1 的消息头很大冗余,HTTP2 是将消息头中的不同的部分分别用不用的索引进行表示,且会用哈夫曼编码压缩字符串,最后封装成 frame
4、HTTP2 让服务器可以将响应主动”推送”到客户端缓存中,HTTP2 中服务器会主动将资源推送给客户端,例如把 js 和 css 文件主动推送给客户端而不用客户端解析 HTML 后请求再响应
七 HTTP优化方案
TCP复用:TCP连接复用是将多个客户端的HTTP请求复用到一个服务器端TCP连接上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP连接进行处理。前者是负载均衡设备的独特功能;而后者是HTTP 1.1协议所支持的新功能,目前被大多数浏览器所支持。
内容缓存:将经常用到的内容进行缓存起来,那么客户端就可以直接在内存中获取相应的数据了。
压缩:将文本数据进行压缩,减少带宽
SSL加速(SSL Acceleration):使用SSL协议对HTTP协议进行加密,在通道内加密并加速 TCP缓冲:通过采用TCP缓冲技术,可以提高服务器端响应时间和处理效率,减少由于通信链路问题给服务器造成的连接负担。
八 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么
01.浏览器查找域名对应的IP地址(DNS 查询:浏览器缓存->系统缓存->路由器缓存->ISP DNS 缓存->根域名服务器)
02.浏览器向 Web 服务器发送一个 HTTP 请求(TCP三次握手)
03.服务器 301 重定向(比如:从 example.com 重定向到 www.example.com)
04.浏览器跟踪重定向地址,请求另一个带 www 的网址
05.服务器处理请求(通过路由读取资源)
06.服务器返回一个 HTTP 响应(报头中把 Content-type 设置为 ‘text/html’)
07.浏览器进 DOM 树构建
08.浏览器发送请求获取嵌在 HTML 中的资源(如图片、音频、视频、CSS、JS等)
09.浏览器显示完成页面
10.浏览器发送异步请求
九 TCP和UDP的区别
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它与对方建立连接,而是直接就把数据包发送过去! UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境
十 说说网络分层里七层模型是哪七层
物理层:通过媒介传输比特,确定机械及电气规范
数据链路层:将比特组装成帧和点到点的传递
网络层:负责数据包从源到宿的传递和网际互连
传输层:提供端到端的可靠报文传递和错误恢复
会话层:建立、管理和终止会话
表示层:对数据进行翻译、加密和压缩
应用层:允许访问OSI环境的手段