ip屬於計算機網路體系結構的什麼協定

2022-08-29 18:01:58

ip屬於計算機網路體系結構的「網路層」協定。IP指網際互連協定,是TCP/IP體系中的網路層協定,它可以向傳輸層提供各種協定的資訊,例如TCP、UDP等;對下可將IP資訊包放到鏈路層,通過乙太網、令牌環網路等各種技術來傳送。

本教學操作環境:windows7系統、Dell G3電腦。

ip屬於計算機網路體系結構的「網路層」協定。

IP協定簡述

IP指網際互連協定,Internet Protocol的縮寫,IP是整個TCP/IP協定族的核心,也是構成網際網路的基礎。IP位於TCP/IP模型的網路層(相當於OSI模型的網路層),它可以向傳輸層提供各種協定的資訊,例如TCP、UDP等;對下可將IP資訊包放到鏈路層,通過乙太網、令牌環網路等各種技術來傳送。

設計IP的目的是提高網路的可延伸性:一是解決網際網路問題,實現大規模、異構網路的互聯互通;二是分割頂層網路應用和底層網路技術之間的耦合關係,以利於兩者的獨立發展。根據端到端的設計原則,IP只為主機提供一種無連線、不可靠的、盡力而為的封包傳輸服務。

雖然IPV4終將會被IPV6替代,但是目前IPV4仍然是IP協定的主流版本,所以我們重點介紹一下IPV4版本。在學習TCP協定和socket通訊端程式設計的時候我們知道,如果想要在網際網路這個共用網路中精確定位到一臺主機,那麼就一定需要該主機的IP地址。主機是擁有IP地址,但是不能進行路由控制(Routing,意思是中轉、分組封包),路由器(Router)這種裝置既有IP地址,又可以進行路由控制;我們可以將接入網際網路中的主機和路由器都叫做節點。

舉個例子,我們普通人只有自己的地址,如果想要傳送快遞給朋友或者從別人那接受快遞,只能向郵遞員提供對方的地址或我們自己的地址,即我們只有地址標識,但是我們不能傳送快遞;而快遞員就像是路由器,他自己也有自己的地址,也可以收到他的私人快遞,但是他還可以將使用者的快遞,根據目的地不同,選擇不同的快遞線路進行運輸。下圖可以清楚表達IP協定在網路環境中的作用。

IP協定首部格式(IPV4)

和之前學習TCP、UDP協定一樣,先來介紹一下IP協定的首部格式

我們可以發現IP協定首部與TCP協定首部非常相似,如果沒有特殊情況,都是20個位元組,因此我們也經常會把兩者放在一起稱為TCP/IP協定。下面將IP協定首部每個欄位都詳細介紹一下:

  • 4位元版本號(Version):用來指定IP協定的版本,IPV4的版本號就是4,如果這個IP報文是IPV4版本,那麼這個欄位的值就是4,用4位元來標識就是0100。IPV6的版本號則是6。
  • 4位元首部長度(Internet Header Length):表明IP首部的大小,單位是4個位元組,length * 4的位元組數,因為這一欄位共4個位元位,所以這一欄位最大值為2 ^ 4 - 1即15,所以IP首部最大長度為15 * 4即60位元組;在預設情況下,該欄位被設定為5,所以預設IP首部20位元組。
  • 8位元服務型別(Type Of Service):前三位表示優先度(已經棄用),第4位元表示最低延遲、第5位表示最大吞吐、第6位表示最大可靠性、第7位表示最小代價,這四位互相沖突,只能選擇一個。需要根據不同情況進行選擇,如果是SSH/TELNET這類遠端登入,那麼就應該選擇最小延時,如果是FTP型別的程式,則應該選擇最大吞吐量;第8位元是保留位,目前沒有使用,必須填0。
  • 16位元總長度(Total Length):表示IP首部和後面攜帶的資料部分一共有多少個位元組。該欄位有16個位元位,因此IP資料包整體最大長度為65535個位元組。
  • 16位元標識(ID):唯一地標識主機傳送的報文,如果一份IP報文在資料鏈路層被分片,那麼每一片的該欄位應該都是相同值。幫助對端主機在接收後進行分片重組。
  • 3位標誌(Flag):第一位保留(保留的意思是現在不使用,未來如果需要的話再使用),必須填0;第二位用來指明是否可以分片,如果為0則可以分片,如果為1則不能分片,假如一個IP報文禁止分片且長度還大於了MTU(Maximum Transmission Unit最大傳輸單元,後面詳細介紹),則該本文只能被丟棄;如果報文被分片,第三位為1表示它是分片中段的報文,即後續還有分片報文,如果第三位為0則表示這是最後一片。
  • 13位片偏移(Fragment Offset):該欄位表示分片相對於原始IP報文開始處的偏移量,其實就是表示當前分片在原報文中所處的位置,第一個分片對應值為0。由於該欄位總共13個位元位,因此最多可以表示2 ^ 13即8192個相對位置。單位為8位元組,所以最大可以表示8192 * 8 = 65536個位元組的位置。
  • 8位元生存時間(Time To Live):資料包到達目的地的最大報文跳數(Hop,指網路中一個區間,IP封包正是在網路中一個跳間被轉發),一般為64,每次經過一個路由,TTL–,如果TTL == 0時還沒到達目的地,那麼這個報文就會被丟棄。這個欄位主要是為了防止出現路由迴圈,封包在一個迴圈中一直轉發,浪費網路資源。
  • 8位元協定(Protocol):表示IP的上層是什麼協定,我們熟知的TCP、UDP、ICMP等都是在IP上層的。
  • 16位元首部校驗和(Header Checksum):使用CRC進行校驗,鑑別IP首部是否收到損壞,如果損壞直接丟棄,它只校驗IP頭部,不校驗下面的內容,因為內容部分的校驗是上層傳輸層(TCP)需要考慮的,IP協定只要發現首部有問題就直接丟棄該報文。
  • 32位元源IP地址(Source Address):表示傳送端的IP。
  • 32位元目的IP地址(Destination Address):表示接收端的IP。
  • 選項欄位(Options):不定長,最大可以到40個位元組。
