系列文章目录
返回总目录
文章目录
- 系列文章目录
- 一、IPv4报文格式
- 二、主要函数
-
- 1.IPv4_Init()
- 2.IPv4_Receive()
- 3.IPv4_Transmit()
一、IPv4报文格式
二、主要函数
1.IPv4_Init()
这个函数除了对模块配置进行初始化,如果有分包和组包使能,则会对一些相关配置进行初始化如buf长度和位置指针等。如果不涉及分包和组包,那么初始化内容很简单。
2.IPv4_Receive()
在收到报文后根据类型判断为IPv4 (类型 = 800)
然后经过头校验:版本校验,长度校验,checksum校验等。
接下来源地址校验过程比较复杂,以后会拆开讲。先在这里讲个大概。
上述校验合法后,继续校验源地址合法性。
源地址合法性包括是否是loop back IP、预留IP、广播ip或autoip等,如果是这些IP不再往下分析了。
目的地址也需要校验,这里不细说。
取出协议进行识别,看是UDP,TCP,还是ICMP。
然后分别调用UDP_indication / TCP_indication / ICMP_indication