Linux 查看服務器開放的端口號

在討論這個問題前,我們先來了解一下物理端口、邏輯端口、端口號等計算機概念。

?

端口相關的概念:

?

在網絡技術中,端口(Port)包括邏輯端口和物理端口兩種類型。物理端口指的是物理存在的端口,如ADSL Modem、集線器、交換機、路由器上用 于連接其他網絡設備的接口,如RJ-45端口、SC端口等等。邏輯端口是指邏輯意義上用于區分服務的端口,如TCP/IP協議中的服務端口,端口號的范圍從0到65535,比如用于瀏覽網頁服務的80端口,用于FTP服務的21端口等。由于物理端口和邏輯端口數量較多,為了對端口進行區分,將每個端口進行了編號,這就是端口號

端口按端口號可以分為3大類:

?

1:公認端口(Well Known Port)

公認端口號從0到1023,它們緊密綁定與一些常見服務,例如FTP服務使用端口21,你在 /etc/services 里面可以看到這種映射關系。

?

2:注冊端口(Registered Ports):

從1024到49151。它們松散地綁定于一些服務。也就是說有許多服務綁定于這些端口,這些端口同樣用于許多其它目的.

?

3: 動態或私有端口(Dynamic and/or Private Ports)

動態端口,即私人端口號(private port numbers),是可用于任意軟件與任何其他的軟件通信的端口數,使用因特網的傳輸控制協議,或用戶傳輸協議。動態端口一般從49152到65535

Linux中有限定端口的使用范圍,如果我要為我的程序預留某些端口,那么我需要控制這個端口范圍。/proc/sys/net/ipv4/ip_local_port_range定義了本地TCP/UDP的端口范圍,你可以在/etc/sysctl.conf里面定義net.ipv4.ip_local_port_range = 1024 65000

[root@localhost ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768?? 61000
[root@localhost ~]#? echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range

?

關于端口和服務,我曾經拿公共廁所打比方,公共廁所里的每一個廁所就好比系統的每一個端口,為人解決方便就是所謂的服務,你提供了這些服務,那么就必須開放端口(廁所),當有人上廁所時,就是在這些端口建立了鏈接。如果那個廁所被人占用了,就表示端口號被服務占用了,如果有一天這里不提供公共廁所服務了,這個公共廁所被拆除了,自然也就沒有了端口號了。其實更形象的例子,就好比銀行大堂,端口號是那些柜臺,而那些取號辦理業務的人就好比鏈接到服務器的各種客戶端。他們通過端口重定向技術與柜臺發送業務聯系。再舉一個通俗易懂的例子,端口號,好比高鐵線上的每個站點,例如,長沙、岳陽等分別代表一個端口號,旅客通過火車票到各自的站點,就好比各個應用程序發往服務器端口的IP包。

?

端口與服務的關系

?

??? 端口有什么用呢?我們知道,一臺擁有IP地址的主機可以提供許多服務,比如Web服務、FTP服務、SMTP服務等,這些服務完全可以通過1個IP地址來實現。那么,主機是怎樣區分不同的網絡服務呢?顯然不能只靠IP地址,因為IP 地址與網絡服務的關系是一對多的關系。實際上是通過“IP地址+端口號”來區分不同的服務的。

端口號與相應服務的對應關系存放在/etc/services文件中,這個文件中可以找到大部分端口。

如何檢查端口是否開放,其實不整理,還不知道有這么多方法!

?

1:nmap工具檢測開放端口

nmap是一款網絡掃描和主機檢測的工具。nmap的安裝非常簡單,如下所示rpm安裝所示。

[root@DB-Server Server]# rpm -ivh nmap-4.11-1.1.x86_64.rpm 
warning: nmap-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...??????????????? ########################################### [100%]
?? 1:nmap?????????????????? ########################################### [100%]
[root@DB-Server Server]# rpm -ivh nmap-frontend-4.11-1.1.x86_64.rpm 
warning: nmap-frontend-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...??????????????? ########################################### [100%]
?? 1:nmap-frontend????????? ########################################### [100%]
[root@DB-Server Server]# 

關于nmap的使用,都可以長篇大寫特寫,這里不做展開。如下所示,nmap 127.0.0.1 查看本機開放的端口,會掃描所有端口。 當然也可以掃描其它服務器端口。

[root@DB-Server Server]# nmap 127.0.0.1
?
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2016-06-22 15:46 CST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1674 closed ports
PORT???? STATE SERVICE
22/tcp?? open? ssh
25/tcp?? open? smtp
111/tcp? open? rpcbind
631/tcp? open? ipp
1011/tcp open? unknown
3306/tcp open? mysql
?
Nmap finished: 1 IP address (1 host up) scanned in 0.089 seconds
You have new mail in /var/spool/mail/root
[root@DB-Server Server]# 

?

2:netstat 工具檢測開放端口

[root@DB-Server Server]# netstat -anlp | grep 3306
tcp??????? 0????? 0 :::3306???????????????????? :::*??????????????????????? LISTEN????? 7358/mysqld???????? 
[root@DB-Server Server]# netstat -anlp | grep 22
tcp??????? 0????? 0 :::22?????????????????????? :::*??????????????????????? LISTEN????? 4020/sshd?????????? 
tcp??????? 0???? 52 ::ffff:192.168.42.128:22??? ::ffff:192.168.42.1:43561?? ESTABLISHED 6198/2????????????? 
[root@DB-Server Server]# 

如上所示,這個工具感覺沒有nmap簡潔明了。當然也確實沒有nmap功能強大。

?

3:lsof 工具檢測開放端口

?
[root@DB-Server Server]# service mysql start
Starting MySQL......[? OK? ]
[root@DB-Server Server]# lsof -i:3306
COMMAND? PID? USER?? FD?? TYPE DEVICE SIZE NODE NAME
mysqld? 7860 mysql?? 15u? IPv6? 44714?????? TCP *:mysql (LISTEN)
[root@DB-Server Server]# service mysql stop
Shutting down MySQL..[? OK? ]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]# 

