也就是说啊,内核中的收发包的路径,很可能是经理driver_recv --> tcp -->driver_send这样一个过程,是个很长的路径呢......
从dev_queue_xmit中来的数据包全部都是从ip_finish_output中来的吗?
所以,应该经常能抓到ip_local_out才对,因为tcp是需要发确认帧的,
不过就下面这些内容来看,内核里的tcp/ip的协议栈真够长的!
[ 8.355168] [<ffffffff816e3350>] ? ip_fragment.constprop.5+0x80/0x80 [ 8.355168] [<ffffffff816e36b5>] ip_local_out+0x35/0x40 [ 8.355168] [<ffffffff816e3808>] ip_build_and_send_pkt+0x148/0x1c0 [ 8.355168] [<ffffffff817036ea>] tcp_v4_send_synack+0x5a/0xa0 [ 8.355168] [<ffffffff816e99e8>] ? inet_csk_reqsk_queue_hash_add+0x78/0xa0 [ 8.355168] [<ffffffff816f4210>] tcp_conn_request+0x8b0/0x9a0 [ 8.355168] [<ffffffff816ccc85>] ? tcp_packet+0xac5/0x11c0 [ 8.355168] [<ffffffff81702bf3>] tcp_v4_conn_request+0x53/0x60 [ 8.355168] [<ffffffff816f8af4>] tcp_rcv_state_process+0x194/0xd60 [ 8.355168] [<ffffffff81318d7b>] ? security_sock_rcv_skb+0x3b/0x50 [ 8.355168] [<ffffffff81701254>] tcp_v4_do_rcv+0x64/0x210 [ 8.355168] [<ffffffff81704485>] tcp_v4_rcv+0xc15/0xcd0 [ 8.355168] [<ffffffff816de11f>] ip_local_deliver_finish+0x6f/0x1a0 [ 8.355168] [<ffffffff816de7b5>] ip_local_deliver+0xc5/0xd0 [ 8.355168] [<ffffffff816de0b0>] ? inet_del_offload+0x40/0x40 [ 8.355168] [<ffffffff816de3eb>] ip_rcv_finish+0x19b/0x350 [ 8.355168] [<ffffffff816dea8e>] ip_rcv+0x2ce/0x370 [ 8.355168] [<ffffffff816de250>] ? ip_local_deliver_finish+0x1a0/0x1a0 [ 8.355168] [<ffffffff816851ea>] __netif_receive_skb_core+0x34a/0xa20 [ 8.355168] [<ffffffff817095b8>] ? tcp4_gro_receive+0x118/0x1c0 [ 8.355168] [<ffffffff81718dc7>] ? inet_gro_receive+0x1f7/0x250 [ 8.355168] [<ffffffff81687bcd>] __netif_receive_skb+0x1d/0x60 [ 8.355168] [<ffffffff81687c3d>] netif_receive_skb_internal+0x2d/0x90 [ 8.355168] [<ffffffff81688882>] napi_gro_receive+0xd2/0x120 [ 8.355168] [<ffffffff81533081>] e1000_clean_rx_irq+0x191/0x510 [ 8.355168] [<ffffffff81531e80>] e1000_clean+0x250/0x890 [ 8.355168] [<ffffffff8168998a>] net_rx_action+0x1fa/0x340