# 六.网络相关

# 1.OSI 七层模型

模型 概述
物理层 网络连接介质
数据链路层 数据链路层将比特封装成数据帧并传递
网路层 定义 IP 地址,定义路由功能,建立主机到主机的通信
传输层 负责将数据进行可靠或者不可靠传递,建立端口到端口的通信
会话层 控制应用程序之间会话能力,区分不同的进程
表示层 数据格式表示,基本压缩解密功能
应用层 各种应用软件

# 2.http 状态码

  • 2xx 成功
  • 200 请求成功并且返回了数据
  • 3xx 重定向
    • 301 永久重定向
    • 302 临时重定向
    • 304 未修改
  • 4xx 服务端错误
    • 400 错误请求
    • 401 未授权
    • 404 服务器没有找到页面
    • 403 没有权限
  • 5xx 服务器错误
    • 500 服务器内部错误
    • 501 未实施
    • 502 无效响应
    • 503 不可用(超载停机)

# 3.get 和 post

# 4.http 的请求报文

请求行、请求头、空行、请求数据

# 5.http 常见的请求/响应头

通用头部

字段 作用
Cache-Control 控制缓存 public:表示响应可以被任何对象缓存(包括客户端、代理服务器);private(默认值):响应只能被单个客户缓存,不能被代理服务器缓存;no-cache:缓存要经过服务器验证,在浏览器使用缓存前,会对比 ETag,若没有变则返回 304,使用缓存;no-store:禁止任何缓存
Connection 是否需要持久连接(HTTP 1.1 默认持久连接) keep-alive/close
Transfer-Encoding 报文主体的传输编码格式 chunked(分块)/identity(未压缩和修改)/gzip(LZ77 压缩)/compress(LZW 压缩,弃用)/deflate(zlib 结构压缩)

请求头

字段 作用 语法
Accept 告知(服务器)客户端可以处理的内容类型 text/html//*
if-Modified-Since 将 Last-Modified 的值发送给服务器,询问资源是否过期,过期则返回新资源,否则返回 304
if-Unmodified-Since 将 Last-Modified 的值发送给服务器,询问文件是否被修改,若没有则返回 200,否则返回 412 预处理错误,可用于断点续传

# 6.HTTP1.0 和 1.1

  • 长连接:HTTP1.1 支持长连接和请求的流水线,在一个 TCP 连接上可以传送多个 HTTP 请求,避免了因为多次建立 TCP 连接的时间消耗和延时
  • 缓存处理:HTTP/1.1 引入 Entity tag,If-Unmodified-Since,If-Match,If-None-Match 等新的请求头来控制缓存,
  • 宽带优化及网路连接的使用:HTTP1.1 则在请求头引入了 range 头域,支持断点续传功能
  • Host 头处理:在 HTTP1.0 中认为每台服务器都有唯一的 IP 地址,但随着虚拟主机技术的发展,多个主机共享一个 IP 地址愈发普遍,HTTP1.1 的请求消息和响应消息都应支持 Host 头域,且请求消息中如果没有 Host 头域会 400 错误

# 7.HTTP 2.0 新特性

  • 多路复用:即多个请求都通过一个 TCP 连接并发的完成
  • 服务端推送:服务端能够主动把资源推送给客户端
  • 新的二进制格式:HTTP2 采用二进制格式传输数据,相比于 HTTP1.1 的文本格式,二进制格式具有更好的解析性和拓展性
  • header 压缩:HTTP2 压缩消息头,减少了传输数据的大小

# 8.HTTP 2.0 多路复用

http2 解决的问题就是 http1.1 存在的问题

  • tcp 启动慢:tcp 建立连接后,会经历一个先慢后快的发送过程,就像汽车启动一般,如果我们的网页文件(HTML/CSS/JS)都经历一次慢启动,对性能是不小的损耗,另外慢启动是 tcp 为了减少网络拥堵的一种策略,我们是没有办法改变的。
  • 多条 tcp 连接竞争宽带:如果同时建立多条 tcp 连接,当宽带不足时就会竞争宽带,影响关键资源的下载。

为了解决以上几个问题,http2 一个域名只使用一个 tcp 长连接来传输数据,而且请求直接是并行的,非阻塞的,这就是多路复用。

实现原理:http2 引入了一个二进制分帧层,客户端和服务端进行传输时,数据会先经过二进制分帧层处理,转化为一个个带有请求 ID 的帧,这些帧在传输完成后根据 ID 组合成对应的数据。

# 9.说说 HTTP 3.0

尽管 http2 解决了很多 1.1 的问题,但 http2 仍然有一些缺陷,这些缺陷并不是来自于 http2 协议的本身,而是来源于底层的 tcp 协议,我们知道 tcp 链接是可靠的链接,如果出现了丢包,那么整个连接都要等待重传,http1.1 可以同时使用 6 个 tcp 连接,一个阻塞另外 5 还能工作,但 http2 只有一个 tcp 链接,阻塞的问题被放大了

由于 tcp 协议已经被广泛使用,我们很难直接修改 tcp 协议,基于此 http3 选择了一个折中的方法 udp 协议,http2 在 udp 的基础上实现多路复用,0-rtt,tls 加密、流量控制、丢包重传等功能

# 10.HTTP 和 HTTPS 有何区别

  • https 使用 443 端口,而 http 使用 80 端口
  • https 需要申请证书
  • http 是超文本传输协议,是明文传输,https 是经过 ssl 加密的协议,传输更安全
  • https 比 http 慢,因为 https 除了 tcp 握手的三个包,还要加上 ssl 握手的九个包

# 11.HTTPS 是如何进行加密的

# UDP

# 1.面向无连接

# 2.不可靠性

# 3.高效

# 4.传输方式

# 5.适合使用的场景

# TCP

# 1.头部

# 2.状态机

# 3.ARQ 协议

# 4.滑动窗口

# 5.拥堵处理

# HTTP 及 TLS

# 1.HTTP 请求中的内容

# 2.TLS

上次更新: 2022/6/29 上午12:09:44