网络通信的基础:多种协议详解
网络协议,犹如一套约定俗成的规则,指导着网络设备如何高效地进行信息交换。 它们类似于人类沟通时的礼仪和规范,确保信息准确无误地传递。 网络协议细致地规定了数据包的结构、设备身份的识别方式,以及错误和冲突的应对机制。
从功能上看,网络协议可归纳为三大类:通信协议、安全协议和管理协议,每一类都扮演着网络运作中不可或缺的角色。
1. 通信协议
通信协议专注于实现网络设备间的数据和信息交流。它们定义了数据的格式化、传输以及接收方式,从而保证了通信的有效性。 常见的例子包括:HTTP/HTTPS、FTP、TCP 和 UDP。
2. 安全协议
安全协议的核心目标是保护网络数据传输的机密性和真实性。 它们建立安全的通信渠道,防止敏感信息被截获或篡改。 例如,SSL/TLS 用于数据加密,SSH 用于安全远程访问,而 SMTPS 和 POP3S 则是电子邮件协议的安全版本。
3. 管理协议
管理协议用于网络设备和资源的配置、监控和控制。它们辅助网络管理员高效地配置和排除网络故障。 DHCP 用于动态 IP 地址分配,SNMP 用于网络设备管理,ICMP 用于网络诊断,而 BGP 则用于路由和可达性信息的传递。
接下来,我们将深入探讨每种类别中的一些常见协议。
常用通信协议
HTTP 协议
HTTP(超文本传输协议)是网络浏览器和服务器之间通信的基石。 它是一种应用层协议,构建在 OSI 模型之上。
当您在浏览器中输入网址并按下回车键时,浏览器会向服务器发送 HTTP 请求。服务器接收到请求后,会处理该请求并返回 HTTP 响应,其中包含所请求的网页、图像、视频或其他资源。
HTTP 是一种无状态协议,这意味着服务器不会维护来自同一客户端的先前请求的任何信息。 每次请求都被视为独立且隔离的事务。 这种简洁性是 HTTP 被广泛采用的关键原因之一。
HTTP 定义了多种请求方法,如 GET(检索数据)、POST(发送待处理数据)、PUT(更新资源)和 DELETE(删除资源)。 这些方法决定了客户端希望在服务器上执行的操作类型。 HTTP 响应通常包含一个状态代码,指示请求的结果。 例如,状态码 200 表示请求成功,而 404 表示未找到请求的资源。
HTTP 经历了多个版本的发展,HTTP/1.1 是长期以来最广泛使用的版本。为了提升性能,后来出现了 HTTP/2 和 HTTP/3(也称为 QUIC)。
HTTPS 协议
HTTPS(安全超文本传输协议)是 HTTP 协议的安全扩展,用于计算机网络中的安全通信。 它通过使用 SSL/TLS 等加密协议对浏览器和服务器之间交换的数据进行加密,为 HTTP 添加了一层安全保护。 即使有人截获传输的数据,也无法轻易读取或破译它。
HTTPS 还包含服务器身份验证机制。 当浏览器通过 HTTPS 连接到网站时,该网站会提供由可信证书颁发机构 (CA) 颁发的数字证书。 该证书用于验证网站的身份,确保客户端连接到目标服务器而非恶意服务器。
使用 HTTPS 的网站在其 URL 开头会带有“https://”标识,表明该网站正在使用安全连接。 HTTPS 通常使用端口 443 进行通信,而 HTTP 使用端口 80。Web 服务器利用这种端口区别来区分安全和非安全连接。
搜索引擎(例如 Google)在搜索排名中会优先考虑使用 HTTPS 的网站。 当安全的 HTTPS 网页包含通过不安全的 HTTP 连接提供的元素(如图像或脚本)时,浏览器还会向用户发出警告。 这称为“混合内容”,会对安全性构成威胁。
如果您想了解如何为网站获取 SSL 证书,可以参考相关文章。
文件传输协议
文件传输协议 (FTP) 是一种标准的网络协议,用于在计算机网络上的客户端和服务器之间传输文件。 FTP 基于客户端-服务器模型运行,即客户端发起与服务器的连接,以请求和传输文件。
FTP 使用两个端口进行通信,并可以以两种模式运行:主动模式和被动模式。 端口 21 用于控制连接,负责客户端和服务器之间的命令和响应传输。
主动模式是传统的客户端-服务器模式,它会打开一个额外的端口(通常在 1024-65535 范围内)用于数据传输。 当客户端位于防火墙或 NAT 设备后面时,通常会使用被动模式,这时服务器会打开一个随机的高位端口进行数据传输。
FTP 通常需要身份验证才能访问服务器上的文件,用户必须提供用户名和密码才能登录。 一些 FTP 服务器还支持匿名访问,允许用户使用“anonymous”或“FTP”等通用用户名登录,并使用电子邮件地址作为密码。
FTP 支持两种数据传输模式:ASCII 模式和二进制模式。 ASCII 模式用于文本文件,而二进制模式用于非文本文件(例如图像和可执行文件)。传输模式的选择取决于文件的类型。
传统的 FTP 协议并非安全协议,因为它以明文形式传输包括用户名和密码在内的数据。 安全 FTP (SFTP) 和 FTP over SSL/TLS (FTPS) 是更安全的选择,它们会对数据传输进行加密,以保护敏感信息。
关于 SFTP 和 FTPS 的比较以及如何选择合适的协议,您可以参考相关文章。
传输控制协议
传输控制协议 (TCP) 是 IP 协议族中重要的传输层协议之一。 它在通过 IP 网络在设备之间提供可靠且有序的数据传输方面发挥着关键作用。 在数据传输开始之前,TCP 会在发送方和接收方之间建立连接,这涉及到三向握手(SYN、SYN-ACK、ACK)以及数据交换完成时的连接终止过程。
TCP 还支持全双工通信,允许在已建立的连接内同时双向发送和接收数据。
TCP 会监控网络状况,并调整其传输速率,以避免网络拥塞。 该协议包含错误检查机制,用于检测和纠正传输过程中的数据损坏。 如果发现数据段损坏,接收方会请求重传。
TCP 使用端口号来识别设备上的特定服务或应用程序。 端口号有助于将传入数据路由到正确的应用程序。 TCP 连接中的接收方会发送确认 (ACK) 以确认数据段的接收。 如果发送方在一定时间内没有收到 ACK,则会重传数据段。 TCP 会维护发送方和接收方的连接状态信息,这有助于跟踪数据段的顺序并管理连接。
互联网协议
IP(互联网协议)是一种核心协议,用于在计算机网络(包括我们所称的互联网)中实现通信和数据交换。 IP 使用数字寻址系统来识别网络上的设备,这些数字地址被称为 IP 地址。 IP 地址可以是 IPv4 或 IPv6。
IPv4 地址通常采用四组十进制数的形式(例如,192.168.1.1),而 IPv6 地址更长并使用十六进制表示法。
IP 负责在不同网络上的设备之间路由数据包。路由器和交换机在根据 IP 地址将数据包引导至预期目的地方面发挥着至关重要的作用。 IP 使用数据包交换方法,这意味着数据被分成更小的数据包,以便通过网络传输。 每个数据包都包含一个源 IP 地址和一个目标 IP 地址,这使得路由器能够做出转发决策。 IP 被视为无连接协议,它不会在传输数据之前在发送方和接收方之间建立专用连接。 每个数据包都被独立处理,并可能采取不同的路线到达目的地。
UDP 协议
UDP(用户数据报协议)是一种无连接的轻量级协议,它提供了一种无需建立正式连接即可通过网络发送数据的方法。 与 TCP 协议不同,UDP 在发送数据之前不会建立连接,它只是将数据打包成数据报并将其发送到目的地。 UDP 不保证数据的传输,也不提供错误检测和纠正机制。 如果数据包丢失或无序到达,则由应用层来处理。
UDP 的开销比 TCP 少,因为它不包含流量控制、纠错或确认等功能。 这使得 UDP 速度更快,但可靠性较差。 UDP 也没有内置的拥塞控制机制,因此可能会用 UDP 流量淹没网络,从而可能导致拥塞。 UDP 通常用于低延迟和高速数据传输比保证交付更重要的场景,例如实时音频和视频流、在线游戏、DNS 和某些物联网应用程序。
UDP 的一大优点是其多路复用功能,允许多个应用程序使用相同的 UDP 端口,从而通过端口号区分不同的数据流。
为了更好地理解 UDP 的工作原理,我们可以用一个简单的例子来类比。 想象一下,您想在嘈杂的操场上使用弹力球向朋友发送消息。 您决定使用 UDP,这就像在没有任何正式对话的情况下扔球一样。 具体流程如下:
- 您将信息写在纸上并将其包裹在球上。
- 您将球扔向朋友的方向。 您不会等待朋友发现它或确认他们收到了它,而是直接扔出,希望他们接住。
- 球弹起并到达您的朋友,他们试图接住它。 但有时,由于噪音,球可能会从他们手中弹开或乱序到达。
- 您的朋友阅读纸上的消息,如果他们成功接住球,就会收到消息。 如果他们没有接住球,您也不会知道。
在这个例子中:
球代表 UDP 协议,无需建立正式连接即可发送数据。
您在不等待响应的情况下发送球,类似于 UDP 无连接且不确保交付的特点。
球弹跳或丢失的可能性象征着 UDP 缺乏可靠性。
您的朋友阅读消息,就像应用层处理通过 UDP 接收到的数据,这可能会处理丢失的数据。
常用安全协议
SSH 协议
SSH(安全外壳)是一种网络协议,用于通过不安全网络在客户端和服务器之间进行安全通信。 它提供了一种通过命令行界面远程访问和管理设备的方式,具有高度的安全性。 SSH 利用加密技术来验证客户端和服务器。 这确保您连接到正确的服务器,并且服务器可以在允许访问之前验证您的身份。 通过 SSH 连接传输的所有数据都是加密的,这使得任何截获通信的人都难以窃听正在交换的数据。
图片来源: Stack Overflow
SSH 使用密钥对进行身份验证。密钥对由公钥(与服务器共享)和私钥(您保密)组成。 当您连接到 SSH 服务器时,您的客户端会使用您的私钥来验证您的身份。 此外,SSH 还支持传统的用户名和密码身份验证,但这种方式安全性较低,通常不被推荐,特别是对于面向互联网的服务器。 SSH 默认使用端口 22 进行通信,但为了安全起见,您可以更改此设置。更改端口号有助于减少自动攻击。 SSH 通常用于远程服务器管理、文件传输(使用 SCP 和 SFTP 等工具)以及对远程命令行界面的安全访问。 它被广泛用于类 Unix 操作系统的管理,也可以通过各种软件解决方案在 Windows 上使用。
邮件传输协议
SMTP(简单邮件传输协议)是一种标准协议,负责将外发电子邮件从客户端或电子邮件服务器发送到收件人的电子邮件服务器。 SMTP 是电子邮件通信的基本组成部分,它与 IMAP/POP3 等其他电子邮件协议结合使用,以实现完整的电子邮件生命周期,包括发送、接收和存储电子邮件。 当您撰写电子邮件并在电子邮件客户端中单击“发送”时,客户端会使用 SMTP 将消息转发到您的电子邮件提供商的服务器。
SMTP 使用端口 25 进行未加密的通信,而使用端口 587 进行加密通信(使用 STARTTLS)。 端口 465 也用于加密 SMTP 通信,但不太常见。 许多 SMTP 服务器需要身份验证才能发送电子邮件,以防止未经授权的使用。身份验证方式包括使用用户名和密码或更安全的方法(例如 OAuth)。 这些 SMTP 服务器通常充当中继,它们接受来自客户端(例如您的电子邮件应用程序)的传出电子邮件,并将其转发到收件人的电子邮件服务器。 这有助于通过互联网路由电子邮件。 可以通过 TLS 或 SSL 进行加密来保护 SMTP 通信的安全,尤其是在通过电子邮件发送敏感或机密信息时。
常用管理协议
POP3 协议
POP3(邮局协议版本 3)是一种常用的电子邮件检索协议,用于将电子邮件从邮件服务器获取到电子邮件客户端应用程序。 POP3 被设计为以“存储转发”方式工作,即从服务器检索电子邮件,然后通常在客户端设备上存储副本后将其从服务器中删除。 一些电子邮件客户端提供在服务器上保留电子邮件副本的选项,但这并非默认行为。 POP3 使用端口 110 进行未加密的通信,而端口 995 通常用于使用 TLS/SSL 的安全 POP3 通信。
POP3 是一种无状态协议,它不会跟踪您已经下载的电子邮件。 每次连接到服务器时,它都会检索所有未读消息。 如果您从多个设备访问电子邮件,这可能会导致同步问题。
POP3 主要用于从收件箱检索电子邮件,它可能不支持从服务器上的其他文件夹(如已发送的项目或草稿)检索电子邮件。 由于 POP3 不会在服务器和客户端之间同步电子邮件文件夹,因此在一台设备上执行的操作(例如删除电子邮件)不会反映在其他设备上。 因此,建议使用 POP3 的安全版本(POP3S 或 POP3 over SSL/TLS),它会对电子邮件客户端和服务器之间的通信进行加密,以提高安全性。 与 IMAP(互联网消息访问协议)相比,POP3 目前的使用频率较低。 IMAP 提供了更高级的功能(例如文件夹同步),并允许多个设备更有效地管理同一邮箱。
边界网关协议
BGP(边界网关协议)是一种标准化的外部网关协议,用于网络中在自治系统 (AS) 之间交换路由和可达性信息。自治系统是指受单个组织控制的 IP 网络和路由器集合,该组织向互联网提供统一的路由策略。 BGP 是一种路径向量协议,它会跟踪数据包到达目的地的路径(自治系统列表)。 此信息可以帮助 BGP 路由器根据策略和路径属性做出路由决策。
BGP 主要用于确定数据在穿越不同组织或 ISP 运营的多个网络时所采取的最佳路径。 BGP 还支持路由聚合,通过将多个 IP 前缀汇总到单个路由公告中,有助于减小全局路由表的大小。 BGP 协议使用多种机制来防止路由环路,包括使用 AS 路径属性和水平分割规则。 BGP 既可以用于公共互联网,也可以用于专用网络。 在公共互联网中,它用于在 ISP 和大型网络之间交换路由信息。 在专用网络中,它用于内部路由,并通过边界路由器连接到互联网。
动态主机配置协议
DHCP(动态主机配置协议)用于自动为 TCP/IP 网络上的设备分配 IP 地址和其他网络配置设置。 DHCP 过程通常包括以下四个主要阶段:
DHCP 发现:当设备加入网络时,它会发出 DHCP Discover 广播消息,以查找可用的 DHCP 服务器。
DHCP 优惠:网络上的 DHCP 服务器使用 DHCP Offer 响应 DHCP Discover 消息。 每个服务器都提供一个 IP 地址和相关的配置选项。
DHCP 请求:设备选择 DHCP 提供之一,并将 DHCP 请求消息发送到所选服务器,以请求提供的 IP 地址。
DHCP 确认:DHCP 服务器通过发送确认 IP 地址分配的 DHCP 确认消息来确认请求。
为了更好地理解 DHCP 的工作原理,我们可以用一个简单的例子来类比。想象一下,您有一个家庭 Wi-Fi 网络,并且希望您的设备(如手机和笔记本电脑)连接到该网络,而无需手动设置每个设备的网络设置。 这时 DHCP 就派上了用场:
- 假设您的智能手机刚加入您的家庭 Wi-Fi 网络。
- 智能手机发出一条消息:“我是新来的,有人能给我一个 IP 地址和其他网络信息吗?”
- 作为 DHCP 服务器的 Wi-Fi 路由器听到该请求,并回应:“当然,我有一个可用的 IP 地址,还有你需要的其他网络设置(例如,子网掩码、默认网关和 DNS 服务器)。”
- 智能手机接收到此信息,并自动使用提供的 IP 地址和网络设置进行配置。
智能手机现在可以访问互联网,并与家庭网络上的其他设备进行通信。
ICMP 协议
ICMP(Internet 控制消息协议)是一种网络层协议,用于 IP 套件中,以实现通信并提供有关网络操作状态的反馈。 ICMP 主要用于报告错误,并提供与 IP 数据包处理相关的诊断信息。 例如,如果路由器在转发 IP 数据包时遇到问题,则会生成 ICMP 错误消息,并将其发送回数据包的源。 常见的 ICMP 错误消息包括“目标不可达”、“超时”和“参数问题”。
ICMP 最知名的应用之一是“ping”命令,该命令用于检查主机的可达性。 此 ping 命令会将 ICMP Echo Request 消息发送到目标主机。 如果主机可达,则会使用 ICMP Echo Reply 消息进行响应。 这是一种用于测试网络连接的简单方法。
ICMP 还用于路径最大传输单元 (PMTU) 发现。 PMTU 是可以沿路径传输的最大 IP 数据包大小,而无需分段。 “需要分段”和“数据包太大”等 ICMP 消息用于确定给定路径的适当 MTU,这有助于避免分段并优化数据传输。 此外,这些消息还可以用于跟踪数据包从源到目的地所需的时间,“超时”消息就用于此目的。
简单网络管理协议
SNMP(简单网络管理协议)是一种用于管理和监控网络设备及系统的应用层协议。 SNMP 基于管理器-代理模型运作,主要包含两个组件:
SNMP 管理器:管理器负责向 SNMP 代理发出请求并收集信息,还可以设置代理的配置参数。
SNMP 代理:代理是运行在网络设备上的软件模块或进程,负责存储有关设备配置和性能的信息,并响应来自 SNMP 管理器的请求。
MIB(管理信息库)是一个分层数据库,用于定义网络设备上被管理对象的结构和组织。 它可以作为 SNMP 管理器和代理的参考,确保它们能够理解彼此的数据。
SNMP 有三个常用的版本:
SNMPv1:SNMP 的原始版本,使用团体字符串进行身份验证。由于缺乏安全功能,其安全性较低。
SNMPv2c:对 SNMPv1 的改进版本,支持其他数据类型并改进了错误处理。
SNMPv3:最安全的 SNMP 版本,提供加密、身份验证和访问控制,解决了早期版本中的许多安全问题。
SNMP 可用于各种网络管理任务,例如监控带宽利用率、跟踪设备正常运行时间、远程配置网络设备,以及在发生特定事件(如系统故障或超出阈值)时接收警报。
总结
希望本文对您了解各种网络协议有所帮助。 您可能还会对网络分段及其实现方式感兴趣。