网络协议总结

wuchangjian2021-11-03 22:32:04编程学习

网络协议相关知识

    • 1.登录校验
    • 2.HTTP和HTTPS的区别
    • 3.三次握手
    • 4.四次挥手
    • 5.GET和POST区别
    • 6.常见HTTP错误码
    • 7.浏览器中通过域名请求URL,直到数据返回,整个过程?

1.登录校验

基于token登录

  1. 用户输入登录凭据(一般为账号密码)。
  2. 服务器验证凭据是否正确,返回一个经过签名的token。
  3. 客户端负责存储token,存储位置为local Storage或Cookie,服务端不存储。
  4. 后续客户端对服务器的请求需带上该token。
  5. 服务器对JWT解码:若token有效,则处理请求。
  6. 用户登出时,客户端销毁token。

2.HTTP和HTTPS的区别

  1. 端口:HTTP端口为80,HTTPS端口为443.
  2. 资源消耗:与HTTP相比,HTTPS由于加解密处理,消耗更多的CPU和资源。
  3. 开销:HTTPS通讯需要证书,证书需要向认证机构购买。

3.三次握手

在这里插入图片描述

  1. 首先建立链接前需要 Server 端先监听端口,因此 Server 端建立链接前的初始状态就是 LISTEN 状态,这时 Client 端准备建立链接,先发送一个 SYN 同步包,发送完同步包后,Client 端的链接状态变成了 SYN_SENT 状态。Server 端收到 SYN 后,同意建立链接,会向 Client 端回复一个 ACK。
  2. 由于 TCP 是双工传输,Server 端也会同时向 Client 端发送一个 SYN,申请 Server 向 Client 方向建立链接。发送完 ACK 和 SYN 后,Server 端的链接状态就变成了 SYN_RCVD。
  3. Client 收到 Server 的 ACK 后,Client 端的链接状态就变成了 ESTABLISHED 状态,同时,Client 向 Server 端发送 ACK,回复 Server 端的 SYN 请求。
  4. Server 端收到 Client 端的 ACK 后,Server 端的链接状态也就变成了的 ESTABLISHED 状态,此时建连完成,双方随时可以进行数据传输。

4.四次挥手

在这里插入图片描述

  1. TCP 链接的关闭,通信双方都可以先发起,我们暂且把先发起的一方看作 Client,从图中看出,通信中 Client 和 Server 两端的链接都是 ESTABLISHED 状态,然后 Client 先主动发起了关闭链接请求,Client 向 Server 发送了一个 FIN 包,表示 Client 端已经没有数据要发送了,然后 Client 进入了 FIN_WAIT_1 状态。
  2. Server 端收到 FIN 后,返回 ACK,然后进入 CLOSE_WAIT 状态。此时 Server 属于半关闭状态,因为此时 Client 向 Server 方向已经不会发送数据了,可是 Server 向 Client 端可能还有数据要发送。
  3. 当 Server 端数据发送完毕后,Server 端会向 Client 端发送 FIN,表示 Server 端也没有数据要发送了,此时 Server 进入 LAST_ACK 状态,就等待 Client 的应答就可以关闭链接了。
  4. Client 端收到 Server 端的 FIN 后,回复 ACK,然后进入 TIME_WAIT 状态。TIME_WAIT 状态下需要等待 2 倍的最大报文段生存时间,来保证链接的可靠关闭,之后才会进入 CLOSED 关闭状态。而 Server 端收到 ACK 后直接就进入 CLOSED 状态。

5.GET和POST区别

  1. 功能:GET一般用来从服务器获取资源,POST方式一般用来更新服务器上的资源。
  2. 请求参数:GET请求数据会附在URL上,即将数据放在请求头中,但是URL有长度限制,例如浏览器限制和服务器限制。POST方式会把参数放到请求体中。
  3. 安全性:POST请求相对GET请求安全性高。

6.常见HTTP错误码

  1. 1xx:临时响应。
  2. 2xx:请求成功,例如200,成功。
  3. 3xx:重定向。
  4. 4xx:请求错误,例如401,未授权;403,服务器拒绝请求;404,服务器找不到请求地址。
  5. 5xx:服务器错误。

7.浏览器中通过域名请求URL,直到数据返回,整个过程?

  1. 获取服务器IP地址
    • 浏览器缓存
    • 系统缓存
    • 本地host
    • 路由器缓存
    • DNS缓存
  2. 建立连接
    • 三次挥手
  3. 发送具体请求报文
    • 路由器转发
    • 服务器防火墙
  4. 服务器处理请求
    • Nginx处理
    • 网关处理
    • 服务处理
    • 数据库处理
  5. 服务器返回数据
  6. 页面渲染

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。