TCP/IP基礎(二)

TCP/IP基礎(二) – IP協議

IP地址的定義

IP地址(IPv4地址)由32位正整數來表示。TCP/IP通信要求將這樣的IP地址分配給每一個參與通信的主機。IP地址在計算機內部以二進制
(二進制是指用0、1表示數字的方法) 方式被處理。然而,由於人類社會並不習慣於採用二進制方式,需要採用一種特殊的標記方式。那
就是將32位的IP地址以每8位爲一組,分成4組,每組以“.”隔開,再將每組數轉換爲十進制數(這種方法也叫做“十進制點符號”() 。下面舉例說明這一方法。
ip

IP地址的組成: 網絡地址 + 主機地址

IP地址由“網絡標識(網絡地址)”和“主機標識(主機地址)”兩部分組成。例如:192.168.128.10/24中的“/24”表示從第1位開始到多少位屬於網絡標識。在這個例子中,192.168.128之前的都是該IP的網絡地址,10表示主機地址。
iPhone
ip3

IP地址的分類

IP地址分爲四個級別,分別爲A類、B類、C類、D類(還有一個一直未使用的E類。) 。它根據IP地址中從第1位到第4位的比特列對其網絡標識和主機標識進行區分。

  • A類地址
    A類IP地址是首位以“0”開頭的地址。從第1位到第8位(去掉分類位剩下7位。) 是它的網絡標識。
    用十進制表示的話,0.0.0.0~127.0.0.0是A類的網絡地址。A類地址的後24位相當於主機標識。
    因此,一個網段內可容納的主機地址上限爲16,777,214個。
  • B類地址
    B類IP地址是前兩位爲“10”的地址。從第1位到第16位(去掉分類位剩下14位)是它的網絡標識。
    用十進制表示的話,128.0.0.1~191.255.0.0是B類的網絡地址。B類地址的後16位相當於主機標識。
    因此,一個網段內可容納的主機地址上限爲65,534個。
  • C類地址
    C類IP地址是前三位爲“110”的地址。從第1位到第24位(去掉分類位剩下21位)是它的網絡標識。
    用十進制表示的話,192.168.0.0~239.255.255.0是C類的網絡地址。C類地址的後8位相當於主機標識。
    因此,一個網段內可容納的主機地址上限爲254個。
  • D類地址
    D類IP地址是前四位爲“1110”的地址。從第1位到第32位(去掉分類位剩下28位)是它的網絡標識。
    用十進制表示的話,224.0.0.0~239.255.255.255是D類的網絡地址。D類地址沒有主機標識,常被用於多播。
    ip4
    Note:
    在分配IP地址時關於主機標識有一點需要注意。即要用比特位表示主機地址時,不可以全部爲0全部爲1。因爲全部爲只有0在表示對應
    的網絡地址或IP地址不可獲知的情況下才使用。而全部爲1的主機地址通常作爲廣播地址。
    因此,在分配過程中,應該去掉這兩種情況。這也是爲什麼C類地址每個網段最多只能有254(28 -2=254)個主機地址的原因。

廣播地址

廣播地址用於在同一個鏈路中相互連接的主機之間發送數據包。將IP地址中的主機地址部分全部設置爲1,就成爲了廣播地址。
例如在以太網中,如果將MAC地址的所有位都改爲1,則形成FF:FF:FF:FF:FF:FF的廣播地址。因此,廣播的IP包以數據鏈路的幀的形式發送時,得通過MAC地址爲全1比特的FF:FF:FF:FF:FF:FF轉發
例子:
172.20.0.0/16用二進制表示如下:
10101100.00010100.00000000.00000000   (二進制)
將這個地址的主機部分全部改爲1,則形成廣播地址:
10101100.00010100.11111111.11111111   (二進制)
再將這個地址用十進制表示,則爲172.20.255.255。

廣播分爲本地廣播和直接廣播兩種。

  • 本地廣播
    在本網絡內的廣播叫做本地廣播。例如網絡地址爲192.168.0.0/24的情況下,廣播地址是192.168.0.255。因爲這個廣播地址的IP包會被路由器屏蔽,所以不會到達192.168.0.0/24以外的其他鏈路上。
  • 直接廣播
    在不同網絡之間的廣播叫做直接廣播。例如網絡地址爲192.168.0.0/24的主機向192.168.1.255/24的目標地址發送IP包。收到這個包的路由器,將數據轉發給192.168.1.0/24,從而使得所有192.168.1.1~192.168.1.254的主機都能收到這個包(由於直接廣播有一定的安全問題,多數情況下會在路由器上設置爲不轉發) 。
    ip5

IP多播

爲什麼要使用多播 ?同時發送提高效率
在人們使用多播功能之前,一直採用廣播的方式。那時廣播將數據發給所有終端主機,再由這些主機IP之上的一層去判斷是否有必要接收數據。是則接收,否則丟棄。
然而這種方式會給那些毫無關係的網絡或主機帶來影響,造成網絡上很多不必要的流量。況且由於廣播無法穿透路由,若想給其他網段發送同樣的包,就不得不採取另一種機制。因此,多播這種既可以穿透路由器,又可以實現只給那些必要的組發送據包的技術就成爲必選之路了。 ip7
IP多播與地址
多播使用D類地址。因此,如果從首位開始到第4位是“1110”,就可以認爲是多播地址。而剩下的28位可以成爲多播的組編號。
224.0.0.0239.255.255.255都是多播地址的可用範圍。其中從224.0.0.0到224.0.0.255的範圍不需要路由控制,在同一個鏈路內也能實現多播。而在這個範圍之外設置多播地址會給全網所有組內成員發送多播的包,可以利用生存時間TTL,Time To Live限制包的到達範圍。
利用IP多播實現通信,除了地址外還需要IGMP(Internet GroupManagement Protocol) 等協議的支持.下面是目前已知組播地址:
zbdiz

子網掩碼

**爲什麼會出現子網掩碼?**A類,B類會造成IP的浪費.
網絡標識相同的計算機必須同屬於同一個鏈路。例如,架構B類IP網絡時,理論上一個鏈路內允許6萬5千多臺計算機連接。然而,在實際網絡架構當中,一般不會有在同一個鏈路上連接6萬5千多臺計算機的情況。
因此,這種網絡結構實際上是不存在的。直接使用A類或B類地址,確實有些浪費。隨着互聯網的覆蓋範圍逐漸增大,網絡地址會越來越不足以應對需求,直接使用A類、B類、C類地址就更加顯得浪費資源。爲此,人們已經開始一種新的組合方式以減少這種浪費。

子網與子網掩碼
一個IP地址的網絡標識和主機標識已不再受限於該地址的類別,而是由一個叫做**“子網掩碼”**的識別碼通過子網網絡地址細分出比A類、B類、C類更小粒度的網絡。這種方式實際上就是將原來A類、B類C類等分類中的主機地址部分用作子網地址,可以將原網絡分爲多個物理網絡的一種機制。
子網掩碼有兩種表示方式:

  • 它將IP地址與子網掩碼的地址分別用兩行來表示。
    ip9
  • 它在每個IP地址後面追加網絡地址的位數 用“/”隔開,這種方式也叫“後綴”表示法。
    IP0

全局地址與私有地址

隨着互聯網的迅速普及,IP地址不足的問題日趨顯著。如果一直按照現行的方法採用唯一地址的話,會有IP地址耗盡的危險。於是就出現了一種新技術。它不要求爲每一臺主機或路由器分配一個固定的IP地址,而是在必要的時候只爲相應數量的設備分配唯一的IP地址。尤其對於那些沒有連接互聯網的獨立網絡中的主機,只要保證在這個網絡內地址唯一,可以不用考慮互聯網即可配置相應的IP地址。不過,即使讓每個獨立的網絡各自隨意地設置IP地址,也可能會有問題(例如因運維方案發生變化該網絡需要連接到互聯網時,或者不小心誤被連接到了互聯網時,再例如連接兩個本來就各自獨立的網絡時,都容易發生地址衝突。) 。於是又出現了私有網絡的IP地址。它的地址範圍如下所示:
IP11
包含在這個範圍內的IP地址都屬於私有IP,而在此之外(A類~C類範圍中除去0/8、127/8。) 的IP地址稱爲全局IP(也叫公網IP。) 。

到此,讀者可能會問這個所謂的全局地址究竟是由誰管理,又是由誰制定的呢?在世界範圍內,全局IP由ICANN(Internet Corporationfor Assigned Names and Numbers,中文叫“互聯網名稱與數字地址分配機構”,負責管理全世界的IP地址和域名)進行管理。而在各個國家內部由國家特定機構來進行管理。

路由控制

發送數據包時所使用的地址是網絡層的地址,即IP地址。然而僅僅有IP地址還不足以實現將數據包發送到對端目標地址,在數據發送過程中還需要類似於“指明路由器或主機”的信息,以便真正發往目標地址。保存這種信息的就是路由控制表(Routing Table)。實現IP通信的主機
和路由器都必須持有一張這樣的表。它們也正是在這個表格的基礎上才得以進行數據包發送的。
該路由控制表的形成方式有兩種:一種是管理員手動設置,另一種是路由器與其他路由器相互交換信息時自動刷新。前者也叫靜態路由控制,而後者叫做動態路由控制。爲了讓動態路由及時刷新路由表,在網絡上互連的路由器之間必須設置好路由協議,保證正常讀取路由控信息。

IP地址與路由控制

路由控制表中記錄着網絡地址與下一步應該發送至路由器的地址 。在發送IP包時,首先要確定IP包首部中的目標地址,再從路由控制表中找到與該地址具有相同網絡地址的記錄,根據該記錄將IP包轉發給相應的下一個路由器。如果路由控制表中存在多條相同網絡地址的記錄,就選擇一個最爲吻合的網絡地址。所謂最爲吻合是指相同位數最多的意思(也叫最長匹配。) 。
例如:172.20.100.52的網絡地址與172.20/16和172.20.100/24兩項都匹配。此時,應該選擇匹配度最長的172.20.100/24。此外,如果路由表中下一個路由器的位置記錄着某個主機或路由器網卡的IP地址,那就意味着“發送的目標地址屬於同一個鏈路”(目標地址在同一個鏈路中的情況下,路由表的記錄格式可能會根據操作系統和路由器種類的不同而有所區別) 。

  • 默認路由
    如果一張路由表中包含所有的網絡及其子網的信息,將會造成無端的浪費。這時,默認路由(Default Route)是不錯的選擇。默認路由是指路由表中任何一個地址都能與之匹配的記錄。默認路由一般標記爲0.0.0.0/0或default(表示子網掩碼時,IP地址爲0.0.0.0,子網掩碼也是0.0.0.0) 。這裏的0.0.0.0/0並不是指IP地址是0.0.0.0。由於後面是“/0”,所以並沒有標識IP地址(0.0.0.0的IP地址應該記述爲0.0.0.0/32) 。它只是爲了避免人們誤以爲0.0.0.0是IP地址。有時默認路由也被標記爲default,但是在計算機內部和路由協議的發送過程中還是以0.0.0.0/0進行處理。
  • 主機路由
    “IP地址/32”也被稱爲主機路由(Host Route)。例如,192.168.153.15/32(表示子網掩碼時,若IP地址爲192.168.153.15,其對應的子網掩碼爲255.255.255.255) 就是一種主機路由。它的意思是整個IP地址的所有位都將參與路由。進行主機路由,意味着要基於主機上網卡上配置的IP地址本身,而不是基於該地址的網絡地址部分進行路由。
    主機路由多被用於不希望通過網絡地址路由的情況(不過,請注意,使用主機路由會導致路由表膨大,路由負荷增加,進而造成網絡
    性能下降) 。
  • 環回地址
    環回地址是在同一臺計算機上的程序之間進行網絡通信時所使用的一個默認地址。計算機使用一個特殊的IP地址127.0.0.1作爲環回地址。與該地址具有相同意義的是一個叫做localhost的主機名。使用這個IP或主機名時,數據包不會流向網絡。
    IP2

路由控制表的聚合

利用網絡地址的比特分佈可以有效地進行分層配置。對內即使有多個子網掩碼,對外呈現出的也是同一個網絡地址。這樣可以更好地構建
網絡,通過路由信息的聚合可以有效地減少路由表的條目(路由表的聚合也叫路由彙總(Aggregation)。) 。
能夠縮小路由表的大小是它最大的優勢。路由表越大,管理它所需要的內存和CPU也就越多。並且查找路由表的時間也會越長,導致轉發
IP數據包的性能下降。如果想要構建大規模、高性能網絡,則需要儘可能削減路由表的大小。
如下圖所示,在聚合之前需要6條路由記錄,聚合之後只需要2條記錄。
而且路由聚合可以將已知的路由信息傳送給周圍其他的路由器,以達到控制路由信息的目的。下圖的例子中路由器C正是將已知192.168.2.0/24與192.168.3.0/24的網絡這一信息聚合成爲對“192.168.2.0/23的網絡也已知”,從而進行公示.
ip15

發佈了26 篇原創文章 · 獲贊 0 · 訪問量 2859
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章