gpt4 book ai didi

c - C中Raw socket编程中的数据封装

转载 作者:太空宇宙 更新时间:2023-11-04 02:08:29 25 4
gpt4 key购买 nike

在用 C 语言进行 UDP/TCP 原始套接字编程时,我们为什么不在数据封装中使用以太网头帧。为什么我们只使用 udp/tcp header 和 ip header ??

最佳答案

您需要考虑 OSI 模型。我们在传输层或第 4 层指定 TCP 和 UDP header 的地方发送原始数据。这包括第 3 层或 IP 的部分,就寻址而言,这是网络层。

我们不需要关心第 2 层。那是以太网。我们不能保证它甚至会使用以太网。嵌入式系统可以通过ADSL、DOCSIS、光纤链路、wifi等方式发送。

另一个原因是网卡的硬件已经为第 2 层做了 header 。由于传输的电路和固有的复杂性,我们没有在我们的数据包上放置我们自己的奇偶校验、流量控制和其他东西。

如果需要,您可以使用某些驱动程序编辑第 2 层帧。但是,由于路由器将使用自己的第 2 层帧重新传输它,因此它不会超过一跳。此外,畸形帧更有可能由于纠错细节的缺失或错误而被硬件丢弃,并且由于其处理级别较低。

关于c - C中Raw socket编程中的数据封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17795217/

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