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