java发送udp数据报时可以修改源ip吗?(非代理)如果不行linux环境下有没有什么命令可以做到同样的事

    2.检查skb是否被共享,如果被共享需要用skb_clone拷贝一份,因为后面要对skb的内容进行变更
    3.常规检测:如果报文的长度小于ip首部最小长度,丢弃;如果ip协议字段不等于4丢弃;若ip首部长度字段小于5,丢弃;若ip首部长度小于ip首部 长度字段*4,丢弃;如果ip首部校验和出错,丢弃;如果skb->len(此时len为整个ip报文长度)小于ip首部总长字段,丢弃;如果ip 首部总长字段小于ip首部长度字段,丢弃;
    4.注意第三步中skb->len是可以小于ip首部的总长字段的,因为根据代码注释,传输介质有可能在末尾添加了padding,在这种情况下, 会调用pskb_trim_rcsum将多余的结尾部分砍掉(通过把skb->tail往前移),并且还要将检查和无效化
总结,ip_rcv主要进行的常规检查,唯一对skb进行操作的就是将结尾的填充字段砍掉。

标保存了各个协议的处理结构。这两个数组就像是L4层的ptype_base,根据本层的协议号来决定处理函数

(其实这里并不是简单调用copy_to_user,还要处理很多情况,比如用户使用的msghdr可能包含多个iovec,skb可能有多个frags 等等)

这样,一个udp数据包就从网卡到达了用户的缓冲区

}

我要回帖

更多关于 udp java 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信