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.mzph.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;在以后的编程中…