计算机网络概论
第一次做笔记,如果哪里有错误的地方,还请各位批评指正!
网络结构
网络组成部分:
- 主机:服务端、客户端
- 路由器、交换机
- 网络协议
1.主机就是指计算机网络中的终端设备,接受服务的是客户端,提供服务的就是服务端。
2.路由器可以实现不同网络之间的互通。
3.网络协议指计算机网络中用于实现数据传输和通信的规则和标准,就是为不同网络之间的沟通提供一个标准。
网络结构:区域网、城域网、广域网。
分类的标准可以简单的看作是网络的大小/范围,区域网 < 城域网 < 广域网。
常见的有像校园网、企业内网等等,都是区域网。
网络传输方式:电路交换、分组交换
| 电路交换 | 分组交换 | |
|---|---|---|
| 通信线路 | 建立连接时间长,但独享线路 | 无需建立连接,动态分配线路 |
| 传输方式 | 建立连接后直接传输,直至结束 | 将数据切分为较小的数据包再进行传输 |
| 通信时延 | 小,专用线路通信 | 有一定时延(存储、转发) |
| 线路利用率 | 低,线路独占 | 高,线路非独占可共享 |
| 灵活性 | 差,线路故障无法绕路 | 好,线路故障可绕路 |
| 适用场景 | 实时性要求高、通信质量要求高的场景,如电话、视频等 | 传输数据量较大,对延时性要求不高的场景 |
此外,
电路交换还有控制性强、适用范围广的特点;
分组交换还有提供多目标服务(可多目的地址),但需要较大存储缓存空间、传输额外信息量(目标地址、源地址等)的特点。
网络分层模型:主要有以下三种
分层就是让网络通信的流程转变为各个层级的通信,且它们之间职责分明,能够各司其职,这么做也便于日后的维护和修改。
协议:指计算机网络中用于实现数据传输和通信的规则和标准,例如UDP协议、HTTP协议、FTP协议、Telnet协议、SMTP协议等等。
注意:协议的存在是依赖于连接的。
TCP/UDP
决定要用哪一种传输协议,要具体情况具体分析,像QQ是以UDP为主、TCP为辅。
HTTP 1 / HTTP2 / HTTP3 (QUIC)
- HTTP1:
- HTTP2:因为HTTP1无法多路复用,所以出现了HTTP2。 它的特点是使用帧传输,可以实现调整相应传输的优先级、头部压缩 和 Server Push。
- HTTP3:因为HTTP2丢包时造成的效率低下问题,出现了HTTP3。HTTP3为解决这一问题,基于UDP协议,提出了具有可靠性的QUIC协议,它可以为除HTTP协议以外的应用层协议提供支持。
具体而言:当HTTP2多路复用的连接中出现了丢包的情况,就会导致传输效率反倒比HTTP1低。因为出现丢包时,整个 TCP 都要开始等待重传,即后面的所有数据传输都会被阻塞。
但是对于 HTTP1,可以开启多个 TCP 连接,这种情况下只会影响其中一个连接,剩余的 TCP 连接还可以正常传输数据。
QUIC协议的表现:
某个客户端初次访问时:
当同一客户端再次访问时:
WebSocket
HTTP 协议如果服务器有连续的状态变化,客户端要获知往往使用"轮询"(如二维码扫描)。
但是出现 WebSocket 后,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,做到了双向对话,它是属于服务器推送技术的一种。
CDN
CDN是内容分发网络(Content Delivery Network)。通过CDN,可以让用户可以就近找到服务器请求获取所需的内容,这样提高了响应速度,也减少了网络拥堵。它解决了HTTP协议之外的问题。
CDN的推、拉策略:
在平常使用一些第三方库时,往往也能看到cdn的引入:
安全(SSL/TLS/基础密码学)
网络安全三要素:
- 机密性:攻击者无法获知通信内容
- 完整性:攻击者对内容进行篡改时能被发现
- 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
加密方式:
- 对称加密:加密、解密用同样的密钥
- 非对称加密:加密、解密使用不同的密钥(公钥和私钥) ,而且公钥加密只能用私钥解密、私钥加密只能用公钥解密。
决定要用哪一种加密方式,要具体情况具体分析。相较于非对称加密,对称加密速度快,操作简单,但是安全性低。 像QQ登录的过程中就同时使用到了两种加密方式:TEA加密算法和ECDH非对称加密算法。
密码散列函数(哈希函数):
- 输入:任意长度的内容
- 输出:固定长度的哈希值
- 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的。
例如md5、sha256等等,本质上就是个不可逆的加密算法,通过比较加密后得到的哈希值是否一致来判断输入是否正确,现在网上常见的破解md5似乎就只是记录正常输入-加密后的哈希值,来进行破译。
不过宏观来说,已经有中国科学院院士王小云教授就破解了MD5算法👍,破解了MD5的神话。
实现身份验证: 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证。
数字签名(指纹) = 私钥加密(密码散列函数(原文))
消息 = 原文 + 数字签名
根证书是证书链的尽头,验证的一连串证书称为证书链,分发证书、验证证书的基础设施称为PKI(Public Key Infrastructure),所以想要实现身份验证、通信双方需要先有秘密信息,即根证书中的公钥。
HTTPS就是 HTTP + TLS,TLS = 身份验证 + 加/解密
服务端验证靠PKI,客户端验证靠HTTP协议
参考资料
[1] 电路交换、报文交换、分组交换的特点和比较_线路交换,报文交换,分组交换的特征_Kaysen_Yan的博客-CSDN博客