通信工程tcp(2)期末复习(4)

2019-08-02 00:05

if(pskb_trim_rcsum(skb,len)){………………………………………(8) IP_INC_STATS_BH(IPSTATS_MIB_INDISCARDS); goto drop; }

return NF_HOOK(PF_INET,NF_IP_PRE_ROUTING,skb,dev, NULL,ip_rcv_finish); … }

(1)过滤送往其他主机的数据包。 pkt_type表示报文类型 。

PACKET_OTHERHOST表示非去往本机但是在特定模式下被接受的报文。 (2)跳过数据包的以太头,取IP头。

(3)IP头的长度是否至少为5,是否是IPV4. (4)检查报头长度与包头描述是否一致。

(5)取出ip头中标明的数据包总度,且和收到的数据包长度相比较 (6)确保skb的数据长度大于等于IP头部中指示的IP数据包总长度 (7)数据包总长度必须大于等于IP头部长度。 (8)去除掉空数据,把skb->len和len统一起来

defrag in ip_local_deliver

int ip_local_deliver(struct sk_buff *skb) {

if(ip_hdr(skb)->frag_off&htons(IP_MF|IP_OFFSET)){ skb = ip_defrag(skb, IP_DEFRAG_LOCAL_DELIVER); if(!skb) return 0; } return NF_HOOK(PF_INET, NF_IP_LOCAL_IN,skb, skb->dev, NULL, ip_local_deliver_finish); }

IP_MF|IP_OFFSET的结果是:0011 1111 1111 1111

因此,只要(skb)->frag_off和上述结果相等不为0则要么是MF位不为0,表示后续还有其他分段;要么是MF为0,但至少13bit偏移量中有一位不为0,表示该skb是某个IP原始报文的最后一个分段。因此需要调用ip_defrag进行重组处理。


通信工程tcp(2)期末复习(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:齿轮习题2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: