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

180 阅读5分钟

1.概述

1.1分析方法

  • 自底向上:从简单开始,逐渐复杂;将模块逐步拼凑成一个系统

  • 自顶向下:从复杂开始,逐渐简单;将复杂系统问题拆分为模块问题

2.蟹堡王的例子(自底向上)

2.1当前要完成的目标

  • 在比奇堡开通外卖
  • 在北京和上海开分店
  • 在全国开分店并开通外卖

2.2隐性需求

  • 蟹老板需要知道分店的销售数据

2.3第一阶段:在比奇堡开通外卖

  • 目前问题:章鱼哥在同一时间只能处理一位顾客的信息,即接收信息后还需要整理、确认并记录一遍信息
  • 在不增加前台的情况下我们发现,一个外卖流程的成功首先需要顾客具有一样基础能力,即能够联系到蟹堡王,同时提供三样信息:谁吃?吃啥?送到哪里?
  • 于是乎我们让珊迪为比奇堡居民提供了传真机,虽然我们单一时间只能打印一张订单,但是我们可以在同一时间接收多个订单。

2.4第二阶段:在北京和上海开分店

  • 我们先在两地各开了一家分店后,并建立了直通的通信线路,以此来完成分店与主店之间的信息传递

2.5第三阶段:在全国开分店并开通外卖

  • 在我们发现销售量提升后,我们同一地区多开了分店,但这些分店同样需要完成与主店之间的信息传递,为了节约线路成本,我们通过大分店进行中转信息,并记录详细的地址,实现信息的准确传递。
  • 随着我们继续的扩张,我们希望在不同地区同样开设分店,为了尽可能节约成本,我们将上海和北京的最大分店作为中转点,所有发往比奇堡的信息都通过这个枢纽进行发送,所有地区的结点都能成为枢纽,减少建设通信线路的成本

2.6小结

  • 类似结构

    • 顾客:客户端
    • 分店:服务端
    • 小区转发点和城市转发分店:路由器
    • 转发表格:网络协议
  • 核心思想

    • 信息的准确性和规范性

    • 两点之间存在通路

    • 多条通路的交点承载能力较强

3.计算机网络基础

3.1网络组成部分

  • 主机:提供和接收信息

    • 客户端
    • 服务端
  • 路由器:转发主机之间的信息

  • 网络协议:统一格式

3.2电路交换&分组交换

  • 电路交换

    • 需要先建立连接
    • 带宽占用
    • 资源浪费
  • 分组交换

    • 不会预留资源
    • 队列满后丢弃新的分组
    • 报文分组

3.3网络分层

  • 物理层->链路层->网络层->运输层->应用层

3.4协议

  • 前提:两个实体之间能够相互交换信息
  • 协议定义了在两个或多个通信实体之间交换的报文格式和顺序,标准

3.5表头和载荷

  • 标头:收发信息

  • 载荷:内容

  • http示例

    • null/loopback:链路层-本地帧头部

    • Internet protocol version 6:链路层-IP协议头部

      • ip版本
      • 源ip地址
      • 目标ip地址
    • Transmission control protocol:运输层-TCP协议头部

      • 源端口号
      • 目标端口号
      • 序列号
      • 头部长度
      • 载荷信息
      • 载荷长度信息
    • Hypertext transfer protocol:应用层-HTTP协议头部

      • 请求信息get/post
  • 报文=内容层头+ip协议头+tcp协议头+http协议头+http正文

  • tcp协议格式:网上搜可以找到图

4.Web中的网络

4.1HTTP协议

  • http1.1:无法多路复用

  • http2:将多个请求拆分到帧里面,标识数据包

    • 格式

      • 第1-3个字节:载荷长度
      • 第4字节:类型
      • 第5字节:类型对应的标志位
      • 第6-9字节:1位保留位,2-32位:流ID
      • 随后的8192字节:载荷
    • 好处

      • 调整响应传输的优先级
      • 头部压缩
      • Server push
    • 仍存在的问题

      • 在TCP上队头堵塞
      • 3RTT(Round-Trip Time),往返时延。
  • http3:quic

    • 第一次1RTT
    • 将两次握手组合
    • 第二次0RTT

4.2CDN

  • 物理层面

  • CDN的全称是Content Delivery Network,即内容分发网络。

  • 按照地理位置安排服务器的位置

  • DNS劫持

    • 域名解析一般由网站自己处理
    • 要加速文档域名则重定向到CDN厂商的域名解析服务处理
    • CDN厂商根据来源确定最近的CDN服务器的IP
    • 用户直接访问最近的CDN服务器
  • 拉策略,推策略

4.3WebSocket

  • 有状态的持久连接

  • 服务端可以主动推送消息

  • 用WebSocket发送消息延迟比http低

5.网络安全

  • 网络安全三要素

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

    • 对称加密:加密、解密用同样的密钥
    • 非对称加密::加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密,私钥加密只能用公钥解密
  • 密码散列函数(哈希函数)

    • 输入:任意长度的内容
    • 输出:固定长度的哈希值
    • 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
  • 机密性

    • 加密需要加密算法和密钥
    • 网络是明文的
  • 完整性和身份验证

    • 完整性:双方要具有秘密信息

    • 如何实现身份验证

      • 非对称加密

      • 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证

        • 数字签名=私钥加密
        • 消息=原文+数字签名
      • 可信行验证

        • 根证书,证书链,PKI
  • Https

    • 把明文换成密文,再验证身份,即https
    • Https = http + tls
    • Tls = 身份验证 + 加解密
    • 身份验证靠pki
    • 服务端身份验证靠pki,客户端身份验证靠http协议