-
2 IPv4分組
-
各協議之間的關系
-
IP協議(Internet Protocol, 網際協議)是互聯網的核心!
ARP協議用于查詢同一網絡中的<主機IP地址,MAC地址>之間的映射關系
ICMP協議用于網絡層實體之間相互通知“異常事件”
IGMP協議用于實現IP組播
-
-
2.1 結構<首部+數據部分>
-
看書的素圖回憶各字段的作用
-
首部固定部分20B,可變部分0~40B
-
注意3個與“長度”相關的字段:418,首總偏
-
-
-
補充:
? ?版本:v4:0100,v6:0110
? ?首部長度:固定部分20B,則是5*4=20B,為0101;最大60B,則15*4=60B,為1111
一般首部長度默認為固定長度
? ?實際傳輸過程中, “數據部分”的長度受下一段鏈路的最短/最長幀長限制
eg: 以太網幀有最短幀長、最長幀長限制
-
-
-
-
2.2 命題重點
-
2.2.1 分片問題
-
MTU (最大傳送單元):一個鏈路層數據幀能承載的最大數據量
-
如果一個IP數據報的總長度大于下一段鏈路的MTU,就需要將“數據部分”分片
-
易錯:除最后一個分片外,其他每個分片的“數據部分”必須是8B的整數倍
-
易混
-
標識16bit,用于區分每個分片原本屬于哪個IP數據報
-
標記3bit, 關注最低位MF、次低位DF
-
MF=1,表示后面還有分片
-
MF=0, 表示這是最后一個分片
-
DF=1,表示不允許被分片
-
DF=0,表示允許被分片
-
-
-
-
-
注意:
·IP數據報的“分片”可能在源主機、或任何一個路由器中發生
·只有目的主機才會對分片進行“重組”
·各分片有可能亂序到達目的主機
·由于首部的“片偏移”字段是以×8B為單位,因此,除了最后一個分片外,其他每個分片的數據部分必須是8B的整數倍(片偏移表示的是這個IP數據報它自己承載的數據在原始數據報當中的位置。)
-
-
-
2.2.2 TTL字段
-
IP分組每經過一個路由器,TTL減1,如果已經減到0,該路由器就丟棄分組,并向源主機發送ICMP報文 (通知出現異常)
-
-
-
-
不可達:
TTL的初始值通常由源主機設置。
每經過一個路由器,路由器就將TTL減1, 如果TTL減到0,就直接丟棄分組,并向源主機發送ICMP報文
注:ICMP報文用于通知一個節點發生了某種“異常”
-
2.3 ip地址最初的分類方案?
- 路由器和路由器連接的接口可以不分配IP地址,但路由器和其他節點連接的接口必須分配IP地址
- 從屬于同一個網絡的所有主機、路由器接口的IP地址“網絡號”都相同
- 當一臺新主機接入網絡時,需要給它分配一個IP地址、并配置“默認網關”
H1給H7發送IP數據報(166.1.0.0--200.1.1.2):
????????這個IP分組需要發送到另一個網絡上,先交給默認網關這臺路由器(H1的內部已配置:166.1.0.5)當H1知道了這個默認網關的IP地址之后。通過ARP協議查詢到默認網關的IP地址所對應的MAC地址。把這個IP數據包封裝成幀,把這個幀的目的MAC地址直接寫成b2接口所對應的MAC地址對;
????????接下來H1會把這個mac幀發送給交換機,交換機根據MAC地址逐層轉發到路由器的b2這個接口,路由器檢查目的網絡的IP地址網絡號,根據轉發表查看,把這個數據報從b0接口轉發出去。當轉發這個IP數據報的時候,也會修改mac幀,把mac幀的目的地址修改為接口的MAC地址。所以會把這個IP數據包重新封裝成幀,這個幀的目的MAC地址填寫為c0。
? ? ? ? 把幀從b0接口轉發出去。公司的路由器就收到了這個IP數據包。檢查IP數據包的目的地址,查看轉發表,確定這個IP數據包接下來從c2這個接口轉發出去。那同樣根據ARP協議查詢對應Mac地址重新封裝成幀。
H1給H6發送IP數據報(166.1.0.0--166.1.4.4):
? ? ? ? 先檢查源IP和目的IP是否屬于同網段,同屬同網段就不需要轉發到默認網關;h1通過ARP協議查詢到h6對應的MAC地址,直接把這個數據包封裝成mac幀,把幀發送給交換機,交換機根據mac幀,轉交給下一臺交換機,交換機再根據mac幀轉發到下一個節點,
? ? ? ? 該結點是集線器。集線器收到幀之后,會把幀無腦的轉發給與之相連的所有結點,h6收到幀查看確認是自己接收,H5查看不是自己不接收丟棄
注意:以上這些特殊地址不能指派給網路中的任何一臺主機或路由器“私用”
重要結論:前兩行說明,如果一個網絡中,主機號占Nbit,那么這個網絡中,最多支持
臺主機&路由器
2.4 子網劃分 & 子網掩碼
-
2.4.1 子網劃分技術
-
?子網劃分
-
原理:若某單位租用了一個IP地址段,假設原本主機號占 n bit,那么可以將前k bit摳出來作為子網號,用剩余的n-kbit作為主機號,這樣就能劃分出2^k個子網(每個子網包含的IP地址塊大小相等)
-
子網劃分前,IP地址為兩級結構=<網絡號,主機號>
-
子網劃分后,IP地址為三級結構=<網絡號,子網號,主機號>
-
注意:每個子網地址中,主機號不能分配為全0/全1?
-
全0表示子網本身,全1為子網廣播地址
-
-
-
?
-
子網劃分作用:讓一個很大的IP地址塊劃分成幾個相互獨立的這種地址塊,從而提升IP地址資源的利用率。
-
?子網掩碼
-
作用
-
用子網掩碼、IP地址“逐位與”,算出<網絡號,子網號>(可合稱為“網絡前綴”)
-
只有網絡前綴相同的IP地址,才歸屬于同一個網絡 (或子網)
-
-
注意
-
如果一個網絡內部進行了子網劃分,那么這個網絡中的每臺主機、每個路由器接口都需要配置IP地址、默認網關、子網掩碼
-
如果一臺路由器支持子網劃分技術,那么在它的轉發表中, 需要包含<目的網絡號,子網掩碼,轉發接口>
-
-
-
?默認子網掩碼
-
如果一個傳統網絡 (A/B/C類)內部沒有進行子網劃分,那么可以將對應此網絡的轉發表項設置為“默認子網掩碼”
-
A類默認255.0.0.0 B類默認255.255.0.0 C類默認255.255.255.0
-
-
-
?默認路由
-
默認路由 (默認轉發表項)設置:<目的網絡號全0,子網掩碼全0>
-
在路由器轉發表中,如果所有表項都不匹配,那么將從“默認路由”轉發出去
-
-
-
2.4.2 主機發送IP數據報的過程
-
一、判斷目的主機和本機是否屬于同一個網絡
-
①檢查本機IP地址和目的IP地址的網絡前綴是否相同(需要用本機配置的子網掩碼“逐位與”)
-
②若網絡前綴相同,說明目的主機和本機屬于同一個網絡;若網絡前綴不同,說明不屬于同一網絡
-
-
二、將IP數據報封裝成MAC幀并發送到鏈路上
-
如果目的主機與本機屬于同一個網絡,就通過ARP協議找到目的主機的MAC地址,再將IP數據報封裝成幀,并將幀發送給目的主機
-
如果目的主機與本機不屬于同一個網絡,就通過ARP協議找到默認網關的MAC地址,再將IP數據報封裝成幀,并將幀發送給默認網關
-
-
-
2.4.3 路由器轉發一個IP數據報的過程
-
一、路由器的某個接口收到一個IP數據報
-
二、對IP數據報首部進行校驗,并從中找到目的IP地址
-
三、查“轉發表”
-
轉發表的表項包含<目的網絡號,子網掩碼,轉發接口>
-
檢查目的IP地址與每個表項能否匹配(將目的IP地址、子網掩碼“逐位與”,匹配表項中的目的網絡號)
-
注:至少“默認路由”表項一定是可以匹配成功的
-
-
四、轉發
-
根據查轉發表的結果,將IP數據報從匹配的接口轉發出去
-
注:如果匹配的“轉發接口”和該IP數據報的入口相同,就不用再把IP數據報轉發回去
-
-
?
訓練一:H3→H6(同一子網內的兩臺主機):在局域網的內部就完成了IP數據包的傳送? ?
? ? ?????????H3要檢查目的地址與源是否從屬于同一個網絡:用配置的子網掩碼和目的地址逐位相與。網絡前綴都相同這個目的地址和源從屬于同一個網絡之內。h3直接把這個IP數據包封裝成mac幀,并且在mac幀當中直接說明h6的這個MAC地址。到達集線器,集線器會把幀無腦的轉發給h5和h6兩臺主機。h5主機不會接收這個mac幀,因為目的地址和自己的mac地址不相同,而h6主機會接收這個幀,拆掉mac幀的首部和尾部,得到IP數據包。由于IP地址和自己的IP地址是匹配的,所以h6這臺主機就會接收這個IP數據包
訓練二:H1→H3(不同子網內的兩臺主機)
????????要判斷目的地址和的源IP地址是否同屬于同一個網絡,把目的地址和源的IP地址和本機內配置好的子網掩碼進行逐位與運算,得到兩個IP地址的網絡前綴。由于二者的網絡前綴不相等。
所以就說明這個目的結點和源不在同一個網絡內。于是h1需要把這個IP數據包發送給默認網關,讓他幫忙轉發。轉發給b3路由器
????????路由器的網絡層需要決定這個地址應該往哪轉發。首先要和轉發表的子網掩碼進行相與。相與的結果再和目的網絡號進行比較,可以看出和第二行匹配,就會從b2接口把這個IP數據包轉發出去。
訓練三:H1→H7(采用子網劃分技術的網絡→傳統網絡)
????????如果它沒有進行子網劃分,設置默認子網掩碼
訓練四:H7→H1(傳統網絡→采用子網劃分技術的網絡)
訓練五:主機H1發往Internet的某個IP數據報如何傳輸?(設目的IP地址=111.2.3.4)
-
2.5 CIDR無分類編址
-
2.5.1 基本原理
-
取消了IP地址傳統的A/B/C/D/E 分類。采用無分類編址CIDR,IP地址塊分配更靈活,利用率更高,一定程度上緩解了IP地址耗盡 (時代背景:1993年)
-
IP地址={<網絡前綴>,<主機號>},其中網絡前綴不定長
-
CIDR記法
-
128.14.32.153/30, 表示在這個IP地址中,網絡前綴占30bit, 主機號2bit
-
-
-
-
-
2.5.2 CIDR地址塊的子網劃分
-
定長子網劃分
-
在一個CIDR地址塊中,把主機號前k bit摳出來作為定長子網號,這樣就能劃分出2^k個子網 (每個子網包含的IP地址塊大小相等)
-
缺點:每個子網都一樣大,不夠靈活,IP地址利用率低,浪費有限的IP地址資源
-
-
變長子網劃分
-
在一個CIDR地址塊中,劃分子網時,子網號長度不固定(每個子網包含的IP地址塊大小不同)
-
-
注意:在每個子網中,主機號全0、全1的IP地址不能分配給特定節點私用
-
-
2.5.3 子網劃分解題技巧
-
CIDR地址塊的子網劃分技巧:可以利用類似于“從根到葉構造二叉哈夫曼樹”的技巧
-
??原始CIDR地址塊作為根節點(假設可以自由分配的主機號占 h bit)
-
??每個分支節點必須同時擁有左右孩子,左0,右1(反過來也行)
-
??每個葉子結點對應一個子網,根據根節點到達葉子結點的路徑來分析子網對應的IP地址塊范圍
-
??整棵樹的高度不能超過h-1(因為即便最小的子網也至少要保留2bit主機號)
-
-
-
例子:
?
注意:路由器和主機相連的鏈路,需要給路由器節點也分配一個ip地址
???????
-
2.6 路由聚合
-
-
????????對于一個路由轉發表,如果幾條路由表項的轉發接口相同,部分網絡前綴也相同,那么可以將這幾條路由表項聚合為一條。這種地址的聚合稱為路由聚合,也稱構成超網。
-
-
缺點:
????????● 路由聚合可以減少路由表的大小。????????● 路由聚合可能會引入額外的無效地址。
-
-
-
存在1: 目的IP地址和轉發表多個表項匹配--最長前綴匹配原則
????????目的地址128.14.32.131與路由器轉發表均匹配,則采用最長前綴匹配原則進行匹配,表項2匹配的長度最長,則從G3轉發出去