補充:分片與組裝

MTU(Maximum Transmission Unit最大傳輸單元)是在IP層下面的MAC協定中的概念,MAC協定我們可以理解為是物理層的一些協定,它位於IP協定的下層,那麼在傳送資料時相當於是使用者資料 + 應用層協定報頭(如HTTP請求報頭)作為有效載荷交給傳輸層(如TCP協定),TCP協定再將TCP報頭 + 應用層傳來的資料下交給IP層,IP層再將IP協定首部 + TCP層傳來的TCP報文交付給MAC幀。因此每個MAC幀其實是IP協定首部 + IP層的有效載荷。而MAC幀是有長度限制的,所以就要求IP資料包向下交付時並不是隨心所欲想發多長就發多長,如果MAC幀要求MTU為1500位元組,而IP封包總長度有2000位元組,那麼就需要分片,將原有的IP封包分成兩片,依次傳送,對端的主機在接收後,由對端的IP層再完成組裝。我們在Linux環境下可以使用ifconfig命令檢視到MTU。

image-20220425201023764

分片和組裝對於上層TCP/UDP和下層的MAC都是透明的,即上層和下層都不知道IP層將封包進行了分片操作,因此分片和組裝操作會由傳送方IP層和接收方IP層自動完成。但是分片意味著需要把一份資料變為多組資料傳輸,並且在對端還需要進行組裝,這樣會大大降低網路傳輸效率以及提升錯誤風險,因此在傳輸過程中應當儘量避免分片,即儘量不要傳送超過MTU長度的IP資料包。

IP地址

IP地址的定義:

IPV4中我們由32位元正整數來表示IP地址,計算機內部會直接以二進位制來儲存IP地址,不過人並不善於記憶二進位制整數,所以我們採用點分十進位制來記錄IP地址:即將32位元IP地址每8位元一組,分成4組,組間用’ . '進行分隔,再將每組轉換為十進位制。

因此我們可以直接算出,在IPV4標準下最多有2 ^ 32 = 4292967296個IP地址,但是能被人們使用的遠遠不足這個數位。(比如某些IP地址是有特殊作用被預留的,某些裝置如路由器會佔有多個IP地址)

IP地址的組成:

IP地址由網路標識(網路地址)和主機標識(主機地址)兩部分組成

我們查詢到一個IP地址的過程就像是去某個地方旅遊一樣,例如我們想要去天安門玩,不可能直接坐高鐵到達天安門,我們一定是先抵達北京市(目的網路),再通過北京市內的交通抵達天安門(目的主機)。因此我們在路由選擇時,應該先找到目標主機所在的區域網,再在該區域網中找到目標主機。這種方式可以快速幫我們定位到目標區域網,在區域網內搜尋目標主機就比在茫茫的網路中找一臺主機要快速多了。

網路號:保證互相連線的兩個網段具有不同的標識。

主機號:保證在同一個網段中,兩臺主機具有不同的標識。

IP地址的劃分:

