网络软件设计2

上传人:小** 文档编号:61276484 上传时间:2018-11-27 格式:PPT 页数:20 大小:1.35MB
返回 下载 相关 举报
网络软件设计2_第1页
第1页 / 共20页
网络软件设计2_第2页
第2页 / 共20页
网络软件设计2_第3页
第3页 / 共20页
网络软件设计2_第4页
第4页 / 共20页
网络软件设计2_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《网络软件设计2》由会员分享,可在线阅读,更多相关《网络软件设计2(20页珍藏版)》请在金锄头文库上搜索。

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; u_lo

3、ng 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实体依据什么处理接收的报文?,TCP实体如何处理报文?,用户进程如何获取报文?,报文中的端口信息

8、,根据端口找到对应的套接口结构,将报文挂在与端口绑定的套接口接收队列中,从套接口的接收队列中取得报文,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,在一个进程内,可提供通信资源的共享,但在数据的归属上会出现混乱,标识符的意义被颠覆,在不同进程内,进程1,s1,进程2,s1

10、,推理,19,多个套接口工作在一个端口上,本地端口1,远端口2,接收队列,本地端口1,远端口3,接收队列,多个端口对应于一个套接口,本地端口1、2、3,远端口1,接收队列,套接字描述符、端口与套接口,本地端口1,远端口2,接收队列,本地端口2,远端口2,接收队列,只要两个端点之一不一样,就是两个不同的通信关系,服务器就是通过在一个端口上同时有多个套接字活动来提供多用户同时接入功能的,本地端口1,远端口1、2、3,接收队列,一点对多点,特殊的场合可能有用,推理,20,套接字描述符、端口与套接口,结论:,一个全相关包含五个要素,以确定一次通信,A的端口号A的IP地址B的端口号B的IP地址协议,两个不同的通信只要任一参数不同就可以区分,在套接字结构里,记录了全相关的全部信息,因此通过两个套接字就可以确定一次通信。,对于其中一方,一个套接字描述符对应于一个套接字结构,就能对应于一次通信。 表现在recv()和send()等函数中不再需要目的地址信息,反思,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号