传输层端口号

一、什么叫端口号

端口号---具有网络功能的应用软件的标识号。注意,端口号是不固定的,即可以由用户手工可以分配(使用通用的端口号,其他用户可以方便的使用,这就是服务器为什么要使用通用端口号的原因)(当然,一般在软件编写时就已经定义)。当然,有很多应用软件有公认的默认的端口,比如FTP:20和21,HTTP:80,TELNET:23等等,这里就不一一列举了。一个软件可以拥有多个端口号,这证明这个软件拥有不止一个网络功能。 

0-1023是公认端口号,即已经公认定义或为将要公认定义的软件保留的,而1024-65535是并没有公共定义的端口号,用户可以自己定义这些端口的作用。 

那么端口号到底有什么作用呢?请大家继续往下看。 

当一台电脑启动了一个可以让远程其他电脑访问的程序,那么它就要开启至少一个端口号来让外界访问。我们可以把没有开启端口号的电脑看作是一个密封的房间,密封的房间当然不可能接受外界的访问,所以当系统开启了一个可以让外界访问的程序后它自然需要在房间上开一个窗口来接受来自外界的访问,这个窗口就是端口。 
那么为什么要给端口编号来区分它们呢,既然一个程序开了一个端口,那么不是外部信息都可以通过这个开启的端口来访问了吗?答案是不可以。为什么呢?因为数据是用端口号来通知传输层协议送给哪个软件来处理的,数据是没有智慧的,如果很多的程序共用一个端口来接受数据的话,那么当外界的一个数据包送来后传输层就不知道该送给哪一个软件来处理,这样势必将导致混乱。 

上一次提到提到在一个经过OSI第四层传输层封装的数据段的第四层报头里包含两个端口号,既源端口号和目的端口号,目的端口号的作用上面已经介绍了,下面让我们了解一下原端口号吧。 
源端口号一般是由系统自己动态生成的一个从1024-65535的号码,当一台计算机A通过网络访问计算机B时,如果它需要对方返回数据的话,它也会随机创建一个大于1023的端口,告诉B返回数据时把数据送到自己的哪个端口,然后软件开始侦听这个端口,等待数据返回。而B收到数据后会读取数据包的源端口号和目的端口号,然后记录下来,当软件创建了要返回的数据后就把原来数据包中的原端口号作为目的端口号,而把自己的端口号作为原端口号,也就是说把收到的数据包中的原和目的反过来,然后再送回A,A再重复这个过程如此反复直到数据传输完成。当数据全部传输完A就把源端口释放出来,所以同一个软件每次传输数据时不一定是同一个源端口号。
什么是端口号
--作者:skygunner
--发布时间:2005-12-5 21:14:31

--

比如学校同一个食堂卖菜的管卖菜,卖饮料的管饮料

同一台电脑对外来说只有一个IP,但是一台电脑可以提供各种不同的服务,比如WEB服务,FTP服务,SMTP邮键服务。
端口就是用来区别的服务的,也就是说网络上的服务是用IP+端口这样的形式来区别的。
一般而言,FTP端口大家都用21,web(http)用80,这些端口也可以自己指定。

0~1023之间的端口是周知端口,就是说哪个端口分配给哪个服务一般是固定的,网络上大家都这么用,都知道。

1024~65535之间的端口是动态端口,不固定分配。

每个网络程序通信都要通过端口的,不管是QQ,BT,迅雷等等。

 

二、什么是端口

在Internet上,各主机间通过TCP/TP协议发送和接收数据报,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据报顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。

    本地操作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。

    端口其实就是队,操作系统为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据报的进程需要开启它自己的端口,发送数据报的进程也需要开启端口,这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口。

三 端口的分类

    在Internet上,按照协议类型分类,端口被分为TCP端口和UDP端口两类,虽然他们都用正整数标识,但这并不会引起歧义,比如TCP的80端口和UDP的80端口,因为数据报在标明端口的同时,还将标明端口的类型。 

    从端口的分配来看,端口被分为固定端口和动态端口两大类(一些教程还将极少被用到的高端口划分为第三类:私有端口):
    固定端口(0-1023):
    使用集中式管理机制,即服从一个管理机构对端口的指派,这个机构负责发布这些指派。由于这些端口紧绑于一些服务,所以我们会经常扫描这些端口来判断对方是否开启了这些服务,如TCP的21(ftp),80(http),139(netbios),UDP的7(echo),69(tftp)等等一些大家熟知的端口;
    动态端口(1024-49151):
    这些端口并不被固定的捆绑于某一服务,操作系统将这些端口动态的分配给各个进程,同一进程两次分配有可能分配到不同的端口。不过一些应用程序并不愿意使用操作系统分配的动态端口,他们有其自己的‘商标性’端口,如oicq客户端的4000端口,木马冰河的7626端口等都是固定而出名的。

