詳解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-hk/n/281234.html

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

相關推薦

發表回復

登錄後才能評論