【正文】
s created a socket library that provides the Socket API. A socket library can provide applications with a socket API on a puter system that does not provide native sockets. When an application calls one of the socket procedures, control passes to a library routine that makes one or more calls to the underlying operating system to implement the socket function. Socket Communication And Unix I/O An application municates through a socket similar to the way the application transfers data to or from a file. Unix uses an openreadwriteclose paradigm for all I/o 補(bǔ)充: 1. Socket API與 Unix Unix是一個(gè)通用的交互式多用戶分時(shí)操作系統(tǒng)。 Unix由 ATamp。 Unix 有兩個(gè)主要的流派: System V 和 BSD System V 由最初的 ATamp。 BSD Unix 是由加州大學(xué)伯克利 (Berkeley) 分校開發(fā),其目標(biāo)是提供一個(gè)具有復(fù)雜網(wǎng)絡(luò)支持的開放系統(tǒng)。 Socket API與 Unix 操作系統(tǒng)關(guān)系非常密切。 在一個(gè)用戶進(jìn)程進(jìn)行 I/O操作時(shí),它首先調(diào)用“打開”獲得對(duì)指定文件或設(shè)備的使用權(quán),并返回稱為文件描述符的整型數(shù),以描述用戶在打開的文件或設(shè)備上進(jìn)行 I/O操作的進(jìn)程。 當(dāng)所有的傳輸操作完成后,用戶進(jìn)程關(guān)閉調(diào)用,通知操作系統(tǒng)已經(jīng)完成了對(duì)某對(duì)象的使用。 UNIX用戶進(jìn)程與網(wǎng)絡(luò)協(xié)議的交互作用比用戶進(jìn)程與傳統(tǒng)的 I/O設(shè)備相互作用復(fù)雜得多。 進(jìn)程通信的概念最初來源于單機(jī)系統(tǒng)。 2 進(jìn)程間通信 3 網(wǎng)間進(jìn)程通信 網(wǎng)間進(jìn)程通信要解決的是不同主機(jī)進(jìn)程間的相互通信問題。 為此,首先要解決的是網(wǎng)間進(jìn)程標(biāo)識(shí)問題。但在網(wǎng)絡(luò)環(huán)境下,各主機(jī)獨(dú)立分配的進(jìn)程號(hào)不能唯一標(biāo)識(shí)該進(jìn)程。 因此,網(wǎng)間進(jìn)程通信還要解決多重協(xié)議的識(shí)別問題。 傳輸層與網(wǎng)絡(luò)層在功能上的最大區(qū)別是傳輸層提供進(jìn)程通信能力。 為此, TCP/IP協(xié)議提出了協(xié)議端口( protocol port,簡(jiǎn)稱端口)的概念,用于標(biāo)識(shí)通信的進(jìn)程。 應(yīng)用程序(即進(jìn)程)通過系統(tǒng)調(diào)用與某端口建立連接( binding)后,傳輸層傳給該端口的數(shù)據(jù)都被相應(yīng)進(jìn)程所接收,相應(yīng)進(jìn)程發(fā)給傳輸層的數(shù)據(jù)都通過該端口輸出。 類似于文件描述符,每個(gè)端口都擁有一個(gè)叫端口號(hào)( port number)的整數(shù)型標(biāo)識(shí)符,用于區(qū)別不同端口。 半相關(guān) 網(wǎng)絡(luò)中用一個(gè)三元組可以在全局唯一標(biāo)志一個(gè)進(jìn)程: (協(xié)議,本地地址,本地端口號(hào)) 這樣一個(gè)三元組,叫做一個(gè)半相關(guān)( halfassociation),它指定連接的每半部分。 一個(gè)完整的網(wǎng)間通信需要一個(gè)五元組來標(biāo)識(shí): (協(xié)議,本地地址,本地端口號(hào),遠(yuǎn)程地址,遠(yuǎn)程端口號(hào)) 這樣一個(gè)五元組,叫做一個(gè)相關(guān)( association),即兩個(gè)協(xié)議相同的半相關(guān)才能組合成一個(gè)合適的相關(guān),或完全指定組成一連接。 1 if error. The Socket Procedure: The socket procedure creates a socket and returns an integer descriptor. It sets values for only the first three fields of the socket structure. The other fields are set by the other functions or by the operating system. Argument Protofamily: 1: AFINET4 IPv4協(xié)議 2: AFINET6 IPv6協(xié)議 3: AFLOCAL Unix域協(xié)議 4: AFROUTE 路由插口 ?? Argument type specifies the type of munication the socket will use. TCP/IP的 socket提供下列三種類型插口。內(nèi)設(shè)流量控制,避免數(shù)據(jù)流超限;數(shù)據(jù)被看作是字節(jié)流,無(wú)長(zhǎng)度限制。 2. SOCK_DGRAM (數(shù)據(jù)報(bào)插口) 提供了一個(gè)無(wú)連接服務(wù)。網(wǎng)絡(luò)文件系統(tǒng)( NFS)使用數(shù)據(jù)報(bào)式插口。常用于檢驗(yàn)新的協(xié)議實(shí)現(xiàn)或訪問現(xiàn)有服務(wù)中配置的新設(shè)備。 Protocol的常量在頭文件 i/中定義,常量名以 IPPROTO_開頭。 1 if error. 當(dāng)一個(gè) socket用 socket()創(chuàng)建后,存在一個(gè)名字空間 (地址族 ),但它沒有被命名。 對(duì)于服務(wù)器而言,需要將插口綁定到一個(gè)已知的端口上,因?yàn)橹挥羞@樣,客戶端才知道該往何處發(fā)起連接。 設(shè)置插口地址結(jié)構(gòu)的幾種常見方式 IP地址 端口 說明 通配地址