自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 资源 (1)
  • 收藏
  • 关注

原创 在Linux下实现comer的TCP/IP协议栈——缓冲池管理和信号灯控制

CHAPTER3:一、简介:人啊,不该偷懒的时候还真不能偷懒。最先开始移植协议栈的时候,我为了方便,把comer中所有向缓冲池申请内存的地方改成了用malloc分配,认为这样简单。但越到后来越觉得这种不规范的操作带来了很多不便——内存的分配是散乱的,没有一个统一的管理机制。另外就是信号灯控制。Comer中很多地方用了signal、wait函数做信号灯控制,我总是在需要的时候创建一个linu

2006-04-21 20:31:00 2883 1

原创 在Linux下实现comer的TCP/IP协议栈--ARP地址解析协议(下)

CHAPTER2:寻路的向导——ARP5、 arp_in.c - ARP输入过程 在讲arp_in.c前我们应该先看一下ni_in.c,这是comer中的多路分解的实现,arp_in.c就在其中被调用。在前面的《网络接口层》一文中我们看到,当packet_rx函数从pcap得到数据包后,通过调用ni_in.c将数据包传送给协议栈,ni_in.c根据数据包的不同类型进行多路分解,传送给不

2006-04-18 14:03:00 3838

原创 在Linux下实现comer的TCP/IP协议栈——ARP地址解析协议(上)

CHAPTER2:寻路的向导——ARP一、简介我们使用TCP/IP进行通信,从高层来看使用的是IP地址作为源/目的地的标示,但通信最终还是要由物理网络使用底层网络硬件提供的物理编址方案执行。我们通常使用的网络硬件就是以太网卡,其物理地址也就是网卡的MAC。ARP地址解析协议所要做的就是将物理地址和IP地址绑定,让高层协议通过使用IP地址即能和目的地产生通信。ARP的工作方式在comer的《

2006-04-18 10:17:00 3834

原创 在Linux下实现comer的TCP/IP协议栈--网络接口层

CHAPTER1:从网络接口层说起一、简介:网络接口层位于物理层之上,提供一组接口供协议栈和物理设备交互。这一层的实现费了我很大心思。起初,我认为linux下调用网卡驱动和ARM上一样,可以直接调用网卡驱动的函数,于是跟着《Linux设备驱动程序》辛辛苦苦的写了一个网卡驱动,写完才发现,不知道怎么在程序中调用。查了无数资料,又看了看linux下网络部分的源码,才知道有个dev.c文件,里面

2006-04-17 17:04:00 6548 3

原创 在Linux下实现comer的TCP/IP协议--写在前面的话

写在前面的话:学习TCP/IP的经典教材有两部,一部是Ramadas Shanmugam的《TCP/IP详解》三卷,一部就是comer的《用TCP/IP进行网际互联》三卷。我选择了后者,原因很简单,前者太厚了,绑在一块儿从二楼扔下去都可以砸死人。我人懒,太厚的书从来看不完,所以还是跟着comer学吧。 Comer《用TCP/IP进行网际互联第二卷:设计、实现与内核》中的讲解浅明易懂,但

2006-04-17 16:58:00 2910 1

原创 驳《一个假程序员的心里话 》——不要看不起研究生

今天在CSDN看了一篇文章——《一个假程序员的心里话》,本来以为是谈假程序员和真程序员的区别,谁知一看之下,满篇都在批驳master和doctor。实在是忍不住了,想要为master和doctor说两句公道话。我现在是一名在读研二学生,在成都一所电子方面还不错的学校读书,学的不是计算机专业,而是信号与信息处理。但由于课题和平时兴趣,计算机方面知识还是有点,不过在那篇文章作者眼里,我连假程序员都不是

2005-12-25 22:12:00 2529 12

segmentation fault in linux

内容提要 本文简单介绍了Segmentation fault发生的原因,结合实际例子描述了内核向用户态程序发送SIGSEGV信号的流程。文中以实例回答了常见的一些SIGSEGV问题,例如“为什么函数返回了栈还可以访问?”、“为什么free()后的内存仍然可以使用”、“为什么我遇到的是SIGSEGV而不是SIGILL信号”等。最后笔者结合自己的经验,列举了一些预防SIGSEGV的编程习惯,供大家参考。SIGSEGV严格依赖操作系统、编译器、硬件平台,本文基于Linux、GCC、32bit IA32架构,但对其他平台操作系统也有借鉴意义。

2009-12-21

空空如也

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

TA关注的人

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