67、OSI 與 TCP/IP 的網(wǎng)絡(luò)分層


??(1)、物理層----定義了為建立、維護和拆除物理鏈路所需的機械的、電氣的、功能的和規(guī)程的特性,其作用是使原始的數(shù)據(jù)比特流能在物理媒體上傳輸。具體涉及接插件的規(guī)格、“0”、“1”信號的電平表示、收發(fā)雙方的協(xié)調(diào)等內(nèi)容。
??(2)、數(shù)據(jù)鏈路層----比特流被組織成數(shù)據(jù)鏈路協(xié)議數(shù)據(jù)單元(通常稱為幀),并以其為單位進行傳輸,幀中包含地址、控制、數(shù)據(jù)及校驗碼等信息。數(shù)據(jù)鏈路層的主要作用是通過校驗、確認和反饋重發(fā)等手段,將不可靠的物理鏈路改造成對網(wǎng)絡(luò)層來說無差錯的數(shù)據(jù)鏈路。數(shù)據(jù)鏈路層還要協(xié)調(diào)收發(fā)雙方的數(shù)據(jù)傳輸速率,即進行流量控制,以防止接收方因來不及處理發(fā)送方來的高速數(shù)據(jù)而導(dǎo)致緩沖器溢出及線路阻塞。
??(3)、網(wǎng)絡(luò)層----數(shù)據(jù)以網(wǎng)絡(luò)協(xié)議數(shù)據(jù)單元(分組)為單位進行傳輸。網(wǎng)絡(luò)層關(guān)心的是通信子網(wǎng)的運行控制,主要解決如何使數(shù)據(jù)分組跨越通信子網(wǎng)從源傳送到目的地的問題,這就需要在通信子網(wǎng)中進行路由選擇。另外,為避免通信子網(wǎng)中出現(xiàn)過多的分組而造成網(wǎng)絡(luò)阻塞,需要對流入的分組數(shù)量進行控制。當分組要跨越多個通信子網(wǎng)才能到達目的地時,還要解決網(wǎng)際互連的問題。
??(4)、傳輸層----是第一個端--端,也即主機--主機的層次。傳輸層提供的端到端的透明數(shù)據(jù)運輸服務(wù),使高層用戶不必關(guān)心通信子網(wǎng)的存在,由此用統(tǒng)一的運輸原語書寫的高層軟件便可運行于任何通信子網(wǎng)上。傳輸層還要處理端到端的差錯控制和流量控制問題。
??(5)、會話層----是進程--進程的層次,其主要功能是組織和同步不同的主機上各種進程間的通信(也稱為對話)。會話層負責(zé)在兩個會話層實體之間進行對話連接的建立和拆除。在半雙工情況下,會話層提供一種數(shù)據(jù)權(quán)標來控制某一方何時有權(quán)發(fā)送數(shù)據(jù)。會話層還提供在數(shù)據(jù)流中插入同步點的機制,使得數(shù)據(jù)傳輸因網(wǎng)絡(luò)故障而中斷后,可以不必從頭開始而僅重傳最近一個同步點以后的數(shù)據(jù)。
??(6)、表示層----為上層用戶提供共同的數(shù)據(jù)或信息的語法表示變換。為了讓采用不同編碼方法的計算機在通信中能相互理解數(shù)據(jù)的內(nèi)容,可以采用抽象的標準方法來定義數(shù)據(jù)結(jié)構(gòu),并采用標準的編碼表示形式。表示層管理這些抽象的數(shù)據(jù)結(jié)構(gòu),并將計算機內(nèi)部的表示形式轉(zhuǎn)換成網(wǎng)絡(luò)通信中采用的標準表示形式。數(shù)據(jù)壓縮和加密也是表示層可提供的表示變換功能。
??(7)、應(yīng)用層是開放系統(tǒng)互連環(huán)境的最高層。不同的應(yīng)用層為特定類型的網(wǎng)絡(luò)應(yīng)用提供訪問 OSI 環(huán)境的手段。網(wǎng)絡(luò)環(huán)境下不同主機間的文件傳送訪問和管理(FTAM)、傳送標準電子郵件的文電處理系統(tǒng)(MHS)、使不同類型的終端和主機通過網(wǎng)絡(luò)交互訪問的虛擬終端(VT)協(xié)議等都屬于應(yīng)用層的范疇。
67.1、網(wǎng)絡(luò)各層常用的協(xié)議
??物理層:RJ45、CLOCK、IEEE802.3
??數(shù)據(jù)鏈路:PPP、FR、HDLC、VLAN、MAC
??網(wǎng)絡(luò)層:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGMP
??傳輸層:TCP、UDP、SPX
??會話層:RPC 、SQL、NETBIOS、NFS
??表示層:JPEG、MPEG、ASCII、MIDI
??應(yīng)用層:RIP、BGP、FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
??常見協(xié)議的端口:http 80,ftp 20、21,telnet 23,SMTP 25。
68、IP地址
68.1、IP地址的分類
??整個的因特網(wǎng)就是一個單一的、抽象的網(wǎng)絡(luò)。IP地址就是給因特網(wǎng)上的每一個主機(或路由器)的每一個接口分配一個在全世界范圍內(nèi)唯一的32位的標識符。
??所謂分類的IP地址,就是將IP地址劃分為若干固定類,每一類地址都由兩個固定長度的字段組成,其中一個字段是網(wǎng)絡(luò)號 net-id,它標志主機(或路由器)所連接到的網(wǎng)絡(luò),一個網(wǎng)絡(luò)號在整個因特網(wǎng)范圍內(nèi)必須是唯一的。而另一個字段則是主機號 host-id,它標志該主機(或路由器),一個主機號在它前面的網(wǎng)絡(luò)號所指明的網(wǎng)絡(luò)范圍內(nèi)必須是唯一的。由此可見,一個IP地址在整個因特網(wǎng)范圍內(nèi)是唯一的。
??由于一個路由器至少應(yīng)當連接到兩個網(wǎng)絡(luò)(這樣它才能將 IP 數(shù)據(jù)報從一個網(wǎng)絡(luò)轉(zhuǎn)發(fā)到另一個網(wǎng)絡(luò)),因此一個路由器至少應(yīng)當有兩個不同的 IP 地址。路由器只根據(jù)目的站的IP 地址的網(wǎng)絡(luò)號進行路由選擇。
??用轉(zhuǎn)發(fā)器或網(wǎng)橋連接起來的若干個局域網(wǎng)仍為一個網(wǎng)絡(luò),因此這些局域網(wǎng)都具有同樣的網(wǎng)絡(luò)號。
??兩級的 IP 地址可以記為:IP 地址 :: = { <網(wǎng)絡(luò)號>, <主機號>}