?

[root@DB-Server Server]# lsof -i TCP| fgrep LISTEN
cupsd???? 3153??? root??? 4u? IPv4?? 9115?????? TCP localhost.localdomain:ipp (LISTEN)
portmap?? 3761???? rpc??? 4u? IPv4? 10284?????? TCP *:sunrpc (LISTEN)
rpc.statd 3797 rpcuser??? 7u? IPv4? 10489?????? TCP *:1011 (LISTEN)
sshd????? 4020??? root??? 3u? IPv6? 12791?????? TCP *:ssh (LISTEN)
sendmail? 4042??? root??? 4u? IPv4? 12876?????? TCP localhost.localdomain:smtp (LISTEN)

?

4: 使用telnet檢測端口是否開放

?? 服務器端口即使處于監聽狀態,但是防火墻iptables屏蔽了該端口,是無法通過該方法檢測端口是否開放的。

?

5:netcat工具檢測端口是否開放。

[root@DB-Server ~]# nc -vv 192.168.42.128 1521
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
[root@DB-Server ~]# nc -z 192.168.42.128 1521; echo $?
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
0
[root@DB-Server ~]#? nc -vv 192.168.42.128 1433
nc: connect to 192.168.42.128 port 1433 (tcp) failed: No route to host

?

關閉端口和開放端口

???

??? 關閉端口和開放端口應該是兩種不同的概念,每個端口都有對應的服務,因此要關閉端口,只要關閉相應的服務就可以了。像下面例子,開啟了MySQL服務,端口3306處于監聽狀態,關閉MySQL服務后,端口3306自然被關閉了

?
[root@DB-Server Server]# service mysql start
Starting MySQL......[? OK? ]
[root@DB-Server Server]# lsof -i:3306
COMMAND? PID? USER?? FD?? TYPE DEVICE SIZE NODE NAME
mysqld? 7860 mysql?? 15u? IPv6? 44714?????? TCP *:mysql (LISTEN)
[root@DB-Server Server]# service mysql stop
Shutting down MySQL..[? OK? ]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]# 

