- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入分析原始套接口作者:noble noble_shi@21日期:2003-06-03深入分析原始套接口1.约定1.1 其中涉及到的内核代码都源自于linux kernel 2.4.7。1.2 没有其他说明情况下,我们用sk表示struct sock类型变量,用sock表示struct socket{}类型变量。1.3本文涉及到数据包在协议栈上的流程。1.4 由于作者水平有限,难免有错误指出,请联系指导。1.4联系方式:noble_shi@212.套接口简介????为了执行网络I/O,一个进程必须做的第一件事情就是调用socket函数,创建套接口。一个套接口在逻辑上有三个特征,或者说三个要素,那就是网域、类型和规程。????????首先是网域,它表明一个插口用于那一种类型的网络,如AF_INET表示互联网套接口,而AF_IPX则为Novell网的IPX套接口,AF_X25为X.25网套接口,等等。其中有个特例,那就是什么网也不是,只是在一台计算机上用于进程间通信,BSD为这种特例定义的域名为AF_UNIX。后来,在POSIX标准里又定义了一个AF_LOCAL,以示对别的操作系统也一视同仁。????????其次为类型,它表明在网络中通信所遵循的模式。网络通信有两种主要模式,一种称为有连接或面向连接(connection oriented)的通信。另一种称为无连接(connectionless)通信,也常常称为数据包(datagram)模式,也称面向报文(message oriented)的通信模式。????????最后是规程,它表明具体的网络规程。一般说来,网域和类型结合在一起大体上就确定了使用的规程。例如,要是网域为AF_INET,而类型为无连接,则规程基本上就是UDP了。但是有些情况下还可能会有别的选择,此时就由它来进一步明确具体的规程。????????总之,套接口的三个特性是互相联系的,归根结底就是反映了一个套接口所运行的网络规程。由于在每个套接口的后面都隐藏着网络规程,对套接口的比较详尽的讨论就势必设计到计算机网络协议和协议栈具体实现。3.原始套接口简介????当类型是SOCK_RAW时,调用socket函数创建一个原始套接口。第三个参数(协议)一般不应为0。例如,为创建一个IPv4原始套接口,我们可以这样写:????int sockfd;????sockfd = socket(AF_INET, SOCK_RAW, protocol);????其中protocol参数为形如IPPROTO_xxx的常值,由netinet/in.h头文件定义,如IPPROTO_IGMP。但是要注意,头文件里定义了一个协议名,如IPPROTO_EGP,并不意味着内核肯定支持它。(后面附有所有的协议类型)????为了防止普通用户向网络上写自己的IP数据包,只有超级用户才有权限创建原始套接口。????4.原始套接口的协议栈实现――原始套接口的创建????当我们调用:socket(AF_INET, SOCK_RAW, protocol)该函数会返回一个套接口描述符,linux下每个文件描述符都用一个非负整数来描述(包括套接口描述符),在内核都有一个对应的struct file{}结构。创建一个原始套接口时,其函数调用过程如图一所示:????????图一套接口创建流程图????创建后的套接口在内核中的结构如图二所示:????图二???? 套接口在系统内核中的结构图其中socket{}结构是在sock_create()函数中分配,该结构是inode{}结构的一部分,sock-type(注意,变量sock是socket{}类型,见前面约定,下同)被设置为用户指定的类型,这里为SOCK_RAW,sock-sk指向一个struct sock{}结构,sock-ops(图中未画出该成员)被指定为inet_dgram_ops。该结构定义于/net/ipv4/af_inet.c,如下所示:struct proto_ops inet_dgram_ops = {????family:????????PF_INET,????release:????????inet_release,????bind:????????inet_bind,????connect:????????inet_dgram_connect,????socketpair:????sock_no_socketpair,????accept:????????sock_no_accept,????getname:????????inet_getname, ????poll:???
您可能关注的文档
- 热力监理细则.doc
- 实验九用油膜法估测分子大小.doc
- 深圳市永威蓝牙方案.doc
- 热打码机说明书.doc
- 田东变电所保护改造施工方案.doc
- 数字式扭矩传感器技术性能及应用.doc
- 施工机具安装验收单.doc
- 生态过滤循环系统.doc
- 数控机床上加工蜗杆.doc
- 施耐德封闭插接母线安装.doc
- DB12_T919-2019_危险货物港口作业安全评价规范_天津市.docx
- DB13_T1384.10-2011_饲料中20种磺胺类药物的测定_河北省.docx
- DB13_T1320.3-2010_中药材种子质量标准第3部分桔梗_河北省.docx
- DB12_T1051-2021_地面风速观测数据均一化处理技术规程_天津市.docx
- DB12_T943-2020_公共机构能耗定额标准_天津市.docx
- DB12_T863-2019_水产微生态制剂解淀粉芽胞杆菌生产技术规程_天津市.docx
- DB12_T999—2020_无源温控启闭式水灭火装置设置及安装技术规范_天津市.docx
- DB12_T1001—2020_标准化菜市场建设与管理规范_天津市.docx
- DB13_T1347-2010_城镇居住区绿地规划设计规范_河北省.docx
- DB12_T1021—2020_中国对虾增殖放流效果评估技术规程_天津市.docx
最近下载
- JBL PartyBox 1000用户中文手册.pdf
- 2023年牛津译林版七年级英语下册《Unit 4》单元测试(附答案).doc VIP
- 《计算机网络技术基础 》(王崇刚)教案 (理论部分) 网络体系结(一)网络体系结构概述.pdf VIP
- AP物理2 单元练习题1 Fluids and Thermal Physics.pdf VIP
- 《计算机网络技术基础 》(王崇刚)教案 (实训部分) 上机实训(七) .docx VIP
- EPC工程设计管理主要内容.docx
- 装修公司融资商业计划书(精选5).pptx
- 生化期末考试吉林大学2015.pdf VIP
- 计算机网络技术基础与实训.pptx VIP
- 2023年牛津译林版七年级英语下册Unit8 测试题(附答案).doc VIP
文档评论(0)