计算机网络笔记

102 阅读3分钟

GET 与 POST的区别

  1. GET 方法传递的数据最多只能是 2KB 的数据。而 POST 方法传递的数据没有大小限制。

  2. GET 是通过 URL 来传递参数,而 POST 是通过 HTTP 请求的消息体传递参数。

  3. GET 请求会被浏览器缓存起来,可以通过浏览器的历史记录来获取,而 POST 请求不会被缓存。

  4. GET 方式的请求数据会明文显示在 URL 中,而 POST 方式的请求数据在传输过程中是加密的。

  5. GET 方式的请求只会产生一个 TCP 套接字连接,而 POST 方式的请求会产生两个 TCP 套接字连接,分别用于发送请求和接收响应。

  6. GET 请求的操作对于服务器来说是“安全”的,意味着这个请求是无害的,只是获取一些信息。而 POST 对服务器来说不一定是安全的,因为它可能会改变服务器上的数据。

HTTP缓存技术

分协商缓存与强制缓存

1.强制缓存

以nest为例子

@Header('Cache-Control', 'max-age=3600') // 设置强制缓存,时间为 1 小时
  async getData() {
    const data = await getDataFromDB(); // 获取数据
    return { data };
  }

Cache-Control 设置相对时间  (Cache-Control 的优先级高于 Expires

Expires 设置绝对时间

状态码带有 200   有from disk cache标志

2..分协缓存

状态码为304

以nest为例子

  @Get('data')
  @Header('Cache-Control', 'no-cache') // 禁用强制缓存
  async getData(@Req() req) {
    const data = await getDataFromDB(); // 获取数据
    const hash = crypto.createHash('md5').update(JSON.stringify(data)).digest('hex');
    req.res.set({
      'Cache-Control': 'must-revalidate',
      'ETag': hash,
    });
    if (req.headers['if-none-match'] === hash) {
      return { data: null }; // 返回 304 响应,表示资源未修改
    }
    return { data }; // 返回正常响应结果
  }

HTTP有哪些版本

HTTP/1.1,HTTP/2.0,HTTP/3.0

优点:简单、灵活易于扩展、跨平台

缺点:无状态、明文传输、不安全

HTTP性能

1.长连接

在1.0的短连接时代,每发一个请求都要新建一次TCP连接

1.1版本采用的长连接(持久连接)

特点:只要任意一端没有明确提出断开连接,则保持 TCP 连接状态

2.管道

即可在同一个 TCP 连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。

管道解决了请求的队头阻塞(客户端),但是没有解决响应的队头阻塞(服务器)。

HTTP 与 HTTPS 有哪些区别?

  1. 安全性:HTTP 是明文传输,数据传输过程中不进行加密,易被黑客窃取和篡改。而 HTTPS 在 HTTP 的基础上使用了 SSL / TLS 加密技术,对数据进行加密,进行安全传输,有效保护数据不被黑客窃取和篡改。

  2. 证书认证:HTTPS 在加密的基础上还实现了服务器的身份认证。通过数字证书可以证明网站的真实身份,防止中间人攻击。而 HTTP 协议并不对通信方进行身份认证。

  3. 端口号:HTTP 使用的默认端口号是 80,而 HTTPS 使用的默认端口号是 443。

  4. 性能:HTTPS 在数据传输过程中需要进行加密和身份认证等操作,导致相对于 HTTP 协议,其性能会有所下降。

  5. 缓存:由于 HTTPS 有证书认证和加密过程,在一些情况下不可缓存,而 HTTP 可以进行缓存。

HTTP三风险对应HTTPS三方案

窃听 ->信息加密

篡改 ->校验****机制

冒充 ->身份证书