计算机网络是计算机的基础,对其知识的掌握是在写代码前端之类的有很大帮助。 计算机网络的构成是逐步而形成的,其大致分为主机、路由器、网络协议等。 网络安全遵循三要素:机密性,完整性,身份验证 身份验证主要依据证书,
内容梗概
- 建立对网络协议分层的认知
- 分析HTTP1、2、3的关系
- 介绍CDN运行的基本原理
- 了解网络安全的最基本原则
重点
- 网络结构
- TCP/UDP
- HTTP 1 / HTTP2 / HTTP3 (QUIC)
- WebSocket
- CDN
- 安全(SSL/TLS/基础密码学)
分析方法
自底向上:从简单到复杂,把部分凭借成一个系统
自顶向下:从复杂到简单,把系统拆成各个模块分析
计算机网络基础
网络组成部分
- 主机:客户端和服务端
-
- 提供和接收消息
- 路由器
-
- 转发主机之间的信息
- 网络协议
-
- 提供统一格式方便编码解码
- 交换机.......
信息交换方式
- 电路交换
-
- 一条线路,例如电话
- 分组交换
-
- 多条线路,例如传真(计算机网络采取分组交换)
网络分层
各层分清职责,相互之间黑盒关系
计算机网络从低到高分五层
- 物理层
- 链路层
- 网络层
- 运输层
- 应用层
协议
概念
协议的存在依赖于连接
作用:协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和/或接受一条报文或其他事件所采取动作
HTTP协议
- 链路层-本地帧头部
- 链路层-IP协议头部
- 运输层-TCP协议头部
- 应用层-HTTP协议头部
TCP协议格式
- 2Byte:端口号
- 4Byte:序列号
- 4Byte:ACK号
- 4个位:载荷
- ...
web中的网络
HTTP
请求
起始行:方法,路径URL,HTTP协议及版本
头部:
头部名称:头部的值
响应
状态行:HTTP版本,状态码,状态信息
HTTP连接模型
HTTP1.1
无法多路复用
HTTP2:帧
将多个HTTP请求拆分到帧里面
帧的结构:
长度、类型、状态、保留位、所属流ID、载荷
优势:
- 调整响应传输的优先级
- 头部压缩
- Server Push
但TCP上仍会出现队头堵塞
运行原理(效率很低):
HTTP3:QUIC
- Quick UDP Internet Connection
- 现存网络设备对TCP和UDP支持已经僵化
- UDP不靠谱但是QUIC靠谱
- QUIC可以位除HTTP协议以外的应用层协议提供支持
工作原理:
CDN
限制:
- 距离限制
- 单个服务器承担负载有限
DNS劫持
- 域名解析一般网站自己处理
- 要加速的域名则重定向到CDN厂商域名解析服务处理
- CDN厂商根据来源确定最近的CDN服务器IP
- 用户直接访问最近的CDN服务器
拉策略
由客户端按照自身的处理情况按照一定的周期去服务器拉去信息,这样就不会出现服务端压死客户端的情况。
推策略
当服务端发送信息变更之后由服务端主动推送这样的实时性是非常高的。
WebSocket
由HTTP基础升级而来
特点:
- 有状态的持久连接
- 服务端可以主动推送消息
- 用WebSocket发送消息延迟比HTTP低
示例
网络安全
三要素
- 机密性:攻击者无法获知通信内容
- 完整性:攻击者对内容篡改能被发现
- 身份验证:攻击者无法伪装成通信双方任意一方与另一方通信
完整性与身份验证相互关联
加密方式
对称加密:加密解密用相同的密钥
非对称加密:加密解密用不同的密钥,(公钥和私钥):公钥加密只能用私钥解密;私钥加密只能用公钥解密
密码散列函数(哈希函数)
- 输入:任意长度的内容
- 输出:固定长度的哈希值
- 性质:找到两个不同输入使之结果密码散列函数后又相同的哈希值,在计算上是不可能的
证书
分发证书、验证证书的基础设备称为:PKI,Public Key Infrastructure
HTTPS的实现
把HTTP的明文换成密文,再验证身份
HTTPS=HTTP+TLS
TLS=身份验证+加解密
身份验证靠PKI
服务端身份验证靠PKI,客户端身份验证考HTTP协议