写这个主要为了把之前的坑彻底填了,如果你真想解决搜不到服务器的问题,还是逐字逐句看吧。实在不行再来加群18963825,提问的要求是邮件或者回复图文并茂300字写明尝试方法,有问必回,另外我只解决服务器无法被搜索到的问题。
一.mc传输数据的方式
1.局域网
mc在局域网中搜索游戏的协议是udp协议,特点是没节操。过程是这样的:
客户端向自己网段中所有的主机广播一枚udp包,内容是——"我正在找mc服务器,我的ip是XXX,我的游戏端口是XXX,请服务器速速回信。"网段中的服务器如果收到这个包会立马返还一个udp封包,告知客户端他的ip地址,客户端收到之后就能在界面中看到服务器还有延迟了(就是你看到的红黄绿)。之后双方再通过tcp协议开始游戏(下文会解释tcp协议)。
2.互联网
mc在互联网中搜索游戏采用的是tcp协议,tcp俗称是三次握手协议,过程是客户端向已知的服务器发一个包,服务器收到之后向客户端返还一个包,至此2次握手已经完成,客户端通过2次封包的间隔时间得出了延迟。如果客户端需要登陆服务器,就会再发一个包给服务器,至此3次握手完成,开始传输数据,game start。
小知识:广播udp包的方法是向地址255.255.255.255发送一枚udp包(这个地址由交换机或者路由器保管),路由器或者交换机收到这个包会之后广播给所有局域网里的主机。
浩方的原理就是将这个包截获,修改源地址为浩方的ip再发给游戏服务器,这样服务器就会将包返还给浩方,浩方再将包代交给客户端。(浩方上几乎所有的游戏都是基于这个原理)
此章节有两点:所有访问都是由客户端发起,而服务器在收到来自客户端的第一个包之前什么都不会做。
二.现实情况分析
家家都有个路由器
路由器的功能是只利用一个公网ip让其下所有的设备都连接上网,一个ip总计可以开放65535个端口,如果6万多个端口全部被占用之后,路由器就无法给更多的电脑提供网络了。
路由器会分配旗下电脑的新的ip地址(比较常见的192.168.X.X)
互联网协议又称为对等协议,所以互联网的两台设备必须都在公网ip下才能连接(或称顶级ip),如果一台路由器下的电脑想要连接一个公网的服务器,他必须依托拥有公网ip的路由器来完成。路由器负责会转发所有的封包。所以成功连接关键是对等,且路由器完成转发的工作。
下面举个路由器工作原理的例子
假设路由器114.80.23.116下,现在有一台客户端想要连接一个互联网的mc服务器40.110.5.16,他发送了第一枚tcp包,包的源地址写的是192.168.X.X,目标地址是40.110.5.16。经过路由器时将其源地址改写为114.80.23.116然后转发给服务器。服务器收到之后回复一个包给路由,路由转发给客户端,任务完成。路由器的任务就是反复涂写客户端发出封包的源地址。
但是路由器转发有个先决条件:第一个包必须由旗下客户端发出,路由器会记录下包的目标地址和源地址的ip和端口,以便收到回复时能准确投递给客户端的正确端口,这个过程有个名词叫做打洞(NAT),打洞工作由客户端发出的第一个包完成。
你是否记得我前文说过,服务器在收到第一个包之前什么都不会做,
所以一个开在路由器下的服务器是不会主动在路由器上打洞的,自然收不到任何来自客户端的封包的。为了解决这个阻碍,我们需要手动在路由器上面打洞(通过端口映射,常见有upnp,dmz,虚拟服务器,再或就是利用浩方、花生壳这类软件)。手动打洞完成之后,服务器就能接受到客户端的封包了。
我来一一说明实现方法:
upnp:进入路由器打开upnp功能,具有upnp功能的服务器(傻瓜开服器,水桶插件都有这类的功能)会主动在路由器上打洞(NAT),告知路由将所有目标端口为25565的包都转发给它。
dmz:进入路由器设置页面,设置dmz映射的ip为服务器ip,这时路由器会将自己所有的端口映射到服务器电脑上,此时防火墙将有服务器电脑替代,这方法在安全上略显不足。
虚拟服务器:方法也是进入路由器,设置映射服务器的25565到路由的25565。ok,and enjoy。
浩方,和花生壳我就不说了。
三.常见问题
1.有些光纤猫自带拨号,所以他本身就具有路由器的功能,如果再接个路由,就是路由套路由这种情况, 解决方法无非就是一级一级向上端口映射,要么把猫改成桥接模式再由外接的路由器拨号或是电脑直接拨号。无论哪种方法都必须进光线猫,进光纤猫要超级密码,请自行baidu获得方法。(光这一步就足够你折腾个把小时了而且你必须做,不想做的话浩方是个好选择)
2.当腐竹还得清楚网络供应商允不允许开放端口25565,打个电话咨询一下供应商吧。
3.天朝上行的带宽低的可怜,所以直连并不那么美,在浩方面前就是渣渣。
4.教育网分很多种,有些具有独立的公网ip可以直接互联,更多的是只有ipv6互联方式,方法是
(一)首先电脑安装ipv6,win7自带ipv6,xp用户开始运行cmd窗口输入ipv6 install
(二)客户主机运行一个批处理.bat文件(服务器不需要),语句在下面粘帖(记得删除括号中的内容)
@echo off
pause
(三)接着游戏中的服务器地址输入127.0.0.1
(四)没有第四步了。。。。
(非常有用)四.一个较万能的测试你的网络是否可以使用傻瓜开服器(具有upnp功能的开服器)在官网下载一个utorrent或者emule,不需要进行任何设置,打开选项中一个链接的选项卡如图所示,你可以看到ut传输的端口,记下这个端口然后登录canyouseeme.org这个网站查询这个端口是否可见。如果显示为绿色的success,那么恭喜你,赶快去下载一个开服器吧,如果默认的25565端口不能用,不妨试试之前测试成功的ut的端口。反之如果是红色的error,那么很遗憾,你只能尝试别的方法了。(ps 请反复随机端口多试几次,所以请祈祷吧)
-
QQ图片20150722184519.jpg (69.88 KB, 下载次数: 38)