gpt4 book ai didi

tcp - 通过 SLIP 接收的数据包和从以太网接收的数据包之间的格式有区别吗?

转载 作者:可可西里 更新时间:2023-11-01 02:54:18 26 4
gpt4 key购买 nike

当通过 SLIP ping 一个 uip 设备时,我在 uart 中得到一个数据包,看起来像这样:

   uip_buf[0]   0x45    
uip_buf[1] 0x0
uip_buf[2] 0x0
uip_buf[3] 0x3c
uip_buf[4] 0x1
uip_buf[5] 0x20
uip_buf[6] 0x0
uip_buf[7] 0x0
uip_buf[8] 0x80
uip_buf[9] 1
uip_buf[10] 0xb5
uip_buf[11] 0x51
uip_buf[12] 0xc0
uip_buf[13] 0xa8
uip_buf[14] 0x1
uip_buf[15] 0x1
uip_buf[16] 0xc0
uip_buf[17] 0xa8

从代码来看,这个以太网头应该由目标地址、源地址和类型组成。然而,为了处理数据包,类型必须是 0x0008,但显然它是 0xa8c0(uip_buf [13:12] 或 uip_buf [17:16]。因此比较总是失败:

 if(BUF->type == HTONS(UIP_ETHTYPE_IP))  // 0xa8c0 != 0x0008

进行比较的行来自以太网实现...通过 SLIP 传输时,类型字段是否可能不同?

最佳答案

是的,有区别。 SLIP 没有以太网头,因为串行线路没有总线架构:相反,恰好有两个端点,因此每一端都已经知道它在与谁通话。

IP 数据包仍然需要区分,因此有一些魔术字节值和替换可以做到这一点。维基百科页面上的详细信息:

https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol

关于tcp - 通过 SLIP 接收的数据包和从以太网接收的数据包之间的格式有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30825788/

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