天再啟動jar包時遇到一個問題,具體為啟動jar包時,一直提示該端口(例如:8666端口)被占用。通過netstat -lntup命令獲悉,沒有哪個應用再使用8666端口。后來通過排查發現,不是應用程序啟動是占用該端口,而是應用程序在向外部發起TCP連接時,隨機啟用了這個端口。排查思路如下:
通過一下命令發現該端口有使用。
lsof -i:8666
通過進程IP查找到相應的應用程序
netstat -lntup | grep PID
解決方案:
查看應用程序啟用TCP連接時隨機啟用的端口范圍
cat /proc/sys/net/ipv4/ip_local_port_range
修改/etc/sysctl.conf
net.ipv4.ip_local_port_range=10240 65000
執行sysctl -p
果Windows 10電腦的本地端口無法訪問,可能是由于以下原因導致的:
1)防火墻阻止了端口訪問:Windows 10內置了防火墻功能,它可以阻止某些端口的訪問。您可以嘗試禁用防火墻或者添加相應的入站規則來允許端口訪問。
2)程序或服務未正確打開端口:如果您在電腦上運行的程序或服務依賴于特定的端口進行通信,但是該程序或服務未正確打開端口,則無法訪問該端口。您可以檢查程序或服務的配置,確保端口正確打開并監聽。
3)網絡配置問題:如果您的電腦與其他設備或網絡之間存在網絡配置問題,可能會導致端口無法訪問。您可以檢查網絡設置,確保IP地址、子網掩碼、網關等配置正確。
4)端口被其他程序占用:如果要使用的端口已經被其他程序占用,您將無法訪問該端口。您可以通過使用netstat -a命令查看當前正在使用的端口,并找到沖突的程序,然后將其停止或更改端口。
軟件沖突或錯誤配置:某些軟件可能會導致端口無法訪問,例如安全軟件、代理軟件等。您可以嘗試禁用或卸載這些軟件,然后重新測試端口訪問。
問題解決步驟:
1)首先檢查下netstat -a命令查看當前正在使用的端口
相關知識點:
netstat是一個網絡工具,用于查看網絡連接、路由表和網絡接口等信息。它可以顯示當前正在運行的網絡連接,包括TCP和UDP連接,以及監聽的端口和服務。
使用netstat命令可以獲取以下信息:
1>當前正在運行的網絡連接,包括本地IP地址、遠程IP地址、連接狀態和端口號等。
2>監聽的端口和服務,可以查看哪些端口處于監聽狀態,并且可以查看對應的服務。
3>路由表信息,可以查看當前系統的路由表,包括目標網絡、子網掩碼、網關和接口等信息。
4>網絡接口信息,可以查看當前系統的網絡接口,包括接口名稱、MAC地址、IP地址和狀態等。
netstat命令的常用選項包括:
-a:顯示所有連接和監聽的端口。
-n:以數字形式顯示IP地址和端口號。
-p:顯示與連接關聯的進程ID和名稱。
-r:顯示路由表信息。
-i:顯示網絡接口信息。
使用示例:
netstat -a # 顯示所有連接和監聽的端口
netstat -an # 以數字形式顯示IP地址和端口號
netstat -p # 顯示與連接關聯的進程ID和名稱
netstat -r # 顯示路由表信息
netstat -i # 顯示網絡接口信息
2)若上圖連接的端口中存在需要訪問的本地端口,則可以在遠端PC用CMD執行telnet x.x.x.x port 或者 tcping x.x.x.x port ,(需要提前安裝telnet或者tcping程序)
2.1)如果同一網段PC測試端口能通,但是跨網段測試端口不通,那就是存在防火墻或者交換機上配置了ACL進行端口管控,進行相關調整即可。
2.2)如果同一網段PC測試端口不通,可能是程序或服務未正確打開端口,或者端口被其他程序占用,可以將相應本地端口開啟,更改沖突的程序的端口。
2.2.1 開啟電腦本地端口方法:先確認電腦是否是加域電腦
1)如果電腦是加域的;
如果是加域電腦,則需要在AD域中把域策略中添加要放行的端口。因為本地無法添加放行的端口是無效的,默認以域控放行的端口為準。
2)如果電腦未加域:
1.win+R打開[運行],輸入wf.msc,打開Windows防火墻;
2.進入入站規則,并新建規則;
3.選擇規則類型為端口;
"端口"可以認為是計算機與外界通信交流的出口。一個IP地址可以有65536(即256*256)個,端口是通過端口號來標記的,端口號只有整數,范圍是0~65 535(0~256*256-1)。
計算機領域分為硬件領域和軟件領域,在硬件領域中,端口又被稱作接口,如常見的USB接口、網卡接口等;在軟件領域中,端口一般是指網絡中面向連接服務和無連接服務的通信協議端口,是一種抽象的軟件結構,包括一些數據結構和基本輸入輸出緩沖區。RJ
在網絡技術中,端口還有其他含義,一種是物理意義上的端口,如集線器、交換機、路由器等連接設備,用于連接其他的網絡設備的接口,常見的有RJ-45端口、Serial端口;另一種是邏輯意義上的端口,一般指TCP/IP協議中的端口,范圍是0~65535(256*256-1)。
可以將端口按照端口號分為以下三類
公認端口(0~1023):它們緊密綁定于一些服務。通常這些端口的通信明確表明了某種服務的協議。
注冊端口(1 024~49 151):它們松散的綁定于一些服務。也就是說有許多服務綁定于這些端口,但是這些端口同樣用于許多其他目的。例如,許多系統處理動態端口是從1024左右開始的。
動態/私有端口(49 152~65 535):理論上,不應該為服務器分配這些端口。實際上機器通常從1024起分配動態端口。但是也有例外,SUN的RPC端口就是從32768開始。
經常查看系統開放端口的狀態變化,可以及時提高系統安全,防止自己的電腦被入侵。我們可以使用netstat命令查看自己系統的端口狀態。
1. 打開【命令提示符】窗口,在其中輸入netstat -a -n命令。
2. 按Enter鍵,即可看到數字顯示的TCP和UCP連接的端口號及其狀態。
默認狀態下計算機系統會有一些沒有用或不安全的端口是開啟的,為了保障系統安全,可以有選擇的關閉一些端口,這里介紹通過關閉無用服務來關閉不必要的端口。
以關閉Remote Desktop Help Session Manager(Windows遠程協助服務)為例,具體操作步驟如下:
1. 點擊【開始】按鈕,在彈出的快捷菜單中執行【控制面板】命令。
2. 在打開的【控制面板】窗口中切換到 "大圖標"查看方式,雙擊【管理工具】圖標。
3. 打開【管理工具】窗口,雙擊【服務】圖標。
4. 在打開的【服務】窗口中切換到"標準"視圖模式,然后找到并雙擊"360殺毒全盤掃描服務"選項。
5. 在打開的對話框中單擊"禁用"選項,然后單擊"確定"按鈕即可。(注:如果需要啟動該服務,則在該對話框中單擊"服務狀態"欄中的"啟動"按鈕即可。啟動服務后也可單擊"停止"按鈕來關閉該服務)
開發時經常遇到端口被占用的情況,這個時候我們就需要找出被占用端口的程序,然后結束它,本文為大家介紹如何查找被占用的端口。
1、打開命令窗口(以管理員身份運行)
開始—->運行—->cmd,或者是 window+R 組合鍵,調出命令窗口。
2、查找所有運行的端口
輸入命令:
netstat -ano
該命令列出所有端口的使用情況。
在列表中我們觀察被占用的端口,比如是 1224,首先找到它。
3、查看被占用端口對應的 PID
輸入命令:
netstat -aon|findstr "8081"
回車執行該命令,最后一位數字就是 PID, 這里是 9088。
4、查看指定 PID 的進程
繼續輸入命令:
tasklist|findstr "9088"
回車執行該命令。
查看是哪個進程或者程序占用了 8081 端口,結果是:node.exe。
結束進程
強制(/F參數)殺死 pid 為 9088 的所有進程包括子進程(/T參數):
taskkill /T /F /PID 9088
或者是我們打開任務管理器,切換到進程選項卡,在PID一列查看9088對應的進程是誰,如果看不到PID這一列,如下圖:
之后我們就可以結束掉這個進程,這樣我們就可以釋放該端口來使用了。
1、lsof -i:端口號
2、netstat -tunlp|grep 端口號
都可以查看指定端口被哪個進程占用的情況
· linux,windows
· xshell
1. 【步驟一】lsof -i
2. lsof -i 用以顯示符合條件的進程情況,lsof(list open files)是一個列出當前系統打開文件的工具。以root用戶來執行lsof -i命令,如下圖
1. 【步驟二】lsof -i:端口號
2. lsof -i:端口號,用于查看某一端口的占用情況,比如查看22號端口使用情況,lsof -i:22,如下圖
1. 【步驟三】netstat -tunlp
2. netstat -tunlp用于顯示tcp,udp的端口和進程等相關情況,如下圖
1. 【步驟四】netstat -tunlp|grep 端口號
2. netstat -tunlp|grep 端口號,用于查看指定端口號的進程情況,如查看22端口的情況,netstat -tunlp|grep 22,如下圖