计算机网络课程笔记 | 青训营

84 阅读4分钟

计算机网络知识回顾

网络组成部分

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

网络结构:网络的网络

区域网络、城域网和广域网

电路交换和分组交换

电路交换:单次连接 分组交换:不建立链路链接,不独占资源和带宽

网络分层

  • 物理层
  • 链路层
  • 网络层——高速公路
  • 运输层——卡车
  • 应用层——快递公司

协议

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

标头和载荷

HTTP协议示例:

  1. 链路层——本地帧头部
  2. 链路层——IP协议头部(IP地址)
  3. 运输层——TCP协议头部(端口)
  4. 应用层——HTTP协议头部

报文 = 链路层头 + IP协议头 + TCP协议头 + HTTP协议头 + 正文

TCP协议格式

image.png

HTTP协议

image.png

  • 红色:请求
  • 蓝色:响应

请求

  1. 起始行:方法 资源路径 http版本
  2. 头部:名称:值
  3. 正文

响应

  1. 起始行:http版本 状态码 状态信息
  2. 头部:名称:值
  3. 正文:HTTP报文

连接模型

image.png

  • 左边为http1
  • 中间为http1.1(常用,存在队头堵塞问题,通过限制http请求数量,通常为6)
  • 右边为http管线

http2

  • http1.1:无法多路复用
  • http2:帧 image.png
  1. 1-3字节为载荷长度
  2. 4字节为类型
  3. 5字节为类型对应的Flags
  4. 6-9字节第1位保留位,2-32位:流ID
  5. 随后的8192字节:载荷
好处
  • 解决多路复用和队头阻塞问题
  • 调整响应传输的优先级
  • 头部压缩
  • Server Push
3RTT启动

image.png

http3

  • Quick UDP Internet Connection(QUIC)
  • 现存网络设备对TCP和UDP支持已经僵化
  • UDP不靠谱但是QUIC靠谱
  • QUC可以为除HTTP协议以外的应用层协议提供支持
  • 首次1RTT,二次0RTT

CDN

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

WebSocket

  • 有状态的持久连接
  • 服务端可以主动推送消息
  • 用WebSocket发送消息延迟比HTTP低

网络安全

三要素

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

加密

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

密码散列函数(哈希)

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

数字签名

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

证书

  • 根证书是证书链的尽头
  • 验证的一连串证书称为证书链
  • 分发证书、验证证书的基础设施称为PKI,Public Key Infrastructure
  • 所以想要实现身份验证,通信双方需要先有秘密信息,即根证书中的公钥
  • PKI保证了普通用户不需要“面对面”和根证书机构交换根证书

HTTPS

  • 把HTTP的明文换成密文,再验证身份,即HTTPS。
  • HTTPS=HTTP+TLS
  • TLS=身份验证+加解密
  • 身份验证靠PKI
  • 服务端身份验证靠PKI,客户端身份验证靠HTTP协议。
  • HTTPS使用PKI完成了除客户端身份验证以外的特性,客户端身份验证靠HTTP协议实现

思考

前端初阶训练营中的计算机网络知识回顾课程讲的比较基础,主要是对协议部分进行了详细介绍,但对八股文中常问的TCP、HTTP连接建立过程没有详细介绍。在课程之余还需要对TCP的三次握手四次挥手等问题进行复习。课程中蟹堡王帝国的描述确实对理解计算机网络有很大的帮助,膜拜字节的老师,值得大家去学习一下。