1.登录校验
基于token登录
- 用户输入登录凭据(一般为账号密码)。
- 服务器验证凭据是否正确,返回一个经过签名的token。
- 客户端负责存储token,存储位置为local Storage或Cookie,服务端不存储。
- 后续客户端对服务器的请求需带上该token。
- 服务器对JWT解码:若token有效,则处理请求。
- 用户登出时,客户端销毁token。
2.HTTP和HTTPS的区别
- 端口:HTTP端口为80,HTTPS端口为443.
- 资源消耗:与HTTP相比,HTTPS由于加解密处理,消耗更多的CPU和资源。
- 开销:HTTPS通讯需要证书,证书需要向认证机构购买。
3.三次握手
- 首先建立链接前需要 Server 端先监听端口,因此 Server 端建立链接前的初始状态就是 LISTEN 状态,这时 Client 端准备建立链接,先发送一个 SYN 同步包,发送完同步包后,Client 端的链接状态变成了 SYN_SENT 状态。Server 端收到 SYN 后,同意建立链接,会向 Client 端回复一个 ACK。
- 由于 TCP 是双工传输,Server 端也会同时向 Client 端发送一个 SYN,申请 Server 向 Client 方向建立链接。发送完 ACK 和 SYN 后,Server 端的链接状态就变成了 SYN_RCVD。
- Client 收到 Server 的 ACK 后,Client 端的链接状态就变成了 ESTABLISHED 状态,同时,Client 向 Server 端发送 ACK,回复 Server 端的 SYN 请求。
- Server 端收到 Client 端的 ACK 后,Server 端的链接状态也就变成了的 ESTABLISHED 状态,此时建连完成,双方随时可以进行数据传输。
4.四次挥手
- TCP 链接的关闭,通信双方都可以先发起,我们暂且把先发起的一方看作 Client,从图中看出,通信中 Client 和 Server 两端的链接都是 ESTABLISHED 状态,然后 Client 先主动发起了关闭链接请求,Client 向 Server 发送了一个 FIN 包,表示 Client 端已经没有数据要发送了,然后 Client 进入了 FIN_WAIT_1 状态。
- Server 端收到 FIN 后,返回 ACK,然后进入 CLOSE_WAIT 状态。此时 Server 属于半关闭状态,因为此时 Client 向 Server 方向已经不会发送数据了,可是 Server 向 Client 端可能还有数据要发送。
- 当 Server 端数据发送完毕后,Server 端会向 Client 端发送 FIN,表示 Server 端也没有数据要发送了,此时 Server 进入 LAST_ACK 状态,就等待 Client 的应答就可以关闭链接了。
- Client 端收到 Server 端的 FIN 后,回复 ACK,然后进入 TIME_WAIT 状态。TIME_WAIT 状态下需要等待 2 倍的最大报文段生存时间,来保证链接的可靠关闭,之后才会进入 CLOSED 关闭状态。而 Server 端收到 ACK 后直接就进入 CLOSED 状态。
5.GET和POST区别
- 功能:GET一般用来从服务器获取资源,POST方式一般用来更新服务器上的资源。
- 请求参数:GET请求数据会附在URL上,即将数据放在请求头中,但是URL有长度限制,例如浏览器限制和服务器限制。POST方式会把参数放到请求体中。
- 安全性:POST请求相对GET请求安全性高。
6.常见HTTP错误码
- 1xx:临时响应。
- 2xx:请求成功,例如200,成功。
- 3xx:重定向。
- 4xx:请求错误,例如401,未授权;403,服务器拒绝请求;404,服务器找不到请求地址。
- 5xx:服务器错误。
7.浏览器中通过域名请求URL,直到数据返回,整个过程?
- 获取服务器IP地址
- 浏览器缓存
- 系统缓存
- 本地host
- 路由器缓存
- DNS缓存
- 建立连接
- 三次挥手
- 发送具体请求报文
- 路由器转发
- 服务器防火墙
- 服务器处理请求
- Nginx处理
- 网关处理
- 服务处理
- 数据库处理
- 服务器返回数据
- 页面渲染