网络化:DevOps 工程的必要基础(Networking: The Essential Foundation for DevOps Engineering)
李升伟 编译
理解网络化基础知识
你是否曾想过是什么真正让卓越的DevOps工程师与众人区别开来?答案是网络化。是的,对网络的基本理解不仅仅是有帮助的——它是绝对必要的。在当今以微服务、容器和分布式系统为主宰的互联互通世界中,对网络原理的深入了解是必不可少的。
在深入探讨DevOps特定网络的技術深度之前,让我分享一下为什么这种知识在我们的领域中变得不可或缺。以下是在DevOps中,为什么网络知识至关重要的几个关键原因:
基础设施管理:DevOps工程师需要设计、部署和维护支持现代云和混合应用的网络安全架构。
故障排除:当复杂系统中出现问题时,了解网络连接性、协议和路由对于快速诊断和解决至关重要。
安全实施:DevOps专业人员必须实施适当的网络安全控制措施,包括防火墙、VPN和适当的子网隔离。
CI/CD管道配置:确保您的构建和部署管道具有适当的网络连接性和安全性。
在深入探讨针对DevOps的网络之前,我发现掌握基础知识至关重要。让我解释一下我已理解的几个关键组件和概念:
核心硬件组件:
集线器(Hubs):硬件式网络设备,将数据传输到所有与之相连的设备上,无论目标接收者是谁
交换机(Switches):智能式网络设备,使用MAC地址将数据传输到特定的设备上,比集线器更有效率
适配器(Adapters):用于将设备连接到网络并将数据在设备和网络上进行转换
以太网(Ethernet):局域网中最标准的有线数据传输方法
介质-电缆或WAP(无线接入点):通过物理电缆或无线介质传输数据;无线接入点是一种允许其他设备通过WiFi连接的设备;无线保真度)
基本网络概念:
数据:通过网络传输的信息使各种应用程序和服务能够使用
节点(Nodes):网络的终端设备,如计算机、服务器、打印机等
帧(Frames):存在于OSI模型的数据链路层的 数据包 ,包含寻址和信息校验信息
客户端(Client):请求资源的计算机、设备或软件
服务器(Server):向客户端提供资源的计算机或设备
对等体(Peer):作为客户端或服务器运行的装置,在不使用集中式服务器的情况下共享资源 (常见于P2P网络上)
IP地址:分配给网络上设备的唯一数值标识符 (以下将进一步解释)
MAC地址:永久分配给网卡的网络接口硬件地址 (稍后详细说明)
防火墙:(Firewalls)规则集合用于保护并监控设备和/或网络上传入和传出的流量
内部网:(Intranet)组织内部的内部网中 devices 可以访问共享资源
外部网:(Extranet)受控的网络允许授权的外部用户访问组织的内部网
有了这些基础知识在手,我已经确定了八个关键的网络概念是每个 DevOps 工程师都应该彻底理解的:
八个关键的 DevOps 网络支柱
1. 开放系统互连(OSI)模型
我了解到 OSI 模型解释了计算机如何通过七个不同的层次进行通信:
物理层:通过集线器、交换机、适配器、以太网和电缆等物理媒体传输原始比特流
数据链路层:使用包含路径信息、通过MAC地址传递的源/目标信息、有效载荷数据和错误校验信息的帧来管理网络设备之间的数据包传输
网络层:确定数据应遵循的最佳路径
传输层:使用TCP和UDP等协议处理数据传输
会话层:维护设备之间的连接,处理身份验证和权限
表示层:准备应用程序可以使用的数据格式
应用层:使各种应用程序和服务能够使用数据
2. 协议:网络的“语言”
协议是管理网络通信的基本规则集合。以下是一些协议类型:
TCP(传输控制协议):在发送数据之前与目标设备建立可靠连接,确保所有内容都能正确到达。这是大多数Web应用的基础。
UDP(用户数据报协议):这是一种无连接协议,它遵循“发射并忘记”的方法。虽然不如TCP可靠,但它提供了更低的延迟——非常适合游戏和流媒体服务(如Netflix、Twitch)。
IP(互联网协议):为设备分配唯一地址,实现互联网连通性。理解IPv4(32位,四位十进制格式由点分隔)和IPv6(128位,十六进制格式由冒号分隔)对我的工作至关重要。
3. 端口:“应用程序通信的门道”
端口作为通信端点允许设备在不同服务之间发送和接收数据。如果你正在阅读这篇文章,你是否曾想过为什么我们可以一次性启动多个前端、后端和数据库名字空间的端口?比如说我们在本地机器上有五个React.js前端项目,并从package.json中运行dev脚本’npm run dev’——第一个端口将是localhost:3000,第二个将是localhost:3001……一直到localhost:3004。这里我们有端口3000, 3001, 3002, 3003, 3004在我们的系统中无缝地发送和接收数据。然后如果我们想启动一个带有端口30的后端项目,它将给出“端口已占用”的错误提示,然后可能使用可用的端口或你作为用户将分配一个未使用的端口号,比如3005。
一些关键的标准端口号包括:
- FTP:文件传输协议 - 20;SFTP - 安全文件传输协议 - 21(用于安全文件传输)
- SSH:安全外壳 -22(用于安全远程访问)
- SMTP:简单邮件传输协议 - 25(用于电子邮件传输)
- DNS:域名系统 -53;(AWS将其服务命名为Route 53就是这个原因吧 😄)
- HTTP:超文本传送协议 - 80(标准Web流量)
- HTTPS:超文本传送安全套接字层的缩写形式 -443 (安全的Web流量)
4. 路由器:“交通指挥官”
路由器连接网络设备并管理它们之间的数据传输。它们使用路由表执行路由操作——这些是存储在路由器中的专用数据库包含路径信息、源/目标信息和最佳的数据旅行路线。
5. 域名系统(DNS):“让互联网人性化”
DNS将人类可读的域名(如google.com)转换为机器可读的IP地址。对于人类来说很难记住像192.168.1.1 (IPv4) 或2001:0db8:85a3:0000:0000:8a2e:0370:7334 (IPv6)这样复杂的IP格式,这使得DNS对可用性至关重要。
DNS还提供了诸如缓存(更快响应时间)和要求重定向等附加功能。DevOps工程师需要深入理解DNS系统记录类型A, AAAA, CName, DName, NS, MX记录:
- A记录(A Record):将域名映射到IPv4地址
- AAAA记录(AAAA Record):将域名映射到IPv6地址
- CNAME记录(CNAME Record):从一个域创建别名指向另一个域;例如myweb.com会重定向到web.com。
- DNAME记录(DNAME Record):将一个域的所有子域重定向到另一个域
- NS记录(NS Record):指定域的主权名称服务器
- MX记录(MX Record):指导电子邮件流向适当的邮件服务器
6. 子网划分:“高效组织IP空间”
我了解到子网划分是将较大的IP地址块划分为更小、更易于管理的段落的做法这改善了网络的组织安全性性能这些都是DevOps基础设施管理的关键方面。
7. 虚拟专用网络(VPN):“保护连接”
VPN为互联网连接创建安全的隧道加密了在服务器中传递的数据这项技术在DevOps工程中至关重要例如与分布在全球各地的团队一起工作时需要安全访问敏感资源。
8. 必要的网络工具
我每天依赖的诊断工具有:
- ipconfig (Windows) 和 ifconfig (Linux),用于查看网络接口配置
- netstat 用于检查网络连接和路由表
- ping 用于测试基本连通性
- curl 用于通过URL转移数据
- nslookup 用于查询DNS服务器
综合起来看
理解这些网络概念不仅扩展了我的知识——它改变了我的DevOps工程方法,每个组件都与其它组件相互关联共同构成了现代云基础设施运行的基础。
原文链接:https://dev.to/noruwa/networking-the-essential-foundation-for-devops-engineering-14d1