文章目录
- 一、HTTP协议
-
- [1. GET和POST的请求的区别](#1. GET和POST的请求的区别)
- [2. POST和PUT请求的区别](#2. POST和PUT请求的区别)
- [3. 常见的HTTP请求头和响应头](#3. 常见的HTTP请求头和响应头)
- [4. HTTP状态码304](#4. HTTP状态码304)
- [5. HTTP和HTTPS协议的区别](#5. HTTP和HTTPS协议的区别)
- [6. 当在浏览器中输入 Google.com 并且按下回车之后发生了什么?](#6. 当在浏览器中输入 Google.com 并且按下回车之后发生了什么?)
- [7. HTTP协议的优点和缺点](#7. HTTP协议的优点和缺点)
- [8. 与缓存相关的HTTP请求头有哪些](#8. 与缓存相关的HTTP请求头有哪些)
- 二、HTTPS协议
-
- [1. TLS/SSL的工作原理](#1. TLS/SSL的工作原理)
- [2. HTTPS通信(握手)过程](#2. HTTPS通信(握手)过程)
- 三、HTTP状态码
- 四、网络模型
一、HTTP协议
1. GET和POST的请求的区别
- 发送的报文格式:Get 请求的报文中实体部分为空,Post 请求的报文中实体部分一般为向服务器发送的数据。
- 安全性:Get 请求可以将请求的参数放入 url 中向服务器发送,这样的做法相对于 Post 请求来说是不太安全的,因为请求的 url 会被保留在历史记录中。
- 请求长度:浏览器由于对 url 长度的限制,所以会影响 get 请求发送数据时的长度。这个限制是浏览器规定的
- 是否缓存:因为两者应用场景不同,浏览器一般会对 Get 请求缓存,但很少对 Post 请求缓存。
2. POST和PUT请求的区别
- PUT请求是向服务器端发送数据,从而修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。(可以理解为是更新数据)
- POST请求是向服务器端发送数据,该请求会改变数据的种类等资源,它会创建新的内容。(可以理解为是创建数据)
3. 常见的HTTP请求头和响应头
常见的请求头:
- Accept:浏览器能够处理的内容类型
- Accept-Charset:浏览器能够显示的字符集
- Cookie:当前页面设置的任何Cookie
- Host:发出请求的页面所在的域
- Referer:发出请求的页面的URL
常见的响应头:
- Cache-Control:控制HTTP缓存
- content-type:表示后面的文档属于什么MIME类型
常见的 Content-Type 属性值有以下四种:
(1)application/x-www-form-urlencoded:浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。种方式提交的数据放在 body 里面,数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL转码。
(2)multipart/form-data:该种方式也是一个常见的 POST 提交方式,通常表单上传文件时使用该种方式。
(3)application/json:服务器消息主体是序列化后的 JSON 字符串。
(4)text/xml:该种方式主要用来提交 XML 格式的数据。
4. HTTP状态码304
服务器为了提高网站访问速度,对之前访问的部分页面指定缓存机制,当客户端在此对这些页面进行请求,服务器会根据缓存内容判断页面与之前是否相同,若相同便直接返回304,此时客户端调用缓存内容,不必进行二次下载。
304状态码出现过多会造成以下问题:
- 网站快照停止;
- 收录减少;
- 权重下降
5. HTTP和HTTPS协议的区别
- HTTPS协议需要CA证书,费用较高;而HTTP协议不需要;
- HTTP协议是超文本传输协议,信息是明文传输的,HTTPS则是具有安全性的SSL加密传输协议;
- 使用不同的连接方式,端口也不同,HTTP协议端口是80,HTTPS协议端口是443;
- HTTP协议连接很简单,是无状态的;HTTPS协议是有SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP更加安全。
6. 当在浏览器中输入 Google.com 并且按下回车之后发生了什么?
1、解析URL:
2、缓存判断
3、DNS解析:要获取的是输入的 URL 中的域名的 IP 地址,首先会判断本地是否有该域名的 IP 地址的缓存,如果有则使用,如果没有则向本地 DNS 服务器发起请求。本地 DNS 服务器也会先检查是否存在缓存,如果没有就会先向根域名服务器发起请求。
4、获取MAC地址:数据传输还需要知道目的主机 MAC 地址
5、TCP三次握手:首先客户端向服务器发送一个 SYN 连接请求报文段和一个随机序号,服务端接收到请求后向客户端发送一个 SYN ACK报文段,确认连接请求,并且也向客户端发送一个随机序号。客户端接收服务器的确认应答后,进入连接建立的状态,同时向服务器也发送一个ACK 确认报文段,服务器端接收到确认后,也进入连接建立状态,此时双方的连接就建立起来了。
6、HTTPS握手
7、返回数据
8、页面渲染
9、TCP四次挥手
7. HTTP协议的优点和缺点
HTTP协议具有以下优点:
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。
- 无连接:无连接就是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。
- 无状态:HTTP协议是无状态协议,这里的状态是指通信过程的上下文信息。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能会导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就比较快。
- 灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。
HTTP协议具有以下缺点:
明文传输:协议中的报文使用的是文本形式,这就直接暴露给外界,不安全。
8. 与缓存相关的HTTP请求头有哪些
强缓存:
- Expires
- Cache-Control
协商缓存:
- Etag、If-None-Match
- Last-Modified、If-Modified-Since
二、HTTPS协议
1. TLS/SSL的工作原理
TLS/SSL全称安全传输层协议(Transport Layer Security), 功能实现主要依赖三类基本算法:散列函数hash、对称加密、非对称加密。这三类算法的作用如下:
- 基于散列函数验证信息的完整性
- 对称加密算法采用协商的秘钥对数据加密
- 非对称加密实现身份认证和秘钥协商
2. HTTPS通信(握手)过程
- 客户端向服务器发起请求,请求中包含使用的协议版本号、生成的一个随机数、以及客户端支持的加密方法。
- 服务器端接收到请求后,确认双方使用的加密方法、并给出服务器的证书、以及一个服务器生成的随机数。
- 客户端确认服务器证书有效后,生成一个新的随机数,并使用数字证书中的公钥,加密这个随机数,然后发给服 务器。并且还会提供一个前面所有内容的hash 的值,用来供服务器检验。
- 服务器使用自己的私钥,来解密客户端发送过来的随机数。并提供前面所有内容的 hash 值来供客户端检验。
- 客户端和服务器端根据约定的加密方法使用前面的三个随机数,生成对话秘钥,以后的对话过程都使用这个秘钥来加密信息。
三、HTTP状态码
- 301: 永久重定向,当我们想换个域名,旧的域名不再使用时,用户访问旧域名时用301就重定向到新的域名。其实也是告诉搜索引擎收录的域名需要对新的域名进行收录。
- 302:未登陆的用户访问用户中心重定向到登录页面。
- 403: 该状态码表明请求资源的访问被服务器拒绝了,服务器端没有必要给出详细理由,但是可以在响应报文实体的主体中进行说明。
四、网络模型
OSI七层模型:
- 应用层:常见应用层的网络服务协议有:HTTP,HTTPS,FTP,SMTP等
- 表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
- 会话层:会话层就是负责建立、管理和终止表示层实体之间的通信会话。
- 传输层:传输层建立了主机端到端的链接,TCP UDP就是在这一层
- 网络层
- 数据链路层
- 物理层