



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Socket编程基础本章以Berkeley Socket为主,主要介绍网络编程时常用的调用和程序使用它们的方法及基本结构。网络编程有两种主要的编程接口,一种是Berkeley UNIX(BSD UNIX)的socket编程接口,另一种是AT&T的TLI接口(用于UNIXSYSV)。1 、TCP/IP 基础知识 这里先假定读者对ISO的OSI七层模型已有了一定的了解,下面我们来看看TCP/IP模型。ISO的OSI对服务、接口和协议的概念区别十分明了,但它却没有真正的用户群。TCP/IP模型对服务、接口和协议的概念区别不象OSI模型那样明晰,但很实用。TCP/IP模型分为四层,对应于OSI七层模型如下图所示:图6-1 TCP/IP参考模型与OSI模型的近似对应关系在TCP/IP模型中,互联网层是基于无连接互联网络层的分组交换网络。在这一层中主机可以把报文(Packet)发往任何网络,报文独立地传向目标。互联网层定义了报文的格式和协议,这就是IP协议族(Internet Protocol)。互联网层的功能是将报文发送到目的地,主要的设计问题是报文路由和避免阻塞。互联网层上面是传输层,该层的主要功能和OSI模型的该层一样,主要使源和目的主机之间可以进行会话。该层定义了两个端到端的协议,一个是面向连接的传输控制协议TCP,另一个是无连接的用户数据报协议UDP。TCP/IP协议模型中没有会话层和表示层。传输层之上是应用层,它包含所有的高层协议,如远程虚拟终端协议TELNET、文件传输协议FTP、简单邮件传输协议SMTP等。这些高层协议中常见的如TELNET协议,用来允许用户远程登录到另一台UNIX机器;FTP协议用来传输文件,常见的有WU-FTP(Washington University的FTP服务器端程序,是一个免费程序);SMTP协议用来传送email,常见的服务器端程序有netscape等公司制作的程序,也有免费使用的sendmail程序;还有域名系统服务DNS协议,新闻组传送协议NNTP,用于WWW的超文本传输协议HTTP等。主机到网络这一层,在TCP/IP模型中没有详细定义,这里不作介绍。2、 Socket一般描述 由于越来越多的计算机厂商,特别是工作站制造商如Sun等公司采用了Berkeley UNIX,socket接口被广泛采用,以至于现在,socket接口被广泛认可并成为了事实上的工业标准。目前的SYSV、BSD、OSF都将socket接口作为系统的一部分。当时设计如何支持TCP/IP协议时,有两种加入函数的方法,一种是直接加入支持TCP/IP协议的调用,另一种是加入支持一般网络协议的函数,而用参数来指定支持TCP/IP协议。Berkeley采用了后者,这样可以支持多协议族,TCP/IP是协议族之一(PF_INET)。2.1 socket 描述符 前面已经提到过,在UNIX中,进程要对文件进行操作,一般使用open调用打开一个文件进行访问,每个进程都有一个文件描述符表,该表中存放打开的文件描述符。用户使用open等调用得到的文件描述符其实是文件描述符在该表中的索引号,该表项的内容是一个指向文件表的指针。应用程序只要使用该描述符就可以对指定文件进行操作。同样,socket接口增加了网络通信操作的抽象定义,与文件操作一样,每个打开的socket都对应一个整数,我们称它为socket描述符,该整数也是socket描述符在文件描述符表中的索引值。但socket描述符在描述符表中的表项并不指向文件表,而是指向一个与该socket有关的数据结构。BSD UNIX中新增加了一个socket调用,应用程序可以调用它来新建一个socket描述符,注意进程用open只能产生文件描述符,而不能产生socket描述符。socket调用只能完成建立通信的部分工作,一旦建立了一个socket,应用程序可以使用其他特定的调用来为它添加其他详细信息,以完成建立通信的过程。 2.2 从概念上理解socket的使用网络编程中最常见的是客户/服务器模式。以该模式编程时,服务端有一个进程(或多个进程)在指定的端口等待客户来连接,服务程序等待客户的连接信息,一旦连接上之后,就可以按设计的数据交换方法和格式进行数据传输。客户端在需要的时刻发出向服务端的连接请求。这里为了便于理解,提到了这些调用及其大致的功能。使用socket调用后,仅产生了一个可以使用的socket描述符,这时还不能进行通信,还要使用其他的调用,以使得socket所指的结构中使用的信息被填写完。在使用TCP协议时,一般服务端进程先使用socket调用得到一个描述符,然后使用bind调用将一个名字与socket描述符连接起来,对于Internet域就是将Internet地址联编到socket。之后,服务端使用listen调用指出等待服务请求队列的长度。然后就可以使用accept调用等待客户端发起连接(一般是阻塞等待连接,后面章节会讲到非阻塞的方式),一旦有客户端发出连接,accept返回客户的地址信息,并返回一个新的socket描述符,该描述符与原先的socket有相同的特性,这时服务端就可以使用这个新的socket进行读写操作了。一般服务端可能在accept返回后创建一个新的进程进行与客户的通信,父进程则再到accept调用处等待另一个连接。客户端进程一般先使用socket调用得到一个socket描述符,然后使用connect向指定的服务器上的指定端口发起连接,一旦连接成功返回,就说明已经建立了与服务器的连接,这时就可以通过socket描述符进行读写操作了。下面是在客户和服务端使用TCP时,客户进程和服务进程使用系统调用的该程。使用TCP的客户和服务端使用系统调用的图示使用无连接的UD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村集体土地管理责任书及合作协议
- 地球科学思维课件
- 销售业务机会管理流程自动化处理工具
- 供应链库存优化控制方案模板
- 2025年邮政集团普遍服务部招聘笔试预测试题及答案
- 湖南师范大学附中2026届化学高三上期中监测试题含解析
- 2025年海关统计分析师招聘笔试题库附答案
- 团队目标管理与考核标准体系
- 最开心的一件事作文除夕600字(14篇)
- 2025年村级果园碳汇管理员招聘笔试预测试题及答案
- 2025年公务员考试时政热点必做题(附答案)
- 厨房刀具安全培训课件
- 护理烫伤不良事件分析及整改措施
- 执勤警示教育
- 供热企业运营管理制度
- 2025年外企德科人力资源服务招聘笔试参考题库含答案解析
- 生态环境综合整治工程项目投资估算
- CJ/T 341-2010混空轻烃燃气
- MSC:破解能源转型密码:中国清洁能源投资实践指南
- 存款代为保管协议书
- JTS-T 245-2023 水运工程土工合成材料试验规程
评论
0/150
提交评论