在“TCP/IP基础之数据封装”中我们曾提到,网络分层中的每个层相互之间会用接口进行交互并提供服务,其中应用层与用户之间的接口称之为应用程序接口(Application Programming Interface,简称API)。API实际上是一种功能集合,也可说是定义、协议的集合,无论是哪种集合,它的实质都是通过抽象来为用户屏蔽实现上的细节和复杂性。
API的主要目的是提供应用程序给开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
从用户角度看,应用程序接口表现为一系列API函数,用户可以使用这些函数进行网络应用程序开发。
从网络角度看,应用程序接口给用户提供了一组方法,用户可以使用这组方法向应用层发送业务请求、信息和数据,网络中的各层则依次响应,最终完成网络数据传输。
API的作用主要体现在以下几个方面。
- 远程过程调用(RPC,Remote Procedure Call Protocol):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。
- 标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。
- 文件传输:通过发送格式化文件实现应用程序间数据共享。
- 信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。
应用层的应用程序接口有很多,并且发展很快,比较常见的包括Socket、FTP、HTTP以及Telnet。
这些接口从大类上可分为四类:
- 远程过程调用(RPC)接口
- 数据查询接口
- 文件类接口
- 数据通信接口
例如FTP协议属于文件类接口,基于FTP用户可以实现文件在网络间的共享和传输。而Socket和HTTP可归结为数据通信接口,基于这两种接口用户可以开发网络通信应用程序,以及Web页面交互程序。
如果从编程开发角度看,无论是FTP、HTTP还是Telnet,都是基于Socket接口开发出来的应用层协议,是对Socket接口的进一步封装和抽象,从而为用户提供更高一层的服务和接口。
常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。
- 流式socket是一种面向连接的socket,针对于面向连接的TCP服务应用。
- 数据报式socket是一种无连接的socket,对应于无连接的UDP服务应用。
从用户接口意义上讲,还有传输层的TLI接口,是由AT&T开发的,有时也称作XTI。它是传输层为用户提供的应用程序接口,可以用来在传输层进行应用开发。