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

126 阅读6分钟

计算机网络概论

第一次做笔记,如果哪里有错误的地方,还请各位批评指正!

网络结构

网络组成部分:

  • 主机:服务端、客户端
  • 路由器、交换机
  • 网络协议

1.主机就是指计算机网络中的终端设备,接受服务的是客户端,提供服务的就是服务端。
2.路由器可以实现不同网络之间的互通。
3.网络协议指计算机网络中用于实现数据传输和通信的规则和标准,就是为不同网络之间的沟通提供一个标准。

网络结构:区域网、城域网、广域网。

分类的标准可以简单的看作是网络的大小/范围,区域网 < 城域网 < 广域网。

常见的有像校园网、企业内网等等,都是区域网。

网络传输方式:电路交换、分组交换

电路交换分组交换
通信线路建立连接时间长,但独享线路无需建立连接,动态分配线路
传输方式建立连接后直接传输,直至结束将数据切分为较小的数据包再进行传输
通信时延小,专用线路通信有一定时延(存储、转发)
线路利用率低,线路独占高,线路非独占可共享
灵活性差,线路故障无法绕路好,线路故障可绕路
适用场景实时性要求高、通信质量要求高的场景,如电话、视频等传输数据量较大,对延时性要求不高的场景

此外,
电路交换还有控制性强、适用范围广的特点;
分组交换还有提供多目标服务(可多目的地址),但需要较大存储缓存空间、传输额外信息量(目标地址、源地址等)的特点。[1]^{[1]}

网络分层模型:主要有以下三种 图片来自参考链接[2]

图片来自参考链接[2]

分层就是让网络通信的流程转变为各个层级的通信,且它们之间职责分明,能够各司其职,这么做也便于日后的维护和修改。

协议:指计算机网络中用于实现数据传输和通信的规则和标准,例如UDP协议、HTTP协议、FTP协议、Telnet协议、SMTP协议等等。

注意:协议的存在是依赖于连接的。

TCP/UDP

image.png

图片来自参考链接[3]

决定要用哪一种传输协议,要具体情况具体分析,像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协议的表现:

某个客户端初次访问时: image.png

当同一客户端再次访问时: image.png

WebSocket

HTTP 协议如果服务器有连续的状态变化,客户端要获知往往使用"轮询"(如二维码扫描)。

但是出现 WebSocket 后,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,做到了双向对话,它是属于服务器推送技术的一种。

图片.png

图片来自青训营视频

CDN

CDN是内容分发网络(Content Delivery Network)。通过CDN,可以让用户可以就近找到服务器请求获取所需的内容,这样提高了响应速度,也减少了网络拥堵。它解决了HTTP协议之外的问题。

CDN的推、拉策略: 图片.png

在平常使用一些第三方库时,往往也能看到cdn的引入: 图片.png

安全(SSL/TLS/基础密码学)

网络安全三要素:

  • 机密性:攻击者无法获知通信内容
  • 完整性:攻击者对内容进行篡改时能被发现
  • 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信

加密方式:

  • 对称加密:加密、解密用同样的密钥
  • 非对称加密:加密、解密使用不同的密钥(公钥和私钥) ,而且公钥加密只能用私钥解密、私钥加密只能用公钥解密

决定要用哪一种加密方式,要具体情况具体分析。相较于非对称加密,对称加密速度快,操作简单,但是安全性低。 像QQ登录的过程中就同时使用到了两种加密方式:TEA加密算法和ECDH非对称加密算法。

密码散列函数(哈希函数):

  • 输入:任意长度的内容
  • 输出:固定长度的哈希值
  • 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的

例如md5、sha256等等,本质上就是个不可逆的加密算法,通过比较加密后得到的哈希值是否一致来判断输入是否正确,现在网上常见的破解md5似乎就只是记录正常输入-加密后的哈希值,来进行破译。

不过宏观来说,已经有中国科学院院士王小云教授就破解了MD5算法👍,破解了MD5的神话。

实现身份验证: 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证。

数字签名(指纹) = 私钥加密(密码散列函数(原文))

消息 = 原文 + 数字签名

根证书是证书链的尽头,验证的一连串证书称为证书链,分发证书、验证证书的基础设施称为PKI(Public Key Infrastructure),所以想要实现身份验证、通信双方需要先有秘密信息,即根证书中的公钥。

HTTPS就是 HTTP + TLS,TLS = 身份验证 + 加/解密

服务端验证靠PKI,客户端验证靠HTTP协议

参考资料

[1] 电路交换、报文交换、分组交换的特点和比较_线路交换,报文交换,分组交换的特征_Kaysen_Yan的博客-CSDN博客

[2] 一篇文章,只用看三遍,终生不忘网络分层 - 知乎 (zhihu.com)

[3] 面试官:说说UDP和TCP的区别及应用场景 - 知乎 (zhihu.com)