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

Linux netfilter源码分析(1)

转贴自:http://alexanderlaw.blog.hexun.com/8960896_d.html
Linux netfilter源码分析(1)
内容基本上来自两篇文章:
《Netfilter源码分析》—(独孤九贱http://www.skynet.org.cn/index.php)
《Linux Netfilter实现机制和扩展技术》——(杨沙洲 国防科技大学计算机学院)
一、   IP报文的接收到hook函数的调用
 
1.1  ip_input.c    ip_rcv()函数
以接收到的报文为例,类似的还有ip_forward(ip_forward.c)和ip_output(ip_output.c)
int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev)
{
    struct iphdr *iph;   //定义一个ip报文的数据报头
    u32 len;
    if (skb->pkt_type == PACKET_OTHERHOST)
       goto drop;  //数据包不是发给我们的
    IP_INC_STATS_BH(IPSTATS_MIB_INRECEIVES); //收到数据包统计量加1
    if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL)
   {
/* 如果数据报是共享的,则复制一个出来,此时复制而出的已经和socket脱离了关系 */
      IP_INC_STATS_BH(IPSTATS_MIB_INDISCARDS);
      goto out;
   }
   if (!pskb_may_pull(skb, sizeof(struct iphdr)))
     goto inhdr_error;  //对数据报的头长度进行检查,
 
   iph = skb->nh.iph;  //取得数据报的头部位置
  if (iph->ihl < 5 || iph->version != 4)  //版本号或者头长度不对,
    goto inhdr_error; //头长度是以4字节为单位的,所以5表示的是20字节
  if (!pskb_may_pull(skb, iph->ihl*4))
    goto inhdr_error;
 
  if (unlikely(ip_fast_csum((u8 *)iph, iph->ihl)))
     goto inhdr_error; //检查报文的检验和字段
  len = ntohs(iph->tot_len);
 if (skb->len < len || len < (iph->ihl*4))
    goto inhdr_error; //整个报文长度不可能比报头长度小
 if (pskb_tr


相关文档:

实战Linux Bluetooth编程 (七) SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......

linux批量该文件名

A 加后缀
1.问题:同以目录下有海量以日期命名的文件,其中有的有后缀,有的以点结尾,如20020101.,20020102.,……,20020101.td,20020102.td……
要求: 把所有以点结尾的加上后缀.ts
我的方法:
#!/bin/bash
for files in `ls *.`
do
mv $files `echo “$filests” `
done ......

盘点2009:Linux服务器软件发展亮点多

硬件技术一直和软件技术相依相随,随着服务器硬件和芯片技术的进步,推动着服务器操作系统技术的变革。
  芯片技术的发展:从x86到龙芯
  2009年,各大芯片厂商都推出了多款芯片产品:如Intel公司基于Nehalem架构发布的桌面端芯片产品酷睿i7;AMD公司也推出了基
于新Fiorano平台的代号为“伊斯坦布尔”的六 ......

linux netstat 命令常用选项详解

转自:http://hi.baidu.com/zhangdaoxie/blog/item/d9f49f4a991f412b08f7efff.html
Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
如果我们的计算机有时候接受到的数据报会导致出错数据删除或故障,我们不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数 ......

linux设备文件系统sysfs介绍

      linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。
1,devfs:devfs是在2.4内核就出现了,它是用来解决linux中设备管理混乱的问题,linux内核开发人员开发了devfs。
2,sysfs:是Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与proc 有些类似,但 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号