0%

发包callstack分析

内核发包路径分析

触发方式

1
curl http://baidu.com

udp dns callstack

tcp callstack

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
__dev_xmit_skb (\root\codes\kernel-dev\linux\net\core\dev.c:3779)
__dev_queue_xmit (\root\codes\kernel-dev\linux\net\core\dev.c:4310)
dev_queue_xmit (\root\codes\kernel-dev\linux\include\linux\netdevice.h:3082)
neigh_hh_output (\root\codes\kernel-dev\linux\include\net\neighbour.h:529)
neigh_output (\root\codes\kernel-dev\linux\include\net\neighbour.h:543)
ip_finish_output2 (\root\codes\kernel-dev\linux\net\ipv4\ip_output.c:238)
__ip_finish_output (\root\codes\kernel-dev\linux\net\ipv4\ip_output.c:0)
NF_HOOK_COND (\root\codes\kernel-dev\linux\include\linux\netfilter.h:293)
ip_output (\root\codes\kernel-dev\linux\net\ipv4\ip_output.c:439)
dst_output (\root\codes\kernel-dev\linux\include\net\dst.h:458)
ip_local_out (\root\codes\kernel-dev\linux\net\ipv4\ip_output.c:128)
__ip_queue_xmit (\root\codes\kernel-dev\linux\net\ipv4\ip_output.c:543)
ip_queue_xmit (\root\codes\kernel-dev\linux\net\ipv4\ip_output.c:557)
__tcp_transmit_skb (\root\codes\kernel-dev\linux\net\ipv4\tcp_output.c:1415)
tcp_ack_snd_check (\root\codes\kernel-dev\linux\net\ipv4\tcp_input.c:5616)
tcp_rcv_state_process (\root\codes\kernel-dev\linux\net\ipv4\tcp_input.c:6738)
tcp_v4_do_rcv (\root\codes\kernel-dev\linux\net\ipv4\tcp_ipv4.c:1751)
__release_sock (\root\codes\kernel-dev\linux\net\core\sock.c:2983)
release_sock (\root\codes\kernel-dev\linux\net\core\sock.c:3520)
tcp_sendmsg (\root\codes\kernel-dev\linux\net\ipv4\tcp.c:1337)
inet_sendmsg (\root\codes\kernel-dev\linux\net\ipv4\af_inet.c:840)
sock_sendmsg_nosec (\root\codes\kernel-dev\linux\net\socket.c:730)
__sock_sendmsg (\root\codes\kernel-dev\linux\net\socket.c:745)
__sys_sendto (\root\codes\kernel-dev\linux\net\socket.c:2194)
__do_sys_sendto (\root\codes\kernel-dev\linux\net\socket.c:2206)
__se_sys_sendto (\root\codes\kernel-dev\linux\net\socket.c:2202)
__x64_sys_sendto (\root\codes\kernel-dev\linux\net\socket.c:2202)
do_syscall_x64 (\root\codes\kernel-dev\linux\arch\x86\entry\common.c:50)
do_syscall_64 (\root\codes\kernel-dev\linux\arch\x86\entry\common.c:80)
entry_SYSCALL_64 (\root\codes\kernel-dev\linux\arch\x86\entry\entry_64.S:120)
48 (@48..88:3)

参考

networking:kernel_flow [Wiki]