这是我参与的第五届青训营笔记创作活动的第1天
本堂课主要讲解了:
- 计算机网络基础 (通过示例建立对计算机网络的整体认知)
- Web应用(HTTP 1 2 3的关系以及CDN的基本运行原理)
- 网络安全的基本原则
通过蟹堡王帝国了解计算机网络
通过蟹堡王帝国的例子,我们可以了解计算机网络的原理,从中我们可以类比出:
- 蟹堡王顾客:客户端
- 蟹堡王分店:服务端
- 小区转发点和蟹堡王城市转发分店:路由器
- 转发表格:网络协议
由此我们已经能大概了解计算机网络的拓扑结构以及运行原理
计算机网络基础
计算机网络组成部分
- 主机:客户端和服务端(负责提供信息和接受信息)
- 路由器(负责转发主机之间的信息)
- 网络协议(负责提供统一的格式,方便编码和解码)
计算机网络结构:网络的网络
- 比奇堡和小区网络:本地网络
- 北京和上海分店+比奇堡:三个本地网络节点的网络
- 全国通信网络:本地网络的网络
区域网 城域网 广域网
局域网(Local Area Network,LAN)是在一个局部的地理范围内(如一个学校、工厂和机关内),一般是方圆几千米以内,将各种计算机,外部设备和数据库等互相连接起来组成的计算机通信网。它可以通过数据通信网或专用数据电路,与远方的局域网、数据库或处理中心相连接,构成一个较大范围的信息处理系统。局域网可以实现文件管理、应用软件共享、打印机共享、扫描仪共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网严格意义上是封闭型的。它可以由办公室内几台甚至上千上万台计算机组成。决定局域网的主要技术要素为:网络拓扑,传输介质与介质访问控制方法。
城域网(Metropolitan Area Network),简称MAN,是基于一种大型的局域网LAN,通常使用与局域网LAN相似的技术。将城域网单独列出来的一个主要原因是它有自己的一个标准:分布式队列双总线DQDB(Distributed Queue Dual Bus),即IEEE802.6。DQDB是由双总线构成,所有的计算机都连结在上面。 MAN的一个重要用途是用作骨干网,通过它将位于同一城市内不同地点的主机、数据库,以及LAN等互相联接起来,这与WAN的作用有相似之处,但两者在实现方法与性能上有很大差别。 建设局域网或广域网包括资源子网和通信子网两个方面,而城域网的建设主要集中在通信子网上,其中也包含两个方面: 一是城市骨干网,它与中国的骨干网相连。 二是城市接入网,它把本地所有的联网用户与城市骨干网相连。
广域网(Wide Area Network),简称 WAN,又称广域网、外网、公网(相对应,局域网LAN也称内网、私网)。是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。
信息交换方式:
- 电路交换:使用时占据整条线路,别人无法使用,通信前必须建立连接,不使用时依旧占用线路,利用率低
- 分组交换:不会建立连接,不会占用资源,会丢包,计算机网络采用分组交换
网络分层:分清职责
物理层 链路层 网络层 运输层 应用层
网络协议:标头和载荷
协议:协议的存在依赖于连接,定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和/或接受一条报文或其他时间所采取的行动
**TCP协议格式:
Web中的网络
HTTP连接模型:
队头阻塞:当一个请求非常大或者服务器需要很长时间进行处理时,后一个需要等前一个请求完成之后才能执行
解决队头阻塞的常规方法:同时建立多个TCP连接,将请求分散在多个连接上
HTTP1.1:无法多路复用
HTTP2:帧
将多个HTTP请求拆到帧里面,每个帧可以携带来自不同HTTP请求的数据,实现多路复用
1-3:帧的长度
4:帧的类型
5:对于不同的帧有不同的含义,传递当前帧的一些状态
6:第一位保留位 后31位代表帧所留的id
8:当前帧的载荷
HTTP2:帧带来的额外好处
- 调整响应传输的优先级
- 头部压缩
- Server Push
HTTP2:在TCP上仍然会有队头堵塞
HTTP2:3 RTT启动
HTTP3:QUIC
- Quick UDP Internet Connection
- 现存网络设备对TCP和UDP支持已经僵化
- UDP不靠谱但是QUIC靠谱
- QUIC可以为除HTTP协议以外的应用层协议提供支持
HTTP3:QUIC-1 RTT
HTTP3:QUIC-0 RTT QUIC第二次访问
CDN:内容分发网络
CDN解决了HTTP协议之外的问题
CDN:DNS劫持
- 域名解析一般由网站自己处理
- 要加速的域名则重定向到CDN厂商的域名解析服务处理
- CDN厂商根据来源确定最近的CDN服务器的IP
- 用户直接访问最近的CDN服务器
拉策略和推策略
- 拉策略:用户指定在CDN上
- 推策略:网站决定的
CDN 加速策略有两种方式,分别是推模式和拉模式。 大部分 CDN 加速策略采用的是「拉模式」,当用户就近访问的 CDN 节点没有缓存请求的数据时,CDN 会主动从源服务器下载数据,并更新到这个 CDN 节点的缓存中。
WebSocket
从HTTP升级而来
- 有状态的持久连接
- 服务端可以主动推送消息
- 用WebSocket发送消息延迟比HTTP低
网络安全
网络安全三要素
- 机密性:攻击者无法获知通信内容
- 完整性:攻击者对内容进行篡改时能被发现
- 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
完整性和身份验证相互关联
想要实现完整性,通信双方需要现有秘密信息
在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息
对称加密和非对称加密
- 对称加密:加密、解密用同样的密钥
- 非对称加密:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密,私钥加密只能用公钥解密
密码散列函数(哈希函数)
- 输入:任意长度内容
- 输出:固定长度哈希值
- 性质:找到两个不通过的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
数字签名:对明文内容分的哈希值使用私钥加密,验证者使用公钥验证
数字签名=私钥加密
消息=原文+数字签名
一般用于对公开内容进行数字签名,防止篡改
如何实现身份验证
- 根证书是证书链的尽头
- 验证的一连串证书称为证书链
- 分发证书、验证证书的基础设施称为PKI
- 所以想要实现身份验证,通信双方需要先有秘密信息,即根证书中的公钥
PKI保证普通用户不需要“面对面”和根证书机构交换根证书
HTTPS
把HTTPS的明文换成密文,再验证身份,即HTTPS
HTTPS=HTTP+TLS
TLS=身份验证+加解密
身份验证靠PKI
服务端身份验证靠PKI,客户端身份验证靠HTTP协议
HTTPS使用PKI完成除客户端验证以外的特性,客户端身份验证靠HTTP协议实现