gpt4 book ai didi

c - 发送固定长度的TCP帧

转载 作者:IT王子 更新时间:2023-10-29 01:02:55 24 4
gpt4 key购买 nike

我需要使用 TCP 通过具有固定非标准 MTU(例如 1560)的子网发送一些数据。如果帧的长度小于 MTU,则通过该子网传输的所有以太网帧都应手动填充 0。

所以,数据大小应该是(1560 - sizeof(IP header )- sizeof(TCP header ))。

这就是我要做的方式:

  1. 我设置了 TCP_CORK 选项来减少数据碎片。它不可靠,因为有 200 毫秒的上限,但它有效。

  2. 我知道 IP header 的大小(20 字节),因此数据长度应等于(1540 - sizeof(TCP header ))。

  3. 这就是问题所在。我不知道 TCP header 大小。它的“选项”字段的大小是 float 的。

那么,问题来了:如何获取TCP头的大小?或者也许有一些方法可以发送带有固定长度 header 的 TCP 帧?

最佳答案

在用户应用程序中使用 TCP 时试图控制帧的大小是错误的。您在错误的抽象级别上工作。这也是不可能的。

您应该做的是考虑用其他东西(UDP?)替换 TCP,或者不太可能但有可能重写您的以太网驱动程序以设置非标准 MTU 并执行您需要的填充。

关于c - 发送固定长度的TCP帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6189128/

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