前网易架构师-高司机
曾在IBM的Platform Computing,淘米网,网易搬砖。资深游戏服务器架构师,合作+v(gao_ke104)可付费咨询服务器架构设计,网络问题,深度学习和训练数据集等问题,提供商业化的视觉人工智能检测和预警系统(煤矿,工厂,制造业,消防等领域的工业化产品),合作开发商业性游戏。
展开
-
Ddos攻击防御之使用nginx
如果你想一段时间内被限制超过了5次,就拉黑几分钟, 为什么要拉黑呢,因为nginx也是有压力的,比如这里的10m存储区域,另外,nginx返回503,请求不是没成功,只是没有转发给你的业务应用,nginx的压力依旧存在,大量请求过来,完全可能导致nginx瘫痪,这种限制只是保护了nginx后面的应用而已,当然nginx的并发性能很屌,这样处理也是OK的,但不代表nginx就不能被弄瘫痪,最好的办法是发现是明显攻击后将ip拉黑,可以动态的处理,比如拉黑几分钟、几十分钟、几小时等等。原创 2024-01-09 20:34:39 · 934 阅读 · 0 评论 -
什么是 DDoS 攻击
最简单的形式是,当在没有特定限制标准的情况下实施黑洞过滤时,合法和恶意的网络流量都会被路由到空路由或黑洞,并从网络中丢弃。然后,工作人员会收到更多未经确认的包裹请求,直到他们无法携带更多包裹,变得不知所措,并且请求开始得不到答复。涉及不加区别地丢弃或限制流量的缓解尝试可能会将好的流量与坏的流量一起丢弃,并且攻击也可能会修改和适应规避对策。当受害者的服务器或网络成为僵尸网络的目标时,每个僵尸程序都会向目标的IP 地址发送请求,可能会导致服务器或网络不堪重负,从而导致对正常流量的拒绝服务。原创 2024-01-09 13:44:35 · 902 阅读 · 0 评论 -
手把手教程-自动抢单某知名外卖程序制作
大家好,好久没有更新了,近半年项目事情较多,最近刚好有空来更新下文章,这篇文章是货真价实的教程,只需要这一篇文章,你就可以做更多的类似的挂。网络原理我就不多说了,可以参考我的,还有抓包相关工具我暂时不多介绍了,如果有需要,后台私聊找我,我来继续更新抓包工具和使用的相关文章。原创 2023-11-21 17:17:10 · 634 阅读 · 0 评论 -
如何确保多人游戏的配对体验快速而顺利
开发人员知道,游戏玩家在玩游戏时最快乐,他们等待进入多人游戏的时间越长,你失去他们的速度就越快。玩家不喜欢在大厅里等待;他们想马上参与行动。这就是为什么优化匹配是关键。谷歌(Google)和Unity的Open Match等系统正在加速使用自定义逻辑构建匹配器的能力,使开发人员能够访问工具,从而消除从头开始构建系统的必要性。如果没有这些劳动密集型的工作,开发人员就可以自由地专注于优化、调整输入和选择逻辑,以最适合他们的游戏。原创 2024-03-23 10:04:06 · 128 阅读 · 1 评论 -
关于数据包丢失你需要知道的一切(以及如何避免它)
我们在网上所做的一切都是以数据包的形式传输的。把它想象成度假时的行李——你会把旅行所需的东西装在几件行李中,比如托运的行李箱、随身行李或背包。为了使所有数据都适合并快速从A移动到B,网络减少了数据包的大小,并在数据包开始旅程之前对其进行加密。继续行李类比,这类似于你如何使用真空吸尘器包或立方体包装,甚至把卷起的衣服塞进鞋子里,在把行李箱锁紧之前尽可能多地挤进去。可悲的是,生活中的一个事实是,有时,当你旅行时,你的托运行李会错过连接,在柏油路上被雨水磨损或浸湿,或者直接消失在a点和B点之间。原创 2023-04-27 13:56:46 · 944 阅读 · 0 评论 -
游戏有延迟?如何获得一个好的Ping
在多人游戏世界中,玩家要想获得良好的游戏体验,需要做很多事情——尤其是如果这种良好的体验取决于你的想法。在线多人游戏,如FPS(第一人称射击游戏)、赛车和一些MMORPG类型的游戏,尤其取决于玩家对游戏反馈的及时有效反应。这个反馈和反应链有很多环节,其中一个环节是你,玩家,另一个环节就是你的“ping”。原创 2023-04-26 09:52:44 · 590 阅读 · 0 评论 -
微信小游戏获取用户相关api返回签名错误87009的解决方案
这里我们提供几个go语言的HmacSha256的签名算法,相信遇到这种问题的很多人都见到过这种算法,我们顺便也就能验证下到底是哪个算法才能帮助我们解决问题,大家在用微信小游戏经常会通过小程序的appid和secret来获取访问权限,这样就能获取用户的加密串,或者查询用户的记录。发现按照官网的方法填充都不对,实际上真正有效的是算法4,那么参数怎么传呢?最终完美解决,如果你遇到类似的问题,仍然没有解决,可以下方留言。于是我们就按照微信官网的方式来生成签名,结果。原创 2023-04-21 19:21:58 · 25205 阅读 · 0 评论 -
架构师必须要掌握的大小端问题
所谓的大端模式,就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。所谓的小端模式,就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。简单来说:大端——高尾端,小端——低尾端原创 2023-03-20 17:52:55 · 976 阅读 · 0 评论 -
我给游戏服务器端开发的一些建议
本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结。第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一些基本原则。希望能帮到大家一 专业基础1.1 网络1.1.1 理解TCP/IP协议网络传输模型滑动窗口技术建立连接的三次握手与断开连接的四次握手连接建立与断开过程中的各种状态TCP/IP协原创 2013-01-05 22:11:18 · 24649 阅读 · 1 评论 -
关于长连接服务器和客户端之间要加入心跳的一些讨论
所以,对于用于保活的心跳包,我们最佳做法是,设置一个上次包时间,每次收数据和发数据时,都更新一下这个包时间,而心跳检测计时器每次检测时,将这个包时间与当前系统时间做一个对比,如果时间间隔大于允许的最大时间间隔(实际开发中根据需求设置成 15 ~ 45 秒不等),则发送一次心跳包。因此这个时候我们就要借助心跳包了,如果你设置了socket的SO_KEEPALIVE选项,则如果没有数据发送时,会发送心跳包,如果网不通,则收不到对心跳包的应答,则关闭本端,对端仍旧保持连接;原创 2023-03-10 15:59:53 · 58863 阅读 · 0 评论 -
如何在C++ 网络库中支持websocket
我们在一些中重度游戏中经常使用TCP,可靠UDP(参考之前的剖析KCP以及KCP在游戏中是如何使用的)来进行网络传输,不过随着一些小游戏和超轻休闲类游戏的逐步崛起,越来越多的开发者逐渐使用websocket来进行网络传输数据,像node.js/ ts , go, java等语言都有造好的轮子,直接引用现成的库并能很方便的调用,但是如果你使用的是C++,你会发现,websocket的库...原创 2022-11-30 11:23:27 · 907 阅读 · 0 评论 -
剖析KCP以及KCP在游戏中是如何使用的
亲爱的各位读者你们好,由于前段时间忙于部分项目的重构和优化,未能及时更新文章,不少读者催更,哈哈,我还是很开心能抽出时间给大家再来分享下kcp的相关技术内幕,以及之前完善自己的网络库增加了KCP的客户端服务器收发支持(结尾会分享封装的客户端服务器C++源码)。KCP概述对于游戏开发,尤其是MOBA游戏,或者全球唯一服架构类型的游戏,对于网络的要求比一般游戏要高。...原创 2022-11-07 18:06:10 · 59650 阅读 · 0 评论 -
使用KCP 加速游戏消息,让全球玩家流畅联网
kcp协议是传输层的一个具有可靠性的传输层ARQ协议。它的设计是为了解决在网络拥堵情况下tcp协议的网络速度慢的问题。kcp力求在保证可靠性的情况下提高传输速度。kcp协议的关注点主要在控制数据的可靠性和提高传输速度上面,因此kcp没有规定下层传输协议,一般用udp作为下层传输协议,kcp层协议的数据包在udp数据报文的基础上增加控制头。当用户数据很大,大于一个udp包能承担的范围时(大于mss),kcp会将用户数据分片存储在多个kcp包中。因此每个kcp包称为一个分片。原创 2022-10-10 12:06:30 · 688 阅读 · 0 评论 -
linux和windows环境配置安装zookpeer的dashboard可视化
有时候我们需要知道一个*.so文件或者可执行文件是debug版本的还是release版本的,这时我们有哪些方法呢? 1.readelf -S filename |grep debug导出汇编objdump -f test显示test的文件头信息objdump -d test反汇编test中的需要执行指令的那些sectionobjdump -D test与-d类似,但反汇编test中的所有sectionobjdump -h test显示test的Section H..原创 2022-10-10 10:23:02 · 834 阅读 · 0 评论 -
浏览器http提交protobuf二进制数据正常,微信小程序失败解决方案
最近开发微信小游戏,客户端和服务器端使用http短连接方式post数据,数据的格式使用protobuf,这样通过网络传输的数据是二进制,对于抓包的外挂使用者来说也不容易篡改数据内容。等到最后收尾的时候,开始导入微信开发者工具里,进行测试,结果出问题了,二进制数据 本应该是上面截图红色圈出来的formdata内容,但是微信开发者工具里查看到的是uint8array结构,验证发现实际上发送的字节长度是202,但是到了网络传输的时候发送了203字节,而且服务器端也收到了203字节。原创 2022-09-01 19:23:04 · 1315 阅读 · 0 评论 -
深入剖析阻塞式socket的timeout
网络编程中超时时间是一个重要但又容易被忽略的问题,对其的设置需要仔细斟酌。 本文讨论的是socket设置为阻塞模式,如果socket处于阻塞模式运行时,就需要考虑处理socket操作超时的问题。 所谓阻塞模式,是指其完成指定的操作之前阻塞当前的进程或线程,直到操作有结果返回. 在我们直接调用socket操作函数时,如果不进行特意声明的话,它们都是工作在阻塞模式的, 如 connect, send, recv等.简单分类的话,可以将超时处理分成原创 2022-06-28 16:43:13 · 2490 阅读 · 0 评论 -
手把手教你使用sql注入来绕过游戏后台检测
SQL注入毫无疑问是最危险的Web漏洞之一,因为我们将所有信息都存储在数据库中。其解决方案之一,有许多公司实施Web应用程序防火墙和入侵检测/预防系统来试图保护自己。但不幸的是,这些对策往...原创 2021-07-09 06:56:00 · 790 阅读 · 0 评论 -
如何使用弱网环境来验证游戏中的一些延迟问题
关于弱网在当今移动互联网盛行的时代,网络的形态除了有线连接,还2G/3G/Edge/4G/Wifi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。...原创 2021-10-26 18:02:00 · 60216 阅读 · 0 评论 -
(一)深入浅出TCPIP之理解TCP报文格式和交互流程
目录1.引入TCP: 1.1 TCP用户代码2. TCP数据报文格式3 TCP栈及socket的初始化4. 服务器端bind和listen的实现4.1sockaddr与sockaddr_in结构体4.2网络字节序5.服务器墙accept的实现6.客户端connect的实现(发起三次握手)1.引入TCP: TCP和UDP是完全迥异的传输层协议,被设计为做不同的事情。二者的共性是都使用IP作为其网络层协议。TC...原创 2020-10-30 12:17:07 · 3311 阅读 · 5 评论 -
(二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上)
TCP作为一种可靠传输控制协议,其核心思想:既要保证数据可靠传输,又要提高传输的效率,而用三次握手恰恰可以满足以上两方面的需求!1.三次握手 所谓的三次握手即TCP连接的建立。这个连接必须是一方主动打开,另一方被动打开的。1.1 三次握手过程 握手之前主动打开连接的客户端结束CLOSED阶段,被动打开的服务器端也结束CLOSED阶段,并进入LISTEN阶段。随后开始“三次握手”:(1)首先客户端向服务器端发送一段TCP报文,其中:标记位为SYN,表示“...原创 2020-10-30 18:19:43 · 2166 阅读 · 10 评论 -
(三)深入浅出TCPIP之再识TCP,理解TCP四次挥手(上)
目录1.TCP四次挥手过程2.挥手连环发问 上篇文章对于"三次握手”做了说明。本节我们对不常听见的“四次挥手”为大家详尽, 直观,完整地绍“挥手”的过程。所谓的四次挥手即tcp连接的释放(解除)。连接的释放必须是一方主动释放,另一方被动释放。以下为客户端主动发起释放连接的图解:1.TCP四次挥手过程TCP连接的释放一共需要四步,因此称为『四次挥手』。我们知道,TCP连接是双向的,因此在四次挥手中,前两次挥手用于断开一个方向的连接,后两次挥手用于断开另一方向的连接...原创 2020-10-30 18:19:59 · 804 阅读 · 3 评论 -
(四)深入浅出TCPIP之TCP三次握手和四次挥手(下)的抓包分析
目录1. 通过netstat来分析服务器和客户端的TCP状态2.通过tcpdump抓包分析服务器和客户端的TCP状态2.1 语法2.2 抓包返回格式2.3 抓包的FLags标记2.4 分析三次握手,数据收发,四次挥手的状态2.4.1三次握手2.4.2数据发送2.4.3 四次挥手我们在第二章和第三章讲了三次握手和四次挥手,那么这一章节我将带领读者来通过tcpdump工具来抓包分析这两个过程。按照我第一章文章里初识TCP,理解TCP报文格式和交互流程(一)提供的客户.原创 2020-10-30 18:20:10 · 929 阅读 · 5 评论 -
(五)深入浅出TCPIP之TCP流量控制
目录TCP流量控制滑动窗口固定窗口和滑动窗口如何告知发送方窗口大小滑动窗口细节实例注意流量控制和拥塞控制的区别:连环发问TCP流量控制 我们都知道TCP是一种可靠的,面向连接的传输层协议。我们总是希望TCP能够传输的数据越快越好。如果存在这样一种情况,发送方数据发送的非常快,而且接收方耗尽自己的资源也根本来不及接收,那这些多余的数据就会被丢弃,这就违背了TCP可靠的宗旨了。 所以就需要引入一种流量控制的手段:让发送方不要发送太快,既让接收方能够顺利接收数据原创 2020-10-30 18:24:25 · 1192 阅读 · 3 评论 -
(六)深入浅出TCPIP之TCP拥塞控制
目录什么是网络拥塞如何避免拥塞拥塞点避免拥塞慢启动算法算法思想慢启动解析启动过程拥塞避免算法启动过程快速重传算法快速恢复总结连环发问:专栏其他文章:(一)深入浅出TCPIP之理解TCP报文格式和交互流程 (二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上)(三)深入浅出TCPIP之再识TCP,理解TCP四次挥手(上)(四)深入浅出TCPIP之TCP三次握手和四次挥手(下)的抓包分析(五)深入浅出TC...原创 2020-10-30 18:23:19 · 799 阅读 · 1 评论 -
(七)深入浅出TCPIP之深入浅出TCPIP之TCP重传机制
TCP重传机制TCP要保证所有的数据包都可以到达,所以,必需要有重传机制。注意,接收端给发送端的Ack确认只会确认最后一个连续的包,比如,发送端发了1,2,3,4,5一共五份数据,接收端收到了1,2,于是回ack 3,然后收到了4(注意此时3没收到),此时的TCP会怎么办?我们要知道,因为正如前面所说的,SeqNum和Ack是以字节数为单位,所以ack的时候,不能跳着确认,只能确认最大的连续收到的包,不然,发送端就以为之前的都收到了。超时重传机制一种是不回ack,死等3,当发送方发现收不到3原创 2020-11-05 11:00:30 · 830 阅读 · 1 评论 -
(八)深入浅出TCPIP之TCP长连接与短连接详解
TCP 本身并没有长短连接的区别,长短与否,完全取决于我们怎么用它。原创 2020-10-30 18:48:16 · 1436 阅读 · 1 评论 -
(九)深入浅出TCPIP之网络同步异步
在网络同步中,有两种同步方式,分别为同步与异步。同步的操作指的是,当所有的操作请求都做完,才将结果返回给用户,用户才能进行下一个操作,这样就会让用户有一种卡顿的感觉,因为需要等待上一步操作的执行结果。异步操作指的是,用户的操作之间不需要进行等待,而是在服务端设置一个消息队列,保存用户的每一步的操作,因此用户不会有卡顿的感觉。原创 2020-10-31 11:31:05 · 1251 阅读 · 3 评论 -
(十)深入浅出TCPIP之网络阻塞和非阻塞
专栏其他文章:(一)深入浅出TCPIP之理解TCP报文格式和交互流程 (二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上)(三)深入浅出TCPIP之再识TCP,理解TCP四次挥手(上)(四)深入浅出TCPIP之TCP三次握手和四次挥手(下)的抓包分析(五)深入浅出TCPIP之TCP流量控制(六)深入浅出TCPIP之TCP拥塞控制(七)深入浅出TCPIP之深入浅出TCPIP之TCP重传机制(八)深入浅出TCPIP之TCP长连接与短连接详解...原创 2020-10-31 11:27:59 · 1192 阅读 · 1 评论 -
(十一)深入浅出TCPIP之TCP粘包问题
目录粘包和拆包问题保护消息边界和流粘包、拆包场景为什么会发生TCP粘包、拆包呢?如何处理粘包、拆包问题?怎样封包和拆包?其他问题TCP为什么引入接受缓存这个数据结构?专栏其他文章:理论篇:(一)深入浅出TCPIP之理解TCP报文格式和交互流程(二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上)(三)深入浅出TCPIP之再识TCP,理解TCP四次挥手(上)(四)深入浅出TCPIP之TCP三次握手和四次挥手(下)的抓包分析...原创 2020-11-05 16:42:44 · 648 阅读 · 1 评论 -
(十三) 深入浅出TCPIP之TCP套接字参数
应用程序编写者只有在确切了解它的效果并确实需要的情况下,才设置TCP_NODELAY选项,因为设置后对网络性能有明显的负面影响。TCP_NODELAY是唯一使用IPPROTO_TCP层的选项,其他所有选项都使用SOL_SOCKET层。第二个参数level是被设置的选项的级别,如果想要在套接字级别上设置选项,就必须把level设置为 SOL_SOCKET。为了允许SO_LINGER,应用程序应将l_onoff设为非零,将l_linger设为零或需要的超时值(以秒为单位),然后调用setsockopt()。原创 2020-11-05 11:00:12 · 595 阅读 · 1 评论 -
(十二)深入浅出TCPIP之Nagle算法
TCP的数据流大致可以分为两类,交互数据流与成块的数据流。交互数据流就是发送控制命令的数据流,比如relogin,telnet,ftp命令等等;成块数据流是用来发送数据的包,网络上大部分的TCP包都是这种包。很明显,TCP在传输这两种类型的包时的效率是不一样的,因此为了提高TCP的传输效率,应该对这两种类型的包采用不同的算法。总之,TCP的传输原则是尽量减少小分组传输的数量。原创 2020-11-02 10:52:44 · 458 阅读 · 1 评论 -
(十四)深入浅出TCPIP之初识UDP理解报文格式和交互流程
目录关于UDP代码示例UDP数据报格式再次理解UDP数据包(1)UDP报文大小的影响因素,主要有以下3个(2) UDP数据包最大长度(3) UDP数据包理想长度UDP数据包的发送和接收问题(1) UDP的通信有界性(2) UDP数据包的无序性和非可靠性(3) UDP数据包的接收(4) UDP包分片问题UDP丢包问题[1] UDP socket缓冲区满造成的UDP丢包[2] UDP socket缓冲区过小造成的UDP丢包[3] ARP缓存过期导致原创 2020-11-02 17:20:44 · 1870 阅读 · 5 评论 -
(十五)非常全面的TCPIP面试宝典-进入大厂必备总结
TCP 作为传输层的协议,是一个IT工程师素养的体现,也是面试中经常被问到的知识点。在此,我将 TCP 核心的一些问题梳理了一下,希望能帮到各位。原创 2020-11-10 17:35:19 · 1566 阅读 · 7 评论 -
(十六)深入浅出TCPIP之Hello CDN
什么是CDNCDN 其实是 Content Delivery Network 的缩写,即“内容分发网络”。CDN是将媒体资源,动静态图片(Flash) ,HTML, CSS, JS等等内容缓存到距离你更近的互联网数据中心,从而让用户进行共享资源,实现缩减站点间的响应时间等等需求。CDN的起源CDN 诞生于二十多年前,随着骨干网压力的逐渐增大,以及长传需求的逐渐增多,使得骨干网的压力越来越大,长传效果越来越差。于是在 1995 年,MIT 的应用数学教授 Tom Leighton 带领着研究.原创 2020-11-06 15:02:49 · 510 阅读 · 1 评论 -
(十七)深入浅出TCPIP之UDP打洞原理
什么是打洞,为什么要打洞由于Internet的快速发展 IPV4地址不够用,不能每个主机分到一个公网IP 所以使用NAT地址转换。下面是我在网上找到的一副图一般来说都是由私网内主机(例如上图中“电脑A-01”)主动发起连接,数据包经过NAT地址转换后送给公网上的服务器(例如上图中的“Server”),连接建立以后可双向传送数据,NAT设备允许私网内主机主动向公网内主机发送数据,但却禁止反方向的主动原创 2017-11-10 09:45:04 · 1632 阅读 · 1 评论 -
(十八)深入浅出TCPIP之HTTP和HTTPS
专栏其他文章:理论篇:(一)深入浅出TCPIP之理解TCP报文格式和交互流程(二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上)(三)深入浅出TCPIP之再识TCP,理解TCP四次挥手(上)(四)深入浅出TCPIP之TCP三次握手和四次挥手(下)的抓包分析(五)深入浅出TCPIP之TCP流量控制(六)深入浅出TCPIP之TCP拥塞控制(七)深入浅出TCPIP之深入浅出TCPIP之TCP重传机制(八)深入浅出TCPIP之TCP长连接...原创 2020-11-17 18:20:22 · 256 阅读 · 1 评论 -
(十九)TCPIP面试宝典-进入大厂必备总结(上)
TCP 作为传输层的协议,是一个IT工程师素养的体现,也是面试中经常被问到的知识点。在此,我将 TCP 核心的一些问题梳理了一下,希望能帮到各位。实际上这篇文章相当于是复习之前的网络基础...原创 2020-12-03 08:00:00 · 207 阅读 · 0 评论 -
(二十)TCPIP面试宝典-进入大厂必备总结(中)
TCP 作为传输层的协议,是一个IT工程师素养的体现,也是面试中经常被问到的知识点。在此,我将 TCP 核心的一些问题梳理了一下,希望能帮到各位。实际上这篇文章相当于是复习之前的网络基础...原创 2020-12-04 08:30:00 · 215 阅读 · 0 评论 -
(二十一)TCPIP面试宝典-进入大厂必备总结(下)
TCP 作为传输层的协议,是一个IT工程师素养的体现,也是面试中经常被问到的知识点。在此,我将 TCP 核心的一些问题梳理了一下,希望能帮到各位。实际上这篇文章相当于是复习之前的网络基础...原创 2020-12-05 07:55:12 · 224 阅读 · 0 评论 -
(二十)深入浅出TCPIP之epoll的一些思考
Epoll基本介绍在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:原创 2013-01-06 09:45:06 · 6894 阅读 · 1 评论