四 端口在入侵中的作用

    有人曾经把服务器比作房子,而把端口比作通向不同房间(服务)的门,如果不考虑细节的话,这是一个不错的比喻。入侵者要占领这间房子,势必要破门而入(物理入侵另说),那么对于入侵者来说,了解房子开了几扇门,都是什么样的门,门后面有什么东西就显得至关重要。

    入侵者通常会用扫描器对目标主机的端口进行扫描,以确定哪些端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞,因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。

五 端口的相关工具

1 netstat -ano 
    的确,这并不是一个工具,但他是查看自己所开放端口的最方便方法,在cmd中输入这个命令就可以了。如下:
C:/>netstat -an



C:\Users\LFG>netstat -ano


活动连接


  协议  本地地址             外部地址                      状态                   PID
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       920
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       3252
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:902            0.0.0.0:0              LISTENING       3128
  TCP    0.0.0.0:912            0.0.0.0:0              LISTENING       3128
  TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING       600
  TCP    0.0.0.0:1026           0.0.0.0:0              LISTENING       984
  TCP    0.0.0.0:1027           0.0.0.0:0              LISTENING       1116
  TCP    0.0.0.0:1029           0.0.0.0:0              LISTENING       672
  TCP    0.0.0.0:1031           0.0.0.0:0              LISTENING       648
  TCP    0.0.0.0:1032           0.0.0.0:0              LISTENING       3616
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       2072
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       1552
  TCP    127.0.0.1:8307         0.0.0.0:0              LISTENING       3252
  TCP    127.0.0.1:13748        0.0.0.0:0              LISTENING       4092
  TCP    127.0.0.1:27018        0.0.0.0:0              LISTENING       2004
  TCP    127.0.0.1:50000        0.0.0.0:0              LISTENING       3156
  TCP    192.168.4.232:139      0.0.0.0:0              LISTENING       4
  TCP    192.168.4.232:1038     180.149.135.176:80     CLOSE_WAIT      2824
  TCP    192.168.4.232:1039     219.142.78.243:80      CLOSE_WAIT      2824
  TCP    192.168.4.232:1135     58.215.106.54:80       CLOSE_WAIT      5156
  TCP    192.168.4.232:1294     110.75.147.112:443     CLOSE_WAIT      2636
  TCP    192.168.4.232:1342     74.125.203.125:5222    ESTABLISHED     2432
  TCP    192.168.4.232:1537     220.181.75.116:80      CLOSE_WAIT      3156
  TCP    192.168.4.232:1945     220.181.76.71:80       CLOSE_WAIT      2940
  TCP    192.168.4.232:4149     220.181.76.36:80       CLOSE_WAIT      3156
  TCP    192.168.4.232:4216     106.120.151.123:80     CLOSE_WAIT      2432
  TCP    192.168.4.232:4237     180.149.156.143:80     CLOSE_WAIT      2888
  TCP    192.168.4.232:4238     106.120.151.123:80     CLOSE_WAIT      4364
  TCP    192.168.4.232:4305     115.231.82.101:80      CLOSE_WAIT      3156
  TCP    192.168.4.232:5159     110.75.131.11:80       CLOSE_WAIT      2104
  TCP    192.168.4.232:5420     220.181.76.28:80       CLOSE_WAIT      3156
  TCP    192.168.4.232:6472     220.181.76.25:80       CLOSE_WAIT      3156
  TCP    192.168.4.232:6473     220.181.76.25:80       CLOSE_WAIT      3156


2 fport.exe和mport.exe 
    这也是两个命令行下查看本地机器开放端口的小程序,其实与netstat -an这个命令大同小异,只不过它能够显示打开端口的进程,信息更多一些而已,如果你怀疑自己的奇怪端口可能是木马,那就用他们查查吧。

3 activeport.exe(也称aports.exe)
    还是用来查看本地机器开放端口的东东,除了具有上面两个程序的全部功能外,他还有两个更吸引人之处:图形界面以及可以关闭端口。这对菜鸟来说是个绝对好用的东西,推荐使用喔。

