Java常見(jiàn)面試題匯總-----------計(jì)算機(jī)網(wǎng)絡(luò)(網(wǎng)絡(luò)分層與IP地址)

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

??(1)、物理層----定義了為建立、維護(hù)和拆除物理鏈路所需的機(jī)械的、電氣的、功能的和規(guī)程的特性,其作用是使原始的數(shù)據(jù)比特流能在物理媒體上傳輸。具體涉及接插件的規(guī)格、“0”、“1”信號(hào)的電平表示、收發(fā)雙方的協(xié)調(diào)等內(nèi)容。
??(2)、數(shù)據(jù)鏈路層----比特流被組織成數(shù)據(jù)鏈路協(xié)議數(shù)據(jù)單元(通常稱(chēng)為幀),并以其為單位進(jìn)行傳輸,幀中包含地址、控制、數(shù)據(jù)及校驗(yàn)碼等信息。數(shù)據(jù)鏈路層的主要作用是通過(guò)校驗(yàn)、確認(rèn)和反饋重發(fā)等手段,將不可靠的物理鏈路改造成對(duì)網(wǎng)絡(luò)層來(lái)說(shuō)無(wú)差錯(cuò)的數(shù)據(jù)鏈路。數(shù)據(jù)鏈路層還要協(xié)調(diào)收發(fā)雙方的數(shù)據(jù)傳輸速率,即進(jìn)行流量控制,以防止接收方因來(lái)不及處理發(fā)送方來(lái)的高速數(shù)據(jù)而導(dǎo)致緩沖器溢出及線路阻塞。
??(3)、網(wǎng)絡(luò)層----數(shù)據(jù)以網(wǎng)絡(luò)協(xié)議數(shù)據(jù)單元(分組)為單位進(jìn)行傳輸。網(wǎng)絡(luò)層關(guān)心的是通信子網(wǎng)的運(yùn)行控制,主要解決如何使數(shù)據(jù)分組跨越通信子網(wǎng)從源傳送到目的地的問(wèn)題,這就需要在通信子網(wǎng)中進(jìn)行路由選擇。另外,為避免通信子網(wǎng)中出現(xiàn)過(guò)多的分組而造成網(wǎng)絡(luò)阻塞,需要對(duì)流入的分組數(shù)量進(jìn)行控制。當(dāng)分組要跨越多個(gè)通信子網(wǎng)才能到達(dá)目的地時(shí),還要解決網(wǎng)際互連的問(wèn)題。
??(4)、傳輸層----是第一個(gè)端--端,也即主機(jī)--主機(jī)的層次。傳輸層提供的端到端的透明數(shù)據(jù)運(yùn)輸服務(wù),使高層用戶(hù)不必關(guān)心通信子網(wǎng)的存在,由此用統(tǒng)一的運(yùn)輸原語(yǔ)書(shū)寫(xiě)的高層軟件便可運(yùn)行于任何通信子網(wǎng)上。傳輸層還要處理端到端的差錯(cuò)控制和流量控制問(wèn)題。
??(5)、會(huì)話層----是進(jìn)程--進(jìn)程的層次,其主要功能是組織和同步不同的主機(jī)上各種進(jìn)程間的通信(也稱(chēng)為對(duì)話)。會(huì)話層負(fù)責(zé)在兩個(gè)會(huì)話層實(shí)體之間進(jìn)行對(duì)話連接的建立和拆除。在半雙工情況下,會(huì)話層提供一種數(shù)據(jù)權(quán)標(biāo)來(lái)控制某一方何時(shí)有權(quán)發(fā)送數(shù)據(jù)。會(huì)話層還提供在數(shù)據(jù)流中插入同步點(diǎn)的機(jī)制,使得數(shù)據(jù)傳輸因網(wǎng)絡(luò)故障而中斷后,可以不必從頭開(kāi)始而僅重傳最近一個(gè)同步點(diǎn)以后的數(shù)據(jù)。
??(6)、表示層----為上層用戶(hù)提供共同的數(shù)據(jù)或信息的語(yǔ)法表示變換。為了讓采用不同編碼方法的計(jì)算機(jī)在通信中能相互理解數(shù)據(jù)的內(nèi)容,可以采用抽象的標(biāo)準(zhǔn)方法來(lái)定義數(shù)據(jù)結(jié)構(gòu),并采用標(biāo)準(zhǔn)的編碼表示形式。表示層管理這些抽象的數(shù)據(jù)結(jié)構(gòu),并將計(jì)算機(jī)內(nèi)部的表示形式轉(zhuǎn)換成網(wǎng)絡(luò)通信中采用的標(biāo)準(zhǔn)表示形式。數(shù)據(jù)壓縮和加密也是表示層可提供的表示變換功能。
??(7)、應(yīng)用層是開(kāi)放系統(tǒng)互連環(huán)境的最高層。不同的應(yīng)用層為特定類(lèi)型的網(wǎng)絡(luò)應(yīng)用提供訪問(wèn) OSI 環(huán)境的手段。網(wǎng)絡(luò)環(huán)境下不同主機(jī)間的文件傳送訪問(wèn)和管理(FTAM)、傳送標(biāo)準(zhǔn)電子郵件的文電處理系統(tǒng)(MHS)、使不同類(lèi)型的終端和主機(jī)通過(guò)網(wǎng)絡(luò)交互訪問(wèn)的虛擬終端(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
??會(huì)話層:RPC 、SQL、NETBIOS、NFS
??表示層:JPEG、MPEG、ASCII、MIDI
??應(yīng)用層:RIP、BGP、FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
??常見(jiàn)協(xié)議的端口:http 80,ftp 20、21,telnet 23,SMTP 25。



68、IP地址

68.1、IP地址的分類(lèi)

??整個(gè)的因特網(wǎng)就是一個(gè)單一的、抽象的網(wǎng)絡(luò)。IP地址就是給因特網(wǎng)上的每一個(gè)主機(jī)(或路由器)的每一個(gè)接口分配一個(gè)在全世界范圍內(nèi)唯一的32位的標(biāo)識(shí)符。
??所謂分類(lèi)的IP地址,就是將IP地址劃分為若干固定類(lèi),每一類(lèi)地址都由兩個(gè)固定長(zhǎng)度的字段組成,其中一個(gè)字段是網(wǎng)絡(luò)號(hào) net-id,它標(biāo)志主機(jī)(或路由器)所連接到的網(wǎng)絡(luò),一個(gè)網(wǎng)絡(luò)號(hào)在整個(gè)因特網(wǎng)范圍內(nèi)必須是唯一的。而另一個(gè)字段則是主機(jī)號(hào) host-id,它標(biāo)志該主機(jī)(或路由器),一個(gè)主機(jī)號(hào)在它前面的網(wǎng)絡(luò)號(hào)所指明的網(wǎng)絡(luò)范圍內(nèi)必須是唯一的。由此可見(jiàn),一個(gè)IP地址在整個(gè)因特網(wǎng)范圍內(nèi)是唯一的。
??由于一個(gè)路由器至少應(yīng)當(dāng)連接到兩個(gè)網(wǎng)絡(luò)(這樣它才能將 IP 數(shù)據(jù)報(bào)從一個(gè)網(wǎng)絡(luò)轉(zhuǎn)發(fā)到另一個(gè)網(wǎng)絡(luò)),因此一個(gè)路由器至少應(yīng)當(dāng)有兩個(gè)不同的 IP 地址。路由器只根據(jù)目的站的IP 地址的網(wǎng)絡(luò)號(hào)進(jìn)行路由選擇。
??用轉(zhuǎn)發(fā)器或網(wǎng)橋連接起來(lái)的若干個(gè)局域網(wǎng)仍為一個(gè)網(wǎng)絡(luò),因此這些局域網(wǎng)都具有同樣的網(wǎng)絡(luò)號(hào)。
??兩級(jí)的 IP 地址可以記為:IP 地址 :: = { <網(wǎng)絡(luò)號(hào)>, <主機(jī)號(hào)>}

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

68.2、IP地址與硬件地址

??硬件地址是數(shù)據(jù)鏈路層和物理層使用的地址,而IP地址是網(wǎng)絡(luò)層和以上各層使用的地址,是一種邏輯地址。


??發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)從高層下到低層,然后才到通信鏈路上傳輸。使用IP地址的IP數(shù)據(jù)報(bào)一旦交給了數(shù)據(jù)鏈路層,就被封裝成了MAC幀。MAC幀在傳送時(shí)使用的源地址和目的地址都是硬件地址,這兩個(gè)硬件地址都寫(xiě)在MAC幀的首部。
??連接在通信鏈路上的設(shè)備在接受MAC幀時(shí),其根據(jù)是MAC幀首部中的硬件地址。在數(shù)據(jù)鏈路層看不見(jiàn)隱藏在MAC幀的數(shù)據(jù)中的IP地址。只有在剝?nèi)チ薓AC幀的首部和尾部后把MAC層的數(shù)據(jù)上交給網(wǎng)絡(luò)層后,網(wǎng)絡(luò)層才能在IP數(shù)據(jù)報(bào)的首部中找到源IP地址和目的IP地址。

