内网端口映射详解(花生壳)
转自:http://hi.baidu.com/xujinnei/item/de88c5b22af4f2eb4fc7fdf2
关于如何建立服务器的解答。
一.花生壳的作用
首先,我们先来了解一下花生壳的到底有什么作用。因为ADSL每次拨号上网所获得的IP地址每次都是不同的,花生壳起到的作用就是方便用户访问我们的服务器(只需要输入域名便可),而不用每次都输入IP地址那么麻烦(因为我们也不可能每次重新拨号上网后,又去告诉用户现在的服务器的IP地址什么)。
例如,我们的花生壳护照下有一个域名www.oray.net ,那么只要在电脑上用该护照登陆了花生壳客户端。当别人输入www.oray.net的时候,会自动解析到那台电脑所在的网络的公网IP地址。
也就是说,具体的服务器,是要我们自己去设置完成的。而不同的上网方式,建立服务器的方式是不同的,下面介绍两种常见上网方法的服务器的建立。(这两个上网方法主要区别在于用来做服务器的计算机,能否得到公网的IP地址)。
二.ADSL直接拨号上网(不经过路由器等路由设备)
如果是通过ADSL Modem直接ADSL拨号上网,那么您的计算机获得的是公网的IP地址。
可以参考这里面的文章来直接建立服务器:http://www.oray.net/Help/Samples/Help_Samples.htm 。
三.通过路由器共享上网(也就是处于局域网内部)
如果您是通过路由器上网,那么则需要在路由器上做端口映射,外网的计算机才能访问你的服务器。
背景知识:
1.什么是私有IP地址(内网IP地址)?
私有地址,这些地址被大量用于企业内部网络中。一些宽带路由器,也往往使用192.168.1.1作为缺省地址。私有网络由于不与外部互连,因而可能使用随意的IP地址。保留组的地址供其使用是为了避免以后接入公网时引起地址混乱。使用私有网络在接入Internet事,要使用实质翻译(NAT),将私有地址翻译成公用合法地址。在Internet上,这类地址是不能出现的。
2.私有IP地址的范围(形式):
192.168.x.x (如上图里面的192.168.1.10到192.168.1.12)
10.x.x.x
172.16.x.x ~172.31.x.x
为什么局域网内做服务器要在路由器上做端口映射?
首先,我们必须清楚:
(1)Internet网络中,只有公网IP是能够互相通讯的。
(2)局域网内,通一网段的私有IP地址能够互相通讯。(但公网IP不能和私有IP直接互相通讯。)
(3)路由器一般有两个IP:一个是公网IP地址(用于和公网的计算机通讯)。一个是内网(私有)IP(用于和内网的计算机通讯)。
(4)与路由器连接的计算机,获取的只是内网(私有)IP地址。只能通过路由器和公网的其它计算机进行通讯。
(它自己是不能直接和外网的计算机通讯的)
注意第(2)点,这就是为什么许多朋友都问:“为什么我的网站在局域网的电脑上可以浏览,但外网的电脑却打不开?”的主要原因。
常见的服务器端口号:
WEB服务器(网站服务器):80端口
FTP服务器(文件服务器):21端口
终端服务器:3389端口
邮件服务器:25端口(SMTP)和110端口(POP)
VPN服务器:1723端口
实例说明
假设现在外网有一台ADSL直接拨号上网的电脑,所获得的是公网IP(61.168.45.23)。然后它想访问局域网内的电脑
(192.168.1.10)上面的网站。
(路由器上已经做好了端口映射。具体规则是:将所有发向自己80端口的数据,都转发到内网的计算机192.168.1.10上。)
访问过程如下:
①公网电脑(61.168.45.23)向路由器(218.6.146.31)发送请求,要求访问它的80端口。(相同道理,如果是要访问FTP服务器,
则发送访问路由器21端口的请求。)
②路由器收到请求后,按照端口映射的规则,通过内网IP地址192.168.1.1把请求的数据发送到局域网内的计算机192.168.1.10上。
③计算机192.168.1.10收到请求后,把自己电脑中网站的数据发送到路由器。
④路由器收到计算机192.168.1.10发来的数据后,通过公网IP 218.6.146.31把它们发送到公网的计算机61.168.45.23上去。
下面我们就结合花生壳,再来说明上面的例子:
例如
我们的花生壳护照abc下有一个域名www.oray.net,那么我们在192.168.1.10上,用护照abc登陆花生壳客户端。这时候,www.oray.net 对应的IP地址就是路由器的公网IP地址218.6.146.31了。具体访问过程如下:
①公网电脑(61.168.45.23)的用户输入www.oray.net,想要访问192.168.1.10上的网站。
②花生壳的域名服务器告诉计算机61.168.45.23,www.oray.net这个域名对应的IP地址是218.6.146.31。
③于是,计算机61.168.45.23向路由器(218.6.146.31)发送请求,要求访问它的80端口。
④路由器收到请求后,按照端口映射的规则,通过内网IP地址192.168.1.1把请求的数据发送到局域网内的计算机192.168.1.10上。
⑤计算机192.168.1.10收到请求后,把自己电脑中网站的数据发送到路由器。
⑥路由器收到计算机192.168.1.10发来的数据后,通过公网IP 218.6.146.31把它们发送到公网的计算机61.168.45.23上去。
可以看到,其实正个过程和原来差不多是一样的,只是前面部分稍微有点不同,多了个域名解析过程而已。
四.到底什么是端口
在网络技术中,端口的英文是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 Settings\Administrator>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 Settings\Administrator>
这些,就是你的机器开放和正在使用的端口了!
(上面的具体参数是什么意思,我们后面再讲,这里不讲那么多,免得新手一下接受不了)
不过这个操作命令我还是要解释一下,因为我自己也经常忘记
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或者域名输入到地址栏,回车,看看是否能正常访问!
5.为什么我输入我的域名后,要输入账号和密码?
(1)路由器(或Modem)中开启了远程管理功能,占用了路由器的80端口,所以每次输入域名(或路由器的公网IP),都会弹出登陆
窗口。
(2)你的Web配置不正确,Web服务器的默认账号没有访问站点目录的权限。
作者:roddick