什么是开销,有效负载和标头

时间:2014-07-22 05:59:29

标签: networking overhead payload

有人可以解释一下什么是开销,有效负载,报头和数据包。据我所知,数据包是要传输的整个数据。该数据包由实际数据组成,我认为是有效载荷,数据包的源/目的地信息在标题中。因此,数据包由标头和有效负载组成。那么这个开销是多少?是头部的一部分。我从网上得到了这个“数据包偷听包括存储在数据包头中的所有额外字节信息” 标头已包含源/目标信息。这个数据包开销有多少额外的信息字节。我糊涂了。

2 个答案:

答案 0 :(得分:16)

像你所说的数据包有“有效载荷”,它是需要传输的数据本身(通常是用户的数据),“标题”包含各种各样的东西取决于你正在使用的协议,例如{{3在目标和源IP / PORT等标题中只包含简单的东西,另一端的UDP包含更多的东西,比如数据包的序列号,以确保有序传递,很多标志确保数据包实际收到它的目的地和数据的校验和,以确保它没有被破坏并在它的排序中正确接收。

现在,“开销”部分实际上是发送有效负载所需的附加数据。在我上面谈到的情况下,它是标题部分,因为您需要将它添加到您想通过互联网发送的每个有效负载。 TCP具有比UDP更大的开销,因为它需要向您的有效负载添加更多数据,但您可以保证您的数据将按照您发送的顺序在其目的地中接收,而不会损坏。 UDP没有此功能,因此无法保证。

有时,您会根据要发送的数据阅读/听取有关使用哪种协议的讨论。例如,假设您有一个游戏,并且您希望每次移动时更新玩家的位置,它自己的有效负载将包含:

int playerID;
float posX;
float posY;

有效负载的大小是12字节,假设我们使用TCP发送它,现在整个数据包将如下所示:

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

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

现在您需要确定它是否是您要用于游戏的协议,如果您不需要TCP提供的功能,您最好使用UDP,因为它的开销较小,因此要发送的数据较少。 / p>

答案 1 :(得分:4)

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

开销是可变的,因为您可以选择不同类型的数据包(或数据包协议)来传输数据。不同的数据包协议为您提供不同的功目前存在的两种主要类型的数据包协议是TCPUDP

可以说UDP的开销低于TCP,因为它的数据包具有较小的报头,因此需要较少的带宽来发送有效负载(数据)。

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