???

所以,系統里面有些不必要的端口和服務,從安全考慮或資源節省角度,都應該關閉那些不必要的服務。關閉對應的端口。另外,即使服務開啟,但是防火墻對對應的端口進行了限制,這樣端口也不能被訪問,但端口本身并沒有關閉,只是端口被屏蔽了。

轉載于:https://www.cnblogs.com/kerrycode/p/5609010.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255043.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255043.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255043.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VC的文件路徑為什么要用雙斜杠

在編程時,打開文件的路徑在用單斜杠時,會出現問題,例如: image cvLoadImage("C:\Users\lyb\Documents\Visual Studio 2013\Projects\smooth\Debug\pic.png", 0);這樣的寫法在編譯時,不會出現編譯錯誤&#…

FFMpeg中apiexample.c例子分析——解碼分析

FFMpeg中apiexample.c例子分析——解碼分析 收藏 我們直接從 video_decode_example() 函數開始講,該函數實現了如何去解碼一個視頻文件,以 .mpeg 文 件為例。 ( 1 )將緩存的末尾清 0 ,從而確保讀操作不會越界導致破…

[轉]整理一些好的開源項目

首先說明,要想找開源項目,當然是Github! 另外oschina上面也可能有你要的,這個是分類的鏈接:http://www.oschina.net/project/tags,比如這個是一個Python的相關開源資源:http://www.oschina.net/…

android是32-bit系統還是64-bit系統

轉自:http://www.cnblogs.com/pengwang/archive/2013/03/11/2954496.html 電腦CPU分32位和64位,這個我們都知道。用了這么長時間的android手機,突然有個疑問:android OS運行在多少位的CPU上呢? android應用程序是基于D…

海爾系列報道之一:海爾“小微”怎么玩

海爾去年裁了1.6萬人,今年上半年裁了5000人,這2.1萬人去了哪?除了被淘汰的部分,他們中的大多數去了169家小微公司. 從今年年初開始,海爾集團品牌總監范建斌就帶著海爾品牌部的兩個姑娘開始籌劃做一個文化小微公司&…

FFMpeg中apiexample.c例子分析——編碼分析

FFMpeg中apiexample.c例子分析——編碼分析apiexample.c例子教我們如何去利用ffmpeg庫中的api函數來自己編寫編解碼程序。 (1)首先,main函數中一開始會去調用avcodec_init()函數,該函數的作用是初始化libavcodec,而我們…

.net 常見異常及其翻譯

System.Exception//所有異常的基類型System.ApplicationException//發生非致命應用程序錯誤時引發的異常System.SystemException//為System命名空間中的預定義異常定義基類System.SystemException//異常根類System.AccessViolationException//在試圖讀寫受保護內存時引發的異常…

Access2010打開系統表MSysObjects的控制權限

一、顯示系統表 第一步:單擊左上角【文件】頁簽,點擊【選項】打開選項對話框,如圖所示 第二步:在【Access選項】對話框中,選擇【當前數據庫】,在【導航】欄下,點擊【導航選項】打開【導航選項】…

