问题标签 [network-protocols]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 解析可变长度消息
我正在通过这个规范使用 Java 实现 BitTorent 协议。在消息部分中,所有消息都是固定长度的,除了其中 2 个;对于其中一个,这是握手后唯一的可变消息,因此我可以检查其他消息,并在没有其他消息遇到时假设它是一条消息。但是对于以下消息
位域消息只能在握手序列完成后立即发送,并且在发送任何其他消息之前。它是可选的,如果客户端没有片段则不需要发送。
位域消息是可变长度的,其中 X 是位域的长度。有效负载是一个位域,表示已成功下载的片段。第一个字节中的高位对应于片段索引 0。清除的位表示丢失的片段,设置的位表示有效且可用的片段。最后的备用位设置为零。
错误长度的位域被视为错误。如果客户端收到大小不正确的位域,或者位域设置了任何备用位,则客户端应断开连接。
如果我不知道长度,我无法想出解析它的方法;我应该如何在字节流中定位 id ?
编辑:在位域消息的有效负载中是 0 或 1,用于 torrent 文件中的每个片段,消息的长度将根据 torrent 内容的大小而变化。所以我不认为我可以假设件数总是适合 5 字节数。
bluetooth - 蓝牙协议?
好的,这可能只是一个愚蠢的问题,但我想知道蓝牙是否遵循 TCP 或 UDP 协议?根据我对网络协议的了解(不多),我会说它不遵循这两者中的任何一个,并且存在某种特定的蓝牙协议。我还有一个问题……新 iPhone OS 3.0 的 GameKit 中的蓝牙功能遵循什么协议?我还没有浏览过苹果文档的每一个字,但到目前为止,我还没有找到它。
c - 我应该对网络上的命令使用#defines 还是枚举?
我必须通过网络传输一些值以用作命令,并且我希望使其尽可能高效和健壮,即我需要对这些命令使用什么提出意见,#defines 或 enums?
命令的范围不应超过 20 个命令(假设每个定义的命令响应为 40 个),因此根据我听到的大多数内容,它非常适合 char 限制。
到目前为止,我假设最好的方法是使用枚举。
tcp - IP 分片的协议属性如何设置?
我正在测试网络设备驱动程序处理损坏数据包的能力。我要测试的特定情况是,由于路径中的 MTU 较小,大型 TCP 数据包沿路径分段。
我对大型 TCP 数据包的 IP 分片最感兴趣的是,IP 分片数据包的协议属性是为每个数据包设置为 TCP,还是只是第一个分片?
sockets - 为什么没有“我的 ip 是什么”知名端口/服务?
我知道有一些网站提供这项服务,但考虑到现在几乎每个人都生活在 NAT 后面,为什么不在端口上标准化并作为服务提供给任何想要运行它的人?它至少与 echo、daytime 或“quote of the day”服务器一样有用,并且易于实现。
或者是否存在我所知道的?任何提案/RFC 正在进行中?
编辑:感谢大家的热烈和深思熟虑的讨论。
c - 用C开发网络层协议
我希望开发一个自定义网络层协议。我想它可以使用 C 来完成。任何人都可以建议如何开始。任何参考资料或示例代码都会有很大帮助。
testing - 嵌入式测试到协议栈开发
我现在在嵌入式测试领域(航空电子)工作,我想把我的职业转移到像开发这样的东西,主要是像协议栈开发。所以我需要知道一些实时项目(网络或协议开发),我可以将其放入我的简历中,以便招聘人员至少可以将我列入候选名单。
我对 C 有一定的了解,并且对 Linux 操作系统有一些了解。
任何人都可以建议我一些最好的地方或网站,在那里我可以做一些实时项目,
我可以在我身边做一些开发,作为在家中的离线活动并继续进行。
是否支持任何模拟类型环境?
python - 从套接字读取:是否保证至少获得 x 个字节?
我有一个罕见的错误,似乎在读取套接字时发生。
看来,在读取数据的过程中,有时我只得到比这更大的数据包的 1-3 个字节。
正如我从管道编程中学到的那样,只要发送方提供足够的数据,我总是会得到至少 512 个字节。
此外,我的发件人在传输任何内容时至少传输 >= 4 字节 - 所以我认为在传输的开始(!!)至少会一次收到 4 个字节。
在 99.9% 的情况下,我的假设似乎成立……但在极少数情况下,收到的字节数少于 4。在我看来很荒谬,为什么网络系统应该这样做?
有人知道更多吗?
这是我使用的阅读代码:
发送者通过一次 send 调用发送完整的数据报。
编辑:整个事情都在本地主机上运行——因此不涉及复杂的网络应用程序(路由器等)。BUFSIZE 至少为 512,发送方发送至少 4 个字节。
network-protocols - 哪种协议最适合文件传输
我可以用来传输大文件的最佳协议是什么,它应该是快速且可靠的?它必须支持低带宽系统,因为我需要在印度进行文件传输。文件大小可能为 100 到 500MB。