汽车技术资料网站建设,做3d同人的网站是什么,wordpress seo插件中文,网络运维是做什么的系列文章目录 返回总目录 文章目录 系列文章目录一、IPv4报文格式二、主要函数1.IPv4_Init()2.IPv4_Receive()3.IPv4_Transmit() 一、IPv4报文格式 二、主要函数
1.IPv4_Init()
这个函数除了对模块配置进行初始化#xff0c;如果有分包和组包使能#xff0c;则会对一些相关…系列文章目录 返回总目录 文章目录 系列文章目录一、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不再往下分析了。 目的地址也需要校验这里不细说。 取出协议进行识别看是UDPTCP还是ICMP。 然后分别调用UDP_indication / TCP_indication / ICMP_indication
那么在分别把包识别出协议后丢给各个协议进行解析之前IPv4还做了哪些工作呢
两项组包和检查ARP更新。
3.IPv4_Transmit()
这个函数主要是给上层协议提供发送需要组装的ipc4数据。 调用时机是在Icmp和Udp需要发送的时候提供数据封装。 底层是用EthIf层来进行报文空间的分配。底层的事交给底层做。不作为分析重点