??上圖中的A類、B類、C類地址都是單播地址(一對一通信),是最常用的。網(wǎng)絡(luò)號字段的最前面有1-4位的類別位,A類、B類、C類地址的類別位分別為0、10、110。為了提高可讀性,我們常常把32位的IP地址中的每8位用其等效的十進制數(shù)字表示。
??IP地址的取值范圍:
??A類:1.0.0.0到127.255.255.255
??B類:128.0.0.0到191.255.255.255
??C類:192.0.0.0到223.255.255.255
??D類:224.0.0.0到239.255.255.255
??E類:240.0.0.0到247.255.255.255
??私有地址有:
??A類:10.0.0.0到10.255.255.255
??B類:172.16.0.0到172.31.255.255
??C類:192.168.0.0到192.168.255.255
??A類地址的網(wǎng)絡(luò)號字段占一個字節(jié),只有7位可供使用(第一位已固定為0),但是可指派的網(wǎng)絡(luò)號是126個(2^7-2),減2的原因:第一,IP地址中全為0的地址是個保留地址,表示“本網(wǎng)絡(luò)”;第二,網(wǎng)絡(luò)號為127(01111111)保留作為本地軟件環(huán)回測試本主機的進程間的通信。
??A類地址的主機號占3字節(jié),因此每一個A類網(wǎng)絡(luò)中的最大主機數(shù)是2^24-2。減2的原因:第一,全為0的主機號字段表示該IP地址是本主機所連接到的單個網(wǎng)絡(luò)地址,第二,全為1的主機號字段表示該網(wǎng)絡(luò)上的所有主機。
??B類地址的網(wǎng)絡(luò)號字段有2字節(jié),但是前兩位已經(jīng)固定為10,只剩下14位可以進行分配,因為前面兩位是10,不會出現(xiàn)全為0或全為1的網(wǎng)絡(luò)號,但實際上,B類網(wǎng)絡(luò)地址128.0.0.0是不指派的。所以最大網(wǎng)絡(luò)數(shù)為2^14-1。最大主機數(shù)為2^16-2。
??C類地址有3字節(jié)的網(wǎng)絡(luò)號字段,前三位固定位110,還有21位可以進行分配。但實際上192.0.0.0是不指派的,因此C類地址可指派的網(wǎng)絡(luò)總數(shù)為2^21-1,最大主機數(shù)為2^8-2。
68.2、IP地址與硬件地址
??硬件地址是數(shù)據(jù)鏈路層和物理層使用的地址,而IP地址是網(wǎng)絡(luò)層和以上各層使用的地址,是一種邏輯地址。

