TCP/IP基礎(chǔ)之應(yīng)用程序接口
在“TCP/IP基礎(chǔ)之?dāng)?shù)據(jù)封裝”中我們曾提到,網(wǎng)絡(luò)分層中的每個(gè)層相互之間會用接口進(jìn)行交互并提供服務(wù),其中應(yīng)用層與用戶之間的接口稱之為應(yīng)用程序接口(Application Programming Interface,簡稱API)。API實(shí)際上是一種功能集合,也可說是定義、協(xié)議的集合,無論是哪種集合,它的實(shí)質(zhì)都是通過抽象來為用戶屏蔽實(shí)現(xiàn)上的細(xì)節(jié)和復(fù)雜性。
API的主要目的是提供應(yīng)用程序給開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。
從用戶角度看,應(yīng)用程序接口表現(xiàn)為一系列API函數(shù),用戶可以使用這些函數(shù)進(jìn)行網(wǎng)絡(luò)應(yīng)用程序開發(fā)。
從網(wǎng)絡(luò)角度看,應(yīng)用程序接口給用戶提供了一組方法,用戶可以使用這組方法向應(yīng)用層發(fā)送業(yè)務(wù)請求、信息和數(shù)據(jù),網(wǎng)絡(luò)中的各層則依次響應(yīng),最終完成網(wǎng)絡(luò)數(shù)據(jù)傳輸。
API的作用主要體現(xiàn)在以下幾個(gè)方面。
- 遠(yuǎn)程過程調(diào)用(RPC,Remote Procedure Call Protocol):通過作用在共享數(shù)據(jù)緩存器上的過程(或任務(wù))實(shí)現(xiàn)程序間的通信。
- 標(biāo)準(zhǔn)查詢語言(SQL):是標(biāo)準(zhǔn)的訪問數(shù)據(jù)的查詢語言,通過通用數(shù)據(jù)庫實(shí)現(xiàn)應(yīng)用程序間的數(shù)據(jù)共享。
- 文件傳輸:通過發(fā)送格式化文件實(shí)現(xiàn)應(yīng)用程序間數(shù)據(jù)共享。
- 信息交付:指松耦合或緊耦合應(yīng)用程序間的小型格式化信息,通過程序間的直接通信實(shí)現(xiàn)數(shù)據(jù)共享。
應(yīng)用層的應(yīng)用程序接口有很多,并且發(fā)展很快,比較常見的包括Socket、FTP、HTTP以及Telnet。
這些接口從大類上可分為四類:
- 遠(yuǎn)程過程調(diào)用(RPC)接口
- 數(shù)據(jù)查詢接口
- 文件類接口
- 數(shù)據(jù)通信接口
例如FTP協(xié)議屬于文件類接口,基于FTP用戶可以實(shí)現(xiàn)文件在網(wǎng)絡(luò)間的共享和傳輸。而Socket和HTTP可歸結(jié)為數(shù)據(jù)通信接口,基于這兩種接口用戶可以開發(fā)網(wǎng)絡(luò)通信應(yīng)用程序,以及Web頁面交互程序。
如果從編程開發(fā)角度看,無論是FTP、HTTP還是Telnet,都是基于Socket接口開發(fā)出來的應(yīng)用層協(xié)議,是對Socket接口的進(jìn)一步封裝和抽象,從而為用戶提供更高一層的服務(wù)和接口。
常用的Socket類型有兩種:流式Socket(SOCK_STREAM)和數(shù)據(jù)報(bào)式Socket(SOCK_DGRAM)。
- 流式socket是一種面向連接的socket,針對于面向連接的TCP服務(wù)應(yīng)用。
- 數(shù)據(jù)報(bào)式socket是一種無連接的socket,對應(yīng)于無連接的UDP服務(wù)應(yīng)用。
從用戶接口意義上講,還有傳輸層的TLI接口,是由AT&T開發(fā)的,有時(shí)也稱作XTI。它是傳輸層為用戶提供的應(yīng)用程序接口,可以用來在傳輸層進(jìn)行應(yīng)用開發(fā)。