4 superscan3.0
    它的大名你不会没听说过吧,纯端口扫描类软件中的NO.1,速度快而且可以指定扫描的端口,不多说了,绝对必备工具。

六 保护好自己的端口

    刚接触网络的朋友一般都对自己的端口很敏感,总怕自己的电脑开放了过多端口,更怕其中就有后门程序的端口,但由于对端口不是很熟悉,所以也没有解决办法,上起网来提心吊胆。其实保护自己的端口并不是那么难,只要做好下面几点就行了:

1) 查看:经常用命令或软件查看本地所开放的端口,看是否有可疑端口;

2) 判断:如果开放端口中有你不熟悉的,应该马上查找端口大全或木马常见端口等资料(网上多的很),看看里面对你那个可疑端口的作用描述,或者通过软件查看开启此端口的进程来进行判断;

3) 关闭:如果真是木马端口或者资料中没有这个端口的描述,那么应该关闭此端口,你可以用防火墙来屏蔽此端口,也可以用本地连接-TCP/IP-高级-选项-TCP/IP筛选,启用筛选机制来筛选端口;

    注意:判断时候要慎重,因为一些动态分配的端口也容易引起你多余的怀疑,这类端口一般比较低,且连续。还有,一些狡猾的后门软件,他们会借用80等一些常见端口来进行通信(穿透了防火墙),令人防不胜防,因此不轻易运行陌生程序才是关键。

三、端口大全

在网络技术中,端口的英文是Port,它有有两种解释:
        一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。
        二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。我们这里将要介绍的就是逻辑意义上的端口。

  端口的分类

  逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类:

  1. 按端口号分布划分

  (1)知名端口(Well-Known Ports)

  知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。

  (2)动态端口(Dynamic Ports)

  动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。

  不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是7626、WAY 2.4是8011、Netspy 3.0是7306、YAI病毒是1024等等。

  2. 按协议类型划分

  按协议类型划分,可以分为TCP、UDP、IP和ICMP(Internet控制消息协议)等端口。下面主要介绍TCP和UDP端口:

  (1)TCP端口

  TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等等。

  (2)UDP端口

  UDP端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等等

         怎样去查看(找)端口呢?

        提示:本人对Windows系统熟悉点,所以不阐述其它系统了!见谅!

  在Windows 2000/XP/Server 2003中要查看端口,可以使用Netstat命令:

  依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。在命令提示符状态下键入“netstat -a -n”,按下回车键后就可以看到以数字形式显示的TCP和UDP连接的端口号及状态(如图)。


QUOTE:
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.

C:Documents and SettingsAdministrator>netstat -a -n

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:21             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:25             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:110            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:143            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:366            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1026           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1027           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1040           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1045           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1863           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:3000           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:3004           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:4449           0.0.0.0:0              LISTENING
  TCP    127.0.0.1:3001         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:3002         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:3003         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:3009         127.0.0.1:3306         ESTABLISHED
  TCP    127.0.0.1:3306         127.0.0.1:3009         ESTABLISHED
  TCP    127.0.0.1:9189         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:23883        0.0.0.0:0              LISTENING
  TCP    192.168.1.100:80       59.49.233.34:31456     ESTABLISHED
  TCP    192.168.1.100:80       61.141.167.189:1177    ESTABLISHED
  TCP    192.168.1.100:80       218.56.136.208:5285    ESTABLISHED
  TCP    192.168.1.100:80       221.237.165.17:1213    ESTABLISHED
  TCP    192.168.1.100:80       222.168.11.186:4422    ESTABLISHED
  TCP    192.168.1.100:139      0.0.0.0:0              LISTENING
  TCP    192.168.1.100:1038     222.47.205.27:5050     ESTABLISHED
  TCP    192.168.1.100:4079     219.136.252.79:80      ESTABLISHED
  TCP    192.168.1.100:4604     83.149.119.17:80       CLOSE_WAIT
  TCP    192.168.1.100:4605     83.149.119.17:80       CLOSE_WAIT
  TCP    192.168.1.100:4691     165.21.32.111:80       FIN_WAIT_1
  TCP    192.168.1.100:4694     165.21.32.104:80       FIN_WAIT_1
  UDP    0.0.0.0:161            *:*
  UDP    0.0.0.0:500            *:*
  UDP    0.0.0.0:1028           *:*
  UDP    0.0.0.0:1044           *:*
  UDP    0.0.0.0:3005           *:*
  UDP    0.0.0.0:3010           *:*
  UDP    0.0.0.0:3348           *:*
  UDP    0.0.0.0:3581           *:*
  UDP    0.0.0.0:3956           *:*
  UDP    0.0.0.0:3958           *:*
  UDP    0.0.0.0:4500           *:*
  UDP    0.0.0.0:4714           *:*
  UDP    0.0.0.0:27099          *:*
  UDP    0.0.0.0:29367          *:*
  UDP    0.0.0.0:29368          *:*
  UDP    127.0.0.1:123          *:*
  UDP    127.0.0.1:1037         *:*
  UDP    127.0.0.1:3006         *:*
  UDP    127.0.0.1:3363         *:*
  UDP    127.0.0.1:3551         *:*
  UDP    127.0.0.1:3600         *:*
  UDP    127.0.0.1:4321         *:*
  UDP    192.168.1.100:123      *:*
  UDP    192.168.1.100:137      *:*
  UDP    192.168.1.100:138      *:*
  UDP    192.168.1.100:17985    *:*
  UDP    192.168.1.100:17987    *:*

