interhanchi
码龄18年
  • 44,065
    被访问
  • 11
    原创
  • 1,216,569
    排名
  • 19
    粉丝
  • 0
    铁粉
关注
提问 私信
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2004-03-10
博客简介:

但行好事 莫问前程

博客描述:
on the programming road
查看详细资料
个人成就
  • 获得3次点赞
  • 内容获得3次评论
  • 获得12次收藏
创作历程
  • 18篇
    2010年
  • 51篇
    2009年
  • 58篇
    2008年
  • 102篇
    2007年
  • 16篇
    2006年
  • 2篇
    2005年
TA的专栏
  • java
    8篇
  • c/c++
    30篇
  • 电影
    12篇
  • 读书
    3篇
  • python
    15篇
  • 体育
    5篇
  • 转帖
    5篇
  • 心情
    33篇
  • 音乐
    8篇
  • FP
    4篇
  • 连岳语录
    7篇
  • 其他
    11篇
  • ruby
    40篇
  • javascript
    4篇
  • erlang
    1篇
  • kernel
    42篇
  • 嵌入式
    1篇
  • 服务器设计
    11篇
  • 算法
    1篇
  • asm
    1篇
  • lua
    3篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

我的新blog地址

纠结了好久,终于弄了个独立blog。地址是:[url=http://www.pagefault.info]这里[/url]如果您有订阅我的blog,希望您能更改订阅地址,因为这里以后就不更新了,谢谢!...
原创
发布博客 2010.08.09 ·
205 阅读 ·
0 点赞 ·
0 评论

Receive packet steering patch详解

Receive packet steering简称rps,是google贡献给linux kernel的一个patch,主要的功能是解决多核情况下,网络协议栈的软中断的负载均衡。这里的负载均衡也就是指能够将软中断均衡的放在不同的cpu核心上运行。简介在这里:http://lwn.net/Articles/362339/linux现在网卡的驱动支持两种模式,一种是NAPI,一种是...
原创
发布博客 2010.07.25 ·
168 阅读 ·
0 点赞 ·
0 评论

内核中拥塞窗口初始值对http性能的影响分析

这个是google的人提出的概念,那就是对tcp的拥塞窗口的初始值进行增大可以显著的提高http的性能,这个主要是针对tcp的slow start(我前面的blog有介绍)的.下面是相关的paper和ppt:paper: http://code.google.com/speed/articles/tcp_initcwnd_paper.pdfppt:http://www.ietf...
原创
发布博客 2010.07.11 ·
246 阅读 ·
0 点赞 ·
0 评论

nginx中sub_request的处理

首先来看subrequest的处理。什么是subrequest,顾名思义,那就是子请求,也就是在当前的一个请求中nginx再生成一个请求。比如在nginx的HttpAddition这个filter,就有用到subrequest。这里要注意,一个subrequest是当父reuest执行完毕后才会被执行,并且它会将所有的需要进行的handler phase重新执行一遍(这个我们后面的...
原创
发布博客 2010.06.30 ·
394 阅读 ·
0 点赞 ·
0 评论

nginx中handler的处理(二)

这次我们来看各个phase的checker的处理。首先我们要弄明白一个事情,那就是在nginx中,一般来说,都是在NGX_HTTP_CONTENT_PHASE中调用outputfilter的,也就是说filter是在handler中调用的,这样看来只能有一个handler能够执行outputfiler.所以说在写nginx的handler模块的话,要注意不同的phase的返回值代表的不同意...
原创
发布博客 2010.05.30 ·
367 阅读 ·
0 点赞 ·
0 评论

nginx中handler的处理(一)

nginx中的处理一个http的请求分为了8个phase,分别是下面几个阶段.其中特别要注意就是几个rewrite阶段。[code="java"]typedef enum {//读取请求phase NGX_HTTP_POST_READ_PHASE = 0,//接下来就是开始处理//这个阶段主要是处理全局的(server block)的rewrite。 ...
原创
发布博客 2010.05.20 ·
601 阅读 ·
0 点赞 ·
0 评论

nginx中的output chain的处理(二)

接着上次的分析继续,这次我们来看filter链中最关键的一个模块,那就是ngx_http_copy_filter_module模块,这个filter主要是用来将一些需要复制的buf(文件或者内存)重新复制一份然后发送给剩余的body filter,这里有个很重要的部分,那就是在这里nginx的剩余的body filter有可能会被调用多次,这个接下来我会一一阐述的。先来看它的初始化函数:[...
原创
发布博客 2010.05.09 ·
289 阅读 ·
0 点赞 ·
0 评论

nginx中锁的设计以及惊群的处理

nginx中使用的锁是自己来实现的,这里锁的实现分为两种情况,一种是支持原子操作的情况,也就是由NGX_HAVE_ATOMIC_OPS这个宏来进行控制的,一种是不支持原子操作,这是是使用文件锁来实现。首先我们要知道在用户空间进程间锁实现的原理,起始原理很简单,就是能弄一个让所有进程共享的东西,比如mmap的内存,比如文件,然后通过这个东西来控制进程的互斥。说起来锁很简单,就是共享一...
原创
发布博客 2010.05.03 ·
220 阅读 ·
0 点赞 ·
0 评论

nginx中的output chain的处理(一)

这里我们详细来看ngx_linux_sendfile_chain方法,这个函数也就是nginx的发送函数。一般来说,我们最终都会调用这个函数来发送最终的数据,因此我们来着重分析这个函数,这里主要就是对buf的一些参数的理解。来看函数原型:[code="java"]ngx_chain_t *ngx_linux_sendfile_chain(ngx_connection_t...
原创
发布博客 2010.04.24 ·
383 阅读 ·
0 点赞 ·
1 评论

nginx的filter的处理

随笔拿一个nginx的filter模块来看,gzip模块,来看它的初始化。[code="java"]static ngx_http_output_header_filter_pt ngx_http_next_header_filter;static ngx_http_output_body_filter_pt ngx_http_next_body_filter;st...
原创
发布博客 2010.04.13 ·
273 阅读 ·
0 点赞 ·
0 评论

nginx中request请求的解析

ngx_http_init_request 中初始化event 的handler 为ngx_http_process_request_line,然后首先调用ngx_http_read_request_header来读取头部,然后就是开始调用函数ngx_http_parse_request_line对request line进行解析。随后如果解析的url是complex的话,就进入complex...
原创
发布博客 2010.04.04 ·
673 阅读 ·
0 点赞 ·
0 评论

卖书了

1 代码之美 全新 603 c++网络编程卷2 全新 308 tcp/ip 详解 第二卷中文版 全新 60这里基本全新 就是 有在里面画一些线。。价钱都好商量,只限杭州市内。 有意向给我发站内消息或者给我留个联系方式,我联系你。...
原创
发布博客 2010.03.26 ·
92 阅读 ·
0 点赞 ·
0 评论

linux 内核tcp拥塞处理(一)

这次我们来分析tcp的拥塞控制,我们要知道协议栈都是很保守的,也就是说只要有一个段被判断丢失,它就会认为发生了拥塞.而现在还有另一种,也就是路由器来通知我们发生了拥塞,这里ip头还会有一个ECN的位(准确的说是两位),来表示已经发送拥塞,不过这里要注意首先收到ECN的是接受方,可是真正需要被通知的却是发送方,因此当接受方收到ECN之后,用下一个ack来通知发送方有拥塞发生了,然后发送方才会做出响应...
原创
发布博客 2010.03.12 ·
196 阅读 ·
0 点赞 ·
0 评论

内核tcp协议栈SACK的处理

上一篇处理ack的blog中我们知道当我们接收到ack的时候,我们会判断sack段,如果包含sack段的话,我们就要进行处理。这篇blog就主要来介绍内核如何处理sack段。SACK是包含在tcp的option中的,由于tcp的头的长度的限制,因此SACK也就是最多包含4个段,也就是32个字节。我们先来看tcp中的SACK段的表示:[code="java"]struct tcp...
原创
发布博客 2010.01.24 ·
137 阅读 ·
0 点赞 ·
0 评论

09年看的书,电影以及听过的音乐

其实有一些是很早就看过或听过的,只不过今年加进去了,还有一些书就是没看完,比如haskell那本。。[img]http://dl.iteye.com/upload/attachment/194684/a030715f-6df4-3953-ae11-722f7d11dac8.jpg[/img][img]http://dl.iteye.com/upload/attachment...
原创
发布博客 2010.01.17 ·
75 阅读 ·
0 点赞 ·
0 评论

内核tcp的ack的处理

我们来看tcp输入对于ack,段的处理。先是ack的处理,在内核中,处理ack段是通过tcp_ack来进行的。这个函数主要功能是:1 update重传队列,并基于sack来设置skb的相关buf。2 update发送窗口。3 基于sack的信息或者重复ack来决定是否进入拥塞模式。在看之前我们要知道tcp是累积确认的。为了解决带来的缺点,我们才需...
原创
发布博客 2010.01.17 ·
145 阅读 ·
0 点赞 ·
0 评论

内核处理time_wait状态详解

这次来详细看内核的time_wait状态的实现,在前面介绍定时器的时候,time_wait就简单的介绍了下。这里我们会先介绍tw状态的实现,然后来介绍内核协议栈如何处理tw状态。首先我们要知道在linux内核中time_wait的处理是由tcp_time_wait这个函数来做得,比如我们在closing状态收到一个fin,就会调用tcp_time_wait.而内核为time_wait状态的...
原创
发布博客 2010.01.10 ·
153 阅读 ·
0 点赞 ·
0 评论

linux已经不存在惊群现象

惊群也就是指多个进程阻塞在accept,当有连接完成,会唤醒所有进程。经过测试,发现现在的内核已经修复了这个问题,当有多个进程阻塞在accept,只会唤醒一个进程。下面这个是一篇论文,就是讲这个问题的。http://www.usenix.org/event/usenix2000/freenix/full_papers/molloy/molloy.pdf这里会先测...
原创
发布博客 2010.01.02 ·
156 阅读 ·
0 点赞 ·
0 评论

tcp协议栈处理各种事件的分析

首先我们来看socket如何将一些状态的变化通知给对应的进程,比如可读,可写,出错等等。先来看sock结构中这几个相关域:[code="java"]struct sock {..........................wait_queue_head_t *sk_sleep;.....................................void ...
原创
发布博客 2009.12.30 ·
217 阅读 ·
0 点赞 ·
0 评论

linux内核sk_buff的结构分析

我看的内核版本是2.6.32.在内核中sk_buff表示一个网络数据包,它是一个双向链表,而链表头就是sk_buff_head,在老的内核里面sk_buff会有一个list域直接指向sk_buff_head也就是链表头,现在在2.6.32里面这个域已经被删除了。而sk_buff的内存布局可以分作3个段,第一个就是sk_buff自身,第二个是linear-data buff,第三个是...
原创
发布博客 2009.12.25 ·
200 阅读 ·
0 点赞 ·
1 评论
加载更多