- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C、CSocket编程原理[精品]
socket编程原理 zz
第二章? socket编程原理2.1? 问题的引入?????? UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-read- close)。在一个用户进程进行I/O操作时,它首先调用“打开”获得对指定文件或设备的使用权,并返回称为文件描述符的整型数,以描述用户在打开的文件或设备上进行I/O操作的进程。然后这个用户进程多次调用“读/写”以传输数据。当所有的传输操作完成后,用户进程关闭调用,通知操作系统已经完成了对某对象的使用。
?????? TCP/IP协议被集成到UNIX内核中时,相当于在UNIX系统引入了一种新型的I/O操作。UNIX用户进程与网络协议的交互作用比用户进程与传统的 I/O设备相互作用复杂得多。首先,进行网络操作的两个进程在不同机器上,如何建立它们之间的联系?其次,网络协议存在多种,如何建立一种通用机制以支持多种协议?这些都是网络应用编程界面所要解决的问题。
?????? 在UNIX系统中,网络应用编程界面有两类:UNIX? BSD的套接字(socket)和UNIX System V的TLI。由于Sun公司采用了支持TCP/IP的UNIX? BSD操作系统,使TCP/IP的应用有更大的发展,其网络应用编程界面──套接字(socket)在网络软件中被广泛应用,至今已引进微机操作系统 DOS和Windows系统中,成为开发网络应用软件的强有力工具,本章将要详细讨论这个问题。
2.2? 套接字编程基本概念?????? 在开始使用套接字编程之前,首先必须建立以下概念。
2.2.1? 网间进程通信?????? 进程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX? BSD中的管道(pipe)、命名管道(named pipe)和软中断信号(signal),UNIX system V的消息(message)、共享存储区(shared memory)和信号量(semaphore)等,但都仅限于用在本机进程之间通信。网间进程通信要解决的是不同主机进程间的相互通信问题(可把同机进程通信看作是其中的特例)。为此,首先要解决的是网间进程标识问题。同一主机上,不同进程可用进程号(process ID)唯一标识。但在网络环境下,各主机独立分配的进程号不能唯一标识该进程。例如,主机A赋于某进程号5,在B机中也可以存在5号进程,因此,“5号进程”这句话就没有意义了。
?????? 其次,操作系统支持的网络协议众多,不同协议的工作方式不同,地址格式也不同。因此,网间进程通信还要解决多重协议的识别问题。
?????? 为了解决上述问题,TCP/IP协议引入了下列几个概念。
?
端口
?????? 网络中可以被命名和寻址的通信端口,是操作系统可分配的一种资源。
?????? 按照OSI七层协议的描述,传输层与网络层在功能上的最大区别是传输层提供进程通信能力。从这个意义上讲,网络通信的最终地址就不仅仅是主机地址了,还包括可以描述进程的某种标识符。为此,TCP/IP协议提出了协议端口(protocol port,简称端口)的概念,用于标识通信的进程。
?????? 端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序(即进程)通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都通过该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写原语访问之。
?????? 类似于文件描述符,每个端口都拥有一个叫端口号(port number)的整数型标识符,用于区别不同端口。由于TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立,如TCP有一个255号端口,UDP也可以有一个255号端口,二者并不冲突。
?????? 端口号的分配是一个重要问题。有两种基本分配方式:第一种叫全局分配,这是一种集中控制方式,由一个公认的中央机构根据用户需要进行统一分配,并将结果公布于众。第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回一个本地唯一的端口号,进程再通过合适的系统调用将自己与该端口号联系起来(绑扎)。TCP/IP端口号的分配中综合了上述两种方式。TCP/IP将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。因此,每一个标准服务器都拥有一个全局公认的端口(即周知口,well-kn
您可能关注的文档
- 5翠鸟课件[精品].ppt
- 60万吨汽油加氢开工方案[精品].doc
- 65号钢热处理工艺设计[精品].docx
- 66kV高压线路改造跨越高速公路施工方案[精品].doc
- 6922医学装备管理制度、人员岗位职责[精品].doc
- 65 t/h锅炉改烧水煤浆燃料的改造设计[精品].doc
- 6、国际法期末考试试题及答案[精品].doc
- 60MW光伏电站土建和安装工作作业指导书[精品].doc
- 686项目-精神病人的家属护理及健康教育[精品].ppt
- 6万吨高档药用玻璃管项目可行性研究报告[精品].doc
- 黑龙江省哈尔滨市第六中学2019届高三10月月考地理试卷(有答案).pdf
- 高考生物一轮复习 专题2.1 细胞膜教学案(含解析)-人教版高三全册生物.pdf
- 小学语文教案模板古诗 .pdf
- 高中-数学-人教A版(2019)-选择性必修(第一册)-空间向量及其运算-衔接.pdf
- 最新表扬信简短(十三篇) .pdf
- 项目管理体系常用表单模板55项及项目管理体系常用文件及表单目录.pdf
- 高中政治统编版选择性必修二5.1家和万事兴 第1课时 学案 .pdf
- 项目合伙投资协议书格式版(五篇) .pdf
- 2018年度国土综合治理资金—基础测绘资金绩效评价报告 .pdf
- 2025届安徽省淮北市五校联考化学九年级第一学期期末经典试题含解析优质 .pdf
文档评论(0)