摘要:
Skb_buff数据包从IP层下传到链路层后,链路层开始对数据包进行处理首先,判断skb_buff数据包是不是不在skb_buff链表中,如果还在(即skb_buff->next!=NULL),则说明上面的处理有问题,代码要避开(人为的避开,代码还是有问题),即不能发送这个数据包,处理方式是,指定发送数据包的设备被指定为NULL,即数据包没有设备真实发送。第二步,判断是否已知下一跳的MAC地址,即skb->arp=1,如果不是,则需要调用arp_find来查找IP地址对应的MAC地址,如果找不到,则直接返回,不再进行发送。第三步,前面两步都正常了,则说明数据包正常,此时判断数据是否 阅读全文
摘要:
Tcp层把数据从传输层下传到网络层,之后,网络层将对下传的数据进行处理。首先,要对下传的数据进行排列。经过TCP层的处理,现在的数据已经被放置到skb_buff结构体中的数据空间部分,TP层就要对这个skb_buff进行必要的排列,使得数据有个先来后到的顺序,从而达到公平。对skb_buff的排列,是通过skb_buff对应的sock结构体成员sock->send_tail , sock->send_head 和skb_buff->link3 这三个成员来完成的,大致的排列图示如下:当前sock的所有skb_buff结构体都被按照 图 1 /2 /3 的方式插入到队列中,so 阅读全文