计算机网络概论丨青训营笔记

135 阅读4分钟

本文同步发布于博客(xblc.netlify.app),如果有更新博客会在第一时间更新

Intro

课程目标

  • 建立整理认识
  • 网络协议分层的认识
  • HTTP123
  • CDN原理
  • 网络安全原则

分析方法

  • 自底向上
  • 自顶向下

使用自底向上的方法分析

用一个例子来理解宏观计算机网络结构

image.png

image.png

计算机网络基础

网络组成部分

  • 主机:客户端and服务端
  • 路由器、交换机
  • 网络协议

网络结构

其实就是由更低层次的网络来组成更高层次的网络

  • 局域网
  • 城域网
  • 广域网

信息交换

  • 交换方式:电路交换 & 分组交换
  • 传输主要是一个分组合并的过程

网络分层

  • 分清职责:物理层、链路层、网络层、运输层和应用层
  • 我们重点关注上三层。每一层都是一次抽象,有自己要关心的事情和不需要关心的事情

协议

  • 协议的存在依赖于连接
  • 协议定义了通信实体间的报文格式和顺序
  • 还有采取的动作

标头和载荷

  • 标头是类似于寄件人收件人会重点关注的东西,类似于快递贴的单子
  • 会有更高层需要额外关注的东西

示例

HTTP协议

  • 链路层
  • 运输层
  • 应用层 TCP协议

Web 中的网络

  • 请求
    • 头部
  • 响应
    • 状态行
    • 包含正文的响应

HTTP 连接模型

HTTP 1.1

  • 使用了简单的请求-响应模型

  • 每次请求和响应都要建立一次全新的连接,这样会造成很大的延迟

  • 不支持连接的持久化、并发

  • 第一个请求完成以后,才能发起后一个请求

  • 利用率不高,无法多路复用

  • 没法判断请求源

image.png

HTTP2

解决队头堵塞(Head of Line blocking)的问题:当一个请求非常大,后一个请求还是等待前一个请求处理完

引入帧

- 把要一次传输的信息封装成一个个帧,每个帧都有关于本次请求或者响应的相关信息,让每个包有自己的身份。

额外带来的好处

  • 二进制
  • 多次传输
  • 调整响应传输的优先级
  • 头部压缩
  • Server push

仍然存在的问题:TCP造成的队头堵塞,丢包

  • TCP 是 HTTP 底层的传输协议,用于处理连接控制等事情
  • TCP 有丢包成团的特性
  • 虽然帧的特性允许我们在一次连接中可以发送多次请求,但是当一次请求阻塞的时候,所有的请求都要等这个请求在 TCP 连接中结束

HTTP3

引入 QUIC 协议

  • 现在的网络设备几乎不支持 TCP + UDP 了

  • QUIC 还能对其他的应用层协议提供良好支持

  • 解决了 TCP 的很多缺陷问题

  • 0-RTT

  • 改善服务器push,可以取消

CDN

协议层面没法解决的问题,物理层面的问题 你HTTP协议再快,也没法解决物理层面的问题

本质是DNS劫持

  • DNS一般网站自己解析
  • 如果要加速,就会劫持到 CDN 厂商进行处理
  • 用户直接访问 CDN 厂商的服务器

如果最近厂商资源不够了

  • 拉策略
  • 推策略

WebSocket:一种HTTP的代替协议

相比,不同的地方如下

  • 状态持久连接
  • 允许服务端主动推送消息
  • 发送消息延迟更低

网络安全

以上的协议都是明文的,路由器交换器都可以查看,丢弃,修改

所以要做到

  • 机密:无法获取
    • 核心问题:怎么在不安全的信道交换「秘密信息(密钥,算法)」?
    • 必须有攻击者不知道的信息
  • 完整:篡改的时候能发现
    • 哈希函数
  • 身份验证 —— 数字签名技术
    • 特性 / 要求
      • 可鉴别
      • 不可伪造
    • 应用过程
      • 签名 = 私钥加密,公钥验证
      • 消息 = 传输原文 + 签名
    • 实例
      • 一般对证书进行签名
    • 证书链:验证信息的人不一定可信
      • 根证书
      • PKI 操作系统验证过的秘密信息,以上提到过的通信秘密信息
        • 不需要面对面
      • 实例:feishu.cn 的证书
        • 层次
        • 颁发者

HTTPS

  • = HTTP + TLS

  • TLS = 身份验证 + 加解密

  • 服务端身份验证 -> KPI

  • 客户端身份验证 -> HTTP