描述一個(gè)網(wǎng)絡(luò)中各個(gè)協(xié)議層的常用方法是使用國(guó)際標(biāo)準(zhǔn)化組織(ISO)的計(jì)算機(jī)通信開放系統(tǒng)互連(open systems interconnection , OSI)模型。![]() (圖片來自《UNIX網(wǎng)絡(luò)編程卷一》)
OSI模型的低下兩層是隨系統(tǒng)提供的設(shè)備驅(qū)動(dòng)程序和網(wǎng)絡(luò)硬件,一般不必關(guān)心它們。TCP和UDP之間留有空隙,表明網(wǎng)絡(luò)應(yīng)用繞過傳輸層直接使用IPV4和IPV6是可能的,即原始套接字。 套接字(socket)編程接口是從頂上三層(網(wǎng)絡(luò)協(xié)議的應(yīng)用層)進(jìn)入傳輸層的接口。除了提到的原始套接字,套接字編程可以徹底繞過IP層直接讀寫數(shù)據(jù)鏈路層的幀。 為什么套接字提供的是從OSI模型的頂上三層進(jìn)入傳輸層的接口,有兩個(gè)原因: 1)頂上三層處理具體網(wǎng)絡(luò)應(yīng)用(如FTP、HTTP)的所有細(xì)節(jié),而對(duì)通信細(xì)節(jié)了解很少;低下四層對(duì)具體網(wǎng)絡(luò)應(yīng)用了解不多,卻處理所有的通信細(xì)節(jié)(發(fā)送數(shù)據(jù)、等待確認(rèn)、校驗(yàn)等)。 2)頂上三層通常構(gòu)成所謂的用戶進(jìn)程,底下四層卻通常作為操作系統(tǒng)內(nèi)核的一個(gè)部分提供?,F(xiàn)代操作系統(tǒng)都提供分隔用戶進(jìn)程與內(nèi)核的機(jī)制。 所以,在第4層和第5層之間的接口是構(gòu)建API的自然位置。 |
|