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

114 阅读4分钟

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

1. 计算机网络基础

1.1 网络组成部分

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

1.2 网络结构:网络的网络

  • 本地网络
  • 本地网络节点的网络
  • 本地网络的网络
  • 区域网络、城域网和广域网

1.3 信息交换

  • 电路交换:线路接受需要建立连接
  • 分组交换:传真,不需要建立连接;分组进入输出队列

1.4 网络分层

  • 协议
    • 协议的存在依赖于连接
    • 协议定义了在两个或多个通信实体之间交换的报文格式和顺序
    • 以及报文发送或接收一条报文或其他事件所采取的动作
  • 标头和载荷
    • header
    • payload
  • 分层
    • 物理层
    • 链路层-本地帧头部
    • 链路层-IP协议头部
    • 网络层
    • 运输层-TCP协议头部
    • 应用层-HTTP协议头部

1.5 TCP协议格式

Screen Shot 2023-04-12 at 11.07.14 PM.png

  • 头部和载荷划分依靠data offset
  • HTTP对报文做解析\r\n

2. Web中的网络

2.1 HTTP协议

2.1.1 请求

  • 请求 URL 协议 (GET / HTTP/1.1)
  • Host
  • optional header
    • 头部名称:头部值

2.1.2 响应

  • 协议 状态码 状态文
  • Headers
  • Payload

2.2 HTTP连接模型

  • 请求响应模型:发起请求后需要等到响应在进行下一个请求
  • 头部会重复发送,无法被压缩
  • HTTP1.0 每个请求需要创建一个连接
  • HTTP1.1 Persistent,默认持续一段时间
    • 队头堵塞:头请求耗时长,其余请求需要等待
    • 无法多路复用
  • HTTP1.2 Pipelining:用户发送请求pipeline,服务器按需反馈
  • HTTP2 帧:将数据拆分到帧中,实现流式处理方式
    • 帧长度、类型、状态、流id、载荷
    • 通过头部信息分辨流,在服务器中重组
    • 返回:3-帧长度 1类型 1状态 1id -载荷
    • 带来额外好处
      • 调整响应传输优先级
      • 头部压缩
      • server push
    • 问题 不够快
      • 队头堵塞 TCP上丢包
      • HTTPS下 响应不够快
    • 3RTT启动
      • HTTP客户端发起请求
      • TCP客户端发起请求
      • TCP服务端响应
      • TCP客户端请求密钥
      • TCP服务端发送密钥
      • HTTP客户端发起请求
  • HTTP3: QUIC
    • Quick UDP internet connection
    • 现存网络设备对TCP UDP支持僵化
    • UDP不靠谱,QUIC靠谱
      • UDP无控制 无顺序 无保证
    • QUIC可以为除HTTP协议以外的应用层协议提供支持
    • 1RTT
      • HTTP客户端发起请求
      • QUIC客户端发起钥匙请求
      • QUIC服务端发送证书和钥匙
      • HTTP客户端发起请求
      • QUIC发送钥匙
    • 再次请求 0RTT
      • HTTP客户端发起请求
      • QUIC客户端发起请求 直接请求HTTP需要的内容
      • QUIC发起回复 直接回复HTTP请求需要的内容

2.3 CDN

  • 极限
    • 物理极限决定通信极限
    • 价格
    • 服务器承载量不足 发生崩溃
  • CDN服务器
    • 在全国访问不同的服务器
  • DNS劫持
    • 域名解析由网站自己处理
    • 加速的域名重定向到CDN厂商域名解析服务处理
    • CDN厂商根据来源确定最近的CDN服务器IP
    • 用户直接访问最近的CDN服务器
  • 影响速度
    • 负载
    • 具体地点
    • 假DNS
  • 只在CDN服务器维护部分策略
  • LRU 清除使用最少的内容

2.4 WebSocket

  • 特点
    • 有状态的持久连接
    • 服务端主动推送消息
    • websocket发送消息延迟比HTTP低
  • Websocket升级 101 switching protocols 然后建立连接
  • 发送消息:payload

3.网络安全

3.1 网络安全三要素

  • 机密性:攻击者无法获知通信内容
  • 完整性:攻击者对内容进行篡改时能被发现
  • 身份验证:无法伪装成通信双方的任意一方与另一方通信

3.2 加密

  • 对称加密:加解密使用同样的密钥
  • 非对称加密:加解密使用不同密钥,公钥只能私钥解密,私钥只能公钥解密

3.3 密码散列函数 hash函数

  • 输入任意长度内容
  • 输出固定长度哈希值
  • 两个不同的输入使其计算后值相同是不可能的

3.4 机密性

  • 秘密信息:加密算法、密钥
  • 网络明文
  • 通信双方需要提前有秘密信息

3.5 完整性

  • 明文m 哈希函数H 密钥S
  • H(m+s)=h
  • m+h发送到接收方 H(m+s)->h' 对比h h'
  • 双方需要先有秘密信息

3.6 身份验证

  • 签名:鉴别身份防止伪造
  • 保证机密性、完整性、身份验证
  • 发送方使用自己的私钥加密
  • 接收方使用自己的公钥解密
  • 数字签名:对明文内容的哈希值进行私钥加密,验证者使用公钥验证
    • 用于对公开内容解密
    • 根证书-证书链验证
    • Public key infrastructure:需要根证书公钥

3.7 HTTPS

  • 把HTTP明文换成谜文 在验证身份
    • HTTP+TLS
    • TLS=身份验证+加解密
    • 身份验证靠PKI
    • 服务端验证靠PKI,客户端身份靠HTTP协议