Docker相关
Docker 是一个开源的应用容器平台,它允许开发者构建、打包、分发和运行任何应用——从简单的命令行工具到复杂的微服务架构。Docker 的核心概念主要包括:
-
容器 (Containers): Docker 容器是轻量级的、可执行的独立软件包,包含应用程序及其所有依赖(如库、配置文件等)。容器之间相互隔离且资源控制精确,每个容器都拥有自己的独立视图和资源集合(文件系统、CPU、内存等),但它们共享宿主机的内核。
-
镜像 (Images): Docker 镜像是创建容器的基础,是一个只读模板,包括了运行时所需的程序、库、环境变量及配置文件等。镜像是分层存储结构,通过
Dockerfile
文件来定义构建过程,并可以在 Docker 仓库中发布和分享。 -
仓库 (Registry): Docker Hub 和其他自托管仓库为镜像提供集中存储和分发服务。用户可以上传自己的镜像或下载官方或第三方提供的镜像。
-
非对称隔离与资源利用:Docker 容器不同于传统的虚拟机,它利用操作系统级别的技术(如Linux上的cgroups和namespaces)实现了进程级别的隔离,而非模拟完整的硬件栈。因此,Docker 容器启动速度快,占用资源少,易于迁移和扩展。
-
安全性:容器之间的隔离保证了安全性和稳定性,同时,Docker 还提供了访问控制机制以确保容器内的资源不会被未授权访问。
-
版本管理与标准化部署:Docker 提供了一种一致的方式来构建和部署应用,使得开发、测试和生产环境的差异最小化,从而简化持续集成和交付流程。
随着 Docker 技术的发展,它已经不仅仅局限于 Linux 平台,还支持在 Windows 上运行 Docker 容器,并且有针对企业级应用场景的 Docker EE(Enterprise Edition),提供了额外的企业级功能和服务。
2 TCP拥塞控制(快速恢复、快速重传)
TCP拥塞控制是一种网络传输协议中用于防止过多数据包同时在网络中传播导致网络拥塞的机制。其中,快速重传和快速恢复是TCP拥塞控制中的两个重要算法。
-
快速重传(Fast Retransmit):
- 当接收端收到一个失序的数据段(即不是按照序列号递增顺序接收到的数据段),它会立即发送重复确认(Duplicated ACKs)。例如,如果接收方期待序列号为300的分组,但收到了400,它就会再次确认上次正确收到的最后一个分组200。
- 发送端在连续收到三个或更多的相同ACK时(都确认了同一个序列号),会认为分组300-399可能已经丢失,并立即启动快速重传算法,无需等待重传定时器超时。这样可以更快地检测并处理丢包,显著减少延迟。
-
快速恢复(Fast Recovery):
- 在快速重传后,发送端进入快速恢复阶段。通常有两种策略:TCP Tahoe的“一阶段”快速恢复和TCP Reno的“两阶段”快速恢复。
-
TCP Tahoe的一阶段快速恢复: 发送端在发现丢包后,首先将拥塞窗口(cwnd)减半(称为拥塞避免阈值,ssthresh),然后设置cwnd等于当前未确认的数据量(即已发送但尚未收到确认的分组数)。接下来,每收到一个新的ACK,就增加cwnd的大小(通常是1个MSS,最大报文段大小),直到cwnd达到新的ssthresh值,此时退出快速恢复,进入拥塞避免阶段。
-
TCP Reno的两阶段快速恢复: 发送端同样先将ssthresh减半,然后将cwnd设置为新的ssthresh加3(对应于已发送但未确认的三个分组)。在快速恢复阶段,发送端不再对每一个新到达的ACK增大cwnd,而是在收到新的ACK确认了之前未被确认的新数据时才增加cwnd。当收到第四个新ACK或者超时发生时,退出快速恢复,进入拥塞避免阶段。
-
- 在快速重传后,发送端进入快速恢复阶段。通常有两种策略:TCP Tahoe的“一阶段”快速恢复和TCP Reno的“两阶段”快速恢复。
这两种策略的共同目标都是尽快恢复丢失的数据包,同时避免加剧网络拥塞。通过快速重传和快速恢复机制,TCP能够更灵敏、高效地应对网络拥塞情况。