问题标签 [mtu]
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.
android - 新加坡 Android 应用程序中的 MTU 大小问题
我在从新加坡登录我的 android 应用程序时遇到问题。它正在其他国家工作。从我的客户那里,我了解到他在以前的应用程序中也遇到了 MTU 问题。我正在使用带有 ubuntu 操作系统的 aws 服务器来托管我的 Web 服务。我已尝试解决此问题的所有可能性。我已将 MTU 大小更改为 9001,1500 和 561。但没有运气。提前致谢。
erlang - 如何更改 Erlang 中 UDP 数据包的不分段(DF)标志?
在 Erlang 中,发送数据包很简单UDP
,就是gen_udp:open()
用来创建一个套接字,然后gen_udp:send()
用来发送数据。
但是,默认情况下,TCP/IP
如果 IP 数据包的大小不超过 MTU 大小,Linux 堆栈将在 IP 标头中设置不分段 (DF) 标志。如果大小超过MTU
大小,UDP
数据包将被分片。
有没有办法UDP
只为数据包设置 DF 标志?
我知道在 C 语言中,以下代码可用于清除 DF 标志。但我在 Erlang 中找不到方法。
谢谢
linux - 在 IPv6 中启用路径 MTU 发现是否有性能优势?
1) 在 IPv6 (TCP) 套接字中启用路径 MTU 发现是否有性能优势?
2)如果是这样,好处是否仅适用于持久连接?内核会记住特定目标主机的 MTU 多长时间?
3) 当它被启用时,它是从一个更大的数据包开始并在失败和 MTU 发现的情况下下降,还是从 1280 的数据包大小开始并上升直到遇到减速带?IP_PMTUDISC_WANT
和IP_PMTUDISC_DO
设置之间的行为是否不同?
注意:如果在实现上存在差异,我对 Linux 很感兴趣。
sockets - 使用 TCP 时数据包大小的确定性如何?
最近,当我们的特定客户安装我们的产品时,我们遇到了看起来像是连接问题的问题。我们最终将其追溯到网络中的一个设备上配置的低 MTU(约 1300 字节)。在这个特定的部署中,我们有两台运行我们的应用程序的 Windows 机器相互通信,它们的链接 MTU 设置为 1500。
让这个问题特别难以解决的一件事是,我们的应用程序在握手阶段(仅发送小请求)可以正常工作,但有时会无法通过网络发送大小约为 4KB 的特定请求。如果有所不同,则应用程序是用 C# 编写的,这些是 WCF 消息。
什么可以解释这种不确定性?我本来预计这总是会失败,因为我们发送的消息大小总是大于 Windows 客户端感知的链接 MTU,这将导致至少一个完整的 1500 字节数据包,这会导致问题。TCP中有什么东西可以使它更喜欢较小的数据包,但只是有时?
我们认为可能相关的其他一些事情:
1)套接字不断被设置和拆除(因为应用程序收到了它解释为网络故障的内容),所以这似乎与 TCP 慢启动无关。
2) 我假设 WCF“快速”将整个 4KB 消息推送到套接字,所以总是有一些大于 1500 字节的东西要发送。
3) 使用 WireShark,我没有发现任何 TCP 重传,这可以解释为什么只发送缓冲区的子集。
4) 使用 WireShark,我看到一个 4KB 的 IP 数据包正在发送,这可能表明 NIC 正在执行 TCP Segment Offloading?(我不确定 TSO 在 WireShark 上的外观)。我没有在 WireShark 中看到 4KB 请求被分解为多个 IP 数据包,无论是成功的还是不成功的实例。
5) 客户声称两台 Windows 机器之间没有路由可以绕过具有小 MTU 的“有问题”设备。
对此的任何想法将不胜感激。
mysql - 无法连接到 AWS VPC RDS 实例(mysql 或 postgres)
(我在事后发布这个问题是因为找到根本原因和解决方案需要时间。其他人也很有可能遇到同样的问题)
我有一个 RDS 实例(在 VPC 中),我试图从运行在经典 EC2 实例上的应用程序连接到该实例,通过 ClassicLink 连接。安全组和 DNS 不是问题。
我能够建立到 RDS 实例的套接字连接,但无法使用 CLI 工具(psql、mysql 等)或数据库 GUI 工具(如 toad 或 mysql 工作台)进行连接。
使用 telnet 或 nc 的直接套接字连接会导致 TCP 连接处于“ESTABLISHED”状态(来自 netstat 的输出)。
来自 DB CLI、GUI 工具或应用程序的连接会导致超时和 TCP 连接卡在“SYN”状态。
更新:在我的情况下,根本原因是 MTU 大小和 EC2 ClassicLink 的问题。我在下面的答案中发布了一些一般故障排除信息,以防其他人遇到类似的 RDS 连接问题。
http - 使用 libpcap 接收大于 MTU 的 TCP 段
各位网络冒险家大家好,
我正在实施网络攻击,ARP 欺骗网关和受害者,过滤 HTTP 数据并在我的浏览器中重新组合网页。也称为网络间谍。
但是,我在使用 libpcap 时遇到了一些问题。当我收到包含 HTTP 数据的 TCP 段的数据包时,其中一些比 MTU 大!像 1922、2878 甚至 4909 字节。
起初,我认为这些是内核给出的重组 HTTP 数据包。但是,根据这篇文章,libpcap 不会重新组装数据包,因此它不会为我带来一个完整的、格式良好的数据包,其中包含来自给定请求的所有 HTTP 响应。
为了测试,我打印了所有这些大于 MTU 的数据包。所有这些都包含普通数据(CSS、JS、HTML、图像……)。
那么到底是怎么回事?这些大人物是什么?我为此苦苦挣扎了几天。
奖励问题:我真的需要自己重新组装所有这些 HTTP 数据吗?
ubuntu-14.04 - 如何为 ppp0 设置永久 mtu 大小
每次我连接到我的 VPN 时,我都应该运行
我怎样才能让它永久化?
我正在使用 Ubuntu 14.04
fragment - 合理的最大 IPv6 标头大小
IPv6 要求的最小 MTU 为 1280。其中,IPv6 标头至少需要 40 个字节。IPv6 扩展标头可以消耗多少字节没有明确的限制。正常 UDP 使用的合理最大值是多少?我已经看到它建议,片段头至少有 8 个字节,还有什么可能会出现?
c# - 如何在 C# 中获取接口的当前 MTU
我想向用户显示当前的网络接口 mtu 值。用户可以通过 netsh 命令更改 mtu,例如 id 为 11 的接口:
如何通过 id 或接口名称读取接口的当前 MTU?
如果我使用命名空间中的NetworkInterface
类示例,System.Net.NetworkInformation
所有接口的 MTU 为 1500。但使用 netsh 命令(见上文)我得到正确的 MTU 值,例如 1700。
这是一个例子:
c# - 点击窗口设置 TUN MTU
我试图使用此示例代码在 Windows 中设置 TUN-TAP 设备(所有驱动程序都已正确安装): http ://www.varsanofiev.com/inside/TunTest.cs
有没有办法设置TUN MTU?我在 C# 中找不到任何关于此的内容。
谢谢你。