tcp_v4_send_ack
ip_send_unicast_reply
ip_route_output_key
ip_route_output_flow
ip_push_pending_frames
ip_send_skb
udp_sendmsg
_ip_route_output_key
ip_route_output_flow
fib_lookup
udp_send_skb
ip_send_skb
raw_sendmsg
ip_route_output_key
ip_route_output_flow
raw_send_hdrinc
dst_output
dst_output_sk
ip_queue_xmit
ip_route_output_ports
_ip_route_output_key
ip_route_output_flow
ip_local_out
ip_local_out_sk
dst_output_sk
ip_route_output_flow
__ip_route_output_key
fib_lookup
__mkroute_output
rt_set_nexthop
ip_send_skb
ip_local_out
ip_local_out_sk
dst_output_sk
rtable->dst->output
ip_output
ip_finish_output
//鄰居邏輯
ip_finish_output2
__neigh_create
neigh_table->constructor
arp_constructor
dst_neigh_output
//(a) 已經有arp鄰居表項,直接傳送
neigh_hh_output
dev_queue_xmit
//(b) 暫時沒有arp鄰居表現,先完成arp解析
neighbour->output
neighbour->ops->connected_output
neighbour->ops->output
neigh_resolve_output
// 週期性傳送arp請求
neigh_event_send
__neigh_event_send
neigh_add_timer // neigh_timer_handler
neigh_probe
neighbour->ops->solicit
arp_solicit
arp_send
arp_xmit
dev_queue_xmit
dev_queue_xmit
dev_queue_xmit
__dev_queue_xmit
//選擇乙個輸出佇列,將該資料報插入傳送佇列中。
netdev_pick_tx
// 如果存在 qdisc->enqueue, 那麼使用擁塞傳送佇列
_dev_xmit_skb
sch_direct_xmit
_qdisc_run
//(a) 本次被排程
qdisc_restart
sch_direct_xmit
dev_hard_start_xmit
xmit_one
netdev_start_xmit
net_device->netdev_ops->ndo_start_xmit
例如 ixgb_xmit_frame
例如 e1000_xmit_frame
例如 dm9000_start_xmit
//(b)如果待發的資料太多。一次沒有發完,等下次再排程傳送
_netif_schedule
netif_schedule_queue
_netif_schedule
_netif_reschedule
net_tx_softirq
net_tx_action
qdisc_run
qdisc_restart
sch_direct_xmit
dev_hard_start_xmit
xmit_one
netdev_start_xmit
__netdev_start_xmit
net_device_ops->ndo_start_xmit
ethoc_start_xmit
ixgb_xmit_frame
dm9000_start_xmit
Linux網路介面的原始碼分析
二.網路介面程式的結構五.網路協議部分 協議層是真正實現是在這一層。在linux include linux socket.h裡面,linux的bsd socket 定義了多至32支援的協議族,其中pf inet就是我們最熟悉的tcp ip協議族 ipv4,以下沒有特別宣告都指ipv4 以這個協議族...
Linux網路驅動原始碼分析 一
網路驅動是一種典型的pci裝置驅動,無論在嵌入式平台還是在pc領域,網路相關的專案開發有著比較廣闊的前景,因此,分析當前linux核心中網路裝置的驅動,不但能了解網路相關的基本原理,而且可以借鑑linux核心的先進的技術,將其應用到嵌入式或其他領域。本文以linux核心中的rtl8139網路驅動為例...
資料傳送介面原始碼示例
由於專案中經常需要寫各種對接的介面,此次決定花點心思設計一下,避免每次都重複開發。場景描述 重資料庫中讀取資料傳送至webservice介面,需要對傳送的資料進行確認。以往開發的痛點在於 要操作的表及表的字段不確定 對接的webservice介面及規範不統一,此原因在於對接的第三方。設計思路 如果請...