??發(fā)送數(shù)據(jù)時,數(shù)據(jù)從高層下到低層,然后才到通信鏈路上傳輸。使用IP地址的IP數(shù)據(jù)報一旦交給了數(shù)據(jù)鏈路層,就被封裝成了MAC幀。MAC幀在傳送時使用的源地址和目的地址都是硬件地址,這兩個硬件地址都寫在MAC幀的首部。
??連接在通信鏈路上的設(shè)備在接受MAC幀時,其根據(jù)是MAC幀首部中的硬件地址。在數(shù)據(jù)鏈路層看不見隱藏在MAC幀的數(shù)據(jù)中的IP地址。只有在剝?nèi)チ薓AC幀的首部和尾部后把MAC層的數(shù)據(jù)上交給網(wǎng)絡(luò)層后,網(wǎng)絡(luò)層才能在IP數(shù)據(jù)報的首部中找到源IP地址和目的IP地址。
68.3、劃分子網(wǎng)
??一個擁有許多物理網(wǎng)絡(luò)的單位,可將所屬的物理網(wǎng)絡(luò)劃分為若干個子網(wǎng)(subnet)。劃分子網(wǎng)純屬一個單位內(nèi)部的事情。單位對外仍然表現(xiàn)為一個網(wǎng)絡(luò)。
??劃分子網(wǎng)的方法是從主機號借用若干個位作為子網(wǎng)號 subnet-id,而主機號 host-id 也就相應(yīng)減少了若干個位。于是兩級IP地址在本單位內(nèi)部就變?yōu)槿塈P地址:網(wǎng)絡(luò)號、子網(wǎng)號和主機號。
??IP地址 ::= {<網(wǎng)絡(luò)號>, <子網(wǎng)號>, <主機號>}
??凡是從其他網(wǎng)絡(luò)發(fā)送給本單位某個主機的 IP數(shù)據(jù)報,仍然是根據(jù) IP 數(shù)據(jù)報的目的網(wǎng)絡(luò)號 net-id,先找到連接在本單位網(wǎng)絡(luò)上的路由器。然后此路由器在收到 IP 數(shù)據(jù)報后,再按目的網(wǎng)絡(luò)號 net-id 和子網(wǎng)號 subnet-id 找到目的子網(wǎng)。最后就將 IP 數(shù)據(jù)報直接交付目的主機。
??下面通過一個例子來展示劃分子網(wǎng)的方法與效果。
??下圖表示某單位擁有一個B類IP地址,網(wǎng)絡(luò)地址是145.13.0.0(網(wǎng)絡(luò)號是145.13)。

??現(xiàn)把上圖中的網(wǎng)絡(luò)劃分為三個子網(wǎng),這里假定子網(wǎng)號占用8位,因此主機號只剩8位。所劃分的子網(wǎng)分別是:145.13.3.0、145.13.7.0、145.13.21.0。

??劃分子網(wǎng)后,整個網(wǎng)絡(luò)對外仍表現(xiàn)為一個網(wǎng)絡(luò),其網(wǎng)絡(luò)地址仍為145.13.0.0,但是路由器R1在收到外來的數(shù)據(jù)報后,再根據(jù)數(shù)據(jù)報的目的地址把它轉(zhuǎn)發(fā)到相應(yīng)的子網(wǎng)。
??假定有一個數(shù)據(jù)報的目的地址是145.13.3.10已經(jīng)到達路由器R1,那么這個路由器如何把它轉(zhuǎn)發(fā)到子網(wǎng)145.13.3.0呢?這就需要借助子網(wǎng)掩碼(subnetmask)來實現(xiàn)了。
??路由器會把子網(wǎng)掩碼和收到的數(shù)據(jù)報地址的目的IP地址145.13.3.10進行按位“與”操作,得出所要找的子網(wǎng)的網(wǎng)絡(luò)地址。

??子網(wǎng)掩碼與IP地址進行“與”操作之后,就將主機號“過濾”掉了,只剩下了網(wǎng)絡(luò)號與子網(wǎng)號。
??實際上,因特網(wǎng)的標準規(guī)定:所有網(wǎng)絡(luò)必須使用子網(wǎng)掩碼。即便一個網(wǎng)絡(luò)沒有劃分子網(wǎng),也要使用默認子網(wǎng)掩碼。默認子網(wǎng)掩碼中1的位置和IP地址中的網(wǎng)絡(luò)號字段正好相對應(yīng),因此,兩者進行“與”操作后,就能得出該IP地址的網(wǎng)絡(luò)地址。A類、B類、C類地址的默認子網(wǎng)掩碼是固定的:

??例,已知 IP 地址是141.14.72.24,子網(wǎng)掩碼是 255.255.192.0。試求網(wǎng)絡(luò)地址。