C:Documents and SettingsAdministrator>
这些,就是你的机器开放和正在使用的端口了!
(上面的具体参数是什么意思,我们后面再讲,这里不讲那么多,免得新手一下接受不了)


不过这个操作命令我还是要解释一下,因为我自己也经常忘记
Netstat命令

命令格式:Netstat -a -e -n -o -s

  -a 表示显示所有活动的TCP连接以及计算机监听的TCP和UDP端口。

  -e 表示显示以太网发送和接收的字节数、数据包数等。

  -n 表示只以数字形式显示所有活动的TCP连接的地址和端口号。

  -o 表示显示活动的TCP连接并包括每个连接的进程ID(PID)。

  -s 表示按协议显示各种连接的统计信息,包括端口号


netstat命令详解


Displays protocol statistics and current TCP/IP network connections.

NETSTAT [-a] [-e] [-n] [-o] [-s] [-p proto] [-r] [interval]

  nbsp;-a nbsp;           Displays all connections and listening ports.
  -e            Displays Ethernet statistics. This may be combined with the -s
                option.
  -n            Displays addresses and port numbers in numerical form.
  -o            Displays the owning process ID associated with each connection.
  -p proto      Shows connections for the protocol specified by proto; proto
                may be any of: TCP, UDP, TCPv6, or UDPv6.  If used with the -s
                option to display per-protocol statistics, proto may be any of:
                IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP, or UDPv6.
  -r            Displays the routing table.
  -s            Displays per-protocol statistics.  By default, statistics are
                shown for IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP, and UDPv6;
                the -p option may be used to specify a subset of the default.
  interval      Redisplays selected statistics, pausing interval seconds
                between each display.  Press CTRL+C to stop redisplaying
                statistics.  If omitted, netstat will print the current
                configuration information once.

基本是这样了。

    好了,基本上,你应该有些端口的概念了!接下来,让我们再来了解,什么叫《端口映射》

          1-为什么要映射:如果你是ADSL、CABLE MODEM或光纤等宽带接入用户,想在网吧或公司内部建一个游戏服务器或WEB服务器,并且能够让互联网上的用户访问你的服务器,那么你就会遇到端口映射问题。 (举个简单例子:你爸上学校找你,来到学校大门却不知道你在哪个教室,这时候值班老师就带你爸爸来到你的教室---->这个过程就如同“端口映射”)

          2-怎样去映射:通常情况下,路由器都有防火墙功能,互联网用户只能访问到你的路由器WAN口(接ADSL线口),而访问不到内部服务器。要想让外面用户访问到服务器,那么你就要在路由器上做一个转发设置,也就是端口映射设置,让用户的请求到了路由器后,并能够到达游戏服务器或WEB服务器。这就是端口映射。
目前,所有的宽带路由器都有端口映射功能,只是各个路由器厂商所取功能名称不一样,有的叫虚拟服务器,有的叫NAT设置。。。
端口映射设置很简单,例如要映射一台IP地址为192.168.1.254的WEB服务器,只需把服务器的IP地址192.168.1.254和TCP端口80填入到路由器的端口映射表中就OK了,当然不同的服务有不同的端口,新手切勿乱改端口,避免造成冲突,这样的冲突故障一般情况下你是找不到原因的!

         3-射完后,如何检测:举个例子:WEB服务器应该是80端口映射,这时候,先放一个名为index.htm的静态页面,然后用你的ip或者域名输入到地址栏,回车,看看是否能正常访问!

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值