什么是开销、有效负载和头



谁能告诉我什么是开销,有效载荷,头和包。据我所知,一个包就是要传输的全部数据。这个包由实际数据组成,我认为这是有效载荷,包的源/目的地信息在报头中。所以一个包由报头和有效载荷组成。那么开销是多少呢?开销是头的一部分吗?这是我从互联网上得到的"包窃听"包括存储在包头中的所有额外字节的信息。标头已经包含了源/目标信息。这个数据包开销中额外的信息字节是多少?我困惑。

数据包就像你说的,有"有效负载";这是它需要传输的数据本身(通常是用户的数据),标题"包含各种各样的东西取决于你正在使用的协议,例如UDP包含只是简单的东西在头像目的和源IP/端口,TCP在另一端包含更多的东西,如数据包的序列号,以确保有序交付,很多标志,以确保数据包实际接收到的目的地和校验和数据,以确保它没有被损坏,并在其定义中正确接收。

现在,"开销"一部分实际上是为了发送有效载荷而需要的额外数据。在我上面谈到的情况下,它是头部分,因为你需要将它添加到你想通过互联网发送的每个有效载荷中。TCP比UDP有更大的开销,因为它需要向你的有效负载添加更多的数据,但你可以保证你的数据将在它的目的地被接收,按照你发送的顺序,不会损坏。UDP没有这个特性,所以它不能保证。

有时候你会读到/听到关于根据你想要发送的数据使用什么协议的讨论。例如,假设你有一款游戏,你想在玩家每次移动时更新他的位置,它的有效载荷将包含以下内容:

int playerID;
float posX;
float posY;

有效载荷的大小是12字节,假设我们使用TCP发送它,现在整个数据包看起来像这样:

-------------
TCP_HEADER
-------------
int playedID;
float posX;
float posY;

现在整个数据包的大小是payload + TCP_HEADER,它是12字节+(32字节到72字节),你现在有32到72字节的数据开销。您可以在这里阅读有关TCP头的信息。注意,开销甚至比数据本身还要大!

现在你需要决定这是否是你想要在游戏中使用的协议,如果你不需要TCP提供的功能,那么你最好使用UDP,因为它具有更小的开销,因此需要发送的数据更少。

您是正确的,数据包通常由报头和有效负载组成。数据包类型的开销是传输有效负载所需的浪费带宽的数量。包头是放在包有效载荷之上的额外信息,以确保它到达目的地。

开销是可变的,因为您可以选择不同类型的数据包(或数据包协议)来传输数据。不同的包协议提供不同的特性。目前存在的两种关键类型的数据包协议是TCP和UDP。

可以说UDP的开销比TCP低,因为它的数据包头更小,因此发送有效载荷(数据)所需的带宽更少。

这样做的原因是一个深刻的主题,但足以说明TCP提供了许多非常有用的功能,而UDP没有,如确保传输数据包和损坏检测。两者都是非常有用的协议,并根据应用程序需要的特性(速度或可靠性)进行选择。

相关内容

  • 没有找到相关文章

最新更新