文档介绍:第2章 UNIX中的套接字网络编程接口
UNIX套接字网络编程接口的产生与发展过程
套接字与UNIX操作系统的关系
套接字编程的基本概念
面向连接的套接字编程
无连接的套接字编程
问题的提出
站在应用程序实现的角度,应用程序如何方便地使用协议栈软件进行通信呢?
如果能在应用程序与协议栈软件之间提供一个软件接口,就可以方便客户与服务器软件的编程。
UNIX套接字网络编程接口的产生与发展
套接字应用程序编程接口是网络应用程序通过网络协议栈进行通信时所使用的接口,即应用程序与协议栈软件之间的接口,简称套接字编程接口(Socket API)。
它定义了应用程序与协议栈软件进行交互时可以使用的一组操作,决定了应用程序使用协议栈的方式、应用程序所能实现的功能、以及开发具有这些功能的程序的难度。
加州大学伯克利(Berkley)分校开发并推广了一个包括TCP/IP互联协议的UNIX,称为BSD UNIX(Berkeley Software Distribution UNIX)操作系统,套接字编程接口是这个操作系统的一个部分。
后来的许多操作系统并没有另外搞一套其它的编程接口,而是选择了对于套接字编程接口的支持。
由于这个套接字规范最早是由Berkeley大学开发的,一般将它称为Berkeley Sockets规范。
套接字编程接口的起源与应用
要想实现套接字编程接口,可以采用两种实现方式,
一种是在操作系统的内核中增加相应的软件来实现,
一种是通过开发操作系统之外的函数库来实现。
套接字编程接口的两种实现方式
UNIX操作系统对文件和所有其它的输入/输出设备采用一种统一的的操作模式,就是“打开-读-写-关闭”(open - read - write - close)的I/O模式。
当TCP/IP协议被集成到UNIX内核中的时候,相当于在UNIX系统中引入了一种新型的I/O操作,就是应用程序通过网络协议栈来交换数据。
套接字通信与UNIX操作系统的输入/输出
在UNIX系统的实现中,套接字是完全与其他I/O集成在一起的。操作系统和应用程序都将套接字编程接口也看作一种输入/输出机制。
但是,用户进程与网络协议的交互作用实际要比用户进程与传统的I/O设备相互作用要复杂得多。
其次,使用套接字的应用程序必须说明许多细节。仅仅提供open、read、write、close四个过程远远不够。为避免单个套接字函数参数过多,套接字编程接口的设计者定义了多个函数。
套接字编程的基本概念
套接口是对网络中不同主机上应用进程之间进行双向通信的端点的抽象,一个套接口就是网络上进程通信的一端,提供了应用层进程利用网络协议栈交换数据的机制。
电插座与电话插座的作用
什么是套接字(SOCKET)
我们应当从多个层面来理解套接字这个概念的内涵。
从套接字所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议栈进行通信的接口,是应用程序与网络协议栈进行交互的接口。