跳转至

IP包指令

这是联网类通信必须支持的指令, 指令id只有一个 0x100

包结构

只分成2部分

  1. 1字节的网络适配器(网卡)id
  2. IP数据包, 或者MAC数据包

IP数据包的长度, 由指令层的通用长度字段来限定, 一般限制在1500字节, 最高到1560字节

包数据描述

虽然是"IP包"指令, 实际允许传输IP包, MAC包, 取决于两端的网卡是哪种

  1. 如果是带MAC的以太网类型网卡, 那就是以太网MAC包, 14字节的以太网头部+IP数据
  2. 如果不带MAC, 点对点网卡, 那就是IP包

IP包不具体区分ipv4和ipv6, 或者说不限制.

包数据处理

  1. 数据来源, 通常是lwip的netif->lowlevelout函数, 对外数据的pbuf被airlink代码拦截, 从而转发到任务层
  2. 数据处理, 收到IP/MAC包之后, 根据网卡id, 挑选合适的netdrv/lwip,在LWIP线程内,支持netif->input

注意, 为了实现多网融合, 在模块端, 通常还会先经过NAPT层的改写, 然后再推入任务层.

包大小限制

当前一律限制在1550字节以内, 超过的话会直接抛弃