在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用 于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。我们这里将要介绍的就是逻辑意义上的端口。
那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。
大家看着上面的语句非常通顺,不好意思,上面节选与百度百科《端口号》,详细可继续了解。
因为我并没有深入学习网络技术,对这些网络协议、TCP、UDP、IPC、端口号等专业网络术语不是非常了解,但是在从事的工作中都会涉及到相关的网络知识,特别是端口号
数据库oracle有1521端口,Linux有SSH和Telnet22、23端口,ArcSDE服务有5151端口,ArcGIS Server有8080或者6080端口,这些端口其实就是每一个专业,每一个产品约定俗成的号码,运行用户来修改,但是不建议用户修改,因为这涉及到以后的系统维护,其他人来维护这些环境时候如果你把熟悉的端口修改为默认的号码,那势必会有一些隐患的发生。
之所以给大家介绍端口号,其实就是基于系统安全方面的考虑,因为在比较规范的环境下,数据库有专门的管理员,网络有专门的网关,那么可能二十四小时来监控整个系统的运行状况,那么对不认识的端口的出现,他们首要目标就是禁用掉,因为安全是他们的天职所在,但是在我们使用ArcSDE服务时,一般都会建议用户关闭防火墙,但是这是在一定环境下,如果用户必须要启用防火墙,那么也可以开放你所需要的端口。
对Windows来说,因为界面化的操作,这方面就比较容易。
Windows7怎么禁用或者启用某个端口?
开始-控制面板-管理工具-高级安全Windows防火墙-入站规则-
新建规则-选择“端口”-
下一步-选择是TCP还是UDP,选择所有本地端口还是特定本地端口-
下一步-选择允许连接、只允许安全连接还是阻止连接-
下一步-选择在域、专用、公用哪个范围内应用该规则-
下一步-进行相关描述即可-
设置完毕
那么我们就可以在上面的引导下,启用防火墙,但是开启默认的5151ArcSDE服务端口。
怎么查看端口号?
查看端口号可以使用netstat命令进行
C:\Users\Administrator>netstat ? 显示协议统计和当前 TCP/IP 网络连接。 NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval] -a 显示所有连接和侦听端口。 -b 显示在创建每个连接或侦听端口时涉及的可执行程序。 在某些情况下,已知可执行程序承载多个独立的 组件,这些情况下,显示创建连接或侦听端口时涉 及的组件序列。此情况下,可执行程序的名称 位于底部[]中,它调用的组件位于顶部,直至达 到 TCP/IP。注意,此选项可能很耗时,并且在您没有 足够权限时可能失败。 -e 显示以太网统计。此选项可以与 -s 选项结合使用。 -f 显示外部地址的完全限定域名(FQDN)。 -n 以数字形式显示地址和端口号。 -o 显示拥有的与每个连接关联的进程 ID。 -p proto 显示 proto 指定的协议的连接;proto 可以是下列任 何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选 项一起用来显示每个协议的统计,proto 可以是下列任 何一个: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。 -r 显示路由表。 -s 显示每个协议的统计。默认情况下,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计;-p 选项可用于指定默认的子网。 -t 显示当前连接卸载状态。 interval 重新显示选定的统计,各个显示间暂停的间隔秒数。 按 CTRL+C 停止重新显示统计。如果省略,则 netstat 将打印当前的配置信息一次。
怎么来查看端口号被那些程序所占用?
比如我们就以常用的5151和1521来看看那些程序来占用着呢
C:\Users\Administrator>netstat -ano | findstr "5151" TCP 0.0.0.0:5151 0.0.0.0:0 LISTENING 9204 TCP 192.168.100.111:5151 192.168.100.111:52341 ESTABLISHED 9204 TCP 192.168.100.111:5151 192.168.220.166:13142 ESTABLISHED 9204 TCP 192.168.100.111:52341 192.168.100.111:5151 ESTABLISHED 9116 TCP [::]:5151 [::]:0 LISTENING 9204 C:\Users\Administrator>netstat -ano | findstr "1521" TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING 6876 TCP 192.168.100.111:1521 192.168.100.111:52060 ESTABLISHED 6876 TCP 192.168.100.111:52060 192.168.100.111:1521 ESTABLISHED 7908 TCP [::]:1521 [::]:0 LISTENING 6876最后一项就是相关的PID信息
我们可以查看任务管理器来找到相关的PID信息,这样就知道什么程序来占用这些端口号了。
C:\Users\Administrator>tasklist | findstr "9204" giomgr.exe 9204 Services 0 28,308 K C:\Users\Administrator>tasklist | findstr "9116" ArcMap.exe 9116 Console 1 46,788 K C:\Users\Administrator>tasklist | findstr "6876" TNSLSNR.EXE 6876 Services 0 22,192 K C:\Users\Administrator>tasklist | findstr "7908" oracle.exe 7908 Services 0 643,364 K
从上面的任务管理器PID来得到相关的占用程序,比如5151的占用程序就是PID=9204的giomgr.exe和PID=9116的ArcMap.exe,那么1521的占用程序包括PID=6876的TNSLSNR.exe和PID=7908的oracle.exe.
那么在使用过程中,如果出现端口被占用,我们可以修改端口或者直接Kill进程(这个比较狠)的方法来解决。
那么对 Linux来说,其实查询端口号也是类似的
[root@rhsde ~]# netstat -anp | grep "5151" tcp 0 0 :::5151 :::* LISTEN 1341/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.17:61957 ESTABLISHED 10352/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.17:61955 ESTABLISHED 10348/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.23:29988 ESTABLISHED 9981/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.23:26076 ESTABLISHED 3507/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.17:63637 ESTABLISHED 1852/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.17:63416 ESTABLISHED 1360/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.100.11:44171 ESTABLISHED 5085/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.120.10:55115 ESTABLISHED 20607/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.120.10:49207 ESTABLISHED 17786/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.120.10:49195 ESTABLISHED 1341/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.16:10931 ESTABLISHED 14024/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.176:6071 ESTABLISHED 8975/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.176:6074 ESTABLISHED 9181/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.100.128:8001 ESTABLISHED 32188/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.120.10:51114 ESTABLISHED 6383/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.120.10:51105 ESTABLISHED 6345/gsrvr tcp 0 0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.176:4843 ESTABLISHED 11509/gsrvr [root@rhsde ~]# [root@rhsde ~]# netstat -anp | grep "1521" tcp 0 0 192.168.220.165:1521 0.0.0.0:* LISTEN 2915/tnslsnr tcp 0 0 192.168.220.165:1521 192.168.220.165:13139 ESTABLISHED 2915/tnslsnr tcp 0 0 192.168.220.165:1521 192.168.220.165:13146 ESTABLISHED 2915/tnslsnr tcp 0 0 192.168.220.165:13139 192.168.220.165:1521 ESTABLISHED 3021/ora_pmon_orcl2 tcp 0 0 192.168.220.165:13146 192.168.220.165:1521 ESTABLISHED 3188/ora_pmon_orcl unix 2 [ ACC ] STREAM LISTENING 7873 2915/tnslsnr /var/tmp/.oracle/sEXTPROC1521
相对来说,Linux就比Windows信息量大,直接就可以看到哪个进程占用了端口。
操作系统中都有一个配置文件是端口号的所有列表
Windows:C:\Windows\System32\drivers\etc\services
Linux:/etc/services
如何修改端口号?
如果是在软件安装过程中,如果设置端口号,用户可以修改一个新的端口号,但是一定做好相关的文档说明。
但是如果用户已经在安装过程中使用了端口号,然后再修改,特别不建议用户这样做,这个都是建立在用户在对该软件非常熟悉的基础上,因为有些端口号可能分布在不同的配置文件,有些在注册表都有,所以如果擅自修改,然后没有达到一致就会出现相关问题。
如果修改ArcSDE端口号?
如果是第一次post的时候,用户可以在最后创建服务界面将默认的5151端口号修改为自己设定好的端口号即可。
如果是已经使用了5151端口号,想修改为另外一个,也可以。
1:停止服务,删除掉ArcSDE服务
2:使用ArcSDE向导或者sdeservice -o create 建立新服务,该服务可以设定新的端口号
3:修改%SDEHOME/etc/services文件里面的端口号
4:修改C:\Windows\System32\drivers\etc\services端口号信息即可
5:启动服务
对Linux来说
1:停止服务
2:修改%SDEHOME/etc/services文件里面的端口号
3:修改/etc/services的端口号
4:启动服务
如果没有必要,尽量不要修改。
基本上,ArcSDE的使用过程中,对网络安全的掌握也没有什么,防火墙、端口号、杀毒软件等了解一下也差不多,况且以后都使用直连的话,只要数据库能够保证连接即可。
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
------------------------------------------------------------------------------------------------------