易截截图软件、单文件、免安装、纯绿色、仅160KB

linux内核转发包的数据流向

    我想跟踪一个数据包在内核转发过程中的流动方向,但是没什么思路,资料又很少,请各位大侠点化点化~~
1. 用工具调试内核
2. 用prink输出日志或者保存成一个文件.
3. 用strace命令.


引用
    我想跟踪一个数据包在内核转发过程中的流动方向,但是没什么思路,资料又很少,请各位大侠点化点化~~


这个只能去看内核协议栈的源码吧。

推荐一本书 Understanding Linux Network Internals
这里面很清楚。

如果是做IP转发的话,数据包的具体流程是这样的:
网络设备驱动里会使用netif_rcv_skb把包送进协议栈
然后经过ip_rcv
ip_rcv_finish
ip_forward (开始转发) 
ip_forward_finish
ip_finish_output
dev_queue_xmit
最后会调用设备驱动的发送函数dev->hard_start_xmit
包进入驱动的缓冲区,最后被DMA到网卡上,从链路出去

到内核里找上面这些函数去看,就明白了
Understanding Linux Network Internals 这本书讲得很清楚,现在有中文版的了


谢谢大家,我在试试


相关问答:

Linux Socket HTTP请求的问题,高手进!

小弟最近需要一个用socket获取html文档的代码,但是老是不能获取完整的html源码。原因不明,望高手指点!
C/C++ code:

char *Http_GET(char *host,int port,char *data) //发送GET请求
{
char response[2 ......

linux下安装了jdk1.4但版本还是1.3.1

linux下安装了jdk1.4但版本还是1.3.1,又安装完1.5也同样版本还是1.3.1  有去配置.bashrc文件内容如下    
      set JAVA_HOME=/usr/share/jdk1.5.0_05
      export JAVA_HOME
   ......

linux一个sleep的奇怪问题,高手来给解答下了

while(1)
{
    time_t now;
    time(&now);
    struct tm* pt=localtime(&now);
    cout < < "当前时间" < < pt->t ......

linux教程 - Linux/Unix社区 / 系统维护与使用区

有什么好的Linux教程吗?
小弟谢过~
[问题点数:0分]

google

据说鸟哥的私房菜不错。

鸟哥的Linux私房菜
更多的再这上面去搜索一下很LIUNX书籍还不错

引用
google
正解

鸟哥的Linux私房菜  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号