问题标签 [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.

0 投票
5 回答
10629 浏览

c - 通过 UDP 实现 ack?

我们有一个通过 UDP 执行通信的系统(用 C 语言构建)。最近我们发现有必要保证数据包的传递。我的问题是:为确保使用 ack 数据包进行传递,基于 UDP 的系统的最少添加是多少?此外,理想情况下无需操作数据包标头。我们对数据包进行应用程序级别的控制,包括序列号和 ack/nack 标志。我想知道这是否是一个失败的原因,我们尝试做的任何事情基本上都是有缺陷和损坏的 TCP 版本。基本上,我们是否可以进行最低限度的改进来实现有保证的交付(我们不需要 TCP 的许多功能,例如拥塞控制等)。谢谢!

0 投票
1 回答
1841 浏览

c++ - 有什么好的 C++/C NNTP 库吗?

不久前我遇到了一些顽固和有限的努力,但我想知道是否有一些我错过的真正实用的东西,最好是在 C++ 中,但 C 总比没有好。

0 投票
5 回答
8431 浏览

python - Python TCP栈实现

是否有实现独立 TCP 堆栈的 python 库?

我不能使用通常的 python 套接字库,因为我正在通过套接字接收数据包流(它们通过这个套接字通过隧道传送给我)。当我收到发往特定端口的 TCP SYN 数据包时,我想接受连接(发送 syn-ack),然后获取另一端发送的数据(适当地确认)。

我希望已经编写了某种我可以使用的 TCP 堆栈。有任何想法吗?我过去曾在 C 项目中使用过 lwip——在 python 中类似的东西会是完美的。

0 投票
5 回答
947 浏览

tcp - 使用 TCP 进行实时命令:Nagle 算法造成巨大延迟,我该怎么办?

我正在编写一个套接字服务器和 Flash 游戏客户端。游戏需要实时命令,例如移动和转弯。服务器尽快将这些命令发送到客户端非常重要,因为否则其他客户端将与移动/转动的客户端发生很多不同步。

这是由 Nagle 算法引起的问题的一个示例:

注意:如果您想了解这些命令的含义,请参阅下面的命令表。

第一个是我移动的船(前移+右移,前移已收到但右未收到)

客户端发送命令:

客户端接收命令:

“时刻”是一个奇怪的术语,并不意味着我想说什么,但这里似乎是上一个命令之后的毫秒数

  1. 客户端 A 向前发送(时刻:0),客户端 B 接收(时刻:0)

  2. 右转由客户端 A 发送(时刻:0),由客户端 B 接收(时刻:155)

  3. 停止移动客户端A发送(时刻:108),客户端B接收(时刻:0)

  4. 停止由客户端 A 发送(时刻:0),由客户端 B 接收(时刻:0)

  5. 客户端 A 向前发送(时刻:1283),客户端 B 接收(时刻:1236)

  6. 右转由客户端 A 发送(时刻:1),由客户端 B 接收(时刻:273)

  7. 停止移动由客户端 A 发送(时刻:186),由客户端 B 接收(时刻:0)

  8. 停止由客户端 A 发送(时刻:30),由客户端 B 接收(时刻:0)

这是与命令对应的命令表:

客户端-> 服务器

服务器-> 客户端

因此,您可以看到,由于“Nagle”,这些命令完全不同步。这导致停止移动命令与开始移动命令同时被其他客户端接收,导致该玩家根本不移动。

这就是为什么我需要通过 TCP 服务器尽可能快地实时发送这些命令。一个简单的解决方法是简单地禁用 Nagle。但是,我已经搜索了一下(注意他关于 tcp message partial 的建议已在我的系统中实现,但与时间无关)并注意到人们绝对不建议禁用 Nagle。

我真的不应该因为这个原因禁用 Nagle 算法,而是应该寻找其他解决方案吗?为什么不)?

提前致谢。- 汤姆

0 投票
3 回答
11906 浏览

linux - 使用 C 语言在 Linux 中使用原始套接字进行数据包嗅探

我需要在 Linux 中编写一个数据包嗅探器来检测发送的 HTTPS 数据包并保存请求中的 url。我在security-freak中找到了这方面的代码并运行了它。此代码运行并仅嗅探接收到的数据包,但我需要在嗅探器中获取发送的数据包。如何在此代码中获取发送的数据包?

我不能使用任何库,如 libcap(禁止)。代码是:sniffer.c

0 投票
2 回答
868 浏览

network-protocols - 开放系统互连参考模型 7 层示例?

很久以前,我尝试研究开放系统互连参考模型 7 层网络协议标准,但由于找不到任何使用所有 7 层的应用程序的实际示例而放弃。现在有没有使用和实现所有 7 层的应用程序示例?还是最高的几层是标准委员会狂热想象力的产物?求知者想知道。

0 投票
3 回答
4228 浏览

networking - DNS 回答返回没有 IP 地址的 NS 记录,这正常吗?

在我的应用程序中,我必须不时发送通知电子邮件。为了发送邮件(通过 SMTP),我必须获取该特定域的 MX 服务器(电子邮件地址的域部分)。这不是 Unix 应用程序,而是嵌入式应用程序。

我做的事情是这样的::

1 - 向当前 DNS 发送包含域的 DNS 查询(MX 类型)

2 - 如果响应包含 MX 答案,则从此函数返回成功

3 - 读取第一个 NS 记录并将其 IP 地址复制到当前 DNS,转到 1

这可能会循环几次,这是意料之中的,但我没想到的是响应包含名为 ns1.blahblah.com 的服务器的 NS 记录,但不包含它们的 IP 地址。在这种情况下,我必须发送另一个查询来查找此 NS 的 IP。我只看到了 1 个电子邮件地址(1 个域),其他地址没有任何问题。

这是正常行为吗?恕我直言,这是 DNS 记录上的错误配置。有什么想法吗 ?

提前致谢...

0 投票
1 回答
1108 浏览

web-services - 通过 HTTP 隧道协议 - 建议

通过 HTTP 建立隧道的现实生活协议的最佳示例是什么?XMPP/Jabber?我正在寻找文档的实际链接?或它们如何隧道的规格。

我正在做一个项目,我想知道我是否应该从 REST、XML-RPC 或 SOAP 开始,然后使用该协议的快速 TCP 风格。或者从低级别开始,然后使用更像 POX 的东西通过 HTTP 隧道。

开始使用此协议的客户端将使用 Ruby、Java 和 .NET 编写,然后可能会分支到 Python、Perl、Scala、Erlang 等......

要求
1) 客户端可以通过 HTTP 通信通道或另一个端口上的直接 TCP 连接到服务器。TCP 喋喋不休会像 jabber 一样流式传输 XML
2) 我不一定希望与 XMPP 兼容或编写我自己的 XMPP 服务器。
3) 服务器将 100% 用 .NET 编写(但对 Mono 友好)
4) 客户端可以用任何东西编写(但见上文 - 首先是 Ruby、Java 和 .NET)

0 投票
2 回答
6567 浏览

http - HTTP:etag 的最大长度

HTTP 协议是否指定了 ETag 的最大长度?

0 投票
2 回答
802 浏览

networking - 虚拟网络连接

我可以看到很多程序,如 openvpn 和 Teamviewer,它们的 VPN 连接在 Windows 上创建了一个虚拟网络连接。我想为自己创建一个用于测试目的。

是否可以通过编程方式创建一个?