免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1590 | 回复: 0
打印 上一主题 下一主题

Linux2.6.30内核的socket结构(2) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-05 16:24 |只看该作者 |倒序浏览
Linux2.6.30内核的socket结构
978计划工作组 2009-11-5
1函数源码
struct socket {
       socket_state           state;
       short                     type;
       unsigned long         flags;
       /*
        * Please keep fasync_list & wait fields in the same cache line
        */
       struct fasync_struct      *fasync_list;
       wait_queue_head_t wait;
       struct file        *file;
       struct sock            *sk;
       const struct proto_ops   *ops;
};;
2结构用途
    socket结构是对应用层提供的统一接口,也就是BSD socket,是对网络层的描述。
3语句注释
3.1 成员注释
socket_state state
socket的状态,有五种状态,分别为:
SS_FREE:值为0,表示未分配。
SS_UNCONNECTED:值为1,表示未连接。
SS_CONNECTING:值为2,表示正在连接过程中。
SS_CONNECTED:值为3,表示已经连接完毕。
SS_DISCONNECTING:值为4,表示正在解除连接。  
该域只对TCP协议有用,因为只有TCP是面向连接的,其他的UDP和RAW都是无连接的,无需维护状态。
short type
socket的类型,有7种类型,分别是:
SOCK_STREAM:值为1,流套接字,提供双向连续且可信赖的数据流,TCP协议用此种类型。SOCK_DGRAM:值为2,数据报套接字,使用不连续不可信赖的数据包连接,UDP协议用此种类
型。
SOCK_RAW:值为3,原始套接字,一般的套接字是通过TCP才能和IP底层进行数据交换的,原始套接字可以直接穿过TCP层操作IP数据包,也就是说原始套接字是上层应用程序和IP层之间的通道。
SOCK_RDM:值为4,提供可信赖的数据包连接。
SOCK_SEQPACKET:值为5,顺序包套接字, 提供连续可信赖的数据包连接。
SOCK_DCCP:值为6,数据报阻塞控制协议套接字。
SOCK_PACKET:值为10,提供和网络驱动程序直接通信,Linux特有的方式。
unsigned long flags
socket的标志,有5种,分别是:
SOCK_ASYNC_NOSPACE:值为0,表示异步情况下发送缓冲队列已满。
SOCK_ASYNC_WAITDATA:值为1。
SOCK_NOSPACE:值为2,表示发送缓冲队列已满。
SOCK_PASSCRED:值为3。
SOCK_PASSSEC:值为4。
struct fasync_struct       *fasync_list
       异步唤醒队列。
wait_queue_head_t wait
sock的等待队列,在TCP需要等待时就sleep在这个队列上。
struct file *file
    文件相关的域在此结构中,具体信息参见file结构。
struct sock *sk
    网络相关的域在此结构中,具体信息参见sock结构。
const struct proto_ops *ops
    socket结构的操作集,此结构的域大部分是函数指针,通过在创建此结构时或初始化时赋给不同的函数实现不同的功能,每种协议都对应一个此结构的实例并用此类协议的操作集进行了初始化。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/100948/showart_2087130.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP