理解中的计算机网络
计算机网络可以简化为服务器 -> lsp路由器(网络运营商),而lsp路由器可以互连,家庭路由和企业路由器连接不同的lsp路由器。从而让全国的网络互通
网络组成部分
- 主机(客户端和服务端)(提供信息和接收信息)
- 路由器(负责转发主机之间的信息)
- 网络协议(提供统一格式,方便主机和路由器编码和解码)
信息交换方式
信息交换方式有两种电路交换和分组交换。
- 电路交换需要先建立连接才能交换信息,存在占线问题,同一条线路建立连接的数量是有上限的,当可建立连接数大于连接数,就存在了资源浪费。
- 分组交换,不会建立电路连接,不会预留资源,带宽,建立分组后,会建立输出队列,是按队列顺序输出,当队列满了的时候会丢弃轻段分组,从而发生丢包现象。在计算机网络中都采用的是分组交换,大的报文会分成小的报文,然后通过分组分发到目的地,到达之后,再由主机上的软件,把分组拼成完整的报文。
网络分层
网络分层:从低到高分为物理层,数据链路层,网络层,运输层,应用层。
协议
协议的存在依赖于连接。协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送或接收一条报文或其他事件所采取的动作。网络协议:标头+载荷
HTTP 1.1:无法多路复用(队头堵塞问题)
HTTP 2:帧
帧带来的额外好处
调整响应传输的优先级
头部压缩
Server Push
HTTP 3:QUIC
CDN:DNS劫持
- 域名解析一般由网站自己处理
- 要加速的域名则重定向到CDN厂商的域名解析服务处理
- CDN厂商根据来源确定最近的CDN服务器的IP
- 用户直接访问最近的CDN服务器
WebSocket
- 有状态的持久连接
- 服务端可以主动推送消息
- 用WebSocket发送消息延迟比HTTP低
网络安全三要素
- 机密性:攻击者无法获知通信内容
- 完整性:攻击者对内容进行篡改时能被发现
- 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
对称加密和非对称加密
- 对称加密:加密、解密用同样的密钥
- 非对称加密:加密、解密使用不同的密钥(公钥和私钥)。而且公钥加密只能用私钥解密、私钥解密只能用公钥解密
密码散列函数(哈希函数)
- 输入:任意长度的内容
- 输出:固定长度的哈希值
- 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
HTTPS
- 把HTTP的明文换成密文,再验证身份,即HTTPS
- HTTPS=HTTP + TLS
- TLS = 身份验证+加解密
- 身份验证靠PKI
- 服务端身份验证靠PKI,客户端身份验证靠HTTP协议
小结
- 网络安全三要素:机密性、完整性和身份验证
- 在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息
- PKI保证了普通用户不需要"面对面"和根证书机构交换根证书
- HTTPS使用PKI完成了除客户端身份验证以外的特性,客户端身份验证靠HTTP协议实现
总结
计算机网络可以看成网络中的网络,错综复杂。在对项目优化的时候就可以考虑计算机网络方面的优化方式,CDN就是其中的一个方式