Linux 系统 在使用过程中,可能会遇到各种网络问题。例如不能通过 SSH 连接到其他计算机、 IP 表出现问题或无法访问网站。

遇到这种情况,我们可以尝试通过应用 OSI 模型来排除网络故障。通过使用基于开放系统互连 (OSI) 架构的自下而上的方法,我们将揭示网络故障排查的方法,为大家提供有效解决各种网络困难所必需的知识和工具。

1] 什么是 OSI 模型(Open Systems Interconnection)

开放系统互连 (OSI) 模型是一个概念框架,将网络通信的功能分为七个不同的级别。简而言之,OSI 标准化了各种计算机系统如何相互通信。

 

OSI 层级 典型功能应用
                7.应用层
  • 终端用户层
  • HTTP、FTP、IRC、SSH、DNS
                6.表示层
  • 句法层
  • SSL、SSH、IMAP、FTP、MPEG、JPEG
                5.会话层
  • 同步及发送至端口
  • APIs、Sockets、WinSock
                4.传输层
  • 端至端连接
  • TCP、UDP
                3.网络层
  • 数据包
  • IP、ICMP、IPSec、IGMP
                2.数据链路层
  • 数据帧
  • 以太网、PPP、交换机、网桥
                1.物理层
  • 物理结构
  • 同轴电缆、光纤、无线、集线器、中断器
表.1 OSI 七层模型

2] 应用 OSI 模型进行故障排查

假设以下情况,现有一台托管的网站不能正常工作,服务器使用 Linux 作为操作系统。很显然,为分而治之是一种更为有效的故障排查方法。

OSI 模型恰好是一种有效分解问题的方法,这样我们就可以有条不紊地简化环境,以达到最终解决问题的目的。

物理层

在排查问题时,通常最好从底层开始,因为 OSI 模型的规则是下层为上层应用提供服务。物理层是 OSI 模型中的最底层,此层中的关键组件包括以太网电缆、集线器和交换机。在此级别,我们应该检查电源和设备状态,以及检查接口统计信息。

  • “ifconfig”工具提供了系统中所有以太网卡的详细信息
  • 使用”ip link show “命令可以显示物理接口的状态,如果结果显示”down”,则表示物理接口未运行
  • 如果网络接口默认情况下未激活,需要手动启用,则使用”ip link set eth0 up”将接口启用
  • 如果想要获得更为详细的信息,可以安装使用”ethtool”工具

数据链路层

数据链路层支持连接到同一网络的两个设备之间的数据传输。此层有两个组件,第一个组件是介质访问控制 (MAC) 层,包括硬件寻址和访问控制操作。第二个组件是逻辑链路层,支持在不同介质之间创建逻辑连接。

此层的一个常见问题是两个服务器无法建立连接。可以使用 ping、traceroute、arp、macof 和 Wireshark 等工具来测试数据链路层。这有助于验证同一网络组内设备之间数据帧的正确传输和接收。

网络层

网络层的作用是使数据在两个网络之间轻松传输。在 OSI 模型第 3 层工作的网络设备是路由器。路由器的主要工作是使网络更容易相互通信,使用 IP 地址是此层的一部分。

如果此阶段出现问题,我们主要应该查找 IP 地址问题。可以通过命令”ip -br address show”来查看网络接口是否已分配 IP 地址。如果主机是使用 DHCP 获取动态 IP 地址,则可能无法从 DHCP 服务器获取 IP 地址。

还经常出现的一个问题是缺少上游网关或缺少默认路由。当 IP 数据包传输到不同的网络时,需要将数据发送至网关进行转发处理。

了解数据包到其最终目的地的路由对于网关至关重要,路由表包含各种路由的网关列表,可以使用”ip route”命令进行网络路由管理。我们还可以通过向网关或网关之外的其它网关发送 ping 来检查其连通性。

传输层

传输层使用传输控制协议 (TCP) 和用户数据报协议 (UDP) 等协议来控制系统之间的网络流量并确保数据有效流动。

传输层负责发送数据包、查找错误、控制数据流并按正确顺序排列它们。如果这一层遇到问题,例如端口未侦听,就不无建立连接。假如服务端口已被使用,我们的服务就可能无法启动。可以通过运行”netstat -antlp | grep  LISTEN”来查看哪些端口已打开。

如果我们的本地系统无法与远程端口建立连接,特别是端口 80 上的 HTTP。则可以使用 telnet 命令尝试与指定的主机和端口创建 TCP 连接,此功能非常适合进行远程 TCP 连接测试。

如果要检查远程 UDP 端口,则可以使用”netcat”实用程序。

会话层

这一层负责促进两个设备之间通信的启动和终止(例如:身份验证)。启动和终止通信的时间段称为会话。

在这一层出现故障,应该检查服务器的凭据、证书、会话 ID 和客户端的 cookie 等。

表示层

OSI 模型的表示层负责格式化和转换数据,以便将其呈现给用户。

SSL 或 TLS 加密方法是此层的关键部分。出现问题时,我们可以考虑数据的加密和解密问题。

应用层

系统从用户那里获取输入并将输出传回给用户,各种应用协议的使用让故障需要定位到应用本身。

我们应该验证服务器上的配置文件是否存在任何错误设置。此外,查看服务器上的日志文件以获取有关问题的更多详细信息也很重要。

常用的应用层协议包括:

  • File Transfer Protocol (FTP)
  • Simple Mail Transfer Protocol (SMTP)
  • Secure Shell (SSH)
  • Internet Message Access Protocol (IMAP)
  • Domain Name Service (DNS)
  • Hypertext Transfer Protocol (HTTP)

在 Linux 中排除网络问题可能是一项艰巨的任务,但通过应用 OSI 模型的原理,我们可以更高效、系统地诊断和解决问题。

从物理层开始,我们首先检查硬件组件,使用 ifconfig 和 ip link show 等工具来验证连接性。在数据链路层,我们专注于 MAC 地址,并使用 ping 和 Wireshark 等实用程序进行测试。在网络层,我们深入研究了 IP 寻址和路由,使用 ip route 和 ping 等命令来诊断问题。过渡到传输层,我们解决了 TCP 和 UDP 相关问题,利用 netstat 和 telnet 等命令来检查开放端口并建立连接。同时,我们需要关注会话管理和加密在会话层和表示层的重要性。最后,在应用层,我们研究了 FTP、SMTP、SSH 和 HTTP 等特定协议,强调了配置文件和日志分析在解决问题中的重要性。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注