网络协议栈2:socket函数
摘要:首先,这里会用到一个结构体,先把这个结构体整理出来struct socket {{short type;/*套接字所用的流类型,可取值SOCK_RAW,SOCK_DGRAM,SOCK_STREAM,SOCK_SEQPACKET,SOCK_PACKET,其中SOCK_STREAM 就是通常所说的TCP协议所用*/socket_state state;/*套接字状态,可取值SS_FREE ,SS_UNCONNECTED ,SS_CONNECTING ,SS_CONNECTED ,SS_DISCONNECTING */long flags;/*一些标志信息*/struct proto_ops *op
阅读全文
posted @
2012-01-05 12:21
image eye
阅读(1783)
推荐(1) 编辑
网络协议栈1:socket函数调用之前
摘要:client代码中,第一个被调用的函数是socket(),在这个函数被调用之前,系统做了什么事情,让socket()可以正常调用?首先,socket函数实际上是一个系统调用,它是内核中的代码,我们应用层通过系统调用,调用了系统的函数。其次,在系统启动时,已经调用sock_init()对socket进行了初始化,在我们调用socket函数之前,socket的初始化部分已经为我们的调用做好的铺垫了。void sock_init(void){ int i; ...... for (i = 0; i < NPROTO; ++i) pops[i] = NULL; proto_init(); ...
阅读全文
posted @
2012-01-05 10:37
image eye
阅读(2695)
推荐(1) 编辑
网络协议栈0:从一个例子开始
摘要:最近因工作需要写一个网卡驱动,晕倒,没有任何网络知识,就写网络驱动!可是,为了五斗米糊口,不得不从啊于是,打算从网络协议栈开始,把网络搞一搞。我们常常知道socket的用法(其实我还没有真正的写过socket代码,常常都是指那些socket高手了^-^),因此,打算从一个常用的实例开始,把网络协议栈整理一下,即把自己的学习经过进行记录,看看菜鸟的轨迹,是如何拐弯,颠簸。通常的socket编程分两部分吧(错了别怪我,我不是高手),一是client部分,二是server部分,而更通常的情况是我们都以写client的任务为多,因此,从简单下手,当然选择client端开始了。下面的代码,就是随便一个网
阅读全文
posted @
2012-01-05 10:36
image eye
阅读(2118)
推荐(1) 编辑