我正在为我的操作系统编写网络堆栈。 从以太网接收数据时,如果数据小于64字节,我必须检测并删除填充,并设置数据长度,如标准所示。
执行此操作的算法是什么?
如果数据包含'a0',则它小于64字节并将被填充。如果我按字节顺序检查,我将得到第二个再见0,因此它也将被计为填充数据,但不是。
答案 0 :(得分:1)
“类型/长度”字段将告诉您有效负载的大小。 Wireshark非常好explanation:
因此,如果类型/长度字段的值为1500或更低,则它是a 长度字段,后跟一个802.2标题,否则它是a 输入字段,然后是上层协议的数据 (XXX - 上面的句子略有重复?)。注意的时候 length / type字段用作指定长度值的长度字段 不包括任何填充字节的长度(例如,如果是原始的 以太网帧与包含单个字节的有效载荷一起发送 数据长度字段将设置为0x0001和45个填充字节 将被附加到数据字段以使以太网帧达到 所需的最小64字节长度。)