乱序读取TCP数据包
reading tcp packets out of order
网页游戏强制使用tcp。
但是在实时约束下,当您不关心旧数据包时,tcp 线头阻塞行为是荒谬的。
虽然我知道我们在客户端肯定无能为力,但我想知道在服务器端是否有解决方案。
事实上,在服务器上,您会按顺序获取数据包,如果行为不当的数据包 t+42 已丢失,即使数据包 t+43、t+44 已经可以很好地等待您的接收,也会痛苦地等待缓冲区.
由于我们谈论的是本地数据,从技术上讲,应该可以检索它..
那么有没有人知道如何执行该壮举?
如何从这些讨厌的内核 space 守护进程中保存这些宝贵的数据?
TCP guarantees that the data arrives in order and re-transmits lost packets.
TCP Man Page
鉴于此,只有一种方法可以在您规定的约束条件下实现您想要的结果,那就是破解服务器端的 TCP 协议(假设您无法控制客户端 WebSocket 行为)。最简单的相对术语是打开一个原始套接字,实现您自己的简单 TCP 握手(Syn-Ack 当客户端 Syns),然后从管理您自己的 TCP headers 的套接字读取和写入。您的自定义实现需要跟踪收到的序列号并确认您希望客户忘记的所有序列号。
您可以通过将此程序作为您的原始程序的代理来减少工作量。
TCP 原始套接字示例 here。
网页游戏强制使用tcp。 但是在实时约束下,当您不关心旧数据包时,tcp 线头阻塞行为是荒谬的。
虽然我知道我们在客户端肯定无能为力,但我想知道在服务器端是否有解决方案。
事实上,在服务器上,您会按顺序获取数据包,如果行为不当的数据包 t+42 已丢失,即使数据包 t+43、t+44 已经可以很好地等待您的接收,也会痛苦地等待缓冲区.
由于我们谈论的是本地数据,从技术上讲,应该可以检索它..
那么有没有人知道如何执行该壮举? 如何从这些讨厌的内核 space 守护进程中保存这些宝贵的数据?
TCP guarantees that the data arrives in order and re-transmits lost packets.
TCP Man Page
鉴于此,只有一种方法可以在您规定的约束条件下实现您想要的结果,那就是破解服务器端的 TCP 协议(假设您无法控制客户端 WebSocket 行为)。最简单的相对术语是打开一个原始套接字,实现您自己的简单 TCP 握手(Syn-Ack 当客户端 Syns),然后从管理您自己的 TCP headers 的套接字读取和写入。您的自定义实现需要跟踪收到的序列号并确认您希望客户忘记的所有序列号。
您可以通过将此程序作为您的原始程序的代理来减少工作量。
TCP 原始套接字示例 here。