下内容均来自个人笔记并重新梳理,如有错误欢迎指正!
如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~
写在前边
本文将对 Kubernetes 网络涉及的相关概念进行总体梳理,以作为后文展开的基础,便于大家学习理解。
概念总览
OSI 七层模型:该模型将网络间信息传输的过程分为 7 层
物理层(Physical Layer)
数据链路层(Data Link Layer)
网络层(Network Layer)
传输层(Transport Layer)
会话层(Session Layer)
表示层(Presentation Layer)
应用层(Application Layer)
TCP/IP 四层模型:该模型由 OSI 七层模型演化而来,实际上并不是单指 TCP 和 IP 协议,而是一个协议簇,包含了 IP、TCP、UDP、FTP、SMTP 等多种协议。
链路层(Link Layer)
IP 层(IP Layer)
传输层(Transport Layer)
应用层(Application Layer)
帧头(Frame Header):包含物理层和数据链路层的信息,如发送方和接收方的 MAC 地址 网络头(Network Header):包含网络层的信息,如 IP 地址 传输头(Transport Header):包含传输层的信息,如 TCP 或 UDP 端口号 数据(Payload):实际要传输的数据内容 帧尾(Frame Trailer):包含错误检测和校验信息,如 CRC 校验码
封装(Encapsulation):数据在发送时,从应用层开始向下经过每一层,每一层都会添加相应的头信息 传输(Transmission):数据包通过网络介质传输 解封装(Decapsulation):数据包到达目的地后,从物理层开始向上每一层去除头信息,直到应用层 错误检测(Error Detection):在传输过程中,数据包可能会因为各种因素而损坏,帧尾中的校验信息用于检测错误
路由表:是存储在路由器或网络设备中的一张表,它包含了到达不同网络目的地的路径信息。路由表中的每一项通常包含目的网络、子网掩码、下一跳地址、接口、路由协议、路由优先级等信息 路由协议:用于在网络设备(路由器)之间交换路由信息,以构建和维护路由表。常见的路由协议包括 BGP(Border Gateway Protocol)、OSPF(Open Shortest Path First)、RIP(Routing Information Protocol)等 路由选择:是决定数据包从源到目的地的最佳路径的过程。这通常基于路由表中的信息,并可能考虑路径的成本、可靠性和负载等因素 静态路由:是手动配置的路由条目,不会随着网络变化而自动调整 动态路由:是路由器通过动态路由协议,从相邻网络设备自动学习和更新的路由条目 默认路由:一种特殊路由,当路由表中没有匹配的路由条目时,数据包会被发送到默认路由指定的下一跳
源网络地址转换(SNAT,Source Network Address Translation):修改一个 IP 数据包源地址的 NAT 过程,用于为私有网络中的服务器等资源,提供访问公有网络的能力 目标网络地址转换(DNAT — Destination Network Address Translation):修改一个 IP 数据包目标地址的 NAT 过程,用于将私有网络中的服务发布到公有网络,供公有网络的用户访问
网络前缀 :用于标识整个网络或子网 主机标识:用于标识该网络或子网上主机的特定接口
Flannel 的 HOST-GW 模式 Calico 的 BGP 模式
Flannel 的 VXLAN 模式 Calico 的 IPIP、VXLAN 模式 IPIP 是在原始包的基础上封装成 IPv4 包 VXLAN 本质是一个 UDP 包
二层隧道协议:对应 OSI 模型中的数据链路层,使用帧作为数据交换单位,将数据封装在点对点协议的帧中通过互联网络发送,协议包含 PPTP、L2TP、L2F 等 三层隧道协议:对应 OSI 模型中的网络层,将数据包封装在附加的 IP 包头中传输,协议包含 GRE、IPSec、GRE 等。Linux 原生支持多种三层隧道,其底层实现原理都是基于 tun 设备
书籍推荐
最后推荐一本笔者从 Docker 进阶到 Kubernetes 自学过程中,受益较深的书籍。笔者经常复读,并结合工作实践不断加深理解和体会,可谓常读常新。希望这本书可以帮助到更多对 Kubernetes 感兴趣或刚开始学习的读者。