- 博客(5)
- 收藏
- 关注
原创 网络协议栈4:bind()函数
正常的情况下,socket函数的调用,只要有足够的内存用于分配socket结构体,sock结构体,以及空闲的I节点和当前进程有空闲的文件表项,就会返回分配给当前进程分配此I节点的文件表项的序号,即文件句柄,通过这个文件句柄,可以找到对应的文件表项,通过文件表项可以找到对应的I节点,通过I节点可以找到socket套接字,通过套接字可以找到对以的sock结构体,而这个结构体就是我们数据的信使了,注意,
2012-01-05 20:06:42
439
原创 网络协议栈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
644
原创 网络协议栈2:socket函数
首先,这里会用到一个结构体,先把这个结构体整理出来 struct socket {{short type;/*套接字所用的流类型,可取值SOCK_RAW,SOCK_DGRAM,SOCK_STREAM,SOCK_SEQPACKET,SOCK_PACKET,其中SOCK_STREAM 就是通常所说的TCP协议所用*/socket_state s
2012-01-05 12:20:40
434
原创 网络协议栈1:socket函数调用之前
client代码中,第一个被调用的函数是socket(),在这个函数被调用之前,系统做了什么事情,让socket()可以正常调用? 首先,socket函数实际上是一个系统调用,它是内核中的代码,我们应用层通过系统调用,调用了系统的函数。其次,在系统启动时,已经调用sock_init()对socket进行了初始化,在我们调用socket函数之前,socket的初始化部分已经为我们的调用做
2012-01-05 10:31:17
420
原创 网络协议栈0:从一个例子开始
最近因工作需要写一个网卡驱动,晕倒,没有任何网络知识,就写网络驱动!可是,为了五斗米糊口,不得不从啊于是,打算从网络协议栈开始,把网络搞一搞。我们常常知道socket的用法(其实我还没有真正的写过socket代码,常常都是指那些socket高手了^-^),因此,打算从一个常用的实例开始,把网络协议栈整理一下,即把自己的学习经过进行记录,看看菜鸟的轨迹,是如何拐弯,颠簸。通常的soc
2012-01-04 18:01:16
688
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人