首页 > 其他分享 >奇迹mu 服务端的常用端口及功能

奇迹mu 服务端的常用端口及功能

时间:2023-11-28 09:46:08浏览次数:23  
标签:GS 启动 端口 JS mu CS 连接 服务端

奇迹服务端,只有几个端口是需要对外开放的,其余端口,都是可以关闭的,避免过多的开放端口被攻击。

常用的奇迹服务端端口:
CS端口:44405
JS端口:55970
GS端口:55901 55903 55909

风之恋登录器端口:33446
数据库端口:1433

奇迹私服服务器各程序启动参数分析,服务端带参数启动的程序有以下几个:
DataServer.exe 55960 创建55960数据交换端口
DataServer.exe 55962 创建55962数据交换端口
CS.exe 此程序虽然是不带参运行,但是默认创建了 44405 和 55557 UDP监听端口
JoinServer.exe /p55970 /caIP地址甲 /cp55557 创建55970监听端口 同时与IP地址甲的55557端口建立连接
GameServer.exe IP地址乙 55970 IP地址丙 55960 55901 与IP地址乙的55970端口,IP地址丙的55960端口建立连接,同时创建55901游戏端口
 
这些端口都有什么用呢?以下将继续更新 客户端透过服务器与数据库建立直接联系的全过程, 明白了这些,就可以知道哪些数据到底通过什么端口连接了哪个IP, 对于根据自己的情况采取合适的分机分线策略很有益处。
 
分析服务器启动过程和客户连接过程的数据通讯链路和通讯方式
 
服务器的启动:
 
启动两个DS创建了55960和55902端口做为数据通讯端口,这个相信大家都很容易理解。
启动CS后创建了两个端口 44405和55557。此时CS主程序面板上有个 JoinServer Live 现在的值是 OFF,意思就是说,JoinServer目前关闭中,它是怎么知道的呢?紧接CS启动的就是JS,它创建了55970端口,同时与CS创建的55557端口建立UDP连接,此时大家可以看到CS的JoinServer Live 值变成了ON,因为JS启动后向指定IP的55557端口发送了一个消息,表示JS启动完成,同时保持此端口的通讯,后面的GS启动会用到。GS启动完成后,与JS所创建的55970端口建立连接,发送一个包含GS信息的数据包,包括了GS启动的IP,验证码等信息,由JS记录后,从5557通道传送给CS,作为接受客户登陆时验证和连接信息使用,此时,JS和CS都已经认可了GS的启动,标志着整个服务器的启动完成。
 
客户端的连接:
 
我们常用登陆器都知道,客户端最初的连接是 某服务器 XXX.XXX.XXX.XXX 44405。这个44405在服务器端是由CS创建的,也就是说,客户端最初连接的是CS,CS接收到一个连接信息后,先判断客户端信息和由JS从55557送来的GS信息是否匹配,如果匹配则通过验证,从ConnectServer.dat文件中读取全部GS列表信息,所以客户端实际连接的IP和端口是由ConnectServer.dat文件来定义的。当客户成功登陆GS的时候,CS与用户脱离连接,同时由55557UDP通道向JS发送一个登陆信息,JS将此信息写入menb_stat表中,并对其进行管理和监视。此时,客户已经同GS建立了完全的连接,如果这个时候关闭CS对已连接的用户也是没有影响的。GS和客户的连接通道是由GS启动参数中的最后一个端口定义的,一般为55901,同时GS还通过55970联系着JS,随时向JS发送用户是否在线的信息以及判断JS存在的信息。GS的另外一个连接通道是通过55960与DS建立的连接,DS又通过ODBC与数据库建立了连接。所以说,客户与数据库之间的连接经历了 GS-DS-ODBC-SQL几个中转,GS进行数据运算,DS进行数据存储服务,ODBC提供数据连接服务,SQL提供数据库服务。这就是客户与数据库建立完全连接的全部过程。当然,同时服务器各个程序之间还进行着复杂交错的数据通信。

 

