詳解linux網路配置命令「linux網路配置命令有哪些」

伺服器一般都是命令頁面,不像 windows 在圖形頁面點點滑鼠就好,所以掌握些基本的 Linux 命令是很有必要的,不然就無法操作 Linux,更體會不到 Linux 的精髓。

這次,我們就來看看關於網路相關的命令。

學習網路不應該只局限於理論,作為工程師的我們,掌握一些基本的網路命令對我們幫助會很大,因為平時在遠程操作、開發、調試、排查線上問題的時候,會常常用到。

Linux 為我們提供了很多網路相關的命令,我們這次就來看看 Linux 系統里有哪些常用的網路命令。


遠程連接命令

如果我們要想操作 Linux 伺服器,不可能說拿個顯示器、滑鼠和鍵盤接到伺服器上,伺服器一般都是放在機房裡的,只需讓伺服器把網路接通,我們在自己的電腦就可以使用 ssh 命令遠程登錄伺服器,進而操作和管理伺服器。

還有一個很常用的遠程命令是 scp,它可以幫助我們傳輸文件到伺服器上。

ssh

只需要遠程登錄 Linux 系統,可以使用 ssh 命令,比如你想遠程登錄一台伺服器,可以使用 ssh user@ip 的方式,如下圖:

程序員也需要掌握的常用Linux網路命令匯總

接著,會有輸入密碼的提示,輸入正確的密碼後,就進入到了伺服器的終端頁面,之後你操作的命令就是控制伺服器的了。

程序員也需要掌握的常用Linux網路命令匯總

scp

當我們需要把一台機器上的文件傳輸給另一台機器時,使用 scp 命令就可以。

如下圖,我使用 scp 命令將本地 test.txt 文件傳輸給了 IP 地址為 192.168.12.35 機器的 /home 目錄。

程序員也需要掌握的常用Linux網路命令匯總

輸入 scp 命令後,會彈出需要輸入對方密碼的提示,輸入完成後,輸入回車即可,如果密碼驗證通過後,就進行文件的傳輸。


查看本地網路狀態

要想知道本地機器的網路狀態,比較常用的網路命令是 ifconfig 和 netstat。

ifconfig

當你想知道機器上有哪些網口,和網口對應的狀態信息時,使用 ifconfig 就可以,狀態信息包含 IP 地址、子網掩碼、MAC 地址等。

如下圖,是在我設備上的 ifconfig 信息。

程序員也需要掌握的常用Linux網路命令匯總

可以看到,這台機器一共有 3 個網口,分別是 eth0、eth1、lo。其中 lo 是本地迴路,發送給 lo 就相當於發送給自己,eth0 和 eth1 都是真實的網口。

netstat

netstat 命令主要用於查看目前本機的網路使用情況。

查看所有 socket

如果只是單純執行 netstat 命令,則查詢的是本地所有 socket,如下圖:

程序員也需要掌握的常用Linux網路命令匯總

上圖中,我們看到的都是 socket 文件,socket 負責在客戶端與服務端之間收發數據,當客戶端和服務端建立連接時,各自同時都會生成一個 socket 文件,用於管理這個連接。

查看 TCP/UDP 連接

如果只想看 TCP 連接的網路信息,可以使用 netstat -t。

比如下面我通過 netstat -t 看 tcp 協議的網路情況:

程序員也需要掌握的常用Linux網路命令匯總

上圖的末尾的 state 描述的是當前 TCP 連接處於的狀態。

另外,如果要想看 UDP 的網路信息,可以使用 netstat -u。

查看埠佔用

如果你想知道某個埠是哪個進程在佔用,比如我想查 80 埠被哪個進程佔用了,如下圖:

程序員也需要掌握的常用Linux網路命令匯總

可以看到,80 埠被 http 進程佔用了,最末尾的信息也能看到這個進程對應的 pid。


網路測試

當我們想確認網路的延時情況,以及與伺服器網路是否暢通,則可以使用 ping 和 telnet 命令。

ping

想知道本機到目標網頁的網路延時,可以使用 ping 命令,如下圖所示:

程序員也需要掌握的常用Linux網路命令匯總

ping 是基於 ICMP 協議的,所以對方防火牆如果屏蔽了 ICMP 協議,那麼我們就無法與它 ping 通,但這並不代表網路是不通的。

每一個 ICMP 包都有序號,所以你可以看到上圖中 icmp 序號,如果序號是斷斷續續的,那麼可能出現了丟包現象。

