网络协议
文章平均质量分 78
image_eye
有图有真相
展开
-
网络协议栈0:从一个例子开始
最近因工作需要写一个网卡驱动,晕倒,没有任何网络知识,就写网络驱动! 可是,为了五斗米糊口,不得不从啊 于是,打算从网络协议栈开始,把网络搞一搞。 我们常常知道socket的用法(其实我还没有真正的写过socket代码,常常都是指那些socket高手了^-^),因此,打算从一个常用的实例开始,把网络协议栈整理一下,即把自己的学习经过进行记录,看看菜鸟的轨迹,是如何拐弯,颠簸。 通常的soc原创 2012-01-04 18:01:16 · 625 阅读 · 0 评论 -
网络协议栈4:bind()函数
正常的情况下,socket函数的调用,只要有足够的内存用于分配socket结构体,sock结构体,以及空闲的I节点和当前进程有空闲的文件表项,就会返回分配给当前进程分配此I节点的文件表项的序号,即文件句柄,通过这个文件句柄,可以找到对应的文件表项,通过文件表项可以找到对应的I节点,通过I节点可以找到socket套接字,通过套接字可以找到对以的sock结构体,而这个结构体就是我们数据的信使了,注意,原创 2012-01-05 20:06:42 · 400 阅读 · 0 评论 -
网络协议栈3:sock结构体
sock结构体是我们在网络编程中遇到的第一个庞大的结构体 struct sock { struct options *opt;/*IP选项缓存于此处*/ volatile unsigned long wmem_alloc;/*当前写缓冲区大小,该值不可大于系统规定的最大值*/ volatile unsigned long rmem_alloc;/*当前读原创 2012-01-05 15:07:27 · 583 阅读 · 0 评论 -
网络协议栈1:socket函数调用之前
client代码中,第一个被调用的函数是socket(),在这个函数被调用之前,系统做了什么事情,让socket()可以正常调用? 首先,socket函数实际上是一个系统调用,它是内核中的代码,我们应用层通过系统调用,调用了系统的函数。 其次,在系统启动时,已经调用sock_init()对socket进行了初始化,在我们调用socket函数之前,socket的初始化部分已经为我们的调用做原创 2012-01-05 10:31:17 · 370 阅读 · 0 评论