所谓的软件问题,绝大部分就是 IP 参数设定错误啊,路由不对啊,还有 DNS 的 IP 设定错误等等的, 这些问题都是属于软件设定啦!只要将设定改一改,利用一些侦测软件查一查,就知道问题出在哪里了!基本的问题有:
- 网络卡的 IP/netmask 设定错误:
例如:同一个 IP 在同一个网段中出现造成 IP 冲突、子网掩码设定错误、网络卡的驱动程序使用错误、网络卡的 IRQ、 I/O Address 的设定冲突等等; - 路由的问题 (route table):
最常见的就是预设路由 (default gateway) 设定错误了!或者是路由接口不符所导致的问题, 使得数据封包没有办法顺利的送出去。 - 通讯协议不相符:
最常发生在不同的操作系统之间的通讯传输,例如早期 Windows 98 与 Windows 2000 之间的『网芳』 若要达成沟通,则 Windows 98 必须要加装 NetBEUI 这个通讯协议才行。又例如两部 Linux 主机要透过 NFS 通讯协议传输数据时,两边都得要支持 rpcbind 这个启动 RPC 协议的程序才行! 这些通讯协议我们都会在后面的章节分别介绍的啦! - 网络负荷的问题 (loading):
当同时有大量的数据封包涌进 Server 或者是 Hub 或者是同一个网域中, 就有可能造成网络的停顿甚至挂点!另外,如果区网内有人使用 BT (P2P 软件) 或者是有人中毒导致蠕虫充满整个区网,也会造成网络的停顿问题; - 其他问题:
例如:一些 port 被防火墙挡住了,造成无法执行某些网络资源;应用程序本身的 Bug 问题;应用程序中用户的网络设定错误;以及不同的操作系统的兼容性问题等等。
问题的处理
既然问题发生了,就要去处理他啊!那如何处理呢?以上面的星形联机图示为例,把握两个原则:
- 先由自身的环境侦测起,可以由自身 PC 上的网络卡查起,到网络线、到 Hub 再到调制解调器等等的硬件先检查完。 在这个步骤当中,最好用的软件就是 ping ,而你最好能有两部以上的主机来进行联机的测试;
- 确定硬件没问题了,再来思考软件的设定问题!
实际上,如果网络不通时,你可以依序这样处理:
- 了解问题:这个问题是刚刚发生?还是因为之前我做了什么动作而导致无法联机? 例如之前鸟哥曾经更新过一个核心,结果该核心并不能驱动鸟哥的新网卡...
- 确认 IP:先看看自己的网卡有无驱动?能否取得正确的 IP 相关参数来联机?
- 确认区网联机:利用 ping 来沟通两部主机 (路由器或 IP 分享器),确定网络线与中继的 hub/switch 工作正常;
- 确认对外联机:看主机或 IP 分享器能否依据第四章的方法顺利取得 IP 参数,并以 ping 的方法确定对外联机是可以成功的 (例如 ping 168.95.1.1);
- 确认 DNS 查询:利用 nslookup 或 host 或 dig 检查 www.google.com 看看;
- 确认 Internet 节点:可以利用 traceroute 检查各节点是否没问题?
- 确认对方服务器正常服务:是否对方服务器忙线中?或他的机器挂了?
- 确认我方服务器:如果是别人连不上我这部主机,那检查主机某些服务正确启动否?可利用 netstat 检查。或是否某些安全机制的软件没有设定好,例如 SELinux 这项机制;
- 防火墙或权限的问题:是否由于权限设定错误所致? 是否由于你的机器有防火墙忘记启用可联机的埠口所致?这个可以透过 tcpdump 来处理!
透过这些处理动作后,一般来说,应该都可以解决你无法上网的问题了!当然啦,如果是硬件的问题, 你可能最需要的是......『送修吧孩子!』