第2章套餐字网络编程基础 21UNⅠX套接字网络编程接口的 产生与发展 22套接字编程的基本概念 23面向连接的套接字编程 24无连接的套接字编程 25原始套接字
第2章 套接字网络编程基础 1 2.1 UNIX套接字网络编程接口的 产生与发展 2.2 套接字编程的基本概念 2.3 面向连接的套接字编程 2.4 无连接的套接字编程 2.5 原始套接字
21UNIX套接字网络编程接口的产生与发展 211问题的提出(P24) 从应用程序实现的角度,应用程序如何方便地使用协议 栈软件进行通信呢? 如果能在应用程序与协议栈软件之间提供一个软件接口, 就可以方便客户机与服务器软件的编程。UNIX系统的开发者 提出了套接字应用程序编程接口。 套接字应用程序编程接口是网络应用程序通过网络协议栈 进行通信时所使用的接口,即应用程序与协议栈软件之间的接 口,简称套接字编程接口( SocketAPl)
从应用程序实现的角度,应用程序如何方便地使用协议 栈软件进行通信呢? 2.1 UNIX套接字网络编程接口的产生与发展 2.1.1 问题的提出 (P24) 如果能在应用程序与协议栈软件之间提供一个软件接口, 就可以方便客户机与服务器软件的编程。UNIX系统的开发者 提出了套接字应用程序编程接口。 套接字应用程序编程接口是网络应用程序通过网络协议栈 进行通信时所使用的接口,即应用程序与协议栈软件之间的接 口,简称套接字编程接口(Socket API)
211问题的提出P24 套接字编程接口定义了应用程序与协议栈软件进行交互 时可以使用的一组操作,决定了应用程序使用协议栈的方式、 应用程序所能实现的功能、以及开发具有这些功能的程序的 方法。 具体地说,套接字编程接口给出了应用程序能够调用的 一组函数,每个函数完成一个与协议栈交互的基本操作
具体地说,套接字编程接口给出了应用程序能够调用的 一组函数,每个函数完成一个与协议栈交互的基本操作。 2.1.1 问题的提出 P24 套接字编程接口定义了应用程序与协议栈软件进行交互 时可以使用的一组操作,决定了应用程序使用协议栈的方式、 应用程序所能实现的功能、以及开发具有这些功能的程序的 方法
21UNIX套接字网络编程接口的产生与发展 21.,2套接字编程接口起源于UNⅨX系统(P25) 加州大学伯克利( Berkley)分校开发并推广了一个包括 TCP/IP互联协议的UNX,称为 BSD UNⅨ( Berkeley Software Distribution unⅨx)操作系统,套接字编程接口是 这个操作系统的一部分。 后来的许多操作系统并没有另外搞一套其它的编程接口, 而是选择了对于套接字编程接口的支持。包括各种UNX的派 生版,后来出现的 Windows,及各种 Linux版本
加州大学伯克利(Berkley)分校开发并推广了一个包括 TCP/IP 互联协议的 UNIX , 称 为 BSD UNIX ( Berkeley Software Distribution UNIX)操作系统,套接字编程接口是 这个操作系统的一部分。 后来的许多操作系统并没有另外搞一套其它的编程接口, 而是选择了对于套接字编程接口的支持。包括各种UNIX的派 生版,后来出现的Windows,及各种Linux版本。 2.1.2 套接字编程接口起源于UNIX系统 (P25) 2.1 UNIX套接字网络编程接口的产生与发展
21UNIX套接字网络编程接口的产生与发展 212套接字编程接口起源于UNⅨ系统(P25) 套接字规范规定了一系列有关的C函数,为在UNⅨ环境 使用TCP/IP进行网络通信提供了一套应用程序编程接口,得 以实现并广泛流传。 套接字编程接口广泛应用在各种网络编程中,成为事实上 的工业标准。 由于这个套接字规范最早是由 Berkeley大学开发的,一般 将它称为 Berkeley Sockets规范
套接字规范规定了一系列有关的C函数,为在UNIX环境 使用TCP/IP进行网络通信提供了一套应用程序编程接口,得 以实现并广泛流传。 套接字编程接口广泛应用在各种网络编程中,成为事实上 的工业标准。 由于这个套接字规范最早是由Berkeley大学开发的,一般 将它称为Berkeley Sockets规范。 2.1.2 套接字编程接口起源于UNIX系统 (P25) 2.1 UNIX套接字网络编程接口的产生与发展
21UNX套接字网络编程接口的产生与发展 213套接字编程接口的继承和发展(P25) ) Windows系统 微软公司以UNI操作系统的 Berkeley Sockets规范为范例, 定义了 Windows socktes规范,全面继承了套接字网络编程接口 详细内容将在第三章介绍。 2) Linux系统 Linux操作系统中的套接字网络编程接口几乎与UNⅨX操作 系统的套接字网络编程接口一样
1)Windows系统 微软公司以UNIX操作系统的Berkeley Sockets规范为范例, 定义了Windows Socktes规范,全面继承了套接字网络编程接口。 详细内容将在第三章介绍。 2.1.3 套接字编程接口的继承和发展 (P25) 2.1 UNIX套接字网络编程接口的产生与发展 2) Linux系统 Linux操作系统中的套接字网络编程接口几乎与UNIX操作 系统的套接字网络编程接口一样
21UNIX套接字网络编程接口的产生与发展 214套接字编程接口的两种实现方式P25 要想实现套接字编程接口,可以采用两种实现方式: 1.一种是在操作系统的内核中增加相应的软件来实现, 套接字函数是操作系统内核的一部分。 2.另一种是通过开发操作系统之外的函数库来实现。 具有与UNI套接字相同的函数名和参数。实现了程序的可 移植性,程序源代码不必改动即可移植到另一个操作系统。 只是使用时要链接库函数
要想实现套接字编程接口,可以采用两种实现方式: 1. 一种是在操作系统的内核中增加相应的软件来实现, 套接字函数是操作系统内核的一部分。 2. 另一种是通过开发操作系统之外的函数库来实现。 具有与UNIX套接字相同的函数名和参数。实现了程序的可 移植性,程序源代码不必改动即可移植到另一个操作系统。 只是使用时要链接库函数。 2.1.4 套接字编程接口的两种实现方式 P25 2.1 UNIX套接字网络编程接口的产生与发展
21UNIX套接字网络编程接口的产生与发展 215套接字通信与UNX操作系统的输入输出的关系 UNIX操作系统对文件和所有其它的输入输出设备采用 种统一的的操作模式,就是“打开-读写关闭”(open-read write- close)的ⅣO模式。 当TCPP协议被集成到UNⅨX内核中的时候,相当于在 UNIX系统中引入了一种新型的ⅣO操作,就是应用程序通过 网络协议栈来交换数据
UNIX操作系统对文件和所有其它的输入/输出设备采用 一种统一的的操作模式,就是“打开-读-写-关闭”(open - read - write - close)的I/O模式。 当TCP/IP协议被集成到UNIX内核中的时候,相当于在 UNIX系统中引入了一种新型的I/O操作,就是应用程序通过 网络协议栈来交换数据。 2.1.5 套接字通信与UNIX操作系统的输入/输出的关系 2.1 UNIX套接字网络编程接口的产生与发展
215套接字通信与UNⅨ操作系统的输入/输出的关系 在UNIX系统的实现中,套接字是完全与其他ⅣO集成在 起的。操作系统和应用程序都将套接字编程接囗也看作 种ⅣO机制。 这体现在三个方面: 1)操作的过程类似。使用套接字也像使用I/O→样“打 开-读写-关闭”模式。 2)操作方法类似。操作系统为文件、设备、进程通信、 网络通信提供单独的一组描述符,套接字通信同样使用描述 符方法 3)过程名也可以相同。例如read和 write
在UNIX系统的实现中,套接字是完全与其他I/O集成在 一起的。操作系统和应用程序都将套接字编程接口也看作一 种I/O机制。 这体现在三个方面: 2.1.5 套接字通信与UNIX操作系统的输入/输出的关系 1)操作的过程类似。使用套接字也像使用I/O一样“打 开--读写--关闭”模式。 2)操作方法类似。操作系统为文件、设备、进程通信、 网络通信提供单独的一组描述符,套接字通信同样使用描述 符方法。 3)过程名也可以相同。例如read和write
215套接字通信与UNⅨ操作系统的输入/输出的关系 但是,用户进程与网络协议的交互作用实际要比用户进 程与传统的ⅣO设备相互作用要复杂得多。首先,进行网络操 作的两个进程是在两合不同的计算机,如何连接;其次,要 建立一种通用机制来支持多种网络协议。 还有,使用套接字的应用程序必须说明许多细节。仅仅 提供open、read、 write、lose四个过程远远不够。为避免单 个套接字函数参数过多,套接字编程接口的设计者还定义了 其它多个函数
但是,用户进程与网络协议的交互作用实际要比用户进 程与传统的I/O设备相互作用要复杂得多。首先,进行网络操 作的两个进程是在两台不同的计算机,如何连接;其次,要 建立一种通用机制来支持多种网络协议。 2.1.5 套接字通信与UNIX操作系统的输入/输出的关系 还有,使用套接字的应用程序必须说明许多细节。仅仅 提供open、read、write、close四个过程远远不够。为避免单 个套接字函数参数过多,套接字编程接口的设计者还定义了 其它多个函数