加载中…
  
博文
标签:

it

分类: network

    利用Linux 我们可以实现复杂的防火墙机制,大家防火墙路由器,得易于Linux 强大的内核,这些实现都变得非常简单,通过简单的几条iptables命令就可以定制我们的防火墙功能。那么Linux内核是如何完成对包的处理,流程又是怎么样呢?

一 首先看一下netfilter的整体架构

http://s14/middle/694f2ae74cdf8b87345dd&690

netfilter的具体实现,以NF_IP_PREROUTING为例

二 NF_HOOK的实现原理

    在网卡收到包之后交由ip层处理的时候,就交给了ip_recv函数

int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev)

{

    在做了基本的头校验等工作后,就到了我们的重点NF_HOOK钩子函数,此时还未作路由等路处理

    return NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING, skb, dev, NULL,

       &nb

标签:

it

分类: network

一 IPV6 地址分配简介

    相对于IPV4只有一种的地址分配方式,IPV6的地址分配相对复杂一下。IPV6的地址分配分为两种:无状态的地址分配(stateless),有状态的地址分配(stateful)。

二 IPV6无状态地址分配

    无状态配置使用ND(RFC2461)协议,ND协议对应IPV4的ARP协议和ICMP 路由发现等协议。

    IPV6的无状态配置实用ND协议的RS和RA报文完成交互,具体的交互如下图

http://s16/middle/694f2ae74cdcd9a55eebf&690

  1. 客户端发送RS报文
  2. 路由器收到RS报文后,回应RA报文,RA只是给一个prefix:RA的报文结构如下图

    http://s13/middle/694f2ae74cdcd9a5ecc4c&690

    M: managed address configureation. 如果这个bit 是1,代表着要请电脑另外的再去跟DHCPV6要IPV6 Prefix.

    O: other

标签:

it

分类: network

一 linux ARP cache状态图

http://s15/mw690/694f2ae7gcd5589d509be&690

各个状态的含义如下:

NUD_INCOMPLETE: ARP包已经发出,还没有收到回复

NUD_REACHABLE: ARP缓存有效,可达。

NUD_FAILED:  不可达,请求返回失败

NUD_STALE: 缓存存在,not confirmed for a certain amount of time

NUD_DELAY:  当NUD_STALE状态进行用户发包,进入此状态

NUD_PROBE: NUD_DELAY 查询包无包回应的时候,进入PROBE

 

二 ARP CACHE 状态机流程

         最简单的就是表的从NONE到有,如果有回应就进入REACHABLE,如果无回应就FAILED,被回收掉。

         比较复杂的是当REACHABLE 经过”not used for more than reachable_time“后,就进入了STALE,这个状态比较复杂。下面重

(2012-09-24 11:22)
标签:

it

分类: CPU

在计算机中,所有的数据最终是以二进制的形式进行相应的表达的。那么正数和负数是如何进行保存的呢?

         在计算机中,正数的保存就是其二进制进行保存。对于负数,则是以补码的形式进行保存。说到补码,先从原码和反码说起。

        

标签:

杂谈

分类: Kernel
1 linux 内存不足的现象
   在正常运行的Linux系统中,系统在运行平稳之后,相应的内存的状态(free used等)也会达到类似的一饿平衡值。当内存发生不足的时候(比如嵌入式系统没有swap区)也就是相应的物理页面被耗尽的时候,此时linux 开始回收内存和进程,就会出现OOM等问题。
    当出现此问题的时候应该去分析一下原因,是否是用户内存泄漏还是其他的问题。

2 内存的分析和问题的定位方法
  1) 通过free命令查看(PC下)
$ free
             total       used       free     shared    buffers     cached
Mem:       4105108    1584120    2520988          0     687096     701808
-/+ buffers/cache:     195216    3909892
Swap:      9805816       &
标签:

network

it

分类: Kernel
1 概念
  先介绍几个概念:
   1) MTU: 网卡的最大传输单元
   2) MSS: Maxitum Segment Size 最大分段大小
2  MSS 作用
   MSS表示TCP数据包的每次能够传输的最大数据分段。MSS的主要作用是在TCP建立连接的过程通常要写上对发的MSS值,这个值是TCP协议实现的时候根据MTU换算而得(主要是1500-20个大小的包头-20个大小的TCP数据包头)。因此一般的MSS值大小为1460. 
3 协商过程
    TCP client 发送SYN包,在Option的选项里面有MSS字段。
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有