第六章 UNIX的网络通信初步.ppt

  1. 1、本文档共107页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 UNIX的网络通信初步

第六章 UNIX的网络通信初步 (1) UNIX操作系统为进程通信提供了相应设施,如管道(pipe)、命名管道(named pipe)和软中断信号(signal),消息(message)、共享存储区(shared memory)和信号量(semaphore)等,但这些都只限于用在本机进程间的通信。 (2) 为了实现计算机全面联网与信息的异地处理,需要为用户构建Client/Server 应用的通讯结构,通过网络接口编程,以解决不同主机进程间的通信问题。 6.1 网络接口 在UNIX系统中,网络接口有两类:一类是源自BSD UNIX的Sockets(套接口),另一类是UNIX System V 的TLI(Transmission Layer Interface)。TLI是根据工业标准“ISO传输服务定义(ISO 8072)”实现的,由于SVR3只包括了流以及TLI构建模块而并没有任何的如TCP/IP之类的协议,因此TLI具有与协议无关性,关键技术是定义了一组对许多传输协议公共的服务。目前TLI的修正版XTL在UNIX系统中仍然得到广泛的使用。Socket API是基于各种传输协议之上的,目前已经成为网络编程的既成事实标准。 基于Sockets API的通用性,本章只讨论Sockets API的应用。 目前最通用的提供远程进程间通信的API是伯克利套接字(Berkeley socket)接口。 所谓的套接字是一种抽象数据结构,用以创建一条在没有相关联的进程间发送、接收消息的通道(连接点)。这些进程在通信前各自建立一个Socket,并通过对Socket的读/写操作实现通信功能。 当使用基于套接字的连接时,服务器端进程创建一个套接字,并把它映射到一个本地地址上,然后等待(监听)客户端的请求。客户端进程也创建自己的套接字,并确定服务器端的具体位置(比如主机名,端口号等)。依靠传输/连接方式的应答,客户端进程就可以开始发送和接收数据,而不用管是否接收到服务器进程的正式确认(应答)。 每个套接字都有其类型和一个与之相连的进程。当应用程序创建套接字时,套接字系统调用返回句柄,即所谓套接字描述字,它和文件描述字是有所区别的:当文件描述字,由open命令创建时,它被耦合到特定的文件或设备;当套接字描述字由Socket命令创建时,它并不被耦合到任何位置。当套接字用作面向连接的网络传输接口时,应用程序可用bind命令将套接字明确地耦合到一个地址。当套接字用作无连接的网络传输接口时,应用程序可以在用sendto命令发送数据报时动态地提供地址。 6.1.1 套接口的类型 UNIX 提供下列四种类型的socket: 数据流套接字(SOCK_STREAM),它提供双向的、面向连接的、可靠的、有序的并且不重复的无记录边界数据流。一对相连的流Socket提供几乎类似于管道的接口。流式socket针对于TCP服务应用,如文件传送协议(FTP)。 数据流套接字采用TCP协议,这是个有连接的协议,在数据正式传输前必须建立连接,此连接是个稳定的双向线路,可以保证提供无错误的传送管道,因为只要封包在传送过程发生错误损毁、次序错乱或送错,TCP将会察觉问题并要求重新发送数据,因此适合在需要大量的数据传输并要求完全正确的状况时使用。 ? 6.1.1 套接口的类型 ? 数据报套接字(SOCK_DGRAM),它也支持双向数据流,但数据以独立包形式被发送,无可靠性保证、无序、数据可能丢失或重复。数据报socket提供一个无连接服务,对应于无连接的UDP服务应用,如网络文件系统(NFS)、组播通信。 数据报套接字采用UDP协议,这是个无连接的协议,发送主机直接将封包送至目的主机,无需事先建立连接。因为避免了建立连接所需的高代价,采用数据报方式效率较高,但数据报方式自身不能处理数据传输过程出现的错误,因此使用数据报方式的应用程序必须自己处理这些问题。一般在比较简单的网络应用程序中使用数据报方式。 6.1.1 套接口的类型 原始套接字(SOCK_RAW),它提供对支持socket概念的基本通信协议的访问。该接口允许用户访问支持套接字抽象的底层通信协议,如IP、ICMP直接访问,常用于检验新的协议实现或访问现有服务中配置的新设备。 顺序报套接字:这种类型的套接字类似数据流套接字,不同的是其传送的数据具有记录边界。 6.1.2 套接口支持的协议 1.套接字协议簇(family) (1)AF-UNIX :UNIX Domain协议,在该域中创建的套接字只能为同在一个主机的进程所用

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档