计算机基础
• 网络组成部分:由主机、路由器、交换机等组成
• 网络结构:网络的网络
• 信息交换方式:电路交换和分组交换
• 网络分层:分清职责,物理层、链路层、网络层、运输层和应用层
• 网络协议:标头和载荷
协议:
○ 协议的存在依赖于连接。
○ 协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和/或接受一条报文或其他件所采取的动作。
Web中的网络
队头阻塞(Head-of-Line blocking):在“头部(head)”一个单一的问题可以“阻塞(block)”整条“线(line)”。因此对头堵塞是影响Web性能中最难解决的问题之一
HTTP1.1无法多路复用,因此堵塞问题最为严重。HTTP2采用了帧模式,有效的减小了队头堵塞带来的问题。HTTP 3:QUIC(Quick UDP Internet Connection)。现存网络设备对 TCP 和 UDP 支持已经僵化,UDP 不靠谱但是 QUIC 靠谱,QUIC 可以为除 HTTP 协议以外的应用层协议提供支持。
尽管网络协议的升级可以减小传输的时间损耗等等,但上限都是物理极限。因此出现了CDN(Content Delivery Network):就是将内容缓存在终端用户附近。 CDN=更智能的镜像+缓存+流量导流。
其他网络协议:WebSocket:有状态的持久连接,服务端可以主动推送消息,用 WebSocket 发送消息延迟比 HTTP 低
网络安全
网络安全三要素:
• 机密性:攻击者无法获知通信内容
• 完整性:攻击者对内容进行篡改时能被发现
• 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
对称加密和非对称加密:
• 对称加密:加密、解密用同样的密钥
• 非对称加密:加密、解密使用不同的密钥(公钥和私钥),而且公钥
加密只能用私钥解密、私钥加密只能用公钥解密
网络安全:密码散列函数(哈希函数)
输入:任意长度的内容
输出:固定长度的哈希值
性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
网络安全中完整性和身份验证互相关联,发起者发送了数据,接收者需要确认请求是发起者发出的(不是攻击者发出 的),并且内容是完整没有被篡改过的。
1. 实现完整性:
密码散列函数性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
a. 有明文 m,密码散列函数 H
b. 计算 H(m) 获得哈希值 h
c. 将 m 和 h 组合成新信息 m + h
d. 接收方拆分 m + h,重新计算 H(m) 得 h’,对比 h’ 和 h
或者是:
a. 有明文 m,密码散列函数 H,以及一个密钥 s
b. 计算 H(m + s) 获得哈希值 h
c. 将 m 和 h 组合成新信息 m + h
d. 接收方拆分 m + h,重新计算 H(m + s) 得 h’,对比 h’ 和 h
所以想要实现完整性,通信双方需要先有秘密信息
2. 实现身份验证
○ 签名:用于鉴别身份和防止伪造。
○ 非对称加密性质:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
○ 发送者用自己的私钥对传输内容进行加密,并发送给接收者,接受者使用发送者的公钥进行解密,获得原文。
○ 优点:保证了机密性、完整性和身份验证
○ 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证
○ 数字签名(指纹) = 私钥加密(密码散列函数(原文))
○ 消息 = 原文 + 数字签名
○ 一般用于对公开内容(如包含公钥的证书)进行数字签名,防止篡改 而想要实现身份验证,通信双方需要有根证书中的公钥(秘密信息)
网络安全:HTTPS
○ 把 HTTP 的明文换成密文,再验证身份,即 HTTPS。
HTTPS = HTTP + TLS
TLS = 身份验证 + 加解密
身份验证靠 PKI
○ 服务端身份验证靠 PKI,客户端身份验证靠 HTTP 协议。