从socket应用到网卡驱动:Linux网络子系统分析概述

socket是互联网的基础,我们所熟知的互联网应用大部分是基于socket及其变种,如:浏览器、即时通信软件等。socket这个术语最早出现在TCP规范RFC793中。后来它也作为伯克利编程接口。它的定义为如下二元组:

socket:=(IP:port)

由此,TCP连接可以定义为:

TCP Connection := {socket1, socket2}

本文将从socket应用出发,分层深入Linux网络模块内部,去分析内部运行原理。

阅读理解:理解不理解当是自己说的算

事情是这样的,最近有很多书要读,所以想在寒假里训练一下阅读速度。我认为买一本专门的训练材料还是必要的,那种可以算出我的每分钟阅读字数和理解程度的材料——没错,最后我使用了一本英语考试阅读理解、快速阅读那种形式的书。看到这里有人可能已经觉得我脑残了,可是当时我并不自知。

网络模型的演化——《链接》读书笔记

从咱们程序员口中听到“网络”一词,大家会不会立即联想到路由器、交换机这些东西呢?今天我想和大家说的网络,可不局限于计算机网络。事实上,我们周围存在着的网络远比想象中的多:好莱坞影星合作网络,化学反应中物质转化的网络,引用文献网络,经济网络等等。哦,当然还有蜘蛛网——一提到网络就会印入大脑的图像。可网络很复杂,不是一张蜘蛛网就能描述的。如何去描述网络一直是科学家们纠结的问题。现在让我们来看看人们是如何建立模型,一步步逼近真实网络,去描述世界。

用QEMU来调试内核 -- 道听途说篇

在KernelNewbies列表上呆了两年了,问过几个问题,回答过几个问题,更多地是看高手对话,偷偷学艺。这几天人们在列表上谈论了如何QEMU调试内核的话题,我自己试了试,发现比用VMware调试强大很多(使用VMware调试内核请看之前文章):

  • 简单、轻便,通过命令参数指定内核
  • 编译出内核即能调试,不需要应用层
  • 能调试诸多硬件平台(ARM/MIPS等等)

下面是我从邮件中整理出的具体步骤,部分亲测。