68.3、劃分子網(wǎng)

??一個(gè)擁有許多物理網(wǎng)絡(luò)的單位,可將所屬的物理網(wǎng)絡(luò)劃分為若干個(gè)子網(wǎng)(subnet)。劃分子網(wǎng)純屬一個(gè)單位內(nèi)部的事情。單位對(duì)外仍然表現(xiàn)為一個(gè)網(wǎng)絡(luò)。
??劃分子網(wǎng)的方法是從主機(jī)號(hào)借用若干個(gè)位作為子網(wǎng)號(hào) subnet-id,而主機(jī)號(hào) host-id 也就相應(yīng)減少了若干個(gè)位。于是兩級(jí)IP地址在本單位內(nèi)部就變?yōu)槿?jí)IP地址:網(wǎng)絡(luò)號(hào)、子網(wǎng)號(hào)和主機(jī)號(hào)。
??IP地址 ::= {<網(wǎng)絡(luò)號(hào)>, <子網(wǎng)號(hào)>, <主機(jī)號(hào)>}
??凡是從其他網(wǎng)絡(luò)發(fā)送給本單位某個(gè)主機(jī)的 IP數(shù)據(jù)報(bào),仍然是根據(jù) IP 數(shù)據(jù)報(bào)的目的網(wǎng)絡(luò)號(hào) net-id,先找到連接在本單位網(wǎng)絡(luò)上的路由器。然后此路由器在收到 IP 數(shù)據(jù)報(bào)后,再按目的網(wǎng)絡(luò)號(hào) net-id 和子網(wǎng)號(hào) subnet-id 找到目的子網(wǎng)。最后就將 IP 數(shù)據(jù)報(bào)直接交付目的主機(jī)。
??下面通過(guò)一個(gè)例子來(lái)展示劃分子網(wǎng)的方法與效果。
??下圖表示某單位擁有一個(gè)B類(lèi)IP地址,網(wǎng)絡(luò)地址是145.13.0.0(網(wǎng)絡(luò)號(hào)是145.13)。


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


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


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


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