??應(yīng)當注意,劃分子網(wǎng)后,路由表必須包含以下三項內(nèi)容:目的網(wǎng)絡(luò)地址、子網(wǎng)掩碼和下一跳地址。
68.4、路由器轉(zhuǎn)發(fā)分組算法
??在劃分子網(wǎng)的情況下路由器轉(zhuǎn)發(fā)分組的算法:
??(1)、從收到的分組的首部提取目的IP 地址 D。
??(2)、先用各網(wǎng)絡(luò)的子網(wǎng)掩碼和 D逐位相“與”,看是否和相應(yīng)的網(wǎng)絡(luò)地址匹配。若匹配,則將分組直接交付。否則就是間接交付,執(zhí)行(3)。
??(3)、若路由表中有目的地址為 D的特定主機路由,則將分組傳送給指明的下一跳路由器;否則,執(zhí)行(4)。
??(4)、對路由表中的每一行的子網(wǎng)掩碼和 D 逐位相“與”,若其結(jié)果與該行的目的網(wǎng)絡(luò)地址匹配,則將分組傳送給該行指明的下一跳路由器;否則,執(zhí)行(5)。
??(5)、若路由表中有一個默認路由,則將分組傳送給路由表中所指明的默認路由器;否則,執(zhí)行(6)。
??(6)、報告轉(zhuǎn)發(fā)分組出錯。
68.5、地址解析協(xié)議ARP
??已知主機的IP地址,如何獲取其相應(yīng)的硬件地址。地址解析協(xié)議ARP是在主機ARP高速緩存中存放一個從IP地址到硬件地址的映射表,并且這個表還經(jīng)常動態(tài)更新(新增或超時刪除)。每個主機都設(shè)有一個ARP高速緩存(ARP cache)。里面有本局域網(wǎng)上的各主機和路由器的IP地址到硬件地址的映射表。
??ARP 解決的是同一個局域網(wǎng)內(nèi),主機或路由器的 IP 地址和 MAC 地址的映射問題。如果源主機和目的主機在同一個局域網(wǎng)內(nèi)(目標 IP 和本機 IP 分別與子網(wǎng)掩碼相與的結(jié)果相同,那么它們在一個子網(wǎng) ),就可以用 ARP 找到目的主機的 MAC 地址;如果不在一個局域網(wǎng)內(nèi),用 ARP 協(xié)議找到本網(wǎng)絡(luò)內(nèi)的一個路由器的 MAC 地址,剩下的工作由這個路由器來完成。
??ARP 協(xié)議的具體內(nèi)容是:
??01、每個主機都會有ARP高速緩存,存儲本局域網(wǎng)內(nèi)IP地址和MAC地址之間的對應(yīng)關(guān)系。
??02、當源主機要發(fā)送數(shù)據(jù)時,首先檢查 ARP 高速緩存中是否有對應(yīng) IP 地址的目的主機的MAC 地址,如果有,則直接發(fā)送數(shù)據(jù),如果沒有,就向本網(wǎng)段的所有主機發(fā)送 ARP 請求分組,該數(shù)據(jù)包包括的內(nèi)容有:(源主機 IP 地址,源主機 MAC 地址,目的主機的 IP 地址)。
??03、當本網(wǎng)絡(luò)的所有主機收到該 ARP 請求分組時,首先檢查數(shù)據(jù)包中的 IP 地址是否是自己的 IP 地址,如果不是,則忽略該數(shù)據(jù)包;如果是,則首先從數(shù)據(jù)包中取出源主機的 IP 地址和 MAC 地址寫入到 ARP 高速緩存中,如果已經(jīng)存在,則覆蓋,然后將自己的MAC 地址寫入 ARP 響應(yīng)包中,告訴源主機自己是它想要找的 MAC 地址。
??04、源主機收到 ARP 響應(yīng)分組后,將目的主機的 IP 和 MAC 地址寫入 ARP 高速緩存中,并利用此信息發(fā)送數(shù)據(jù)。如果源主機一直沒有收到 ARP 響應(yīng)分組,表示 ARP 查詢失敗。

??注意:主機的用戶對這種地址解析的過程是不知道的,ARP協(xié)議會自動解析所需要的硬件地址。
??問題:為什么不直接使用硬件地址通信,而是要使用抽象的IP地址,并調(diào)用ARP來尋址相應(yīng)的硬件地址?
??由于全世界存在著各式各樣的網(wǎng)絡(luò),它們使用不同的硬件地址。要使這些異構(gòu)的網(wǎng)絡(luò)能夠互相通信就必須進行非常復(fù)雜的硬件地址轉(zhuǎn)換工作,因此由用戶或用戶主機來完成這項工作幾乎是不可能的事。但是統(tǒng)一的IP地址把這個復(fù)雜的問題解決了。