草庐IT

PROTOCOL_TLS

全部标签

c# - 我应该使用 TCP 还是 UDP 作为 MMORPG 的网络协议(protocol)?

我正在使用C#和Monogame开发MMORPG。现在,我正在为它开发网络协议(protocol)。我应该指出,我是CCNA,所以我对这两种协议(protocol)的工作原理有非常扎实的了解。但是,我过去只编写过单人游戏。但是,我有点难以弄清楚我应该使用哪种协议(protocol)。我最初使用UDP开始我的实现,并成功地通过我的本地网络发送了单个数据包,但我担心一旦我开始添加越来越多的客户端,UDP可能会失败。考虑到这是游戏连接,我最初得出的结论是我需要一个快速、低延迟的连接。但很快意识到我需要发送的一些数据包的大小可能会开始测量许多KB,例如当客户端进入map上的新区域时,或者尝试连

c - 带有 TCP 流的 TLS/SSL 中的 ssl_read() 不返回由 BIO_write() 写入的整个缓冲区

以下代码部分的目的是轮询套接字fd集,如果数据(ssl加密)可用,则读取它并通过openssl库解密。底层传输层是TCPStream,所以数据以流的形式出现(不是数据包)。现在,如果从对等方快速连续发送多个数据包(假设2个长度为85字节的数据包),则TCP接收将在同一缓冲区中返回两个数据包,接收字节数为170。因此,我们有一个缓冲区,其中包含2个ssl加密数据包(或n个数据包)。对于ssl解密,我们需要调用BIO_write()将缓冲区写入ssl_bio,然后调用ssl_read()来检索解密的缓冲区。但是,尽管BIO_write()正在向bio中写入170个字节,但ssl_read(

linux - 实现自定义传输协议(protocol) - Linux 内核

我目前正在开展一个学校项目,旨在开发一种自定义传输协议(protocol),该协议(protocol)将在OSI模型中的数据链路层之上运行。在过去的几个月里,我一直在从事涉及破解Linux内核的不同项目,并且我对Linux内核开发一书进行了大量阅读,所以这对我来说并不陌生。我真正想要的是关于我应该阅读哪些文档的一些帮助,以便我可以瞥见Linux的网络内部是如何工作的,并且可能更有效地完成我的任务。 最佳答案 有一篇关于NetworkBuffersandMemoryManagement的古文艾伦考克斯。最近,DavidS.Miller

network-programming - 编程中以太网和 TCP/IP 协议(protocol)的区别?

如果一个套接字对以太网开放,那么它是否与TCP/IP中的套接字相同?在一些现有代码中,我发现它支持以太网协议(protocol),这是否意味着我可以使用TCP套接字客户端连接到此以太网套接字。我很困惑,请帮忙。提前致谢萨加尔 最佳答案 原始以太网套接字,例如SOCK_RAW,如果您不编写协议(protocol)处理程序(您不想这样做),则不能用于TCP通信。您应该知道如何在原始以太网模式下打开套接字时序列化/反序列化以太网帧。SOCK_STREAM是TCP的模式,互联网上充斥着TCP客户端/服务器代码的示例。

sockets - 通讯协议(protocol)

我正在开发由主服务器和工作服务器组成的分布式系统。应该有两种消息:心跳Master获取worker的状态并立即响应适当的命令。例如:从Worker到Master的消息:“嘿,我有数据a、b、c”Master对Worker的响应:“没问题,但是扔掉c-我们不再需要它了”参与者以间隔T交换此消息。直接master命令假设客户要求master终止作业#123。这是对话:Master给Worker的消息:“警报!我们需要终止作业#123”从Worker到Master的消息:“没问题!完成。”很明显,我们无法预测此消息何时出现。最简单的解决方案是master是这两个消息的所有通信的发起者(在心跳

tcp - 如何从它的 TCP header 中检测 Telegram 协议(protocol)?

我有一些客户端连接到我的服务器。我想知道他们使用telegram的程度(来自桌面和移动应用程序)。谁能解释我如何从数据包的header中检测到该协议(protocol)?我从Telegram官方网站上读到这个:同一协议(protocol)有一个简化版本:如果客户端发送0xef作为第一个字节(重要:仅在第一个数据包之前),则数据包长度由单个字节编码(0x01..0x7e=数据长度除以4;或0x7f后跟3个长度字节(小端字节序)除以4)后跟数据本身(不添加序列号和CRC32)。但我不明白什么时候使用删节版? 最佳答案 Telegram使

c# - 使用 .Net 的 NetworkStream.Read/BeginRead 分隔应用程序协议(protocol)帧

我的问题对网络编程来说更笼统,但因为我正在尝试编写一个ModbusTCP服务器(从站),所以我将用它来说明我的问题。在ModbusTCP帧中,帧的第5和第6个字节给出了帧的大小:字节1和2:交易ID字节3&4:协议(protocol)Idbytes5&6:帧中剩余多少字节字节7-n:帧的其余部分。当使用NetworkStream.Read()/BeginRead()时,如何分隔接收到的帧?我看到一些开源实现只读取前6个字节,解析字节5和6以获得帧其余部分的大小,然后读取帧的其余部分。但是,如果您的框架中没有开始和结束定界符,您如何知道框架的开始和结束位置?例如,客户端可能发送了一些垃圾

c# - 将 UDP 封装在 TCP 协议(protocol)中

我不太确定从哪里开始所有这些,但我假设我需要某种网络驱动程序来捕获所有UDP流量。(请告诉我哪一个是最好的记录和工作)我在C#中成功捕获UDP数据包后,我将通过TCP连接将它们发送到我的服务器,在该服务器上我需要将UDP发送到目的地,然后将响应发送回客户端机器(正在捕获数据包),然后将响应发送给程序,就好像它是直接来自相关服务器一样。所以基本上我的连接如下:ClientrunningUDPprogram>ConversionServer>UDPServer我需要帮助的地方:从程序中捕获UDP数据包(使用网络驱动程序)将从服务器获得的响应发送回程序(使用相同的网络驱动程序????)编辑#

ssl - 如何使用 SSL/TLS 设置 JMeter TCP 采样器?

在带有SSL的JMeter中设置HTTPS非常简单,但相同的设置不适用于TCPSampler,任何指针? 最佳答案 目前JMeterTCPSampler不支持SSL协议(protocol),您需要编写自己的实现或考虑切换到JSR223Sampler反而。创建SSLTCP连接的引用代码importorg.apache.jmeter.util.JsseSSLManager;importorg.apache.jmeter.util.SSLManager;importjavax.net.ssl.SSLSocket;importjavax.n

c++ - 如何使用原始套接字正确重现 TCP 协议(protocol) 3 次握手?

我正在用C++模拟tcp协议(protocol)的3次握手,并在我的代码运行时使用wireshark。我的代码在ip和tcp层制作header,将它们打包,然后将其发送到http服务器,并将tcpheader的SYN标志设置为1。我可以在wireshark上看到带有ip和tcpheader的完整数据报。似乎没有错误。我的进程绑定(bind)了一个套接字,其地址和端口与已发送的数据包header中包含的地址和端口相同。Wireshark显示数据包已成功发送,但服务器没有收到任何确认我的SYN的数据包。我做错了什么?我在Ubuntu10.10、2.6.35-23上。代码乱七八糟,抱歉。它只