linux 运维工程师必须要知道的66条常用命令 #软件开发# #每日一点linux#
爱T馆3年左右经验的程序员该怎么样去入手学习linux下的tcp/ip协议栈呢?
1、对于linux上层应用开发者
可以从应用开发者所熟悉的linux socket编程入手,顺着这些编程接口对应的系统调用切入,通过这些系统调用往下走继续深入,等你把socket(), listen(), accept(), connect(), write(), read()这几个socket系统调用的linux内核代码看到底,你基本上对linux网络部分的脉络就清楚了。
2、对于底层的linux驱动或者内核开发者
linux底层的开发者,基本都熟悉网卡驱动。即使不熟悉,对他们来说熟悉起来也不难。
沿着linux网卡驱动,以netif_rx()为入口,向上追踪,历经:
a、软中断层处理函数net_rx_action()
b、网络层处理函数ip_rcv()
c、传输层处理函数tcp_v4_rcv()
d、socket层处理函数inet_recvmsg()
e、虚拟文件系统层处理函数sock_read_iter()
经过上面这几步,也就把linux网络协议栈的主要流程梳理清楚了。
最后我们来总结一下,学习linux内核网络子模块的思路是:从系统调用出发,从上往下梳理一遍;再从linux网卡驱动入手,从下往上梳理一遍。
这一上一下,上下其手,何愁享受不到技术通透的快感呢?
#程序员# #C语言# #linux# #Linux# #嵌入式# #操作系统# #单片机# #运维# #IT# #我们一起上头条# #c语言# #java#







