gpt4 book ai didi

java - 预测 Java 应用程序产生的网络流量开销

转载 作者:可可西里 更新时间:2023-11-01 02:49:46 24 4
gpt4 key购买 nike

我想尝试计算我通过网络发送/接收的数据量(字节)。我发送/接收 TCP 和 UDP 数据包,因此我需要能够计算这些数据包的大小,包括它们各自的 header 。我看了这个问题:Size of empty UDP and TCP packet它列出了标题的最小大小,但是否要更改该诽谤?我应该只添加我在数据包中发送的字节数,而不是最小 header 的大小吗?此外,我知道在某些时候(n 字节)数据会太大而无法仅放入一个数据包。

另一件事,客户端是移动设备,因此它可能通过蜂窝或 wifi 接收。我不确定两者之间的数据包大小是否存在差异,但我可能只想假设更大的数据包。

所以我的问题是,假设数据是 n 个字节长:

1) 假设所有数据都放在一个数据包中,TCP 数据包有多大?

2) 假设 UDP 数据包全部放入一个数据包中,那么 UDP 数据包有多大?

3) 是否有一种简单的方法来确定溢出一个数据包所需的字节数?对于 TCP 和 UDP。

最佳答案

假设我们只讨论以太网和 IPv4

Look at your interface MTU, which has already subtracted 
the size of the ethernet headers for the OS I can
remember (linux and FreeBSD)

Subtract 20 bytes for a normal IP header (no IP options)

Subtract 20 bytes for a normal TCP header

Or

Subtract 8 bytes for a UDP header

这是您可以将多少数据打包到一个 IPv4 数据包中。所以,如果您的 TCP 数据是 n 字节长,那么您的总以太网负载是 (n + 20 + 20); UDP 的以太网负载是 (n + 20 + 8)

编辑问题

回复:MTU

您的接口(interface) MTU 是您的驱动程序允许您封装到线路上的最大以太网负载。我减去是因为我们假设我们从 MTU 开始并处理封装链(即 eth -> ip -> tcp|udp);您不能在没有 IP header 的情况下发送 TCP 或 UDP,因此也必须考虑到这一点。

RE: 计算应用程序开销

关于您的应用程序将产生的开销的理论计算很好,但我 suggest lab testing如果你想要有意义的数字。 每个客户端 session 的平均数据传输每分钟客户端命中率并发客户端等使用因素在某些(不寻常的)情况下可能会有所不同。

关于java - 预测 Java 应用程序产生的网络流量开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5696623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com