欢迎来到天天文库
浏览记录
ID:43776805
大小:2.25 MB
页数:92页
时间:2019-10-14
《网络编程实用教程 叶树华 高志红 网络编程实用教程_第2章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第2章UNIX中的套接字网络编程接口UNIX套接字网络编程接口的产生与发展过程套接字与UNIX操作系统的关系套接字编程的基本概念面向连接的套接字编程无连接的套接字编程2.1.1问题的提出站在应用程序实现的角度,应用程序如何方便地使用协议栈软件进行通信呢?如果能在应用程序与协议栈软件之间提供一个软件接口,就可以方便客户与服务器软件的编程。2.1UNIX套接字网络编程接口的产生与发展套接字应用程序编程接口是网络应用程序通过网络协议栈进行通信时所使用的接口,即应用程序与协议栈软件之间的接口,简称套接字编程接口(SocketAPI)。它定义了应用程序与协议栈软件进行交互时可以使用的一组操作
2、,决定了应用程序使用协议栈的方式、应用程序所能实现的功能、以及开发具有这些功能的程序的难度。加州大学伯克利(Berkley)分校开发并推广了一个包括TCP/IP互联协议的UNIX,称为BSDUNIX(BerkeleySoftwareDistributionUNIX)操作系统,套接字编程接口是这个操作系统的一个部分。后来的许多操作系统并没有另外搞一套其它的编程接口,而是选择了对于套接字编程接口的支持。由于这个套接字规范最早是由Berkeley大学开发的,一般将它称为BerkeleySockets规范。2.1.2套接字编程接口的起源与应用要想实现套接字编程接口,可以采用两种实现方式,一
3、种是在操作系统的内核中增加相应的软件来实现,一种是通过开发操作系统之外的函数库来实现。2.1.3套接字编程接口的两种实现方式UNIX操作系统对文件和所有其它的输入/输出设备采用一种统一的的操作模式,就是“打开-读-写-关闭”(open-read-write-close)的I/O模式。当TCP/IP协议被集成到UNIX内核中的时候,相当于在UNIX系统中引入了一种新型的I/O操作,就是应用程序通过网络协议栈来交换数据。2.1.4套接字通信与UNIX操作系统的输入/输出在UNIX系统的实现中,套接字是完全与其他I/O集成在一起的。操作系统和应用程序都将套接字编程接口也看作一种输入/输出
4、机制。但是,用户进程与网络协议的交互作用实际要比用户进程与传统的I/O设备相互作用要复杂得多。其次,使用套接字的应用程序必须说明许多细节。仅仅提供open、read、write、close四个过程远远不够。为避免单个套接字函数参数过多,套接字编程接口的设计者定义了多个函数。2.2套接字编程的基本概念套接口是对网络中不同主机上应用进程之间进行双向通信的端点的抽象,一个套接口就是网络上进程通信的一端,提供了应用层进程利用网络协议栈交换数据的机制。图2.1电插座与电话插座的作用2.2.1什么是套接字(SOCKET)我们应当从多个层面来理解套接字这个概念的内涵。从套接字所处的地位来讲,套接
5、字上联应用进程,下联网络协议栈,是应用程序通过网络协议栈进行通信的接口,是应用程序与网络协议栈进行交互的接口。图2.2应用进程、套接口、网络协议栈及操作系统的关系从实现的角度来讲,非常复杂。套接字是一个复杂的软件机构,包含了一定的数据结构,包含许多选项,由操作系统内核管理。从使用的角度来讲,非常简单。对于套接字的操作形成了一种网络应用程序的编程接口(API)。本书把这一套操作套接字的编程接口函数称作套接字编程接口,套接字是它的操作对象。总之,套接字是网络通信的基石。2.2.2套接字的特点1.通信域接字存在于通信域中,通信域是为了处理一般的进程通过套接字通信而引入的一种抽象概念,套接
6、字通常只和同一域中的套接字交换数据。如果数据交换要穿越域的边界,就一定要执行某种解释程序。现在,仅仅针对Internet域,并且使用Internet协议族(即TCP/IP协议族)来通信。2.套接字具有三种类型每一个正被使用的套接字都有它确定的类型,只有相同类型的套接字才能相互通信。(1)数据报套接字(DatagramSOCKET)数据报套接字提供无连接的不保证可靠的独立的数据报传输服务。在Internet通信域中,数据报套接字使用UDP数据报协议形成的进程间通路,具有UDP协议为上层所提供的服务的所有特点。图2.3在Internet通信域中,数据报套接字基于UDP协议(2)流式套接
7、字(StreamSOCKET)流式套接字提供双向的、有序的、无重复的、无记录边界的可靠的数据流传输服务。在Internet通信域中,流式套接字使用TCP协议形成的进程间通路,具有TCP协议为上层所提供的服务的所有特点,在使用流式套接字传输数据之前,必须在数据的发送端和接收端之间建立连接,如图2.4所示。图2.4在Internet通信域中,流式套接字基于TCP协议(3)原始式套接字(RAWSOCKET)原始式套接字允许对较低层次的协议,如IP、ICMP直接访问,用于检验
此文档下载收益归作者所有