草庐IT

TCP 在 UDP 上引起的数据包丢失和学士论文引用

我目前正在撰写计算机科学与工程专业的学士论文,我们正在使用OpenGL使用C++创建一款赛车游戏。在报告中,我比较了TCP和UDP的使用,我发现了source,声称多个TCP连接会导致UDP连接中的数据包丢失。我什至得到了一个很好的reference问题在于它已有13年的历史,但我还没有找到任何迹象表明任何协议(protocol)都已修改以解决此问题。我也找不到任何更新的、进行类似调查的论文或文章因此,我的问题是协议(protocol)是否有任何可能相关的更改和/或我是否应该忘记在论文报告中使用这个旧引用。 最佳答案 阅读文章中的重

networking - UDP 打洞 : one Symmitric and another non-symmetric NAT

我正在尝试使用打洞实现P2P。这是流程:两个Peers(P1,P2)将向服务器(S)发送1个数据包。Server(S)回复都告诉别人IP:PORTP1和P2接收此UDP数据包,知道对方的外部/公共(public)ip:port。P1,P2开始向其他对等端公共(public)IP:PORT发送数据包。一旦对等点收到其他对等点的数据包,我就认为这个洞已经打好了,并将这个套接字提供给我的应用程序。我在不同的路由器上进行了测试,结果如下:当P1和P2都在非对称NAT(完整/受限锥形)上时,我没有遇到任何问题。当P1=非对称且P2=对称时:-----router-1(对称NAT)+router-

c++ - rpc 和普通 tcp/udp 服务器客户端程序的区别?

所以我一直在寻找不同的方法来创建客户端和服务器程序(使用C++中的visualstudio),然后我遇到了RPC(远程过程调用)。但我注意到这也使用了tcp/ip或udp连接。那么使用RPC与仅使用基本的tcp/ip或udp连接来连接客户端和服务器有什么区别?代码完全不同,例如在RCP中使用tcp:reinterpret_cast("ncacn_ip_tcp"),//UseTCP/IPprotocol.reinterpret_cast("localhost"),//TCP/IPnetworkaddresstouse.reinterpret_cast("4747"),//TCP/IPpo

c++ - 我可以在 TCP 和 UDP 中使用相同的 sockaddr_in 吗?

在我的服务器中,我将TCP和UDP绑定(bind)在两个不同的端口上。我首先将我的客户端连接到TCP(通过接受等)然后我想使用UDP在我的服务器和我的客户端之间进行通信。所以我尝试使用相同的sockaddr_in:voidAUDPMonitor::sendMessage(Message&msg){for(ISocket*socket:*_fdListClients){if(msg.getClientId()==socket->getSock()){UDPSocket*UdpSocket=reinterpret_cast(socket);UdpSocket->send(msg,socke

c++ - UDP 数据包在某台 PC 中小于 12 字节时被丢弃。我该如何找出原因?

我遇到了一个以前从未听说过的问题。我正在制作一个在特定角色Action中使用UDP数据包的在线游戏。在我开发了udp模块之后,它似乎工作正常。虽然我们的大多数团队成员都没有问题,但是我的老板告诉我那个模块有问题。我调查了这个问题,最后我发现...在他的PC上,如果udp数据包大小小于12,则数据包永远不会传送到其他主机。以下是一些附加信息:1~11字节的udp数据包被丢弃,12字节和超过12字节的数据包都可以。操作系统:MicrosoftWindowsVistaBusinessNIC:AttansicL1千兆以太网10/100/1000Base-TControllerWSASendTo

networking - 是否有任何协议(protocol)规范允许使用 TCP 或 UDP?

是否有任何网络协议(protocol)不是严格意义上的TCP或UDP,但可以与其中任何一个一起使用?例如,HTTP、FTP、STMP、RTMP始终是TCP。DNS、SNMP、DHCP、RIP始终是UDP。有什么既可以是TCP也可以是UDP的东西吗?还是我的上述断言有误?RTSP是我所知道的一个奇怪的东西,它同时使用TCP和UDP来控制音频/视频/质量,但它对每个发送的内容都有严格的要求。我问的是标准的、已发布的或至少是常用的协议(protocol),而不是自定义协议(protocol)。 最佳答案 DNS可以使用UDP或TCP;当响

security - UDP 与 TCP 安全性

我们正在开发一款游戏,数百万客户端与我们的服务器进行通信。这些游戏大部分是回合制的。我知道UDP提供了一些优于TCP的性能优势,但我想知道一种协议(protocol)是否比另一种协议(protocol)具有安全优势?我读过一些网站表明TCP通常会更安全,但我也见过大量利用TCP弱点的攻击。我们的代码能够很好地容忍不可靠的连接和丢失/乱序的数据,这就是我想到UDP的原因。谢谢! 最佳答案 UDP最大的安全问题是您容易受到spoofing的影响。和DOSattacks.由于握手永远不会完成,因此不可能使用TCP在Internet上欺骗地

networking - 为什么游戏开发者在应用层面避开TCP而让UDP可靠?

许多游戏开发者选择在应用程序级别中制作UDP可靠。TCP不正是为此而生的吗?我制作了一个API,可以使用UDP和TCP数据包启用客户端-服务器通信。我应该将ReliableUDP添加到列表中吗?为什么?如果我使用TCP会有问题吗?我只是想知道RUDP是否比TCP有任何优势,以便我可以选择是否添加RUDP支持。 最佳答案 简短回答:TCP没有针对延迟进行优化(根本没有);结果-它有几个属性,这些属性是游戏的延迟killer(尽管它们只有在数据包丢失时才会发挥作用)。特别是,线头阻塞和指数退避对于快节奏游戏来说往往非常烦人。对延迟影响最

networking - google talk 使用 udp 还是 tcp 数据包?

是否可以判断googletalk是使用tcp还是udp包进行传输。我知道它在应用层使用xmpp协议(protocol),但它是通过tcp还是udp运行的。 最佳答案 您可以通过使用数据包嗅探器观察流量来自己回答这个问题。这比让我们告诉您答案更有启发性。 关于networking-googletalk使用udp还是tcp数据包?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/162

haskell - 在同一个端口上监听 TCP 和 UDP

如何让Haskell在同一个端口上监听UDP和TCP?这是我目前的代码(基于acme-http):listenOnportm=doprotoTCPdosetSocketOptionsockReuseAddr1setSocketOptionsockNoDelay1bindSocketsock(SockAddrInet(fromIntegralportm)iNADDR_ANY)listensock(max1024maxListenQueue)returnsock)protoUDPdosetSocketOptionsockReuseAddr1bindSocketsock(SockAddrIn