在Linux下配置TCP/IP(2)
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
最后做一个测试来证明一切都如同我们讲到的那样运行,ping 另一个网络上的主机;应该可以接收到响应。如果没有接收到响应,则重新检查您的配置。
要熟悉 route 其它的选项和参数,请输入 man route 。
netstat 程序
如果管理任意规模的 TCP/IP 网络,则 netstat 程序是一个相当有价值的工具。它可以显示内核路由表,活动网络连接的状态和每个已安装网络接口的一些有用的统计信息。
象大多数 Linux 管理命令行程序一样,netstat 可以通过其后面的附加选项或标志来选择所显示信息的细节数量和/或信息的范围。一些常用选项有:
-a — 显示所有连接的信息,包括那些正在侦听的
-i — 显示所有已配置网络设备的统计信息
-c — 持续更新网络状态(每秒一次)直至被人为中止(^C)
-r — 显示内核路由表
-n — 以数字(原始)格式而不是已解析的名称显示远程和本地地址
-t — 仅显示 TCP 套接字信息(不包括任何 UCP 套接字信息)
-v — 显示 netstat 的版本信息
输入 man netstat 可获得所有可用标志的完整列表和详细说明每个标志的用途。请注意还可以组合这些标志,所以输入 netstat -rn 将以原始的 IP 地址格式显示关于本地和远程主机(n)的系统路由表(r)。
显示活动的网络连接
netstat 支持一组显示活动或非活动的套接字的选项:-t、-u、-w 和 -x 分别显示活动的 TCP、UDP、RAW 或 UNIX 套接字连接。如果加上 -a 标志,还会显示等待连接的(换句话说,就是侦听)套接字。这将为您显示现在正在系统上运行的所有服务器。
例如:在主机 phoenix 上输入 netstat -ta 会显示下列内容:
[tom@phoenix tom]$ netstat -ta
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 40 phoenix.syroidmanor:ssh 192.168.1.5:1132 ESTABLISHED
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 phoenix.syroidmano:1028 hydras.syro:netbios-ssn ESTABLISHED
tcp 0 0 phoenix.syroidmano:1027 raidserver:netbios-ssn ESTABLISHED
tcp 0 0 *:printer *:* LISTEN
tcp 0 0 *:auth *:* LISTEN
tcp 0 0 *:1024 *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
上述输出显示大多数的服务器仅仅在等待到来的连接(LISTEN)。但是,第一行显示主机 phoenix 和 IP 地址为 192.168.1.5 之间的连接;第三和第四行显示两个 netbios 连接(Samba SMB 共享)。
用 netstat 查看路由表
当使用 -r 标志时,netstat 显示内核中的路由表,这类似于输入 /sbin/route :
[tom@phoenix tom]$ netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
-n 选项强制 netstat 以点分四组 IP 数字的形式,而不是主机和网络名称的形式输出地址。当您不想通过网络(例如,用 DNS 或 NIS 服务器)进行地址查询时,这个选项特别有用。
第二列显示路由项中所指向的网关。如果没有使用网关,就会显示星号。第三列是路由的网络掩码。内核在将信息包的 IP 地址与路由的目的地 IP 地址进行比较之前,将 Genmask 值与信息包的 IP 地址逐位进行“与”操作,从而使路由“通用化”。
第四列显示路由的标志:U 表示处于活动状态,H 表示主机,G 表示网关,D 表示动态路由,而 M 表示已经修改过。
用 netstat 查看路由表,续
[tom@phoenix tom]$ netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
接下来的三列显示 MSS、Window 和 irtt,它们将被应用于通过该路由建立的 TCP 连接。MSS(Maximum Segment Size)表示“最大分段尺寸”,也是内核所构建以通过该路由发送的数据报的最大尺寸。Window 表示系统一次从远程主机接收突发的最大量数据。
首字母缩写词 irtt 代表“初始往返时间(initial round trip tim)”。TCP 协议确保主机间可靠地发送数据,如果数据已经丢失,则重新发送。TCP 协议一直对发送给远程端点的数据报和接收到的确认所花费的时间进行记数,以便知道假定要重发数据报前需要等待的时间;这个过程称为往返时间。TCP 协议将使用第一次建立连接时所用时间作为初始往返时间的值。对于大多数类型的网络,用缺省值就够了,但对某些速度较慢的网络(特别是某些业余的分组无线网络),这个时间太短了,会造成不必要的重发。可以使用 route 命令设置 irtt 值。在上面这个路由表中,这些字段均为零值,这表明正在使用缺省值。
最后,最后这个字段表示的是所显示的路由使用的网络接口。
用 netstat 显示一些网络接口使用的统计信息
用 -i 选项调用 netstat 可以显示所有已配置接口的一些有用的统计信息 — 这是一个用于排除网络故障的非常有用的工具。有了该命令,很容易检查连接的状态以及连接是否“正常”。
[tom@phoenix tom]$ netstat -i
Kernel Interface table
eth0 Link encap:Ethernet HWaddr 00:10:5A:00:87:22
inet addr:192.168.1.20 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10554374 errors:0 dropped:0 overruns:0 frame:0
TX packets:8528339 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:19 Base address:0xc800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:5612 errors:0 dropped:0 overruns:0 frame:0
TX packets:5612 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX packets 和 TX packets 行分别显示了已经接收到的信息包或已经发送了的信息包数目以及出错的信息包、丢失的信息包以及溢出的 RX/TX 统计信息。最常见的接口错误都是源于不正确的配置,所以,如果遇到了某些困难,最好再三检查所有的设置来进行诊断。
假使接口已经启动,则应该没有信息包排队等候发送(txqueuelen)— 如果有,则可能是由于网络电缆或网卡有问题。首先换一根备用电缆,然后重新检查连接。RX/TX 错误应该近乎为零。如果 TX 错误过多,则表示网络已经饱和或物理连接有问题;如果 RX 错误过多,则表示网络已经饱和、物理连接有问题或主机过载。如果遇到过高的冲突率(冲突率是输出信息包(output packet)的百分比,而不是从发送/接收信息包的总数中计算得出),它可能也表示网络已经饱和;通过从同一子网上的另一台主机执行 netstat -i 命令并比较结果来证实这一点。
要解决网络中错误,一定要仔细地以及系统地分析接口的所有方面(硬件和软件),这是必要的。不要匆忙行事,……啊……我们提到了总是要先检查网络电缆。在这一点,相信我。
结束语
在本教程中,我们已经讨论了 TCP/IP 的历史、OSI 模型和它与 TCP/IP 设计的关系、IP 寻址、子网划分和路由 — 所有这些都是从理论角度来阐述的。然后我们着手研究了如何在 Red Hat 7.0 下初始化 TCP/IP 网络,以及讲述了 Red Hat 下的一些文件是做什么用的。接下来,我们探讨了如何配置网络接口以及如何指定本地局域网和“外部世界”间的路由。最后,本教程探讨了 netstat 程序以及如何使用该程序来检查网络是否正常。
确实,需要汲取许多知识,但是 TCP/IP 是一个很大的主题,有数百条的分支,一个人不可能在两三天内完全掌握它。事实仍然是:TCP/IP 是因特网的主干,路由是将所有主机和网络“粘”在一起的“粘合剂”,而 IP 地址代表我们在这个世界里“冲浪”时所要访问的地方。当您想到这一点,并考虑到过去三、四年人们对计算机领域,特别是因特网的需求飞速增长时,您会觉得这些基础设施确实在非常好地支撑这些。
- 最新评论
