计算机网络-CN408

计算机网络-CN408
mengnankkzhou知识重点
1.拥塞机制和流量控制
流量控制:
防止发送方发送数据过快,导致接收方来不及处理,从而造成数据丢失。他是在点对点通信的时候,就是我们端口之间连接的地方。
- 滑动窗口(Sliding Window):接收方通过 TCP 报文首部的“窗口大小”字段,告知发送方自己当前的处理能力(接收缓冲区剩余空间)。
- 接收窗口(rwnd):接收方根据自己的接收能力动态调整窗口大小,发送方根据接收方通告的窗口大小调整发送速率,确保发送速率不超过接收方的处理能力。
- 零窗口探测(Zero Window Probe):如果接收方通告窗口大小为 0,发送方会停止发送数据。为了防止死锁(接收方一直没有机会发送非零窗口通告),发送方会定期发送窗口探测报文,询问接收方的窗口大小。
底层实现:
- TCP 协议栈会在接收到数据时,根据接收缓冲区的剩余空间更新
rwnd的值。 - 发送方发送数据时,会根据
rwnd的值以及拥塞窗口(cwnd)来动态调整发送速率。 - TCP 协议栈实现了零窗口探测机制,定期发送探测报文。
拥塞机制:
防止发送方发送数据过多,导致网络拥堵,从而降低整个网络的传输效率。全局网络,考虑整个网络的拥塞情况。
- 拥塞窗口(cwnd):发送方维护一个拥塞窗口,表示当前网络允许发送的数据量。
- 慢启动(Slow Start):连接建立初期,
cwnd从一个较小的值开始,每次收到确认(ACK)后,cwnd指数增长,直到达到慢启动阈值(ssthresh)。 - 拥塞避免(Congestion Avoidance):当
cwnd达到ssthresh后,进入拥塞避免阶段,每次收到确认后,cwnd线性增长,避免一下子发送过多数据导致拥塞。
当拥塞发生之后我们会执行:
超时重传
:如果发送方在一定时间内没有收到 ACK,则认为网络发生拥塞,采取以下措施:
ssthresh设置为cwnd / 2。cwnd设置为 1(回到慢启动阶段)。
快速重传(Fast Retransmit)
:如果发送方连续收到 3 个重复的 ACK,则认为发生丢包,立即重传丢失的报文,并采取以下措施:
ssthresh设置为cwnd / 2。cwnd设置为ssthresh + 3。
快速恢复(Fast Recovery):重传丢失报文后,进入快速恢复阶段,每次收到一个 ACK,
cwnd增加 1,直到收到新的数据 ACK,然后进入拥塞避免阶段。
源码实现:
- TCP 协议栈实现了上述拥塞控制算法(慢启动、拥塞避免、快速重传、快速恢复)。
- 协议栈会根据网络反馈(ACK、超时、重复 ACK)动态调整
cwnd和ssthresh的值。 - TCP 协议栈还会根据路径 MTU 发现(Path MTU Discovery)来调整最大报文段长度(MSS),避免 IP 分片。
2.TLS四次握手
TLS(Transport Layer Security)协议用于在应用层和传输层之间提供安全的通信。TLS 握手协议用于建立安全的 TLS 连接。 以下描述TLS 1.2的四次握手。
流程:
- Client Hello:客户端发送一个 Client Hello 消息到服务器,其中包含客户端支持的 TLS 版本、加密算法套件列表、随机数等信息。
- Server Hello:服务器收到 Client Hello 消息后,选择一个 TLS 版本和加密算法套件,回复一个 Server Hello 消息,其中包含服务器选择的 TLS 版本、加密算法套件、随机数等信息。服务器还发送 Certificate 消息,包含服务器的证书。
- Server Key Exchange:服务器发送 Server Key Exchange 消息,包含用于密钥交换的信息,例如 RSA 公钥或者 Diffie-Hellman 参数。如果服务器证书包含了足够的密钥交换信息,则可以省略此消息。
- Client Key Exchange:客户端发送 Client Key Exchange 消息,包含用于密钥交换的信息,例如预主密钥(Pre-Master Secret)。
- Change Cipher Spec:客户端发送 Change Cipher Spec 消息,通知服务器后续的报文将使用加密算法进行加密。
前面是确认加密,后面是开始进行消息交换得握手。也是基于TCP的三次握手
- Finished:客户端发送 Finished 消息,对之前的握手消息进行加密和 MAC 运算,用于验证握手的完整性。
- Change Cipher Spec:服务器发送 Change Cipher Spec 消息,通知客户端后续的报文将使用加密算法进行加密。
- Finished:服务器发送 Finished 消息,对之前的握手消息进行加密和 MAC 运算,用于验证握手的完整性。
在TLS 1.3中, 优化了握手过程,提升了性能和安全性, 废除了不安全的加密算法,采用更安全的密钥交换算法。 TLS 1.3 握手过程减少到只需要三步。
评论
匿名评论隐私政策
TwikooValine
✅ 你无需删除空行,直接评论以获取最佳展示效果












