網(wǎng)絡(luò)層的出現(xiàn)也是網(wǎng)絡(luò)發(fā)展的結(jié)果。當(dāng)數(shù)據(jù)通信需要跨越網(wǎng)段并且有多個(gè)通信路徑可供選擇時(shí),這就產(chǎn)生了如何連接任意兩臺(tái)主機(jī)進(jìn)行遠(yuǎn)距離數(shù)據(jù)傳輸?shù)膯?wèn)題。網(wǎng)絡(luò)層的IP協(xié)議很好地解決了這個(gè)問(wèn)題。這里需要先了解IP協(xié)議和IP數(shù)據(jù)單元的格式,然后再分析IP協(xié)議的工作原理。1. IP協(xié)議
IP協(xié)議(Internet Protocol,網(wǎng)際協(xié)議)是互聯(lián)網(wǎng)互連協(xié)議。 IP 協(xié)議是一組應(yīng)遵循的約定或規(guī)則,以使所有連接到Internet 的計(jì)算機(jī)能夠相互通信。這套規(guī)則保證了跨網(wǎng)連接、跨網(wǎng)尋址、跨網(wǎng)數(shù)據(jù)轉(zhuǎn)發(fā)等功能的實(shí)現(xiàn)。因此,它是網(wǎng)絡(luò)層中最重要的協(xié)議。它與TCP 協(xié)議一起構(gòu)成了TCP/IP 協(xié)議族的核心。 IP協(xié)議在網(wǎng)絡(luò)層提供無(wú)連接、不可靠的數(shù)據(jù)傳輸服務(wù)。
什么是無(wú)連接、不可靠的數(shù)據(jù)傳輸?
在網(wǎng)絡(luò)層傳輸IP數(shù)據(jù)包就像我們?nèi)粘I钪性卩]局發(fā)送的普通信件一樣。每一封普通信件都有一個(gè)明確的目的地地址。普通信件在傳輸過(guò)程中的路徑可能會(huì)有所不同。途中普通信件不保;寄件人和收件人之間沒(méi)有直接的限制關(guān)系(理解為斷開(kāi)連接),如果平信在傳輸過(guò)程中丟失(理解為不可靠),郵局概不負(fù)責(zé)。也就是說(shuō),IP數(shù)據(jù)包在網(wǎng)絡(luò)傳輸過(guò)程中,發(fā)送端網(wǎng)絡(luò)層和接收端網(wǎng)絡(luò)層之間不需要建立連接,發(fā)送端網(wǎng)絡(luò)層也不需要建立連接。關(guān)心IP數(shù)據(jù)包是否發(fā)送到接收端的網(wǎng)絡(luò)層。2. IP數(shù)據(jù)單元格式
IP協(xié)議的數(shù)據(jù)單元也很復(fù)雜,如圖4-14所示。 IP協(xié)議頭主要由12個(gè)字段組成,從傳輸層傳下來(lái)的數(shù)據(jù)單元構(gòu)成了網(wǎng)絡(luò)層的IP數(shù)據(jù)報(bào),也稱(chēng)為IP包。 IP協(xié)議頭的組成,每行32位,各字段含義解釋如下。版本(Version):是指IP協(xié)議版本號(hào),目前是4,是指IPv4a頭的長(zhǎng)度(Internet Header Length,IH L):是指IF協(xié)議頭的長(zhǎng)度,有4個(gè)B為一個(gè)單位,最小值為5,即最小的IP協(xié)議頭有20個(gè)字節(jié)(沒(méi)有選項(xiàng)時(shí))。
服務(wù)類(lèi)型(TOS):由8位組成,不同位置的位設(shè)置可以代表不同的服務(wù)類(lèi)型。有數(shù)據(jù)優(yōu)先級(jí)(現(xiàn)在忽略)、低延遲、高吞吐量、高可靠性和最低費(fèi)用等類(lèi)型的服務(wù),否則就是一般服務(wù)。
總長(zhǎng)度(Total Length,TL):是指整個(gè)中頻包的長(zhǎng)度,在B中。利用協(xié)議頭的長(zhǎng)度和總長(zhǎng)度,可以知道中頻包中數(shù)據(jù)的起始位置和長(zhǎng)度.
標(biāo)識(shí)(Identification) : 標(biāo)識(shí)主機(jī)發(fā)送的每個(gè)中頻數(shù)據(jù)包的代碼(ID),占16位。通常,每發(fā)送一個(gè)IP 數(shù)據(jù)包,其值都會(huì)增加1。
中頻報(bào)文是網(wǎng)絡(luò)層傳輸?shù)臄?shù)據(jù)單元,不同的網(wǎng)絡(luò)類(lèi)型在鏈路層具有最大傳輸單元(MTU)限制的特點(diǎn)。比如以太網(wǎng)的MTU是1500B,這個(gè)1500B就是網(wǎng)絡(luò)層的IP協(xié)議數(shù)據(jù)單元。最大值。如果IP包的總長(zhǎng)度超過(guò)MTU,網(wǎng)絡(luò)層會(huì)對(duì)IF包進(jìn)行分片,使每個(gè)包的長(zhǎng)度小于等于MTU。此時(shí),IF包被分片后,16位的標(biāo)識(shí)符會(huì)被復(fù)制到每個(gè)分片中。在接收端,數(shù)據(jù)報(bào)分片重組的依據(jù)就是這個(gè)ID。
R: 保留未使用。
DF(Don't Fragment) : IP包未分片標(biāo)志,占1位。值為1 表示網(wǎng)絡(luò)層不會(huì)對(duì)IP 數(shù)據(jù)包進(jìn)行分段。
MF(More Fragment) : 報(bào)紙標(biāo)志。值為0 表示當(dāng)前數(shù)據(jù)報(bào)是最后一塊;值為1 表示它不是最后一塊,以后還會(huì)有其他塊。
分片偏移量(Fragment Offset,F(xiàn)O) : 分片偏移原始數(shù)據(jù)報(bào)開(kāi)頭的位置。偏移字節(jié)數(shù)是偏移值乘以8。
另外,當(dāng)IP包被分片時(shí),需要將每個(gè)分片的總長(zhǎng)度值改為分片的長(zhǎng)度值。接收端收到最后一個(gè)分片,根據(jù)其長(zhǎng)度和分片偏移量計(jì)算出數(shù)據(jù)報(bào)的總長(zhǎng)度,并與所有到達(dá)分片的長(zhǎng)度之和進(jìn)行比較,判斷分片的完整性,然后重新組裝。
Time To Live (TTL) : 設(shè)置了IP數(shù)據(jù)包最多可以通過(guò)的路由器數(shù)量(TTL的單位請(qǐng)參考第十一章問(wèn)題4-5的解釋?zhuān)?TTL的初始值由源主機(jī)設(shè)置,經(jīng)過(guò)路由器后減1。當(dāng)該字段的值為0時(shí),IP包被路由器丟棄,并發(fā)送ICMP報(bào)文通知源主機(jī)。
協(xié)議(Protocol,PROT) : 表示上層的協(xié)議類(lèi)型。具體指TCP或UDP的協(xié)議編碼。
包頭校驗(yàn)和(Header checksum) :是根據(jù)IP協(xié)議包頭計(jì)算的“校驗(yàn)和”碼。如果“校驗(yàn)和”錯(cuò)誤,則丟棄IP 數(shù)據(jù)包,但不會(huì)生成錯(cuò)誤消息。重傳控制將由傳輸層控制,以檢測(cè)丟棄的數(shù)據(jù)報(bào)并重傳它們。
源IP地址: 每個(gè)Ip包必須包含發(fā)送方的
源IP地址,是一個(gè)32bit的值。目的IP地址:每個(gè)IP包也都需要包含接收端的IP地址,也是一個(gè)32bit的值。
可選字段(Options):一個(gè)可變長(zhǎng)的選項(xiàng),用于安全、調(diào)試等,也為以后擴(kuò)展或升級(jí)之用(該字段的應(yīng)用請(qǐng)參見(jiàn)第11章問(wèn)題4-6解釋)。
填充(Padding):在必要時(shí)插人一定的填充字節(jié),以確保IP協(xié)議頭始終是32bit的整數(shù)倍。
數(shù)據(jù):是傳輸層提交下來(lái)的協(xié)議數(shù)據(jù)單元。
從IP包的協(xié)議頭可知,IP協(xié)議頭的大小有兩種:當(dāng)沒(méi)有“選項(xiàng)”這個(gè)域時(shí),為160位即20個(gè)字節(jié);當(dāng)有“選項(xiàng)”域時(shí),為192位即24個(gè)字節(jié)。
3. IP協(xié)議的工作原理
IP是怎樣實(shí)現(xiàn)網(wǎng)絡(luò)互聯(lián)的?
早期各公司的網(wǎng)絡(luò)系統(tǒng)不能互通,也不能互連。原因是它們?cè)诟髯跃W(wǎng)絡(luò)中所傳送的數(shù)據(jù)基本單元(即數(shù)據(jù)幀)的格式不同。有了IP協(xié)議,不同的網(wǎng)絡(luò)系統(tǒng)實(shí)現(xiàn)了互聯(lián)??梢赃@樣理解lip協(xié)議就是一套由程序構(gòu)成的協(xié)議軟件,它把各種不同的“數(shù)據(jù)幀”統(tǒng)一轉(zhuǎn)換成“IP包”格式,實(shí)現(xiàn)在互聯(lián)網(wǎng)上的傳送。這種轉(zhuǎn)換是Internet的一個(gè)最重要的特點(diǎn),它使異種網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)也能在Internet上實(shí)現(xiàn)相互通信,也使Internet具有了真正意義上的“開(kāi)放性”特征。
那么,"IP包"是什么?
由IP數(shù)據(jù)單元格式的構(gòu)成可見(jiàn),IP包就是一個(gè)無(wú)連接的,并且是獨(dú)立的數(shù)據(jù)傳輸單元,它攜帶了數(shù)據(jù)來(lái)自哪里,以及將要送到哪里等明確的標(biāo)識(shí)(即IP地址)。這樣,IP包在網(wǎng)絡(luò)間傳送時(shí),就不需要一定先建立一條數(shù)據(jù)通道,而是每個(gè)IP包都可經(jīng)由不同的傳輸路徑獨(dú)立地向目的地傳送。
【舉例】如圖4-15所示,IP協(xié)議的基本工作原理分析。當(dāng)通信兩端(主機(jī)A和主機(jī)B)位于不同的網(wǎng)絡(luò)時(shí),數(shù)據(jù)的傳送需要經(jīng)由路由器跨網(wǎng)傳遞。發(fā)送端A只需將IP包(需要分片時(shí)先分片處理)交給第一路由器RI即可。路由器R1根據(jù)IP包攜帶的目的標(biāo)識(shí),進(jìn)行路徑選擇并轉(zhuǎn)發(fā)給下一路由器(R2或R3).下一路由器再轉(zhuǎn)發(fā)到其下一路由器R4,路由器R4最后將IP包傳送到目的主機(jī)。在目的主機(jī)B端,收到IP包后進(jìn)行協(xié)議頭校驗(yàn)和檢驗(yàn),將檢驗(yàn)失敗的IP包.直接丟棄(不會(huì)向發(fā)送端回送任何差錯(cuò)報(bào)文);將校驗(yàn)無(wú)誤的IP包提取數(shù)據(jù)報(bào)數(shù)據(jù)直接交給上層傳輸層。
由此可見(jiàn),在網(wǎng)絡(luò)層IP包的傳送不僅是無(wú)連接的,而且目的端IP包的到達(dá)是無(wú)序的,并且是不可靠的。
4.網(wǎng)絡(luò)層其他協(xié)議
在網(wǎng)絡(luò)層,除了非常重要的IP協(xié)議之外,還有兩個(gè)比較重要的協(xié)議在此簡(jiǎn)單介紹如下。
1)ICMP協(xié)議
ICMP(Internet Control Message Protocollnternet,網(wǎng)際控制消息協(xié)議)是TCP/IP協(xié)議族的一個(gè)子協(xié)議,主要用于在主機(jī)、路由器之間傳遞控制信息。這些控制消息是指網(wǎng)絡(luò)本身的消息,如網(wǎng)絡(luò)是否通暢、主機(jī)是否可達(dá)、路由是否可用、IP包路由傳送已超過(guò)“生存時(shí)間”等,還包括報(bào)告錯(cuò)誤、交換受限等控制和狀態(tài)信息.這些控制消息雖然并不傳輸用戶(hù)數(shù)據(jù),但是對(duì)于用戶(hù)數(shù)據(jù)的傳遞起著重要的作用。
在網(wǎng)絡(luò)應(yīng)用中,我們經(jīng)常會(huì)得到ICMP提供的消息,只不過(guò)常常被忽略了而已。如某主機(jī)處于關(guān)閉或維護(hù)狀態(tài),不提供網(wǎng)絡(luò)服務(wù)時(shí),ICMP就可以對(duì)發(fā)起的TCP連接給出一個(gè)終止(Destination Unreachable)通告,告知主機(jī)不可達(dá)。又如我們?cè)跈z查網(wǎng)絡(luò)是否通暢時(shí),常常使用ping命令,這個(gè)命令就是一項(xiàng)基于ICMP協(xié)議的應(yīng)用,ping命令返回的信息均是由ICMP協(xié)議提供的報(bào)告。
2) ARP協(xié)議
ARP(Address Resolution Protocol,地址解析協(xié)議)用于通過(guò)主機(jī)的網(wǎng)絡(luò)地址(即32位的IP地址)解析出該主機(jī)的物理地址(即48位的MAC地址)。
在Internet網(wǎng)中,網(wǎng)絡(luò)層之下是網(wǎng)絡(luò)訪問(wèn)層,其對(duì)應(yīng)于局域網(wǎng)的數(shù)據(jù)鏈路層和物理層。在數(shù)據(jù)鏈路層中,數(shù)據(jù)通信是以“數(shù)據(jù)幀”為傳輸單位,而“數(shù)據(jù)幀”的尋址方式是依據(jù)通信兩端點(diǎn)的MAC地址來(lái)實(shí)現(xiàn)的。因此,網(wǎng)絡(luò)層的IP包進(jìn)人網(wǎng)絡(luò)訪問(wèn)層后,下一步的傳輸必須要知道下一鏈接點(diǎn)或目的節(jié)點(diǎn)的物理地址即MAC地址。如何找到下一鏈接點(diǎn)或目的節(jié)點(diǎn)的MAC地址,就是由ARP協(xié)議實(shí)現(xiàn)的。
我們專(zhuān)注高端建站,小程序開(kāi)發(fā)、軟件系統(tǒng)定制開(kāi)發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開(kāi)發(fā)、各類(lèi)API接口對(duì)接開(kāi)發(fā)等。十余年開(kāi)發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿(mǎn)意為止,多一次對(duì)比,一定讓您多一份收獲!