常用网络指令
时间:2006-11-02 来源:0217
-
要连上 Internet ,那么 Linux 就得要好好的仔细的设定啰!我们这里就先介绍几个重要的网络参数设定指令:
- eth0 :表示为网络卡的代号;
- lo :表示为『内部循环 IP 』的网络卡代号,请注意,这个内部的 interface 一定要存在!千万不要关掉他!
- HWaddr :是网络卡的硬件地址,就是我们在网络基础提到的 MAC 啦!
- inet addr :就是网络卡的 IP;
- Bcast :是广播( broadcast ) 的地址;
- Mask :就是子网掩码啦;
- MTU :是 Maximum Trasmission Unit 最大传输单元(字节), 即此接口一次所能传输的最大封包,这个数值并非越大越好,也非越小越好,不过,设定错误时,可能会让您的网络无法连接上某些网站呢!请参考本章后续的 MTU 说明。
- RX :网络由启动到目前为止的接收情形;
- TX :网络由启动到目前为止的传送情形;
- collisions :网络讯号碰撞的情况说明;
- txqueuelen :是传输缓冲区长度大小意思;
- Interrupt :是 IRQ 中断地址;
- Base address :是 I/O 地址。这个 IRQ 与 I/O 在网络卡上面是可以设定的!设定的地方可以在 /etc/lilo.conf 里头来设定呢!如果您的主机上面有多张网络卡的时候,就用的着他了!可以避开问题呦!
- 显示目前主机上面的路由信息;
- 修改( 增加或删除 )主机上面的路由表!『可以建置 router 呦!』
- Destination:目标,可以是 IP 也可以是网域!至于没有规定到的,则是以 default 来表示!以上面为例,当我的机器要去 192.168.1.0 的时候,则以上表的 192.168.1.0 那一行的设定为主,但如果我要去 tw.yahoo.com 的时候,由于没有规定到!所以就要以 default 的信息为主要的路由!因此,我就会经由 140.116.141.253 这个 gateway 来传送出去我的封包啰!
- Gateway :该目标要经由哪一个网关传送?就是这一个设定值啦!
- Genmask :就是该 Destination 的 netmask 啰!例如 140.116.141.253 为 255.255.255.255 ,因为他是一个 host 而不是一个 network 呀!至于 192.168.1.0 就是 255.255.255.0 这个 C Class 啰!那如果是 default 的话,就显示 0.0.0.0 ,也就是不论是哪里,都出自这一个 gateway 就是了!
- Flages :旗标,有底下几种 Flage 呢:
- U (route is up):该路由已经启动了;
- H (target is a host):目标是一个主机( IP ),例如上面范例中的 140.116.141.253 那一个;
- G (use gateway):用来作为 gateway 的设定;
- R (reinstate route for dynamic routing):使用动态路由时,恢复路由信息的旗标;
- D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为 动态路由;
- M (modified from routing daemon or redirect):路由已经被修改了;
- ! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!)
- Iface :该设定使用的网络接口为何?
-
ifconfig :设定网络参数使用的指令
ifup,ifdown:启动与关闭某个网络适配卡
route :显示/修改路由表( route table )
ifconfig
设定网络参数使用的指令
语法:
[root@test test]# ifconfig interface [root@test test]# ifconfig interface [options] 参数说明: interface :网络适配卡代号,例如 eth0, eth1... options :主要有以下几个参数 network :网段 broadcast :广播网段 netmask :子网掩码 up|down :启动|关闭网络接口 范例: [root@test root]# ifconfig # 这个指令在没有加上网络卡时,会将所有的网络接口内容显示出来 eth0 Link encap:Ethernet HWaddr 00:50:FC:22:9C:57 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5793395 errors:0 dropped:0 overruns:0 frame:0 TX packets:6032143 errors:0 dropped:0 overruns:0 carrier:0 collisions:983 txqueuelen:100 RX bytes:534796148 (510.0 Mb) TX bytes:2607882970 (2487.0 Mb) Interrupt:10 Base address:0x6100 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:3258 errors:0 dropped:0 overruns:0 frame:0 TX packets:3258 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:170063 (166.0 Kb) TX bytes:170063 (166.0 Kb) [root@test root]# ifconfig eth0 192.168.0.2 netmask 255.255.255.0 \ > broadcast 192.168.0.255 上面再将 eth0 这个网络接口的 IP 属性修改为 192.168.0.2 这个 IP ,广播地址也跟着改变了! [root@test root]# ifconfig eth0 # 将修改完的咚咚显示出来一下! eth0 Link encap:Ethernet HWaddr 00:50:FC:22:9C:57 inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5793395 errors:0 dropped:0 overruns:0 frame:0 TX packets:6032143 errors:0 dropped:0 overruns:0 carrier:0 collisions:983 txqueuelen:100 RX bytes:534796148 (510.0 Mb) TX bytes:2607882970 (2487.0 Mb) Interrupt:10 Base address:0x6100 [root@test root]# ifconfig eth0 down <==关闭 eth0 网络卡 [root@test root]# ifconfig eth0 up <==启动 eth0 网络卡! |
ifconfig 这个东西也很好玩!尤其是您在您的网络卡尚未设定完成的时候,而且确定网络卡已经成功的驱动了之后,可以使用这个指令来驱动您的网络卡呦!另外,他的最大用处其实是来自于可以查看您的网络适配卡的参数啦!所以最常使用的就是直接输入『 ifconfig 』或者是『 ifconfig eth0 』或者是『 ifconfig ppp0 』等等的用法!倒是不建议直接用来修改您的网络卡啦!不过,如果确定要使用 ifconfig 来修改您的网络适配卡,那么可以参考上面的例子来修改呦!同时, ifconfig 也是用来做成『多 IP 』的主要指令呢!好了,我们来谈一谈上面几个简单的项目内容吧!
总而言之, ifconfig 也是一个很好用的指令啦!但是有一点必须要清楚的,那就是 ifconfig eth0 up 或者是 ifconfig eth0 down 可以使用 ifup eth0 或 ifdown eth0 来替代!不过有一点必须要先说明的,那就是 ifup 与 ifdown 是以 /etc/sysconfig/network-scripts/ifcfg-ethn 的档案来进行启动的!所以 ifcfg-eth0 必须存在才能使用 ifup !OK!底下马上来说说 ifup, ifdown。
ifup, ifdown
启动与关闭某个网络适配卡
语法:
[root@test root]# ifup [interface] [root@test root]# ifdown [interface] 参数说明: 范例: [root@test root]# ifup eth0 <==启动 eth0 这块网络卡! [root@test root]# ifdown eth0<==关闭 eth0 这块网络卡 |
手动修改网络参数使用 ifconfig ,但是档案设定的启动与关闭就得使用 ifup 与 ifdown 啰。这两个指令要比 ifconfig 简单的多!不过他却必须要有相关的档案存在才能启动呦!举个例子来说,上面我们要启动 eth0 这块网络卡的时候,那么您的 Linux 系统当中就必须要存在 /etc/sysconfig/network-scripts/ifcfg-eth0 这个网络适配卡的设定档案才行!同理可证!如果要启动 eth1 ,除了存在 eth1 这个实体网络卡之外,还要存在 ifcfg-eth1 才行!请确实了解呦!因为后面关于 Linux Router 的章节当中,我们提到的一张网卡多 IP 就是用这个观念来达成的!
route
显示/修改路由表( route table )
语法:
[root@test root]# route [-nee] [root@test root]# route add [-net|-host] 目标主机或网域 [netmask] [gw|dev] [root@test root]# route del [-net|-host] 目标主机或网域 [netmask] [gw|dev] 参数说明: -n :列出的信息以 IP 来显示 -ee :列出较长列的信息 add :增加路由信息 net :删除一个路由信息 -net :增加一个『网域』的路由,例如 C Class 的网域! -host :增加到某个 IP 主机的路由! netmask :就是 netmask 呀! gw :这个是路由的通讯闸! gw 是以 IP 来建置的 dev :这个是路由的通讯闸! dev 是以 界面 ( internet ) 代号来建置的! 范例: [root@test root]# route<==看路由的信息! Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 140.116.141.253 * 255.255.255.255 UH 0 0 0 ppp0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default 140.116.141.253 0.0.0.0 UG 0 0 0 ppp0 [root@test root]# route -n <==以 IP 的方式来显示路由! Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 140.116.141.253 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 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 140.116.141.253 0.0.0.0 UG 0 0 0 ppp0 注意到 route, route -n 这两个范例喔!使用 -n 与否会使 domain 是否进行查询, 一般来说,我都喜欢加上 -n 的,因为不必去查询正反解,显示速度较快, 此外, default gateway 就是 0.0.0.0 喔! [root@test root]# route add -net 192.168.0.0 netmask 255.255.255.0 dev eth0 # 新增一个路由规则! [root@test root]# route del -net 192.168.0.0 netmask 255.255.255.0 dev eth0 # 删除一个路由啰 [root@test root]# route add default gw 192.168.1.2 # 增加一个 default gateway 呢! 注意一下, gw 后面接的是 IP ,而 dev 后面接的则是装置代号喔! |
这个指令相当的有用!尤其是新手们最容易犯错的 gateway 设定错误的问题,都可以藉由这一个指令来检查呢!这个指令有两个主要的用途:
我们来谈一谈使用 route 时,显示的内容意义:
好了,那么如何增加或删除路由呢!就由上面的例子就可以知道啦!很简单的啦!不过需要注意的是,单纯有路由功能还不够!因为还需要有 router 的功能才行!我们将在 router 那个章节再来持续谈一谈这个问题啰!『注:当您发现下达 route 的时候,显示的速度很慢时,通常是您的路由信息有一定的问题存在!果真如此的话,请务必仔细的检查一下设定,否则对于您的网络速度会有迟滞现象呦!』
-
在网络的世界中,最常听到的一句话就是:『高手求救!我的 Linux 不能上网络!』我的天吶!不能上网络的原因多的很!而要完全搞懂也不是一件简单的事情呢!而很多的网络侦测指令其实在 Linux 里头已经都预设存在了,只要您好好的学一学基本的侦测指令,那么一些朋友在告诉您如何侦错的时候,您应该就立刻可以知道如何来搞定他啰!好了,底下我们就简单的来谈一谈几个很基本的网络常用的侦错指令啦!要好好学习呦!
- icmp:指的是 ICMP 这个协定啰!
- ttl:指的是 time to live 啦!当经过一个节点, ttl 就会减少一!而预设有 255 个!以上面为例,我的 Linux 主机连接到 tw.yahoo.com 共经过 10 个 gateway ,所以 ttl 剩下 245 !
-
ping :送一个 ICMP 的封包给某部主机
traceroute :调查连接到某部主机时,每个节点的联机速度
底下分别来谈一谈先!
ping
传送一个 ICMP 封包给某部主机
语法:
[test@test test]# ping [-b broadcast] [test@test test]# ping [-c number] host 参数说明: -b broadcast :当要 ping 一个网段时,可以使用这个方式来『广播』! -c number :后面加上 number (数字)可以限制 ping 几次! 范例: [test@test test]# ping -c 5 tw.yahoo.com <==除了IP也可以 ping domain name! PING tw.yahoo.com (202.1.237.21) from 61.28.113.1 : 56(84) bytes of data. 64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=0 ttl=245 time=7.133 msec 64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=1 ttl=245 time=7.497 msec 64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=2 ttl=245 time=6.625 msec 64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=3 ttl=245 time=6.457 msec 64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=4 ttl=245 time=6.434 msec --- tw.yahoo.com ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/mdev = 6.434/6.829/7.497/0.421 ms [test@test test]# ping -b 192.168.1.255 -c 2 <==这里必须是广播地址 WARNING: pinging broadcast address PING 192.168.1.255 (192.168.1.255) from 192.168.1.254 : 56(84) bytes of data. 64 bytes from 192.168.1.36: icmp_seq=0 ttl=255 time=191 usec 64 bytes from 192.168.1.45: icmp_seq=0 ttl=255 time=492 usec (DUP!) 64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=531 usec (DUP!) --- 140.116.44.255 ping statistics --- 2 packets transmitted, 2 packets received, +6 duplicates, 0% packet loss round-trip min/avg/max/mdev = 0.134/0.811/2.094/0.647 ms |
这个东西好用的很!不论在哪一个操作系统当中,他都是相当有用的网络侦错指令!例如您要侦测一下您的网络卡是否正确的备执行了,可以使用『ping your.NIC.IP.address 』来查阅!当然啰!加上次数更好:『ping -c 5 your.NIC.IP.address 』!无论如何,这个指令一定要记得的啦!
traceroute
调查连接到某部主机时,每个节点的联机速度
语法:
[root@test root]# traceroute [-i interface] [-g gateway] [host|IP] 参数说明: -i :使用这个 interface 来连出去!例如 eth0, ppp0 等! -g :使用这个 gateway 来连出去!例如 192.168.1.2, 140.116.141.29 等! 范例: [root@test root]# traceroute tw.yahoo.com traceroute to tw.yahoo.com (202.1.237.21), 30 hops max, 38 byte packets 1 140.116.141.253 (140.116.141.253) 123.958 ms 96.357 ms 97.810 ms 2 140.116.140.253 (140.116.140.253) 103.548 ms 87.607 ms 78.227 ms 3 163.28.112.253 (163.28.112.253) 99.522 ms 84.379 ms 79.858 ms 4 210.242.251.246 (210.242.251.246) 104.429 ms 86.622 ms 79.857 ms 5 211.22.226.50 (211.22.226.50) 97.897 ms 86.031 ms 87.177 ms 6 TaiPei-TANET-P1.BR.HiNet.NET (168.95.207.242) 101.981 ms 58.149 ms 60.231 ms 7 168.95.17.162 (168.95.17.162) 69.198 ms 63.294 ms 58.594 ms 8 210.65.200.10 (210.65.200.10) 65.950 ms 67.336 ms 63.503 ms 9 211.22.35.169 (211.22.35.169) 67.572 ms 92.535 ms 83.105 ms 10 211.22.41.89 (211.22.41.89) 106.855 ms 92.540 ms 87.201 ms 11 alteon6.tpe.yahoo.com (202.1.237.253) 122.347 ms 92.235 ms 91.266 ms |
这个指令相当的有用途,他可以用来判断当一部远程主机无法联机时候,到底封包是停顿在哪一个节点上!因为很多时候,您常常会发现『咦!网络速度怎么变慢了?』然后自己的主机似乎没有问题呀!这个时候就可以使用这个指令查检查一下,是否在联机的过程当中,有些节点被挡下来了呢?!很好用的啦!不过,万一如果出现了 *** 在 traceroute 的输出结果中,那就表示该 router 应该有点问题吶!得赶紧向上头报告去维修喔!
-
在我们主机上面,您可晓得目前有多少联机被建立了?而您的主机名称是否能够在 Internet 上面被查询到呢?这些都需要动用到某些网络观察的指令。我们底下就谈一谈几个简单的观察指令:
- netstat -a | more
- netstat -an | more
- Proto:指的是封包或者是通讯协议啦! tcp , udp 是常见的呦!
- Local Address:本地端的 IP 与 Port 号,如果 /etc/services 存在对应服务名称,就以服务名称显示;
- Foreign Address :监听哪一个地区与 port ;
- state:状态列就很多啦!基本的有:
- LISTEN :亦即监听状态中的 port !
- ESTABLISHED:已建立联机的联机情况
- TIME_WAIT:该联机在目前已经是等待的状态了!随时有可能会断线呦!
-
netstat :查阅网络信息的指令
host :显示主机名称( domain name )
nslookup :调查主机名称对应的 IP !
netstat
查阅网络信息的指令
语法:
[root@test root]# netstat [-r] [-i interface] [root@test root]# netstat [-antulp] 参数说明: -r :显示出 route 的意思; -i :显示出 interface 的内容,跟 ifconfig 类似啦! -a :显示出目前所有的网络联机状态! -n :预设情况中,显示出的 host 会以 host name 来显现,若为 n 则可以使 port 与 host 都以数字显示 -t :仅显示 tcp 封包的联机行为 -u :仅显示 udp 的封包联机状态 -l :仅显示 LISTEN 的内容 -p :同时显示此一联机的 PID 喔!(注意:只有 root 才能行使此功能!) 范例: [root@test root]# netstat -r # 嘿嘿!显示出目前的路由表!与 route 指令的功能相同。 Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 140.116.141.253 * 255.255.255.255 UH 40 0 0 ppp0 192.168.1.0 * 255.255.255.0 U 40 0 0 eth0 192.168.0.0 * 255.255.255.0 U 40 0 0 eth0 127.0.0.0 * 255.0.0.0 U 40 0 0 lo default 140.116.141.253 0.0.0.0 UG 40 0 0 ppp0 [root@test root]# netstat -i eth0 # 看看底下显示出的内容,是否跟 ifconfig eth0 类似呀!? Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 077199373 0 0 169616342 0 0 0 BMRU lo 16436 0 1130485 0 0 0 1130485 0 0 0 LRU [root@test root]# netstat -an<==显示所有的联机状态,并且以数字型态显示 [root@test root]# netstat -tul <==显示 LISTEN 的及 tcp 与 udp 的联机状态,如下: Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:mysql *:* LISTEN tcp 0 0 *:netbios-ssn *:* LISTEN tcp 0 0 *:pop3 *:* LISTEN tcp 0 0 *:http *:* LISTEN tcp 0 0 *:ftp *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:smtp *:* LISTEN udp 0 0 *:netbios-ns *:* 注意:上面的 LISTEN 表示该 port 是已经在 监听 网络服务啦!而左边的 tcp 指的是 tcp 封包! [root@test root]# netstat -anp | more <==这个指令很常下达!请记得呦! |
netstat 可是很了不起的指令,一定要学会的!尤其他可以让我们了解目前的您的主机的联机状态!与开启的 port 有哪些!所以一定得学会才行呀!如果您分别下达:
一定会发现有点奇怪?怎么有的 port 会以服务名称(例如上面例子里的 pop3 ...)有的会以 port 号码来显示呢!?嘿嘿!那就是 /etc/services 以及 -n 这个参数的用途啦!您可以发现的是,如果 netstat -a 时,显示出来的 port 号码在 /etc/services 存在对应的服务名称的时候,那么预设他就会显示出该服务名称啦!但是若在 /etc/services 找不到档案的话,那么自然就还是以 port 号码来显示的!那么加上了 -n 参数后,不论如何,他都会以 port 及 IP 来显示啦!
另外,那个 -p 也很有用呦!尤其是在一些莫名其妙的联机出现时,可以用 -p 这个参数查到 PID ,然后再以利用 kill来杀掉他呦!
善用 netstat 可以查得相当多的网络信息!尤其在关闭本机的 port 时!
host
显示主机名称( domain name )
语法:
[root@test root]# host [-a] domain_name 参数说明: -a :显示出所有的信息 范例: [root@test root]# host tw.yahoo.com <==仅显示出主机的 IP tw.yahoo.com. has address 202.1.237.21 [root@test root]# host -a tw.yahoo.com <==所有的主机信息显示! Trying "tw.yahoo.com." ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59138 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 5
;; QUESTION SECTION:
;; ANSWER SECTION:
;; AUTHORITY SECTION:
;; ADDITIONAL SECTION: Received 216 bytes from 163.28.112.1#53 in 10 ms |
这个功能跟 nslookup 几乎是相同的!但是 nslookup 多了较多的功能就是了!我们使用这个指令时,系统会自动去找 /etc/resolv.conf底下设定的 DNS 的 IP,然后根据该 IP 来侦测我们所想要知道的主机对应的 IP 咯!那么多了 -a 之后显示出来的讯息是什么?嘿嘿!别担心,在我们后续的 DNS 架设当中就会提到啦!有点耐心的往下看呦!
nslookup
查询主机名称与 IP 的对应
语法:
[root@test root]# nslookup [domain_name|IP] 参数说明: 范例: [root@test root]# nslookup tw.yahoo.com <==由 domain name 查询 IP! Note: nslookup is deprecated and may be removed from future releases. Consider using the `dig' or `host' programs instead. Run nslookup with the `-sil[ent]' option to prevent this message from appearing. Server: 163.28.112.1 Address: 163.28.112.1#53
Non-authoritative answer:
[root@test root]# nslookup 202.1.237.21 <==由 IP 查询 domain name
Non-authoritative answer:
Authoritative answers can be found from: |
这个指令就如同前面的 host 提到的,就是正查反查的的指令啦!也是利用 /etc/resolv.conf 的内容来查询的!详细的说明请参考 DNS 服务器设定一节喔!
-
用来作为远程联机操控自己主机的方法是什么呢?呵呵!简单,就是利用 telnet 啰!当然啦!这并不是很安全的方式,我们未来在后头提到 ssh 服务器的时候,会再跟大家报告 ssh 及 sftp 的用法啰!另外, telnet 用来连上 BBS 也是挺好用的哩!呵呵!那么远程传送 DATA 自然就是使用 ftp 啰!而由于目前很多的匿名网站耶,每次都要输入 anonymous 真的很烦!那么就使用 ncftp 吧!很简单使用呦!
- telnet :用来联机远程主机,当然, BBS 主机也可以联机
- ftp :远程传送数据当中,速度最快的协议之一
- ncftp :登入匿名主机最好用的文字接口 FTP 软件!
- 帮助您连接上去 BBS 查询数据;
- 帮助您测试主机端某个 端口口 的联机情况!
底下我们就谈一谈怎么样来用这些指令吧!
telnet
用来联机远程主机,当然, BBS 主机也可以联机
语法:
[root@test root]# telnet [-8] [host|IP] [port] 参数说明: -8 :可以减少乱码的情况 port:服务的埠口!例如 POP3 的 110 ,SMTP 的 25 port 等等!telnet 可以用来侦测! 范例: [root@test root]# telnet -8 bbs.sayya.org bbs.sayya.org ? SayYA Linux 信息站 ? 140.113.22.98 欢迎光临【 SayYA 信息站 】目前在线人数 [41] 人 【 SayYa Linux's BBS 站台 】
一个以 Linux 消息、知识、互动服务之专业 BBS 站 参观用账号:guest,申请新账号:new
请输入代号:guest
[root@test root]# telnet localhost 110 |
除了联机到主机以进行远程操控之外, telnet 最好用的地方就是在于:
以上面的例子来说,我们使用 telnet 就可以立刻连上 SayYa 这个专门探讨 Linux 的 BBS 站台的欢迎画面!嘿嘿!很棒吧!另外,如果您要确认本机端的 110 这个埠口是否正常时,也可以使用『 telnet + IP + port 』来侦测看看呦!很好用的工具吧! ^_^!不过,不幸的是,如果您在 Linux 终端机接口下,应该是看不到中文的啦!怎么办?!没关系,我们可以加上安装 JMCCE 这个中文套件来显示喔!这个在本章节后面继续说明咯。
ftp
远程传送数据当中,速度最快的协议之一
语法:
[root@test root]# ftp [-p] host [port] 参数说明: -p :启动 PASSIVE 模式! 范例: [root@test root]# ftp localhost <==预设是以 port 21 来进行联机 [root@test root]# ftp localhost 1354 # 如果您设定的 ftp 的 port 非正规的 21 ,则可以这样! [root@test root]# ftp localhost <==连接到远程主机 Connected to localhost (127.0.0.1). 220 localhost FTP server (Version wu-2.6.1-20) ready. Name (127.0.0.1:test): test <==输入账号 331 Password required for test. Password: <==输入密码 230 User test logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> dir <==显示远方主机的内容 ftp> cd <==变换远程主机的目录 ftp> close or bye or exit <==离开远程主机 ftp> get file <==取得远程主机的档案 ftp> mget file <==取得所有的档案,较 get 好用!例如 mget .bash* ftp> put file <==将本地端档案 file 丢到远程主机上 ftp> mputfile <==将一些档案上传咯 ftp> delete file <==杀掉远程主机的 file 档案 ftp> help <==显示求救指令! ftp> mkdir dir <==在远程主机上面建立目录 ftp> lcd <==变换本地端路径! ftp> ascii or binary <==以 ASCII 模式或 BINARY 模式捉取数据!? |
这个指令是用在传输档案上面相当好用的功能之一!尤其是在可匿名登入的 FTP 网站!例如中山大学的网站!用法就如同上面显示的一般!包括各种捉取档案的方式都写在上头了,可得好好的参考参考!不过,由于这个数据在传送的时候是以明码的方式来传送的,所以较不安全啦!建议多以 sftp 来使用之!另外,他最大的好处是可以指定 port !当您有建立非 21 port 的时候,就可以使用这个指令加上 port 号来联机啦!
ncftp
登入匿名主机最好用的文字接口 FTP 软件!
语法:
[root@test root]# ncftp [host] [root@test root]# ncftp [ftp://domain.name/path] 参数说明: 可以直接连接到 host 主机,也可以直接连接到主机的某个路径之下,相当的方便 范例: [root@test root]# ncftp ftp.nsysu.edu.tw <==连接到中山大学 FTP 站 [root@test root]# ncftp ftp://ftp.nsysu.edu.tw/Linux # 直接连接到该 FTP 主机里面的 Linux 目录下! # 不过底下的画面因为经过转存,所以产生了乱码~在 Putty 底下是正常的! NcFTP 3.0.3 (April 15, 2001) by Mike Gleason ([email protected]).
Copyright (c) 1992-2001 by Mike Gleason. Connecting to ftp.nsysu.edu.tw...
======================================================================
========================================================================
远程主机的一些服务指令:
本地端主机的一些指令功能: |
这个指令的功能就更强大了!尤其在于使用目前网络上面允许匿名登入的 FTP 网站!例如上面提到的中山大学的 FTP 网站!您可以马上登入他,然后立刻联机看看,就知道如何使用他啦!很好用的啦!! ^_^
文字界面网页浏览: lynx, wget,
-
什么?!文字界面竟然有浏览器!别逗了好不好?!呵呵!谁有那个时间在逗您呦!真的啦!有这个东西,是在文字界面下上网浏览的好工具!分别是 lynx 及 wget 这两个宝贝蛋,但是,您必需要确定您已经安装了这两个套件才行:
- lynx-2.8.5-11
- wget-1.8.2-9
- lynx :用来上网的文字界面的浏览器!他真的很不错用,尤其是要让 Linux 定期捉取某个网站的网页资料,他可是相当好用的哩!同时,如果作了部分设定,就可以直接观看中文啰!
- wget :以 HTTP 或 FTP 协议作用,来进行网络档案数据的捉取的功能!这个东西也相当的好用!可以在文字界面下直接捉取 HTTP 上面的分享的档案呦!呵呵!棒!
这两个套件的版本在 Red Hat 9 是 2.8.5-11 及 1.8.2-9 ,至于其它版本的 linux 则不见得是后面这个版本名称,所以不同也没有关系!只要将原版 CD 拿出来 mount 他之后,以 rpm 安装吧!不要说您不会呦!打屁屁!好了,假设您已经安装好了,那么这两个东西分别是什么呢?先约略的介绍一下:
底下我们就分别来谈一谈这两个可爱的小东西吧!!
lynx
文字接口下的 WWW 浏览器
语法:
[root@test root]# lynx http://web.site 参数说明: 范例: [root@test root]# lynx http://tw.yahoo.com tw.yahoo.com cookie: B=b7hd3jkukeu1e&b=2 Allow? (Y/N/Always/neVer) A # 上面输入 A 就可以接受 cookie 了! Yahoo!奇摩 (p1 of 5) [USEMAP:yk_masthead_142.gif]
小中~蓎胣语 9成国小偷跑 法国热浪 死亡人数直冲5千人 南洋-
如何冲印出好照片?
【拍卖】 [auc_ani.gif] |
这个指令的最大功用就是让我们在文字接口下使用这个浏览器来上 WWW 网页啦!真的相当的好用!您可以仔细的尝试使用看看!速度上面应该是蛮快的呦!lynx 是文字模式下最普遍也最好用的网页浏览器(browser),由于 lynx 只在画面上秀出文字及其链接(link)的点,透过操作简单的方向键及功能键,便能讯速的浏览网页,亦可下载档案。
另外,在台湾地区由于我们需要使用到 Big5 的编码表,所以需要修改一下 lynx 的设定档,亦即是 /etc/lynx.cfg 这个档案,将底下的内容修改一下:
[root@test root]# vi /etc/lynx.cfg .... 略 ....找到底下的三行字符串 ##CHARACTER_SET:iso-8859-1 <==大约在 394 行处 #ASSUME_CHARSET:iso-8859-1 <==大约在 409 行处 #PREFERRED_LANGUAGE:en <==大约在 537 行处 将上面三行的 # 符号取消,并且改成底下这样: CHARACTER_SET:big5 <==这就是 Big5 中文的编码 ASSUME_CHARSET:big5 <==跟上面的说明一样! PREFERRED_LANGUAGE:zh_TW <==这个就是语系的支持! 语系的支持方面,您可以查看一下 /etc/sysconfig/i18n 这个档案, zh_TW 指的就是台湾!做了上面设定之后,就可以看中文啰! |
此外,我们也可以使用 lynx 来进行『下载图标』的功能呦!例如我们要下载一个档案,则可以使用:
[root@test root]# lynx -dump http://the.site.doname.name/xxx.gif > file.gif |
wget
使用 wget 利用 FTP 及 HTTP 的协议来捉取数据!
语法:
[root@test root]# wget http://domain.name/file [root@test root]# wget http://ftp.nsysu.edu.tw/Unix/Web/counter/Count2.6/Count2.6/download/src/wwwcount2.6.tar.gz --14:54:45-- http://ftp.nsysu.edu.tw/Unix/Web/counter/Count2.6/Count2.6/download/src/wwwcount2.6.tar.gz => `wwwcount2.6.tar.gz' Connecting to ftp.nsysu.edu.tw:80... connected! HTTP request sent, awaiting response... 200 OK Length: 433,312 [application/x-gzip]
0K .......... .......... .......... .......... .......... 11% @ 746.27 KB/s 14:54:46 (780.73 KB/s) - `wwwcount2.6.tar.gz' saved [433312/433312] |
这个指令则是可以在文字接口中下载 WWW 里面的连结档案数据!也是相当方便的指令呢!那么如果要使用 proxy 来下载资料呢?嘿嘿!算您聪明!没错!使用 Proxy 有时候确实会让我们的下载速度变快,这个时候就需要动用的设定档啦!我们的设定档案放置在 /etc/wgetrc ,您可以这样修改一下,假设您要使用成大的 Proxy 主机:http://proxy.ncku.edu.tw 而他的连接 port 为 3128 ,所以就要这样改变啰!
[root@test root]# vi /etc/wgetrc .... 略 ....找到底下的两行字符串 #http_proxy = http://proxy.yoyodyne.com:18023/ <==在 75 行处 #use_proxy = on <==在 78 行处 将上面两行的 # 符号取消,并且改成底下这样: http_proxy = http://proxy.ncku.edu.tw:3128/ use_proxy = no |
-
或许您会觉得文字接口底下的浏览器也好,其它相关的 WWW 工具也好,只要牵涉到中文 ( big5 ) 编码的问题,就会是个『头痛的问题』。因为终端机预设状态就是无法以中文来浏览啊!真是讨厌~好在有我们自由软件的前辈们的努力,现在我们只要安装 jmcce 这个套件后,就可以在文字接口浏览中文了!真是太高兴了!既然如此,那就来给他试看看吧!
- http://jmcce.slat.org/Project/Jmcce
- ftp://cle.linux.org.tw/pub/CLE/stable/v1.0/i386/RedHat/RPMS/
JMCCE 的官方网站在:
此外,您在安装 JMCCE 之前,必须要先安装 svgalib 这个套件才行喔! svgalib 的官方网站在:
因为这次的测试当中,我选择 Red Hat 9 来进行,所以 svgalib 也可以到这个网站来下载:
还有一件很讨厌的事情,那就是 jmcce 目前仅支持 autoconf 2.13 以及 automake 1.4 而已,较新的版本会有问题,偏偏我们的 Red Hat 9 就是较新的版本,所以您也必须要到中山大学的 ftp 站台下载较旧的版本才行!另外,也需要 libtool 这个套件呢!目前我就是以 autoconf 2.13 、 automake 1.4 以及 libtool-1.4.2 来编译的说!
当然啦,为了避免上面的 RPM 档案仅能够在 Red Hat 版本上面安装,所以我也分别在两个网站上下载了最新的 Tarball 套件,如下所示:
[root@test root]# wget http://www.svgalib.org/svgalib-1.4.3.tar.gz [root@test root]# wget http://jmcce.slat.org/DOWNLOAD/jmcce-1.4RC2.tar.gz |
我这里使用的所有档案您也可以在鸟哥的私房菜里面下载:http://linux.vbird.org/download/#jmcce。然后就来安装吧!安装的过程相当的繁复,很讨厌的啦,您必须要一个套件一个套件的安装,而且为了不要让我们的系统出现问题,安装完毕之后,还需要将旧的套件移除,将原本的套件安装回来,天吶!好麻烦~跟着我一步一步的进行吧!
1. 先安装 svgalib 1.1 如果以 RPM 安装的话(较不建议): [root@test root]# rpm -ivh svgalib-*.rpm 这样就 OK 了! 1.2 如果以 Tarball 安装的话(较建议的安装模式): [root@test root]# cd /usr/local/src [root@test src]# tar -zxvf /root/svgalib-1.4.3.tar.gz [root@test src]# cd svgalib-1.4.3 [root@test svgalib-1.4.3]# cd utils/ [root@test utils]# ln -s ../src/vga.h vga.h [root@test utils]# vi Makefile # 找到底下这一行( 约在第 16 行 ): CFLAGS = $(WARN) $(OPTIMIZE) -I../include # 修改成: CFLAGS = $(WARN) $(OPTIMIZE) -I../include -L../sharedlib [root@test utils]# cd .. [root@test svgalib-1.4.3]# make install [root@test svgalib-1.4.3]# cd /usr/lib [root@test lib]# ln -s /usr/local/lib/libvga.so.1 . # 会有一些错误讯息,不过只与 man 有关,没有关系!先略过去! 2. 再安装 jmcce 这个套件吧! [root@test root]# rpm -e libtool autoconf automake # 先移除一些较新的套件咯! 2.1 先装 autoconf [root@test root]# cd /usr/local/src [root@test src]# tar -zxvf /root/autoconf-2.13.tar.gz [root@test src]# cd autoconf-2.13 [root@test autoconf-2.13]# ./configure --prefix=/usr/local [root@test autoconf-2.13]# make && make install 2.2 安装 automake [root@test autoconf-2.13]# cd /usr/local/src [root@test src]# tar -zxvf /root/automake-1.4.tar.gz [root@test src]# cd automake-1.4 [root@test automake-1.4]# ./configure --prefix=/usr/local [root@test automake-1.4]# make && make install 2.3 安装 libtool [root@test automake-1.4]# cd /usr/local/src [root@test src]# tar -zxvf /root/libtool-1.4.2.tar.gz [root@test src]# cd libtool-1.4.2 [root@test libtool-1.4.2]# ./configure --prefix=/usr/local [root@test libtool-1.4.2]# make && make install 2.4 安装 jmcce [root@test libtool-1.4.2]# cd /usr/local/src [root@test src]# tar -zxvf /root/jmcce-1.4RC2.tar.gz [root@test src]# cd jmcce-1.4RC2/ [root@test jmcce-1.4RC2]# LANG=zh_TW.Big5 [root@test jmcce-1.4RC2]# vi /etc/sysconfig/i18n # 可以将他改成中文显示喔!底下的模样修改 LANG="zh_TW.Big5" [root@test jmcce-1.4RC2]# vi genconf.sh # 找到这一行: bin_PATH="/usr/bin" # 将他改成: bin_PATH="/usr/local/bin" [root@test jmcce-1.4RC2]# ./genconf.sh ; ./genconf.sh # 这个动作要多做几次,不然老是有一些怪怪的错误讯息! # 最后还是会出现一个错误讯息,就是底下的样子: configure.in: 13: required file `build/ltconfig' not found # 不过这个讯息不会影响最后的编译结果,所以就不要管他了! [root@test jmcce-1.4RC2]# ./configure --prefix=/usr \ > --sysconfdir=/etc/chinese/jmcce [root@test jmcce-1.4RC2]# make && make install 3. 移除暂存中间档案,将新版套件安装回来! [root@test jmcce-1.4RC2]# cd /usr/local/src/autoconf-2.13/ && make uninstall [root@test autoconf-2.13]# cd /usr/local/src/automake-1.4/ && make uninstall [root@test automake-1.4]# cd /usr/local/src/libtool-1.4.2/ && make uninstall # 拿出原版光盘,安装 autoconf, automake 与 libtool 吧! |
这样就安装妥当了 jmcce 了,真的很麻烦对吧! ^_^!我就觉得很麻烦,上面的测试还仅是针对 Red Hat 9 哩,如果您的系统是非 Red Hat 的,那么请自行依照上面的步骤安装,并且自行依据屏幕上面出现的讯息作一些修订的工作吧!整体流程是不变的,只是可能会比较麻烦一点点就是了。好了,开始来使用 jmcce 吧,请注意, jmcce 目前在终端机仅支持 640x480 256 色,如果您的终端机分辨率与这个咚咚不同,那么就需要设定 grub 或者是 lilo 来设定好这样的分辨率了!只要在 grub 的 /boot/grub/menu.lst 或者是 lilo 的 /etc/lilo.conf 新增一行:『vga=769』,然后依据管理程序 ( 如果是 lilo 的话,就得执行一次 lilo 让设定生效,如果是 grub 的话,就不需要咯 ) 动作生效后,就可以重新开机 ( reboot ) 来启动啦!在启动之后,您可以在终端机执行底下的指令来启用喔! (注: jmcce 不可以在 putty 或者是其它的非标准环境中使用!切记切记!)
jmcce (程序依现行 locale 自动决定繁体模式) jmcce -b (手动强迫以 BIG5码繁体中文操作) jmcce -g (手动强迫以 GB码简体中文操作) jmcce -d (仅显示中文而不加载任何中文输入法,繁体模式自动) CTRL-SPACE ===> 中英切换 CTRL-ALT-0-9 ===> 输入法选择 CTRL-ALT-1 ===> 仓颉输入法 CTRL-ALT-2 ===> 简易输入法 CTRL-ALT-3 ===> 注音输入法 (Linux/CXterm 传统「零壹注音输入法」) CTRL-ALT-4 ===> 慈安输入法 (方快科技关慈安先生提供,含三十万词汇快速输入) CTRL-ALT-5 ===> 行列输入法 CTRL-ALT-6 ===> 英快输入法 (方快科技提供,大幅改良的英汉输入法) CTRL-ALT-7 ===> 酷音输入法 (智能型注音输入) CTRL-ALT-8 ===> 日文拼音输入法 (轻松信息提供,可用拼音输入所有假名与三万汉字词汇) CTRL-ALT-9 ===> 无虾米输入法 (只要自备合法对照表即可加挂启动) CTRL-ALT-0 ===> 内码输入法 |
呼呼!恭喜恭喜!成功啦!^_^!那么怎么关掉 jmcce 呢?您可以使用 ps -aux 找到 jmcce 之后,使用 kill 将他关闭即可,或者直接输入 exit 就可以了!
-
在网络媒体的最大传输单位中 ( Maximum Transmission Unit, MTU;针对一个封包的体积而言 ),其实是有受限制的!如果我们设定了最大传输单位超过网络媒体所能负荷的,那么除非您的操作系统本身就支持封包重新组合,否则可能会造成封包无法传递的问题。此外,因为如果封包的体积与最大传输单位无法配合,导致封包在传送的时候一再地进行重组,将会导致网络传输效能的低落喔。所以啰,我们的网络卡的 MTU 设定最好能够针对网络接口进行最佳化,这样才能让网络效能变的比较好。(注:也就是说,MTU 这个数值并不是越大越好,而是要针对您的网络接口来进行最佳化)
- Windows 系统上的检测:
- 进入 MS DOS 命令提示字符当中;
- 输入『 ping -f -l <bytes> IP』如下所示:
C:\WINDOWS> ping -f -l 1500 192.168.1.2 Pinging 192.168.1.2 with 1500 bytes of data:
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.Ping statistics for 192.168.1.2:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0msC:\WINDOWS> ping -f -l 1464 192.168.1.2 Pinging 192.168.1.2 with 1464 bytes of data:
Reply from 192.168.1.2: bytes=1464 time=10ms TTL=128
Reply from 192.168.1.2: bytes=1464 time<10ms TTL=128
Reply from 192.168.1.2: bytes=1464 time<10ms TTL=128
Reply from 192.168.1.2: bytes=1464 time<10ms TTL=128Ping statistics for 192.168.1.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 10ms, Average = 2ms
- MTU 数值的计算:
上面我们找到的数据其实是封包的体积大小,但是每个封包还都具有标头,这个标头的部分占去了 28 bytes ,所以啦,最终的 MTU 数值其实是 1464+28=1492 才对喔!
- 进入 MS DOS 命令提示字符当中;
- Linux 系统的检测:
- 在终端机输入『 ping -c <number> -M do -s <bytes> IP』,其中 number 是次数、<bytes>则是封包的体积。结果如下所示:
[root@test root]# ping -c 3 -M do -s 1472 192.168.1.2
PING 192.168.1.2 (192.168.1.2) from 192.168.1.13 : 1472(1500) bytes of data.
1480 bytes from 192.168.1.2: icmp_seq=0 ttl=255 time=2.408 msec
1480 bytes from 192.168.1.2: icmp_seq=1 ttl=255 time=2.392 msec
1480 bytes from 192.168.1.2: icmp_seq=2 ttl=255 time=2.440 msec
--- 192.168.1.2 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/mdev = 2.392/2.413/2.440/0.044 ms
[root@test root]# ping -c 3 -M do -s 1473 192.168.1.2
PING 192.168.1.2 (192.168.1.2) from 192.168.1.13 : 1473(1501) bytes of data.
ping: sendto: Message too long
ping: sendto: Message too long
ping: sendto: Message too long--- 192.168.1.2 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss
- 在终端机输入『 ping -c <number> -M do -s <bytes> IP』,其中 number 是次数、<bytes>则是封包的体积。结果如下所示:
另外,如果您曾经使用 Windows 2000 作为联机分享的主机时,可能会发现在 client 端发生『总是有些网站无法顺利的连接上去!但是在主机端则没有问题!』,或者是『客户端无法浏览某些网站或是无法发送内含附件的电子邮件』,这真是伤脑筋呀!其实,发生这样的问题通常就是与 MTU 的数值不正确有关的。如何解决呢?呵呵!需要藉由修改『每一个 Client 端计算机的 MTU 来修正』才行吶。一般而言,MTU 在网络卡 (EtherNet) 的默认值为 1500 单位!至于其它的接口如下:
网络接口 | MTU |
EtherNet (一般的网络接口,这也是默认值) | 1500 |
PPPoE(ADSL用的) | 1492 |
Dial-up(modem) | 576 |
由上面的表格我们可以知道,预设的网络接口 MTU 是 1500 ,那 PPPOE 使用的是 1492,自然而然的 MTU 要求并不相同,所以啦!有一些网页、邮件数据等等的咚咚就可能会因为这样而无法进行正确的传送吶。那该如何解决呢?其实只要调整 Client 端网络卡的 MTU 值即可完全解决此一问题!而且藉由调整 MTU 值也可以增进网络效率呢。 那首要课题自然就是知道您的网络卡所可以负荷的 MTU 啦!因此我们第一步就是要找到适合的 MTU 。
找出 MTU 值:
由于 MTU 与 Router 具有较大的关系,因此,我们通常是在 Client 端的计算机上,对我们的 Router (就是 NAT 主机,这部主机可能是 Linux 也可能是 Windows 系统喔!) 进行 MTU 数值的侦测吶。底下我们分别针对 Windows 与 Linux 进行 MTU 数值的检测喔。(注:假设您的 Router 的 IP 为 192.168.1.2 ):