分享

浅谈端口号

 大马赛克士革 2015-05-20

在网络技术中,端口(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命令进行

  1. C:\Users\Administrator>netstat ?  
  2.   
  3. 显示协议统计和当前 TCP/IP 网络连接。  
  4.   
  5. NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]  
  6.   
  7.   -a            显示所有连接和侦听端口。  
  8.   -b            显示在创建每个连接或侦听端口时涉及的可执行程序。  
  9.                 在某些情况下,已知可执行程序承载多个独立的  
  10.                 组件,这些情况下,显示创建连接或侦听端口时涉  
  11.                 及的组件序列。此情况下,可执行程序的名称  
  12.                 位于底部[]中,它调用的组件位于顶部,直至达  
  13.                 到 TCP/IP。注意,此选项可能很耗时,并且在您没有  
  14.                 足够权限时可能失败。  
  15.   -e            显示以太网统计。此选项可以与 -s 选项结合使用。  
  16.   -f            显示外部地址的完全限定域名(FQDN)。  
  17.   -n            以数字形式显示地址和端口号。  
  18.   -o            显示拥有的与每个连接关联的进程 ID。  
  19.   -p proto      显示 proto 指定的协议的连接;proto 可以是下列任  
  20.                 何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选  
  21.                 项一起用来显示每个协议的统计,proto 可以是下列任  
  22.                 何一个: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP  
  23.                 或 UDPv6。  
  24.   -r            显示路由表。  
  25.   -s            显示每个协议的统计。默认情况下,显示  
  26.                 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6  
  27.                 的统计;-p 选项可用于指定默认的子网。  
  28.   -t            显示当前连接卸载状态。  
  29.   interval      重新显示选定的统计,各个显示间暂停的间隔秒数。  
  30.                 按 CTRL+C 停止重新显示统计。如果省略,则 netstat  
  31.                 将打印当前的配置信息一次。  

怎么来查看端口号被那些程序所占用?

比如我们就以常用的5151和1521来看看那些程序来占用着呢

  1. C:\Users\Administrator>netstat -ano | findstr "5151"  
  2.   TCP    0.0.0.0:5151           0.0.0.0:0              LISTENING       9204  
  3.   TCP    192.168.100.111:5151   192.168.100.111:52341  ESTABLISHED     9204  
  4.   TCP    192.168.100.111:5151   192.168.220.166:13142  ESTABLISHED     9204  
  5.   TCP    192.168.100.111:52341  192.168.100.111:5151   ESTABLISHED     9116  
  6.   TCP    [::]:5151              [::]:0                 LISTENING       9204  
  7.   
  8. C:\Users\Administrator>netstat -ano | findstr "1521"  
  9.   TCP    0.0.0.0:1521           0.0.0.0:0              LISTENING       6876  
  10.   TCP    192.168.100.111:1521   192.168.100.111:52060  ESTABLISHED     6876  
  11.   TCP    192.168.100.111:52060  192.168.100.111:1521   ESTABLISHED     7908  
  12.   TCP    [::]:1521              [::]:0                 LISTENING       6876  
最后一项就是相关的PID信息

我们可以查看任务管理器来找到相关的PID信息,这样就知道什么程序来占用这些端口号了。

  1. C:\Users\Administrator>tasklist | findstr "9204"  
  2. giomgr.exe                    9204 Services                   0     28,308 K  
  3.   
  4. C:\Users\Administrator>tasklist | findstr "9116"  
  5. ArcMap.exe                    9116 Console                    1     46,788 K  
  6.   
  7. C:\Users\Administrator>tasklist | findstr "6876"  
  8. TNSLSNR.EXE                   6876 Services                   0     22,192 K  
  9.   
  10. C:\Users\Administrator>tasklist | findstr "7908"  
  11. 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来说,其实查询端口号也是类似的

  1. [root@rhsde ~]# netstat -anp | grep "5151"  
  2. tcp        0      0 :::5151                     :::*                        LISTEN      1341/gsrvr  
  3. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.17:61957 ESTABLISHED 10352/gsrvr  
  4. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.17:61955 ESTABLISHED 10348/gsrvr  
  5. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.23:29988 ESTABLISHED 9981/gsrvr  
  6. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.23:26076 ESTABLISHED 3507/gsrvr  
  7. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.17:63637 ESTABLISHED 1852/gsrvr  
  8. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.17:63416 ESTABLISHED 1360/gsrvr  
  9. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.100.11:44171 ESTABLISHED 5085/gsrvr  
  10. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.120.10:55115 ESTABLISHED 20607/gsrvr  
  11. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.120.10:49207 ESTABLISHED 17786/gsrvr  
  12. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.120.10:49195 ESTABLISHED 1341/gsrvr  
  13. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.16:10931 ESTABLISHED 14024/gsrvr  
  14. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.176:6071 ESTABLISHED 8975/gsrvr  
  15. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.176:6074 ESTABLISHED 9181/gsrvr  
  16. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.100.128:8001 ESTABLISHED 32188/gsrvr  
  17. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.120.10:51114 ESTABLISHED 6383/gsrvr  
  18. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.120.10:51105 ESTABLISHED 6345/gsrvr  
  19. tcp        0      0 ::ffff:192.168.220.165:5151 ::ffff:192.168.220.176:4843 ESTABLISHED 11509/gsrvr  
  20. [root@rhsde ~]#  
  21. [root@rhsde ~]# netstat -anp | grep "1521"  
  22. tcp        0      0 192.168.220.165:1521        0.0.0.0:*                   LISTEN      2915/tnslsnr  
  23. tcp        0      0 192.168.220.165:1521        192.168.220.165:13139       ESTABLISHED 2915/tnslsnr  
  24. tcp        0      0 192.168.220.165:1521        192.168.220.165:13146       ESTABLISHED 2915/tnslsnr  
  25. tcp        0      0 192.168.220.165:13139       192.168.220.165:1521        ESTABLISHED 3021/ora_pmon_orcl2  
  26. tcp        0      0 192.168.220.165:13146       192.168.220.165:1521        ESTABLISHED 3188/ora_pmon_orcl  
  27. 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的使用过程中,对网络安全的掌握也没有什么,防火墙、端口号、杀毒软件等了解一下也差不多,况且以后都使用直连的话,只要数据库能够保证连接即可。


-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
------------------------------------------------------------------------------------------------------

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多