自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

但行好事 莫问前程

on the programming road

  • 博客(7)
  • 收藏
  • 关注

linux下的网桥介绍

网桥用来连接不同的网段。使不同的网段能够相互通信,看起来很像三层的路由。它能够有多个port,从而能够将数据帧从一个port复制到另一个port。这里要注意一点,linux下的网桥只能用于以太网。来看下示意图:[img]/upload/attachment/109009/59e160dd-4741-3749-86d1-c129997c34ab.jpg[/img]其中...

2009-05-29 04:07:19 363

链路层到网络层的数据传递

我们知道在tcp/ip模型中,基本每一层都可以处理多重协议类型,那么当一个输入帧到达后,内核的每一层是如何来取得相应的处理函数呢?也就是说当我要把包传递给上层的时候,如何取得相应协议的处理函数。我们这里先来看从二层如何把把数据传递给三层。[code="java"]struct sk_buff {.................................... __b...

2009-05-23 02:17:54 242

内核网络输出帧的处理

首先来看如何打开和关闭一个输出队列。帧的输出状态是通过device->state设为__LINK_STATE_XOFF来表示的。而打开和关闭队列也就是通过这个状态位来处理。[code="java"]static inline void netif_start_queue(struct net_device *dev){ netif_tx_start_queue(netdev...

2009-05-16 03:20:25 165

libevent源码浅析(四)

最近刚刚一个项目自己用libevent,因此这几天又把libevent的代码拿出来翻了下,当初看的时候有些似是而非的东西,这次是基本没有了。这篇也算是前面几篇libevent的blog的补充了。[code="java"]struct event_base { const struct eventop *evsel; void *evbase; int event_count...

2009-05-15 23:02:27 131

内核中接收网络帧的处理

我这里描述的只是2层的处理。首先,我们来看softnet_data这个结构,每个cpu都有这样的一个队列,它主要是用来存储incoming frame。由于他是每个cpu都有一个队列,因此在不同的cpu之间我们就不要任何锁来控制并发的处理这个帧队列。我们在操作系统层要取得帧数据,都是通过这个数据来读取。[code="java"]/* * Incoming packets...

2009-05-11 01:57:02 228

内核中的中断处理

首先来看当网络接收帧到达时,设备如何唤醒驱动。1 轮询也就是内核不断的监测相应的寄存器,从而得到是否有网络帧到来。2中断当有数据时,设备执行一个硬件中断,然后内核调用相应的处理函数。这种处理当网络在高负载的情况时,效率会很低(中断太频繁)。并且会引起receive-livelock.这是因为内核处理输入帧分为了两部分,一部分是驱动复制帧到输入队列,一部分是内核执...

2009-05-03 22:14:35 214

内核网络设备的注册与初始化

首先来看如何分配内存给一个网络设备。内核通过alloc_netdev来分配内存给一个指定的网络设备:[code="java"]#define alloc_netdev(sizeof_priv, name, setup) \ alloc_netdev_mq(sizeof_priv, name, setup, 1)struct net_device *alloc_netde...

2009-05-01 02:49:09 260

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除