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

58 阅读4分钟

计算机基础

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

• 网络结构:网络的网络

• 信息交换方式:电路交换和分组交换

• 网络分层:分清职责,物理层、链路层、网络层、运输层和应用层

• 网络协议:标头和载荷

协议:

○ 协议的存在依赖于连接。

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

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 协议。