一、常见的HTTP方法有哪些?css
- GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,能够经过URL传参给服务器
- POST:用于传输信息给服务器,主要功能与GET方法相似,但通常推荐使用POST方式。
- PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
- HEAD: 得到报文首部,与GET方法相似,只是不返回报文主体,通常用于验证URI是否有效。
- DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
- OPTIONS:查询相应URI支持的HTTP方法
二、HTTP与HTTPS的区别:html
- HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
- HTTP 是不安全的,而 HTTPS 是安全的
- HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
- 在OSI 网络模型中,HTTP工做于应用层,而HTTPS 的安全传输机制工做在传输层
- HTTP 没法加密,而HTTPS 对传输的数据进行加密
- HTTP无需证书,而HTTPS 须要CA机构wosign的颁发的SSL证书
三、常见的HTTP状态码:算法
- 200:请求被正常处理
- 204:请求被受理但没有资源能够返回
- 206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中经过Content-Range指定范围的资源。
- 301:永久性重定向
- 302:临时重定向
- 303:与302状态码有类似功能,只是它但愿客户端在请求一个URI的时候,能经过GET方法重定向到另外一个URI上
- 304:发送附带条件的请求时,条件不知足时返回,与重定向无关
- 307:临时重定向,与302相似,只是强制要求使用POST方法
- 400:请求报文语法有误,服务器没法识别
- 401:请求须要认证
- 403:请求的对应资源禁止被访问
- 404:服务器没法找到对应资源
- 500:服务器内部错误
- 503:服务器超过最大负荷
四、一次完整的HTTP事务是怎样一个过程?浏览器
1)域名解析缓存
2) 发起TCP的3次握手安全
3) 创建TCP链接后发起http请求服务器
4) 服务器响应http请求,浏览器获得html代码网络
5) 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)负载均衡
6) 浏览器对页面进行渲染呈现给用户异步
五、HTTPS工做原理
- 1、首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;
- 2、客户端若是校验经过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);
- 3、消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就获得了RSA签名;
- 4、发送给服务端,此时只有服务端(RSA私钥)能解密。
- 5、解密获得的随机数,再用AES加密,做为密钥(此时的密钥只有客户端和服务端知道)
六、HTTP优化方案
- TCP复用:TCP链接复用是将多个客户端的HTTP请求复用到一个服务器端TCP链接上,而HTTP复用则是一个客户端的多个HTTP请求经过一个TCP链接进行处理。前者是负载均衡设备的独特功能;然后者是HTTP 1.1协议所支持的新功能,目前被大多数浏览器所支持。
- 内容缓存:将常常用到的内容进行缓存起来,那么客户端就能够直接在内存中获取相应的数据了。
- 压缩:将文本数据进行压缩,减小带宽
- SSL加速(SSL Acceleration):使用SSL协议对HTTP协议进行加密,在通道内加密并加速
- TCP缓冲:经过采用TCP缓冲技术,能够提升服务器端响应时间和处理效率,减小因为通讯链路问题给服务器形成的链接负担。
七、说说304缓存的原理
- 服务器首先产生ETag,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端经过将该记号传回服务器要求服务器验证其(客户端)缓存
- 304是HTTP状态码,服务器用来标识这个文件没修改,不返回内容,浏览器在接收到个状态码后,会使用浏览器已缓存的文件
- 客户端请求一个页面(A)。 服务器返回页面A,并在给A加上一个ETag。 客户端展示该页面,并将页面连同ETag一块儿缓存。 客户再次请求页面A,并将上次请求时服务器返回的ETag一块儿传递给服务器。 服务器检查该ETag,并判断出该页面自上次客户端请求以后还未被修改,直接返回响应304(未修改——Not Modified)和一个空的响应体
八、为何HTTPS安全
- 由于网络请求须要中间有不少的服务器路由器的转发。中间的节点均可能篡改信息,而若是使用HTTPS,密钥在你和终点站才有。https之因此比http安全,是由于他利用ssl/tls协议传输。它包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer传递等。保障了传输过程的安全性
九、关于Http 2.0 你知道多少
-
HTTP/2引入了“服务端推(server push)”的概念,它容许服务端在客户端须要数据以前就主动地将数据发送到客户端缓存中,从而提升性能。
-
HTTP/2提供更多的加密支持
-
HTTP/2使用多路技术,容许多个消息在一个链接上同时交差。
-
它增长了头压缩(header compression),所以即便很是小的请求,其请求和响应的header都只会占用很小比例的带宽
十、一个页面从输入 URL 到页面加载显示完成,这个过程当中都发生了什么
- 01.浏览器查找域名对应的IP地址(DNS 查询:浏览器缓存->系统缓存->路由器缓存->ISP DNS 缓存->根域名服务器)
- 02.浏览器向 Web 服务器发送一个 HTTP 请求(TCP三次握手)
- 03.服务器 301 重定向(从 http://example.com 重定向到 http://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环境的手段
表示层:对数据进行翻译、加密和压缩
会话层:创建、管理和终止会话
传输层:提供端到端的可靠报文传递和错误恢复
网络层:负责数据包从源到宿的传递和网际互连
物理层:经过媒介传输比特,肯定机械及电气规范