IP地址劃分為五個級別,分別為A類、B類、C類、D類和E類(一直沒有使用過),所以目前我們所能見到的IP地址只有A、B、C、D四類。劃分的依據就是IP地址從第1位到第4位元的位元位。

  • A類地址:0.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

在不考慮E類IP地址的時候,我們可以發現,A、B、C、D類地址的網路號所佔位元位逐漸增加,而主機號所佔的位元位在逐漸減少。這就意味著上述四類地址中,一類地址中的子網數量越來越多,但是子網中可以連線的主機變得越來越少。以國內一所普通高校為例,全校師生大約3萬人,如果每個人都有一臺筆記型電腦需要連線到校園區域網中,有些同學還會有一些平板電腦等其他需要連線網路的終端裝置,那麼在申請網路時就應該以5~6萬個IP地址去申請,如果使用A類地址,那麼主機號24位元會產生2 ^ 24 = 16777216個IP地址,遠遠超過實際所需要的,如果使用C類地址,則只有2 ^ 8 = 256個IP地址,遠少於所需IP地址,所以最合適的是B類地址,有2 ^ 16 = 65536個IP地址。這個例子也告訴我們,IP地址不能太多,會造成大量浪費;也不能太少,否則很多裝置會無法連線網路。

引入子網掩碼:

隨著Internet的發展,使用前四位是否為1來分類的方案弊端開始顯現:那就是很多子網的申請者都會去申請B類網路地址,因為A類根本用不完,而C類不夠用。導致B類的網路地址很快就被分配完了。而申請了A類的網路又會浪費大量的IP地址,在這種情況下,人們提出了新的劃分方案:CIDR(Classless Interdomain Routing無型別域間選路)

  • 引入子網掩碼來區分網路號和主機號
  • 子網掩碼也是一個32位元的正整數,但結尾通常是一串0
  • 將IP地址與子網掩碼進行&操作,所得結果就是網路號
  • 網路號和主機號的劃分就與這個IP地址是A類、B類還是C類無關了

舉兩個例子幫助理解通過子網掩碼來劃分網路號和主機號

例一:
IP地址二進位制表達
140.252.20.681000 1100 1111 1100 0001 0100 0100 0100
子網掩碼二進位制表達
255.255.255.01111 1111 1111 1111 1111 1111 0000 0000

將IP地址與子網掩碼進行按位元與操作後得到1000 1100 1111 1100 0001 0100 0000 0000,再轉化為方便人們使用的點分十進位制為140.252.20.0,這就是該子網的網路號了。並且它的子網掩碼末尾的8個位元位為0,這個子網可以表示2 ^ 8 = 256臺主機,因此這個子網的地址範圍是140.252.20.0 ~ 140.252.20.255

例二:
IP地址二進位制表達
140. 252. 20. 681000 1100 1111 1100 0001 0100 0100 0100
子網掩碼二進位制表達
255.255.255.2401111 1111 1111 1111 1111 1111 1111 0000

將IP地址與子網掩碼進行按位元與操作後得到1000 1100 1111 1100 0001 0110 0100 0000,即該子網的網路號,同樣轉換成常用的點分十進位制為140.252.20.64,它的子網掩碼末尾的4個位元位為0,這個子網可以表示2 ^ 4 = 16臺主機,因此這個子網的地址範圍就是140.252.20.64 ~ 140.252.20.79

一些特殊的IP地址

  • 將IP地址中的主機地址全設定為0,即該區域網的網路號,這個IP地址代表這個區域網。
  • 將IP地址中的主機地址全設定為1,可以變成廣播地址,這個廣播地址可以給同一個鏈路中互相連線的所有主機傳送封包
  • 127.*的IP地址用於本地環回測試,通常是127.0.0.1

私有IP地址和公網IP地址

假如某個大學要在校園內部組建一個區域網,只實現校園內部的網路通訊而不與外界任何一臺機器進行通訊,那麼理論上2 ^ 32個IP地址都可以使用,因為只在這個區域網中,不會出現相同的IP地址。不過RFC1918規定了組建區域網的私有IP地址的規範:

  • 10.* 前8位元是網路號,共有16,777,216個地址
  • 172.16.*~172.31.* 前12位元是網路號,共有1,048,576個地址
  • 192.168.* 前16位元是網路號,共有65,536個地址

上述範圍內的IP地址都是私有IP,不在上述範圍內的IP則為全域性IP地址(公網IP地址)。

更多相關知識,請存取欄目!

VIP推薦:

以上就是ip屬於計算機網路體系結構的什麼協定的詳細內容,更多請關注TW511.COM其它相關文章!