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

87 阅读6分钟

1. 课程介绍

  • 通过一个示例建立对计算机网络的整体认识
  • 建立对网络协议分层的认知
  • 分析HTTP1、2、3的关系
  • 介绍CDN运行的基本原理
  • 了解网络安全的最基本准则

分析方法

  1. 自底向上
  • 从简单开始,逐步变复杂
  • 将模块逐步拼凑成一个系统
  1. 自顶向下
  • 从复杂开始,逐渐变简单
  • 从复杂的系统问题入手,拆分为模块问题

2. 蟹堡王帝国

三步走战略

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

最重要的管理基础设施:通信网络

小结

  • 蟹堡王顾客:客户端
  • 蟹煲王分店:服务端
  • 小区转发点/蟹堡王城市转发分店:路由器
  • 转发表格:网络协议

3.计算机网络基础

网络组成部分

  • 主机:提供、接收信息

    • 客户端
    • 服务端
  • 路由器:转发信息

  • 网络协议:提供格式方便路由器和主机对于信息编码和解码

网络结构:网络的网络

  • 比奇堡和小区网络:本地网络
  • 北京和上海分店+比奇堡:三个本地网络节点的网络
  • 全国通信网络:本地网络的网络

本地网络(LAN):每个店,每个小区

区域网络(MAN):小区的本地网络+蟹堡王分店

城域网络(CAN):城市分店之间

广域网络(WAN):城域网组成的网络

信息交换方式

  • 电话交换
  • 分组交换

网络分层

OSI网络模型,一般来说是七层,但是五层在实际应用中更常见,因为它更加简洁。每一层是相互独立的存在,从低到高分别是:物理层、链路层、网络层、运输层、应用层

协议

协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和/或接受一条报文或其他事件所采取的动作。

标头和载荷(

  • 标头:开头部分,用于处理和传输的控制信息
  • 载荷:主体部分,实际传输数据

4. Web中的网络

HTTP协议

一种用于传输超媒体文档(例如HTML)的应用层协议,是浏览器与服务端之间最主要的通信协议,也是互联网上应用最广泛的协议之一,所有的www文件都必须遵守这个标准。

HTTP 1.1

  • 高延迟——队头阻塞

  • 无状态特性——阻碍交互

    • 对连接状态没有记忆能力,没有cookie等机制,每个连接都是一个新的连接,会掉登录态
  • 明文传输——不安全性

  • 不支持服务端推送

队头堵塞

  • 建立多个TCP连接,将请求分散,但建立成本巨大,同时需要控制数量

HTTP2

将多个请求响应拆分为帧(frame),每个帧都有唯一的标识符,实现多路复用

  • 流(stream):判断每个帧在哪个流,每个请求响应都有独立的流,帧根据流在服务器重组为完整的服务器响应
  • 好处:通过不同类型的帧来实现调整响应传输的优先值,头部压缩,Server Push
  • 弊端:在TCP上还是会队头堵塞

HTTP 3

基于UDP 协议的 QUIC (Quick UDP Internet Connection)协议。

  • 改进的拥塞控制、可靠传输

  • 快速握手

    • 可以实现 0-RTT 或者 1-RTT 来建立连接,可以大大提升首次打开页面的速度。
  • 集成了 TLS 1.3 加密

  • 多路复用

    • QUIC 原生实现了多路复用功能,并且传输的单个数据流可以保证有序交付且不会影响其它数据流,这样的技术就解决了前边提到的 TCP 多路复用(HTTP2)存在的问题。
  • 连接迁移

http3有QUIC(Quick UDP Internet Connection)协议:

  • 现存网络设备对TCP和UDP支持已经僵化
  • UDP不靠谱但是QUIC靠谱
  • QUIC可以为除HTTP协议以外的应用层协议提供支持

CDN:DNS劫持

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

WebSocket协议

一种在单个TCP连接上进行全双工通信的协议,通常用于实时Web应用程序,例如在线游戏、聊天应用程序和股票报价应用程序等。

  • 有状态的持久连接,允许在客户端和服务器之间进行实时通信,而无需使用轮询或其他技术。
  • 服务端可以主动推送消息
  • 用WebSocket发送消息延迟比HTTP低

5.网络安全

三要素:

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

对称加密与非对称加密

对称加密:加密、解密用同样的密钥
非对称加密:加密、解密使用不同的密钥(公钥和私钥):而且公钥加密只能用私钥解密、私钥加密只能用公钥解密

密码散列函数(哈希函数)

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

机密性

加密需要加密算法和密钥等信息(统称为秘密信息)
网络是明文的,不安全

如何实现机密性

  • 已知:网络是明文的
  • 如果双方可以通过明文通信商量出秘密信息,那么攻击者也可以
  • 所以想要通过明文通信交换秘密信息,通信双方需要先有秘密信息

如何实现身份验证

  • 签名:用于鉴别身份和防止伪造
  • 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证
  • 数字签名(指纹)=私钥加密(密码散列函数(原文))
  • 消息=原文+数字签名
  • 一般用于对公开内容(如包含公钥的证书)进行数字签名,防止篡改

4.4 HTTPS

把HTTP的明文换成密文,再验证身份,即HTTPS。
HTTPS = HTTP +TLS
TLS =身份验证+加解密
身份验证靠PKI
服务端身份验证靠PKI,客户端身份验证靠HTTP协议。