抓屏的各種方法(http://www.codeproject.com/KB/dialog/screencap.aspx)

文章翻譯自 P.GopalaKrishna 的 Various methods for capturing the screen 一文,原版地址見下面。本文章版權歸原作者所有。 如果轉載該譯文 , 請保證文章的完整性,并注明來自 www.farproc.com 袁曉輝 2005/6/12 原版地址&…

與 OpenCV 1 同時使用

與 OpenCV 1 同時使用 目的 對于OpenCV的開發團隊來說,持續穩定地提高代碼庫非常重要。我們一直在思考如何在使其易用的同時保持靈活性。新的C接口即為此而來。盡管如此,向下兼容仍然十分重要。我們并不想打斷你基于早期OpenCV庫的開發。因此&am…

第五周 Leetcode 99. Recover Binary Search Tree (HARD)

Leetcode99 給定一個 二叉搜索樹,其中兩個節點被交換,寫一個程序恢復這顆BST. 只想到了時間復雜度O(n)空間復雜度O(h) h為樹高的解法,還沒想到空間O(1)的解法。 交換的情況只有兩種&…

Fedora15安裝NVIDIA顯卡驅動全過程

Fedora安裝N卡驅動全過程 Fedora安裝NVIDIA顯卡全過程,經過自己親自安裝 折騰了一個上午,搞定了N卡驅動安裝,現將安裝步驟整理如下: 1、首先訪問Nvidia官網下載最新的Linux驅動:http://www.nvidia.cn/Download/index…

板鄧:wordpress自定義登錄頁面實現用戶登錄

首先檢查用戶是否已經登錄&#xff0c;如果已經登錄就返回info目錄下的頁面。 <?phpglobal $current_user;$loginuserid $current_user->ID;if($loginuserid){//如果已經登錄header("Location:".get_bloginfo(url)."/info/"); exit;} 如果用戶未登…

機器學習(machine learning)之AdaBoost算法

轉自&#xff1a;http://blog.csdn.net/haidao2009/article/details/7514787 淺談 Adaboost 算法 機器學習是利用一些方法來使機器實現人的學習行為&#xff0c;以便獲取新的知識或技能&#xff0c;重新組織已有的知識結構使之不斷改善自身的性能。 AdaBoost全名“adaptive B…

交換兩個整形變量的數值

課堂問題一: #include<stdio.h>void swap(int *p,int *q) {int *m;printf("m%d\n",m);printf("%s\n",*m);*m*p;*p*q;*q*m; } int main(){int a,b;scanf("%d,%d",&a,&b);swap(&a,&b);printf("a%d b%d\n",a,b);re…

使用CodeFirst創建并更新數據庫

本文主要介紹如何使用CodeFirst模式來新建并更新數據庫 在使用Entity Framwork的三種方式&#xff08;ModelFist、DBFirst、CodeFirst&#xff09;中&#xff0c;CodeFirst方式書寫的代碼最為干凈。 至于CodeFist方式的詳細優缺點請各位讀者自行搜索&#xff0c;這里不多贅述。…

fedora 15怎么修改運行級別?

inittab改了已經在fedora15中&#xff0c;你vim它就可以看到更改說明&#xff0c;就是說都改到/etc/systemd/system/default.target這里了&#xff0c;就是缺省的設置。如果你要改變缺省值就把對應的runlevel移動過去覆蓋了。 To 3 字符 [root15 system]# rm -rf /etc/systemd…

淺析人臉檢測之Haar分類器方法

由于工作需要&#xff0c;我開始研究人臉檢測部分的算法&#xff0c;這期間斷斷續續地學習Haar分類器的訓練以及檢測過程&#xff0c;在這里根據各種論文、網絡資源的查閱和對代碼的理解做一個簡單的總結。我試圖概括性的給出算法的起源、全貌以及細節的來龍去脈&#xff0c;但…

利用微軟平臺生成報表,線性圖,柱形圖

說來慚愧,以前的工作中一直借助第三方dll進行報表制作,比如線性圖,柱形圖. 因為現在工作的這家公司不允許隨便引入第三方dll,聽同事說起可以建rdl類型文件進行引入到winform窗體中,窗體上使用reportViewer控件進行關聯展示.下面是我今天摸索3個小時的結果分享. 第一步. 首先找到…

Linux ffmpeg的安裝編譯過程

Linux ffmpeg的安裝編譯過程 1、下載ffmpeg。    在網上搜索一下,或者到官方網站下載2、解壓   tar命令解壓3、配置  ./configure --enable-shared --prefix/usr/local/ffmpeg  其中&#xff1a;--enable-shared 是允許其編譯產生動態庫&#xff0c;在以后的編程中…