udp->ip & tcp->ip
udp到ip层是:ip_send_skb
tcp到ip层是: ip_queue_xmit
拿tcp为例,在使用【ip_queue_xmit, ip_local_out】在这个函数区间之内,数据包的IP数据包就已经确定下了:
ip_queue_xmit From Skb:
S 61.0.0.0 D: 8.1.103.0
ip_local_out From Skb:
S 192.168.1.1 D: 192.168.1.110
ip_queue_xmit From Skb:
S 174.0.0.0 D: 8.1.103.0
ip_local_out From Skb:
S 192.168.1.1 D: 192.168.1.110
函数 ip_queue_xmit到底是在哪里:
在ip_queue_xmit函数中会计算路由,得到源地址和目的地址:
ip_copy_addrs(iph, fl4);
所以数据包在OUTPUT之前就填充好了!