??應(yīng)當(dāng)注意,劃分子網(wǎng)后,路由表必須包含以下三項(xià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的特定主機(jī)路由,則將分組傳送給指明的下一跳路由器;否則,執(zhí)行(4)。
??(4)、對(duì)路由表中的每一行的子網(wǎng)掩碼和 D 逐位相“與”,若其結(jié)果與該行的目的網(wǎng)絡(luò)地址匹配,則將分組傳送給該行指明的下一跳路由器;否則,執(zhí)行(5)。
??(5)、若路由表中有一個(gè)默認(rèn)路由,則將分組傳送給路由表中所指明的默認(rèn)路由器;否則,執(zhí)行(6)。
??(6)、報(bào)告轉(zhuǎn)發(fā)分組出錯(cuò)。

68.5、地址解析協(xié)議ARP

??已知主機(jī)的IP地址,如何獲取其相應(yīng)的硬件地址。地址解析協(xié)議ARP是在主機(jī)ARP高速緩存中存放一個(gè)從IP地址到硬件地址的映射表,并且這個(gè)表還經(jīng)常動(dòng)態(tài)更新(新增或超時(shí)刪除)。每個(gè)主機(jī)都設(shè)有一個(gè)ARP高速緩存(ARP cache)。里面有本局域網(wǎng)上的各主機(jī)和路由器的IP地址到硬件地址的映射表。
??ARP 解決的是同一個(gè)局域網(wǎng)內(nèi),主機(jī)或路由器的 IP 地址和 MAC 地址的映射問(wèn)題。如果源主機(jī)和目的主機(jī)在同一個(gè)局域網(wǎng)內(nèi)(目標(biāo) IP 和本機(jī) IP 分別與子網(wǎng)掩碼相與的結(jié)果相同,那么它們?cè)谝粋€(gè)子網(wǎng) ),就可以用 ARP 找到目的主機(jī)的 MAC 地址;如果不在一個(gè)局域網(wǎng)內(nèi),用 ARP 協(xié)議找到本網(wǎng)絡(luò)內(nèi)的一個(gè)路由器的 MAC 地址,剩下的工作由這個(gè)路由器來(lái)完成。
??ARP 協(xié)議的具體內(nèi)容是:
??01、每個(gè)主機(jī)都會(huì)有ARP高速緩存,存儲(chǔ)本局域網(wǎng)內(nèi)IP地址和MAC地址之間的對(duì)應(yīng)關(guān)系。
??02、當(dāng)源主機(jī)要發(fā)送數(shù)據(jù)時(shí),首先檢查 ARP 高速緩存中是否有對(duì)應(yīng) IP 地址的目的主機(jī)的MAC 地址,如果有,則直接發(fā)送數(shù)據(jù),如果沒(méi)有,就向本網(wǎng)段的所有主機(jī)發(fā)送 ARP 請(qǐng)求分組,該數(shù)據(jù)包包括的內(nèi)容有:(源主機(jī) IP 地址,源主機(jī) MAC 地址,目的主機(jī)的 IP 地址)。
??03、當(dāng)本網(wǎng)絡(luò)的所有主機(jī)收到該 ARP 請(qǐng)求分組時(shí),首先檢查數(shù)據(jù)包中的 IP 地址是否是自己的 IP 地址,如果不是,則忽略該數(shù)據(jù)包;如果是,則首先從數(shù)據(jù)包中取出源主機(jī)的 IP 地址和 MAC 地址寫(xiě)入到 ARP 高速緩存中,如果已經(jīng)存在,則覆蓋,然后將自己的MAC 地址寫(xiě)入 ARP 響應(yīng)包中,告訴源主機(jī)自己是它想要找的 MAC 地址。
??04、源主機(jī)收到 ARP 響應(yīng)分組后,將目的主機(jī)的 IP 和 MAC 地址寫(xiě)入 ARP 高速緩存中,并利用此信息發(fā)送數(shù)據(jù)。如果源主機(jī)一直沒(méi)有收到 ARP 響應(yīng)分組,表示 ARP 查詢(xún)失敗。

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容