版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络软件设计,深入套接字,制作 主讲,段景山,2,套接口结构,套接字是一个标识符 套接字是一个结构 套接字是一个包含标识、数据和操作的复合体,是服务访问点,3,套接字是一个标识符,套接字是一个标识符 变量类型:SOCKET SOCKET s; 本质: 在winsock.h中 typedef unsigned int u_int; typedef u_int SOCKET; 一个整型变量记录一个标识符 通过这个标识符,用户就能获得系统通信服务,但是一个简单的整数,怎么能够实现复杂的通信功能呢?,4,struct socket short so_type; short so_option; sho
2、rt so_linger;/? short so_state; caddr_t so_pcb;/? struct protosw *so_proto; struct socket *so_head; struct socket *so_q0; struct socket *so_q; short so_q0len; short so_qlen; short so_qlimit; short so_timeo; u_shurt so_error pid_t so_pgid;,套接口结构,UNIX,通过标识符在系统中找寻的就是这个结构,5,struct sockbuf u_long sb_cc;
3、u_long sb_hiwat; u_long sb_mbcnt; u_long sb_mbmax; long sb_lowat struct mbuf *sb_mb; struct selinfo sb_sel; short sb_flags; short sb_timeo; ,u_long so_oobmark; struct sockbuf so_rcv, so_snd; caddr_t so_tpcb; void (*so_upcall)(struct socket *so, caddr_t arg, int waitf); caddr_t so_upcallarg; ,套接口结构,套
4、接口结构中包含了为用户提供通信服务的各种信息,状态,控制,数据,so_type,so_state,so_pcb,so_rcv,接收数据队列,so_snd,待发数据队列,6,套接口中饱含为一次通信服务的丰富资源, 系统通过套接字标识符(描述符、socketid)来找到对应套接口结构 从两个层次理解: 用户角度:只需给出标识符就能找到 透明性、方便性:用户不需掌握找寻的方法 系统的角度:系统如何根据标识符找到套接口 这是一个系统设计问题: 我们可以从中学习设计的技巧,套接口结构与套接字描述符,7,利用索引表的形式 套接字描述符是表的索引号码 表中记录套接口结构的地址,socketid,索引id,关
5、系映射,进程符号表,套接口结构与套接字描述符,套接口结构,8,套接字描述符,套接字描述符的分配 套接字描述符可以认为是套接口资源的编号 全局分配:系统所有的套接口资源均统一编号 局部分配:套接口资源仅在一个进程内部统一编号 结果: 全局分配:系统各进程得到的套接字描述符全不相同 局部分配:各进程的套接字描述符可能相同 优缺点: 全局分配:便于统一管理,进程间的独立性差 局部分配:维持进程间的独立性,可能造成管理的混乱,设计,9,套接字描述符,全局分配套接字描述符 统一分配套接字描述符有一定难度 在socket()调用时由系统想办法实现 进程间的相关性太强 套接字描述符的取值范围,在进程中有禁区
6、。 局部分配套接字描述符 进程间独立性强 管理难度低,推理,10,套接字描述符,套接字描述符的实验 实验方案 观察两个进程是否可能获得相同值的套接字描述符 测试如果两个进程使用相同值的套接字描述符是否能同时不受干扰地完成各自的通信 实验结论 两个进程的套接字描述符可以获得相同的值(局部分配) 两个进程的套接字对应不同的通信服务不同的套接口资源(有自己的索引表),验证,11,TCP实体,进程1,进程2,进程3,1,2,3,4,5,6,7,8,1,2,3,4,5,1,2,3,4,5,套接口与套接字描述符,套接字标识符,套接口 结构,从套接字描述符的分配问题深入系统设计原理 如何实现局部的标识符与全
7、局管理的资源之间的映射 技巧及优点,反思,保存套接口 所在地址, 实现查找,12,端口与套接口,当我们了解了从上至下(从套接字描述符到套接口资源)的映射方式后,进一步探索从下至上(从端口到套接口资源)的映射方式。 从而完成整个接口系统的上下对应关系 整个关系是围绕者套接字的,13,TCP,进程1,进程2,进程3,套接口 结构,本地端点,远端点,接收队列,端口与套接口,TCP实体依据什么信息处理接收的报文?,TCP实体如何处理报文?,用户进程如何获取报文?,本地端点,远端点,接收队列,recv( s ,buf),s,套接口 结构,目的端口,设计,14,端口与套接口,TCP实体依据什么处理接收的报
8、文?,TCP实体如何处理报文?,用户进程如何获取报文?,报文中的端口信息,根据端口找到对应的套接口结构,将报文挂在与端口绑定的套接口接收队列中,从套接口的接收队列中取得报文,15,套接字描述符、端口与套接口,TCP,进程1,进程2,进程3,套接口 结构,本地端点,远端点,接收队列,本地端点,远端点,接收队列,recv( s ,buf),s,套接字描述符、套接口结构和端口是相对独立的三个概念,一般是一一对应的。,s,s,套接口 结构,一个套接字标识符在调用socket()后对应一个套接口结构,该套接口结构在bind以后工作在确定的端口上,在connect后,对方端点也确定下来了,16,套接字描述
9、符、端口与套接口,应用进程通过套接字描述符找到套接口(结构) 传输层实体通过端口找到套接口结构 套接字描述符与套接口之间的映射关系是通过socket()函数建立的 端口是在bind()函数中填写到套接口中的,套接字描述符,套接口(结构),端口,17,套接字描述符、端口与套接口,从理论探讨这三者的映射关系 对实践进行指导,一个套接字描述符,多个套接字描述符,一个套接口,多个套接口,一个端口,多个端口,设计,18,套接字描述符、端口与套接口,多个套接字描述符对应一个套接口,一个套接字描述符对应于多个套接口,进程1,s,进程1,s1,进程2,s2,在一个进程内,可提供通信资源的共享,但在数据的归属上
10、会出现混乱,标识符的意义被颠覆,在不同进程内,进程1,s1,进程2,s1,推理,19,多个套接口工作在一个端口上,本地端口1,远端口2,接收队列,本地端口1,远端口3,接收队列,多个端口对应于一个套接口,本地端口1、2、3,远端口1,接收队列,套接字描述符、端口与套接口,本地端口1,远端口2,接收队列,本地端口2,远端口2,接收队列,只要两个端点之一不一样,就是两个不同的通信关系,服务器就是通过在一个端口上同时有多个套接字活动来提供多用户同时接入功能的,本地端口1,远端口1、2、3,接收队列,一点对多点,特殊的场合可能有用,推理,20,套接字描述符、端口与套接口,结论:,一个全相关包含五个要素,以确定一次通信
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省无锡市澄西片2025-2026学年初三第十四次考试英语试题含解析
- 质量为先保障安全使用承诺书5篇
- 财务管理与预算编制工具包
- 2026年企业社会责任志愿服务项目策划
- 2026年幼儿挫折教育渗透活动案例
- 2026年职场减压课程开发与市场推广策略
- 2026年聚烯烃催化剂行业竞争与差异化营销方案
- 部编三年级语文上册14《不会叫的狗》完整版(很全面)
- 重庆营业执照代办协议书
- 2026工贸行业粉尘涉爆企业安全生产风险监测预警系统培训
- 基于CM移动基站建设项目的进度风险管理探究与实践
- 压缩空气设计计算书
- 2025年6月上海市高考语文试题卷(含答案详解)
- 人工智能+行动绿色金融风险评估分析报告
- 2025年飞机制造项目成本核算方案
- 通信专业大专毕业论文
- 公司全员安全生产责任清单
- 污水厂巡检方案(3篇)
- 学堂在线 雨课堂 学堂云 英文科技论文写作与学术报告 期末考试答案
- 口腔保健宣教课件
- T/CAPA 3-2021毛发移植规范
评论
0/150
提交评论