日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux 核心--11.網(wǎng)絡(luò)( 二 )








圖 10.1: TCP/IP 協(xié)議層

IP協(xié)議是一個(gè)傳輸層的協(xié)議,其它協(xié)議可以用它來(lái)傳輸數(shù)據(jù) 。傳輸控制協(xié)議(TCP)是一個(gè)可靠的端對(duì)端的協(xié)議,它用IP來(lái)傳送和接收它自己的包 。正如IP包有它自己的頭一樣,TCP也有它自己的頭 。TCP是一個(gè)面向連接的協(xié)議,兩個(gè)網(wǎng)絡(luò)應(yīng)用程序通過(guò)一個(gè)虛連接相連,即使它們之間可能隔著很多子網(wǎng)、網(wǎng)關(guān)、路由器 。TCP可靠地傳送和接收兩應(yīng)用程序間的數(shù)據(jù),并保證數(shù)據(jù)不會(huì)丟失 。當(dāng)用IP來(lái)傳輸TCP包時(shí),IP包的數(shù)據(jù)段就是TCP包 。每一個(gè)通訊主機(jī)的IP層負(fù)責(zé)傳送和接收IP包 。用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP)也用IP層來(lái)傳輸它的包,不象TCP,UDP不是一個(gè)可靠的協(xié)議,但它提供了一種數(shù)據(jù)報(bào)服務(wù) 。有多個(gè)協(xié)議可以使用IP層,接收IP包的時(shí)候必需知道該IP包中的數(shù)據(jù)是哪個(gè)上層協(xié)議的,因此IP包頭中有個(gè)一字節(jié)包含著協(xié)議標(biāo)識(shí)符 。例如,當(dāng)TCP請(qǐng)求IP層傳輸一個(gè)IP包時(shí),IP包的包頭中用標(biāo)識(shí)符指明該包包含一個(gè)TCP包,IP接收層用該標(biāo)識(shí)符決定由哪一協(xié)議來(lái) 接收數(shù)據(jù),這個(gè)例子中是TCP層 。當(dāng)應(yīng)用程序通過(guò)TCP/IP進(jìn)行通訊時(shí),它們不僅要指定目標(biāo)的IP地址,而且還 要指定應(yīng)用的端口地址 。一個(gè)端口地址唯一地標(biāo)識(shí)一個(gè)應(yīng)用,標(biāo)準(zhǔn)的網(wǎng)絡(luò)應(yīng)用使用標(biāo)準(zhǔn)的端口地址;如,Web 服務(wù)使用80端口 。這些已登記的端口地址可在 /etc/services 中看到 。

這一層的協(xié)議不僅僅是TCP、UDP和IP 。IP協(xié)議層本身用很多種物理媒介將IP包從一個(gè)主機(jī)傳到其它主機(jī) 。這些媒介可以加入它們自己的協(xié)議頭 。以太網(wǎng)層就是一個(gè)例子,但PPP和SLIP不是這樣 。一個(gè)以太網(wǎng)絡(luò)允許很個(gè)主機(jī)同時(shí)連接到同一根物理電纜 。傳輸中的每一個(gè)以太網(wǎng)幀可以被所有主機(jī)看見(jiàn),因此每一以太網(wǎng)設(shè)備有個(gè)唯一的地址 。任何傳送給該地址的以太網(wǎng)幀被有該地址的以太網(wǎng)設(shè)備接收,而其它主機(jī)則忽略該幀 。這個(gè)唯一的地址內(nèi)置于每一以太網(wǎng)設(shè)備中,通常是在網(wǎng)卡出廠(chǎng)時(shí)就寫(xiě)在SROM2中了 。以太網(wǎng)地址有6個(gè)字節(jié)長(zhǎng),如: 08-00-2b-00-49-A4。一些以太網(wǎng)地址是保留給多點(diǎn)傳送用的,送往這些地址的以太網(wǎng)幀將被網(wǎng)上所有的主機(jī)接收 。以太網(wǎng)幀可以攜帶很多種協(xié)議(作為數(shù)據(jù)),如IP包,并且也包括它們頭中的協(xié)議標(biāo)識(shí)符 。這使得以太網(wǎng)層能正確地接收IP包并將它們傳給IP層 。

