IPv4
IP地址
概述
- 我們把整個因特網看成為一個單一的、抽象的網絡。
- IP 地址就是給每個連接在互聯網上的主機(或路由器)分配一個在全世界范圍是唯一的 32 位的標識符。
- IP 地址現在由互聯網名字和數字分配機構ICANN (Internet Corporation for Assigned Names and Numbers)進行分配。
IP地址的編址方式
-
分類的 IP 地址。這是最基本的編址方法,在 1981 年就通過了相應的標准協議。
-
將IP地址划分為若干個固定類。
-
每一類地址都由兩個固定長度的字段組成,其中一個字段是網絡號 net-id,它標志主機(或路由器)所連接到的網絡,而另一個字段則是主機號 host-id,它標志該主機(或路由器)。
-
主機號在它前面的網絡號所指明的網絡范圍內必須是唯一的。
-
由此可見,一個 IP 地址在整個互聯網范圍內是唯一的。
-
-
子網的划分。這是對最基本的編址方法的改進,其標准 [RFC 950] 在 1985 年通過。
-
構成超網。這是比較新的無分類編址方法。 1993 年提出后很快就得到推廣應用。
IP地址碼
點分十進制法
不同類型IP地址net-id 不同
按照8位一組
-
A類地址net-id必需以0開頭
所以0000,0000 - 0111,1111 == 0 - 127
需要排除net-id全為0的情況 (0), 還需要排除A類IP中的特殊全為1的情況(127)
所以1 - 126
-
B類地址net-id必需以10開頭
所以10000000.00000000——10111111.11111111 == 128.0 - 191.255
需要排除net-id全為0的情況 (128.0 )
所以128.1 - 191.255
-
同理C類地址, 排除net-id全為0的情況
一般不使用的特殊IP地址
host-id 不能全為1, 全一為廣播地址
host-id 不能全為0, 表示一個網段
net-id不能全為0, 排除固定值
例如 B類IP 不能為(1000000000, 00000000 == 128.0)
不能為127.0.0.1 本地回環地址
保留的私網地址
172.16.0.0 -- 172.31.0.0
192.168.0.0 -- 192.168.255.0
網關雖然可以使用所有地址但是一般使用第一個可用地址
常見地址進制轉換
tips 利用右移性質
二進制 | 十進制 |
---|---|
1000,0000 | 2^7 = 128 |
1100,0000 | 27+26= 192 |
1110,0000 | 224 |
1111,0000 | 240 |
1111,1000 | 248 |
1111,1100 | 252 |
1111,1110 | 255 |
1111,1111 | 2^8 - 1 = 255 |
IP地址的重要特點
- IP 地址是一種分等級的地址結構。分兩個等級的好處是:
- IP 地址管理機構在分配 IP 地址時只分配網絡號,而剩下的主機號則由得到該網絡號的單位自行分配。這樣就方便了 IP 地址的管理
- 路由器僅根據目的主機所連接的網絡號來轉發分組(而不考慮目的主機號),這樣就可以使路由表中的項目數大幅度減少,從而減小了路由表所占的存儲空間。
- 實際上 IP 地址是標志一個主機(或路由器)和一條鏈路的接口。
當一個主機同時連接到兩個網絡上時,該主機就必須同時具有兩個相應的 IP 地址,其網絡號 net-id 必須是不同的。這種主機稱為多歸屬主機 (multihomed host)。
由於一個路由器至少應當連接到兩個網絡(這樣它才能將 IP 數據報從一個網絡轉發到另一個網絡),因此一個路由器至少應當有兩個不同的 IP 地址。 - 用轉發器或網橋連接起來的若干個局域網仍為一個網絡,因此這些局域網都具有同樣的網絡號 net-id。
- 所有分配到網絡號 net-id 的網絡,無論是范圍很小的局域網,還是可能覆蓋很大地理范圍的廣域網,都是平等的。
CIDR/斜線法
無分類的兩級編址:
CIDR 使用“斜線記法”(slash notation),它又稱為 CIDR 記法,即在 IP 地址面加上一個斜線“/”,然后寫上網絡前綴所占的位數(這個數值對應於三級編址中子網掩碼中 1 的個數,也是net-id位數)。
例如:128.14.32.0/20
01000000.00001110.0001(0000.00000000)
128.14.32.0/20 地址塊的最小地址:128.14.32.0
128.14.32.0/20 地址塊的最大地址:128.14.47.255
IP數據報
-
版本:占 4 位,指 IP 協議的版本。目前的 IP 協議版本號為 4 (即 IPv4)。
-
首部長度:占 4 位,可表示的最大數值是 15 個單位(一個單位為 4 字節),因此 IP 的首部長度的最大值是 60 字節。
-
區分服務:占 8 位,用來獲得更好的服務。在舊標准中叫做服務類型,但實際上一直未被使用過。
1998 年這個字段改名為區分服務。只有在使用區分服務(DiffServ)時,這個字段才起作用。
在一般的情況下都不使用這個字段 -
總長度:首部和數據之和的長度,單位為字節,因此數據報的最度——占 16 位,大長度為 65535 字節。總長度必須不超過最大傳送單元 MTU。
-
標識(identification) :占 16 位,它是一個計數器,用來產生 IP 數據報的標識
-
標志(flag) :占 3 位,目前只有前兩位有意義。
標志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“還有分片”。MF = 0 表示最后一個分片。
標志字段中間的一位是 DF (Don't Fragment) 。只有當 DF = 0 時才允許分片。 -
生存時間:占8 位,記為 TTL (Time To Live),指示數據報在網絡中可通過的路由器數的最大值。
-
協議:占8 位,指出此數據報攜帶的數據使用何種協議,以便目的主機的 IP 層將數據部分上交給那個處理過程
-
首部檢驗和:占16 位,只檢驗數據報的首部,不檢驗數據部分。這里不采用 CRC 檢驗碼而采用簡單的計算方法。
-
源地址和目的地址都各占 4 字節
網關
網關到底是什么呢?網關實質上是一個網絡通向其他網絡的IP地址。比如有網絡A和網絡B,網絡A的IP地址范圍為“192.168.1.1~192. 168.1.254”,子網掩碼為255.255.255.0;網絡B的IP地址范圍為“192.168.2.1~192.168.2.254”,子網掩碼為255.255.255.0。在沒有路由器的情況下,兩個網絡之間是不能進行TCP/IP通信的,即使是兩個網絡連接在同一台交換機(或集線器)上,TCP/IP協議也會根據子網掩碼(255.255.255.0)與主機的IP 地址作 “與” 運算的結果不同判定兩個網絡中的主機處在不同的網絡里。而要實現這兩個網絡之間的通信,則必須通過網關。如果網絡A中的主機發現數據包的目的主機不在本地網絡中,就把數據包轉發給它自己的網關,再由網關轉發給網絡B的網關,網絡B的網關再轉發給網絡B的某個主機(如附圖所示)。網絡A向網絡B轉發數據包的過程。全 0 和全 1 的主機號地址一般不使用。