time 顯示了網路包到達遠程主機後返回的時間,單位是毫秒。time 的時間越小,說明網路延遲越低,如果你看到 time 的時間變化很大,這種現象叫做網路抖動,這說明客戶端與伺服器之間的網路狀態不佳。

ttl 全稱叫 time to live,指定網路包被路由器丟棄之前允許通過的網段數量,說白了就是定義了網路包最大經過路由器的數量,這個目的是防止網路包在網路中被無限轉發,永不停止。當網路包在網路中被傳輸時,ttl 的值通過一個路由器時會遞減1,當 ttl 遞減到 0 時,網路包就會被路由器拋棄。

另外,ping 不單單只能輸入 ip 地址,也能輸入域名地址,如果輸入的是域名地址,會先通過 DNS 查詢該域名的 ip 地址,再進行通信。

telnet

有時候,我們想知道本機到某個 IP + 埠的網路是否通暢,也就是想知道對方伺服器是否有對應該埠的進程,於是就可以使用 telnet 命令,如下所示:

telnet 192.168.0.5

telnet 執行後會進入一個互動式的頁面,這時就可以填寫你將要發送給對方的信息,比如你想發 HTTP 請求給伺服器,那麼你就可以寫出 HTTP 請求 的格式信息,但是手寫 HTTP 爆文太累人吧,後面會介紹專門用於 HTTP 的網路工具。


DNS 查詢

如果想知道 DNS 解析域名的過程,可以使用 host 和 dig 命令。

host

host 就是一個 DNS 查詢命令,比如我們要查百度的 DNS,如下圖所示:

程序員也需要掌握的常用Linux網路命令匯總

可以看到,www.baidu.com 只是個別名,原名是 www.a.shifen.com,且對應了 2 條 IPv4 地址。

如果想追查某種類型的記錄,可以加個 -t 參數,比如下圖我們追查百度的 AAAA 記錄,也就是查詢域名對應的 IPv6 地址,由於百度還沒部署 IPv6 地址,所以沒有查詢到 :

程序員也需要掌握的常用Linux網路命令匯總

dig

dig 同樣也是做 DNS 查詢的,區別在於,dig 顯示的內容更加詳細,比如下圖是 dig 百度的結果:

程序員也需要掌握的常用Linux網路命令匯總

也可以看到 www.baiu.com 的別名(CNAME)為 www.a.shifen.com,然後共有 2 條 A 記錄,也就是 IPv4 地址的記錄,通常對應多個是為了負載均衡或分發內容。


HTTP

在電腦桌面我們常使用瀏覽器去請求網頁,而在伺服器一般是沒有可視化頁面的,也就沒有瀏覽器,這時如果想要 HTTP 訪問,就需要網路相關的命令。

curl

如果要在命令行請求網頁或者介面,可以使用 curl 命令,curl 支持很多應用協議,比如 HTTP、FTP、SMTP 等,實際運用中最常用還是 HTTP。

比如,我用 curl 訪問了百度網頁,如下圖:

程序員也需要掌握的常用Linux網路命令匯總

如果不想看 HTTP 數據部分,只想看 HTTP GET 返回頭,可以再加個 -I 參數,如 curl -I,如下圖所示:

程序員也需要掌握的常用Linux網路命令匯總

上面演示的 HTTP GET 請求,如果想使用 POST 請求,命令如下:

程序員也需要掌握的常用Linux網路命令匯總

curl 向 http://localhost/myapi 介面發送 POST 請求,各參數的說明:

  • -d 後面是要發送的數據,例子中發送的是 JSON 格式的數據;
  • -X 後面是指定 HTTP 的方法,例子中指定的是 POST 方法;
  • -H 是指定自定義的請求頭,例子中由於發送的是 JSON 數據,所以內容類型指定了 JSON;

總結

最後,列一下本次提到的 Linux 下常用的網路命令:

  • 遠程登錄的 ssh 指令;
  • 遠程傳輸文件的 scp 指令;
  • 查看網路介面的 ifconfig 指令;
  • 查看網路狀態的 netstat 指令;
  • 測試網路延遲的 ping 指令;
  • 可以互動式調試和服務端的 telnet 指令;
  • 兩個 DNS 查詢指令 host 和 dig;
  • 可以發送各種請求包括 HTTPS 的 curl 指令。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/281234.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-21 13:16
下一篇 2024-12-21 13:16

相關推薦

發表回復

登錄後才能評論