标签:GS,启动,端口,JS,mu,CS,连接,服务端
From: https://www.cnblogs.com/muonline/p/17861152.html

相关文章

  • mupdf webassembly 试用
    mupdf是基于c++编写的pdf读写以及预览工具,同时也提供了sdk,官方基于emscripten开发了一个webassembly的扩展参考使用 constfs=require("fs")constmupdf=require("mupdf")letdata=fs.readFileSync("demo.pdf")letdoc=mupdf.Document.openDoc......
  • docker 创建的gitlab怎么修改ssh端口以及地址
    首先进入容器中dockerexec-tigitlab/bin/bash然后执行修改配置的命令vi/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml 修改这三个地方的值然后执行一下gitlab-ctlrestart重启一下gitlab即可 ......
  • multipleWindow3dScene代码解释
    title:深入分析:GitHubTrending项目"multipleWindow3dScene"banner_img:https://cdn.studyinglover.com/pic/2023/11/b57a22bd9cf8a1c0a954fd61e6c311f2.pngdate:2023-11-2719:18:00tags:-文字生成图片这是由chatGPT生成的文章,内容是关于GitHubTrending项目"multi......
  • Python Multiprocessing Pool's Task Scheduling
    mppool的任务调度遵循FIFO机制。对任务数组,逐个分配进程资源。如对于p0-pn,pi对应的是a[i]的资源。一般来说sizeof(a)>sizeof(p),即任务数大于进程资源数。此时,空闲的资源将进一步使用FIFO,选取任务进行执行,从而避免资源浪费。因此,在排布a[i]的时候,基本是不需要进行时长大小......
  • 解密Spring Cloud微服务调用:如何轻松获取请求目标方的IP和端口
    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。目的SpringCloud线上微服务实例都是2个起步,如果出问题后,在没有ELK等日志分析平台,如何确定调用到了目标服务的那个实例,以此来排查问题效果可以看到服务有几个实例是上线,并且最终调用了那个实......
  • C++ 服务端与 Java 客户端的简单连接
    记录一下如何用两种语言简单通信,(其实也大差不差的,应该把。。。)//C++服务端#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#include<iostream>#include<cstring>usingstd::cout;usingstd::endl;usingst......
  • ICPC2022Xian E Find Maximum 题解
    LinkICPC2022XianEFindMaximumQuestion定义\(f(x)\)求Solution通过打表我们可以发现\(f(x)\)表示三进制表达中有效位数与数码和之和接下来考虑如何获得最大的\(f(x)\)贪心的去考虑,假设答案为\(Ans\),\((Ans)_3\)肯定是前几位和\((R)_3\)的前几位一样,然后某一......
  • Netty源码学习5——服务端是如何读取数据的
    系列文章目录和关于我零丶引入在前面《Netty源码学习4——服务端是处理新连接的&netty的reactor模式》的学习中,我们了解到服务端是如何处理新连接的,即注册ServerSocketChannel对accept事件感兴趣,然后包装ServerSocketChannel为NioServerSockectChannel,最后由主Reactor在循环中利......
  • huggingface_hub.utils._validators.HFValidationError: Repo id must be in the form
    问题:2023-11-2607:45:38|ERROR|stderr|raiseHFValidationError(2023-11-2607:45:38|ERROR|stderr|huggingface_hub.utils._validators.HFValidationError:Repoidmustbeintheform'repo_name'or'namespace/repo_name':'/mnt......
  • 汇编-MUL和IMUL乘法
    32位模式下整数乘法可以实现32、16或8位的操作,64位下还可以使用64位操作数。MUL执行无符号乘法,IMUL执行有符号乘法MUL:无符号数乘法32位模式下,MUL(无符号数乘法)指令有三种类型:执行8位操作数与AL寄存器的乘法;执行16位操作数与AX寄存器的乘法;执行32位操作数与EAX寄......