為了能通過(guò)象以太網(wǎng)這樣的多連接協(xié)議傳送IP包,IP層必須找到每一IP主機(jī)的以太網(wǎng)地址 。IP地址僅僅是一個(gè)地址概念,以太網(wǎng)設(shè)備有它們自身的物理地址 。從另一方面說(shuō),IP地址是可以被網(wǎng)絡(luò)管理員根據(jù)需要來(lái)分配和再分配的,而網(wǎng)絡(luò)硬件只對(duì)含有它們自己的物理地址或多點(diǎn)傳送地址的以太網(wǎng)幀作出響應(yīng) 。Linux用地址 解析協(xié)議(ARP)來(lái)允許機(jī)器將IP地址轉(zhuǎn)變成真正的硬件地址,如以太網(wǎng)地址 。如果一個(gè)主機(jī)想知道某一IP地址對(duì)應(yīng)的硬件地址,它就用一個(gè)多點(diǎn)傳送地址將一個(gè)包含了該IP地址的ARP請(qǐng)求包發(fā)給網(wǎng)上所有節(jié)點(diǎn),擁有該IP地址的的目標(biāo)主機(jī)則響應(yīng)一個(gè)包含物理硬件地址的ARP應(yīng)答 。ARP不僅僅局限于以太網(wǎng)設(shè)備,它能夠用來(lái)在其它一些物理媒介上解析IP地址,如FDDI 。那些不支持ARP的網(wǎng)絡(luò)設(shè)備會(huì)被標(biāo)記出來(lái),Linux將不會(huì)用ARP 。還有一個(gè)提供相反功能的反向地址解析協(xié)議(RARP),用來(lái)將物理網(wǎng)絡(luò)地址轉(zhuǎn)變?yōu)镮P地址 。這一協(xié)議常常被網(wǎng)關(guān)用來(lái)響應(yīng)包含遠(yuǎn)程網(wǎng)絡(luò)IP地址的ARP請(qǐng)求 。

10.2Linux TCP/IP 網(wǎng)絡(luò)層





圖 10.2: Linux 網(wǎng)絡(luò)層

正如網(wǎng)絡(luò)協(xié)議本身,圖 10.2 顯示出Linux用一系列相互連接層的軟件實(shí)現(xiàn)Internet協(xié)議地址族 。BSD套接字(BSD sockets)由專(zhuān)門(mén)處理BSD sockets通用套接字管理軟件處理 。它由INET sockets層來(lái)支持,這一層為基于IP的協(xié)議TCP和UDP管理傳輸端點(diǎn) 。UDP(用戶(hù)數(shù)據(jù)報(bào)協(xié)議)是一個(gè)無(wú)連接協(xié)議而TCP(傳輸控制協(xié)議)是個(gè)可靠的端對(duì)端協(xié)議 。傳輸U(kuò)DP包時(shí),Linux不知道也不關(guān)心是否它們安全到達(dá)目的地 。TCP包則被TCP連接兩端編號(hào)以保證傳輸?shù)臄?shù)據(jù)被正確接收 。IP層包含了實(shí)現(xiàn)Internet協(xié)議的代碼 。這些代碼給要傳輸?shù)臄?shù)據(jù)加上IP頭,并知道如何把傳入的IP包送給TCP或UDP 。在IP層以下,是網(wǎng)絡(luò)設(shè)備來(lái)支持所有Linux網(wǎng)絡(luò)工作,如PPP和以太網(wǎng) 。網(wǎng)絡(luò)設(shè)備不總是物理設(shè)備;一些象loopback這樣的設(shè)備是純軟件設(shè)備 。標(biāo)準(zhǔn)的Linux設(shè)備用mknod命令建立,網(wǎng)絡(luò)設(shè)備要用底層軟件發(fā)現(xiàn)并初始化它 。建立一個(gè)有適當(dāng)?shù)囊蕴W(wǎng)設(shè)備驅(qū)動(dòng)在內(nèi)的內(nèi)核后,你就可以看到 /dev/eth0。ARP協(xié)議位于IP層與支持ARP的協(xié)議之間 。

推薦閱讀