QualNet收发包过程分析(五)

本文详细分析了QualNet中从网络层的NETWORK_ReceivePacketFromMacLayer开始,经过传输层的UDP处理,最终到达应用层的过程。在NetworkIpReceivePacketFromMacLayer函数中,判断包的目的地并决定是否转发。传输层通过TransportUdpSendToApp()将UDP数据包传递给应用层,应用层的APP_ProcessEvent函数根据协议和事件进行具体处理。
摘要由CSDN通过智能技术生成

接上文https://blog.csdn.net/zhang1806618/article/details/107856736

2.3 网络层

NETWORK_ReceivePacketFromMacLayer函数区分网络层协议调用相应协议处理。对IPv4协议,调用NetworkIpReceivePacketFromMacLayer()函数,该函数又直接调用NetworkIpReceivePacket()函数。在NetworkIpReceivePacket()函数中,判断是否是发送给本节点的包,如果不是,直接转发;如果是,经由背板处理,另外判断是否多播包,多播包还需转发。

void NetworkIpReceivePacket(
    Node *node,
    Message *msg,
    NodeAddress previousHopAddress,
    int incomingInterface)
{
    NetworkType netType = NETWORK_IPV4;    
    //是发送给本节点的包
    if (IsMyPacket(node, ipHeader->ip_dst) || IsIgmpPacket(node, ipHeader->ip_p))
    {        
        BOOL isMulticast = NetworkIpIsMulticastAddress(node, ipHeader->ip_dst);
        Message* sendMessage = msg;
        if (isMulticast)
        {
            sendMessage = MESSAGE_Duplicate(node, msg)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值