前言
我們?cè)?linux 系統(tǒng)網(wǎng)絡(luò)調(diào)試中經(jīng)常會(huì)遇到需要測(cè)試驗(yàn)證對(duì)應(yīng)的端口是否正常的場(chǎng)景, 接下來(lái)講解一下常用的方法。
相關(guān)命令詳解
具體的用法
telnet serverIP port
注意事項(xiàng)是 serverIP 和 port 之間需要用空格分開
具體的操作:
端口不通的時(shí)候:
ggd@ubuntu:~$ telnet 192.168.70.1 20
Trying 192.168.70.1...
telnet: Unable to connect to remote host: Connection refused
ggd@ubuntu:~$
端口開啟的時(shí)候:
ggd@ubuntu:~$ telnet 192.168.70.1 8080
Trying 192.168.70.1...
Connected to 192.168.70.1.
Escape character is '^]'.
需要注意的是 Connected to 192.168.70.1. 表示對(duì)應(yīng)的端口是通的
telnet 測(cè)試端口連通之后, 還有驚喜
大家通過(guò)上圖可以了解, 當(dāng)通過(guò) telnet 命令連通對(duì)應(yīng)的端口之后,可以通過(guò)終端給對(duì)應(yīng)的服務(wù)器發(fā)送消息, 另外同時(shí)也可以接收服務(wù)器發(fā)送的消息
如何退出 telnet 命令
大家在測(cè)試端口的時(shí)候如果對(duì)應(yīng)的端口連通之后, 此時(shí)該命令處于阻塞狀態(tài), 不知道該怎么退出
第一種方法
先按 ctrl + ]
然后再按 ctrl + D
第二種方法
先按 ctrl + ]
然后再輸入quit
nc 命令
具體用法
nc -v serverIP port
-v 即為將命令執(zhí)行信息詳細(xì)輸出
端口不通的時(shí)候:
ggd@ubuntu:~$ nc -v 192.168.70.1 20
nc: connect to 192.168.70.1 port 20 (tcp) failed: Connection refused
ggd@ubuntu:~$
端口開啟的時(shí)候:
ggd@ubuntu:~$ nc -v 192.168.70.1 8080
Connection to 192.168.70.1 8080 port [tcp/http-alt] succeeded!
nc 命令連通端口之后也是具備可以發(fā)送和接收信息的功能
如何退出 nc 命令
ctrl + D 或者 ctrl + C 都可以結(jié)束
nc 命令很強(qiáng)大
nc 命令 號(hào)稱 網(wǎng)絡(luò)工具中的瑞士軍刀 , 測(cè)試端口是否通斷只是牛刀小試
nc 命令 還可以 實(shí)現(xiàn) 端口掃描、文件傳輸、在線聊天、驗(yàn)證 UDP 端口后續(xù)有機(jī)會(huì)再出文章詳細(xì)講解
命令很強(qiáng)大但是有可能受環(huán)境限制
為了適應(yīng)環(huán)境, 功能簡(jiǎn)配
大家看到上面針對(duì) telnet 或者 nc 命令都是在虛擬機(jī)上執(zhí)行的,但是有的時(shí)候,排查問(wèn)題的時(shí)候是在開發(fā)板上進(jìn)行的, 正因?yàn)樵陂_發(fā)板上, 所以我們移植的 busybox 版本有所不同, 因此 telnet 和 nc 支持的命令參數(shù)有可能不全或者執(zhí)行對(duì)應(yīng)的命令之后沒有相關(guān)的信息可供參考
深處逆境, 總有辦法絕處逢生
雖然 telnet 和 nc 功能簡(jiǎn)配, 但是最基礎(chǔ)的功能還是有的, 我們此時(shí)可以再結(jié)合 netstat 來(lái)實(shí)現(xiàn)我們的端口測(cè)試
話不多說(shuō)直接上操作
端口不通的時(shí)候
telnet 和 nc 都有對(duì)應(yīng)的提示信息, 有這樣的提醒我們感到很欣慰,因?yàn)檫@個(gè)信息能直觀的看到端口是不通的
端口正常的時(shí)候
通過(guò)上圖可以看出, 執(zhí)行完命令之后處于阻塞狀態(tài), 但是我們此時(shí)不能下結(jié)論說(shuō)這個(gè)端口沒問(wèn)題,我們需要用真實(shí)的證據(jù)來(lái)證明, 此時(shí)就用到了netstat -atpn 命令
注意看紅框和黃色箭頭的標(biāo)注, 我們需要在 Foreign Address 和 PID/Program name 找到我們測(cè)試的 IP、端口 和對(duì)應(yīng)的進(jìn)程名稱, 然后查看 State 狀態(tài)是否是 ESTABLISHED狀態(tài),如果是ESTABLISHED 表明端口正常如果不是該狀態(tài)表示端口不通
簡(jiǎn)單介紹一下 netstat 命令
該命令是是一個(gè)監(jiān)控 TCP/IP 網(wǎng)絡(luò)的非常有用的工具,它可以顯示路由表、實(shí)際的網(wǎng)絡(luò)連接以及每一個(gè)網(wǎng)絡(luò)接口設(shè)備的狀態(tài)信息
netstat 命令參數(shù)介紹
-a: 顯示所有連接的 Socket
-t: 展示 TCP 連接相關(guān)的信息
-p: 就是顯示指定協(xié)議的信息
-n: 直接使用 IP, 不經(jīng)過(guò)域名服務(wù)器 (優(yōu)點(diǎn): 程序響應(yīng)快, 缺點(diǎn): 只能看到 IP, 看不到域名信息)
netstat 狀態(tài)介紹
簡(jiǎn)單介紹一下 state 幾種常見的狀態(tài) ,描述的時(shí)候 TCP 在各個(gè)時(shí)期的狀態(tài)
服務(wù)器的監(jiān)聽狀態(tài):
LISTENING: 監(jiān)聽來(lái)自客戶端的 TCP 的連接請(qǐng)求, 只有 TCP 服務(wù)器的時(shí)候才會(huì)有這樣的狀態(tài)
TCP 連接時(shí)候的三次握手狀態(tài)時(shí)候的
- 1.SYN-SENT: 發(fā)送連接請(qǐng)求后等待匹配的連接請(qǐng)求,客戶端發(fā)送連接請(qǐng)求
- 2.SYN-RECEIVED: 再收到和發(fā)送一個(gè)連接請(qǐng)求后等待對(duì)方對(duì)連接請(qǐng)求的確認(rèn),對(duì)方發(fā)送回來(lái)的確認(rèn)連接信息
TCP 連接成功的狀態(tài)
ESTABLISHED: 一個(gè)完整的 TCP 連接建立成功
TCP 斷開連接四次揮手時(shí)候的狀態(tài)
- 1.FIN-WAIT-1: 等待 TCP 連接中斷請(qǐng)求
- 2.FIN-WAIT-2:TCP 等待連接中斷請(qǐng)求信息
- 3.CLOSE-WAIT: 等待從本地用戶發(fā)來(lái)的連接中斷請(qǐng)求信息
- 4.CLOSING: 等待 TCP 對(duì)連接中斷的確認(rèn)信息
- 5.LAST-ACK: 等待原來(lái)的發(fā)向 TCP 的連接中斷請(qǐng)求的確認(rèn)信息
- 6.TIME-WAIT: 等待一段時(shí)間用來(lái)確保 TCP 接收到連接中斷請(qǐng)求的確認(rèn)信息
- 7.CLOSED: 沒有任何連接狀態(tài)
-
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209333 -
端口
+關(guān)注
關(guān)注
4文章
963瀏覽量
32052 -
系統(tǒng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
0文章
3瀏覽量
14533
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論