许多管理员一直在坚持——在 ServerFault 和其他地方——TCP-over-TCP 的想法有多糟糕,例如在 VPN 中。如果不是 TCP 崩溃,即使是最轻微的数据包丢失也会使一个人遭受至少严重的吞吐量下降,因此应严格避免 TCP-over-TCP。这可能曾经是真的,例如 2001年写这篇文章时仍然被引用。
但从那时起,我们看到了技术和协议的重大进步。现在我们几乎在所有地方都实现了“选择性 ACK”,摩尔定律给了我们更多的内存,随之而来的是针对 Gbit 上行链路优化的大型 TCP 缓冲区。如今,在非无线电链路上,数据包丢失的问题要少得多。所有这些都应该显着缓解 TCP-over-TCP 问题,不是吗?
请注意,在现实世界中,例如基于 TCP 的 VPN 比基于 UDP/ESP 的 VPN 更容易实现和操作(参见下文)。因此我的问题:
在什么情况下(链路数据包丢失和延迟),TCP-over-TCP 的性能比单独的 TCP 差得多,假设两端都有 SACK 支持和大小合适的 TCP 缓冲区?
看到一些显示(外部连接)数据包丢失/延迟和(内部连接)吞吐量/抖动之间的相关性的测量结果会很棒——对于 TCP-over-TCP,以及单独的 TCP。我发现了这篇有趣的文章,但它似乎只关心延迟,而不是解决(外部)数据包丢失问题。
另外:是否有推荐的设置(例如 TCP 选项、缓冲区设置、减少 MTU/MSS 等)来缩小 TCP 和 TCP-over-TCP 之间的性能差距?
更新:我们的理由。
这个问题在一些现实世界的场景中仍然非常相关。例如,我们在大型建筑物中部署嵌入式设备,收集传感器数据并通过 VPN 将其输入我们的平台。我们面临的问题是我们无法控制的防火墙和不正确配置的上行链路,以及不情愿的 IT 部门。请参阅此处讨论的详细示例。
在很多这样的情况下,从非 TCP 切换到基于 TCP 的 VPN(如果你像我们一样使用 OpenVPN 就很容易)是一个快速解决方案,它使我们能够避免上坡的相互指责。例如,通常 TCP 端口 443 通常是允许的(至少通过代理),或者我们可以通过简单地减少 TCP 的 MSS 选项来克服 Path-MTU 问题。
最好知道在什么情况下可以将基于 TCP 的 …
法律通常规定传真是被接受的文件,因为它们的递送是“有保证的”,而电子邮件则不是因为它的递送不是。这不就是在乞求一种基于 TCP 的协议,可以保证与传真相同程度的交付吗?这样的协议是否存在,它有多根深蒂固?
我在 IIS 7.5 中更改了我网站的物理路径,图标更改为:

在我改变它之前,它完全是香草。我找不到有关该图标含义的任何文档,并且工具提示仅显示“默认网站(多个协议)”,这不正确,因为 http 是我在高级设置中唯一启用的协议。
这是我的绑定:

任何人都知道那个爆炸的图标是什么意思,以及如何解决这个问题?或者,这甚至是我需要担心的事情吗?谢谢。:)
我使用的是 100 Mbps 的快速以太网,其帧大小小于 1500 字节(根据我的教科书,有效载荷为 1472 字节)。在那,我能够发送和接收消息大小为 65507 字节的 UDP 数据包,这意味着数据包大小为 65507 + 20(IP 标头)+ 8(UDP 标头)= 65535。
如果帧的有效载荷大小本身最大为 1472 字节(根据我的教科书),IP 的数据包大小怎么会大于这里的 65535?
我使用发件人代码作为
char buffer[100000];
for (int i = 1; i < 100000; i++)
{
int len = send (socket_id, buffer, i);
printf("%d\n", len);
}
Run Code Online (Sandbox Code Playgroud)
接收器代码为
while (len = recv (socket_id, buffer, 100000))
{
printf("%d\n". len);
}
Run Code Online (Sandbox Code Playgroud)
我观察到send returns -1上i > 65507和recv打印或接收的分组maximum of length 65507。
大多数 VPN 客户端区分 IPSec 和“Cisco IPSec”。例如,(Apple 的)iOS 将它们视为本质上独立的事物。
但我找不到任何关于协议级别差异的解释。它们可能很小,但肯定存在差异。
有人可以解释一下吗?即使只是一个指向详细解释的指针也会有很大帮助。谢谢!
ICMP 在 OSI 模型中被归类为第 3 层协议,但据我所知它不符合网络层协议的定义。
它不提供寻址或数据包路由(为此使用 IP),因此它所做的只是将信息从一个节点发送到另一个节点,就像传输协议一样。那么,既然如此,为什么 ICMP 被归类为第 3 层协议?
我冒着在这里提出一个格式不正确的问题的风险,但我会试一试。
它通常站在原因,较近的IP地址,一个是IP地址B数值,然后较近的IP地址,一个是IP地址B地理位置?
不管你有什么感受,如果你能指点我一些关于这方面的好的阅读材料,那将是最有帮助的。
我想在我的网络中找到所有启用了 snmp 的设备,我得到了它在代理和管理器架构中的工作方式。
我得到了 net-snmp 库来创建一个简单的应用程序来从远程设备获取 snmp 数据。我必须编写一个程序来做到这一点,我想要设备的 mac 地址和更多信息。
我得到了从远程节点获取数据的程序,但我有一个疑问,如何获取系统的 mac 地址以及获取设备 mac 的 oid 是什么,
是否有任何通用 oids 不是供应商特定的。我必须获取所有设备的数据。
一些更新:
现在使用 snmp 工具 snmpwalk 我得到了可能的信息,但其中我想要一些系统信息,mac,os 名称(如果可用),但是我如何使用 net-snmp 进行编程以获取这些信息,因为我不知道哪个系统的通用 oid名字会来。我想写一个程序,我必须得到一些必需的信息,所以我需要 oid,我必须把这个 oid 给 net-Snmp 的函数,以便它会给我相应的结果。
我必须使用像 sysName 这样的字符串名称来获取系统名称,如果是这样,那么在 mac 地址的情况下写“ifPhysAddress.2”然后提到 mac(在 snmpwalk 的结果中)。那么 oid 是什么获取 mac,因为它对所有设备都不同。
当我使用 snmpwalk 时,我得到一行如下
SNMPv2-SMI::mib-2.25.3.2.1.3.1 = 字符串:“HP LaserJet Professional P1606dn”
这是打印机的名称。意思是这个oid用于获取打印机的名称(mib-2.25.3.2.1.3.1)。这对所有设备来说都是真的吗?如果我查询这个 oid,我将获得相应 IP 的设备名称,无论设备可能是什么。这是否正确。
请给出一些想法。
谢谢
在伊朗,我们的政府一直存在问题。阻止和操纵各种网络协议。我正在寻找一种工具、框架或平台来帮助我们分析和报告任何这些活动。如果该框架允许我们编写自定义脚本,那将是理想的。我们需要检测的示例问题是:
我想测试其中一些活动需要一个客户端/服务器解决方案,这是可以的。显然,我更喜欢开源库,因为它可以让我们用新的测试或示例扩展其功能。
我最近一直在玩各种iptables配置,我注意到添加一个涉及--dport 465(通常为 保留smtps)的规则会导致在dpt:urd列出带有iptables -L.
我从未听说过这个协议,而且(公认的肤浅的)网络搜索并没有透露太多关于它的信息。
什么是 URD,为什么iptables显示这个而不是(可以说是更知名的,或者至少有更好的记录)smtps?