第七章 網路相關工具
這一章會講到幾個常用的跟網路相關的指令 / 工具。
ping
我想這個應該常常看到, 甚至連鄉土劇都會出現。這個指令基本上就是去戳某一個網路上的電腦或伺服器 (或說有連網的設備), 看它是否連得到, 有沒有回應, 並且可以看得到你跟他之間的速度快不快。
ping
不一定每一次都會如你所預期的, 如果你想要 ping
的對方它有設定防火牆, 明確的說它把 ICMP 的封包都擋掉了, 那你就會 ping
不到它。
基本的指令就是 ping [host]
, 譬如說你想要 ping google, 可以用下面的指令
$ ping google.com
PING google.com (74.125.23.113): 56 data bytes
64 bytes from 74.125.23.113: icmp_seq=0 ttl=45 time=12.842 ms
64 bytes from 74.125.23.113: icmp_seq=1 ttl=45 time=11.797 ms
64 bytes from 74.125.23.113: icmp_seq=2 ttl=45 time=11.865 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 11.797/12.168/12.842/0.477 ms
按下 Ctrl-C
可以結束跳出來。從上面結果來看你可以看到, 平均每次大概是花 12 毫秒, 速度可以說是相當快的。
如果你隨便打一個 IP, 例如 123.123.123.123, 你連不到它, 就會回 Request timeout, 例如
$ ping 123.123.123.123
PING 123.123.123.123 (123.123.123.123): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
^C
--- 123.123.123.123 ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss
如果你得到 Network unreachable
或者是 No route to host
的字樣, 那就代表你的網路設定有狀況, 你的封包無法到達遠端的主機。
nslookup
DNS 查詢
如果你想要知道某一個網域他的 IP 是多少, 可以使用 nslookup
。譬如你想要知道 google.com 的 IP, 你可以用下面的指令
$ nslookup google.com.tw
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: google.com.tw
Address: 74.125.23.94
一開始的兩行代表你的 DNS 是使用 8.8.8.8 來查詢, 而得到的結果就是 74.125.23.94。
反之亦然, 你也可以反查某個 IP 的網域, 就以剛剛的例子來說
$ nslookup 74.125.23.94
Server: 8.8.8.8
Address: 8.8.8.8#53
94.23.125.74.in-addr.arpa name = google.com.tw.
telnet
TCP 連線
如果你會寫簡易的 TCP Server 的話, 可以直接拿 telnet
當作你的 client 連線, 方法是 telnet [host] [port]
, 譬如說你的 TCP Server 開在自己機器的 3001, 那你可以用
$ telnet 0 3001
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
此時你只要打一些字, 然後按下 ENTER
, 你的 TCP Server 就會收到你打的東西 (連帶那個 "\n
")。如果你要跳出來的話, 你可以按下 Ctrl-]
, 然後它的畫面會變成像下面這樣
^]
telnet>
接著只要打 q
或 quit
, 就可以跳出來了
^]
telnet> q
$
早期連線到 BBS 的話都是可以直接用 telnet 連線的, 你也可以試著連到 ptt (telnet ptt.cc
), 但因為現在我們大部分的電腦都用 UTF-8, 而 ptt.cc 用的是 Big5, 所以所有中文都會變成亂碼。
ssh
遠端連線
如果你有遠端的主機, 例如雲端的機器, 那麼一定會使用到 ssh
連線到你的機器。它的基本用法就是 ssh [user]@[somehost]
。
假設你的遠端機器的使用者帳號, 跟你現在使用的電腦的使用者帳號是一樣的, 那麼可以把 @
(包含) 之前的都省略, 變成 ssh [somehost]
, 譬如
TomdeMacBook-Pro:~ yychen$ ssh myawesomesite.cc
連進去之後, 你就等於進到了遠端機器的 shell 裡面, 要跳出來就用 exit
即可。
yychen@myawesomesite:~$ exit
TomdeMacBook-Pro:~ yychen$