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

104 阅读5分钟

计算机网络概论

一、课程目标

建立对计算机网络的整体认知,对计算机网络中的各种概念(网络分层、网络协议、网络应用等)有初步的了解

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

二、计算机网络基础

网络组成部分

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

网络结构:网络的网络

  • 本地网络
  • 三个本地网络节点的网络
  • 全国通信网络:本地网络的网络
  • 区域网络、城域网和广域网

协议

协议的存在依赖于连接

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

HTTP协议示例

1.链路层-本地帧头部 2.链路层-IP协议头部 3.运输层-TCP协议头部 4.应用层-HTTP协议头部

TCP协议格式

TCP协议格式.png

小结

网络组成部分: 由主机、路由器、交换机等组成

  • 网络结构:网络的网络
  • 信息交换方式:电路交换和分组交换
  • 网络分层:分清职责、物理层、链路层、网络层、运输层和应用层
  • 网络协议:标头和载荷

三、web中的网络

HTTP链接模型.png

HTTP1.1.png

HTTP2.png

前三个字节:载荷长度 第四个字节:类型 第五个字节:类型对应的Flags 6-9字节: 第1位:保留位 第2-32位:流ID 随后的8192字节:载荷
HTTP2:帧带来的额外好处

  • 调整响应传输的优先级
  • 头部压缩
  • Sever Push

HTTP2 队头堵塞.png

HTTP2 3RTT启动.png

HTTP3.png HTTP3 QUIC-1RTT.png

HTTP:QUIC-0 RTT.png

CDN是什么?

CDN英文全称Content Delivery Network,中文翻译即为内容分发网络。它是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。

CDN:你无法突破物理极限的

  • HTTP3快吗?——快!
  • 那从美国到中国,HTTP3要多久——150ms

CDN:DNS劫持

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

WebSocket:

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

小结

  • HTTP1 2 3的演进历史
  • CDN解决了HTTP协议之外的问题
  • WebSocket从HTTP协议升级而来

四、网络安全

三要素:

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

对称加密和非对称加密

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

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

  • 输入:任意长度的内容
  • 输出:固定长度的哈希值

机密性

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

完整性和身份验证

完整性和身份验证互相关联

如何实现机密性

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

如何实现完整性

  • 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
    • 有明文m,密码散列函数H
    • 计算H(m)获得哈希值h
    • 将m和h组合成新信息m+h
    • 接受方拆分m+h,重新计算H(m)得h',对比h'和h,若两者一致就没有被篡改

————————————————————————————————

- 有明文m,密码散列函数,以及一个*密钥*s
- 计算H(m+s)获得哈希值h
- 将m和h组合成新信息m+h
- 接受方拆分m+h,重新计算H(m+s)得h',对比h'和h
  • 所以想要实现完整性,通信双方需要先有秘密信息

如何实现身份验证

  • 签名:用于鉴别身份和防止伪造

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

  • 某人用自己的私钥对信件进行加密,并发给另一个人

  • 另一个人用某人的公钥进行解密,获得原文

  • 保证了机密性完整性和身份验证\color{red}{机密性完整性和身份验证}

  • 根证书\color{skyblue}{根证书}是证书链的尽头

  • 验证的一连串证书称为证书链\color{skyblue}{证书链}

  • 分发证书、验证证书的基础设施称为PKI,PublicKeyInfrastructure\color{skyblue}{PKI,Public Key Infrastructure}

  • 所以想要实现身份验证,通信双方需要先有秘密信息,即根证书中的公钥\color{red}{想要实现身份验证,通信双方需要先有秘密信息,即根证书中的公钥}

HTTPS

把HTTP的明文换成密文,在验证身份,即HTTPS HTTPS=HTTP+TLS

TLS = 身份验证\color{skyblue}{身份验证}+加解密\color{red}{加解密} 身份验证\color{skyblue}{身份验证}PKI\color{green}{PKI} 服务端身份验证靠PKI,客户端身份验证靠HTTP协议

小结

  • 网络安全三要素:机密性、完整性和身份验证
  • 在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息
  • PKI保证了普通用户不需要"面对面"和根证书机构交换根证书
  • HTTPS使用PKI完成了除客户端身份验证以外的特性,客户端身份验证靠HTTP协议实现