目錄
1. CIDR無分類編址
1.1 CIDR的子網劃分
1.1.1 定長子網劃分
1.1.2 變長子網劃分
2. 路由聚合
2.1 最長前綴匹配原則
3. 網絡地址轉換NAT
3.1 端口號
3.2 IP地址不夠用?
3.3 公網IP和內網IP
3.4 NAT作用
4. ARP協議?
4.1 如何利用IP地址找到MAC地址?
5. DHCP協議
5.1 DHCP作用
5.2 DHCP分配流程
①discover:
②offer:
③request:
5.2.1 提出問題
④acknowledge:
1. CIDR無分類編址
????????由于互連網的興起,如果還是采用ipv4每人一個ip,那么42億ip地址一定是不夠用的,為了解決這個問題就有了CIDR無分類編址。
? ? ? ?傳統的IP地址分配方式:
????????舉一個簡單的例子,某公司需要2000個ip地址,那么如果使用c類地址那么只有2的八次方?= 256個地址能用顯然是不夠的,所以使用b類地址,那就是有2的16次方 = 65536個地址,剩下的ip資源就會大量的浪費。
? ? ? ? CIDR無分類編址分配IP:
? ? ? ? 分配21位網絡號,那么主機號就是32 - 21 = 11,也就可以有2的11次方 = 2048個ip地址可以提供分配。
1.1 CIDR的子網劃分
1.1.1 定長子網劃分
????????這樣做有什么缺點呢?例如我們使用2bit作為子網號,那么14位是主機號,那就意味著每一個子網都要2的14次方個ip地址,那么實際情況下,有些子網可能根本不需要這么多的ip地址,就會造成資源的浪費。每個子網都一樣大,資源就會造成浪費。????????
1.1.2 變長子網劃分
????????從自由分配的主機號里面每次取出1bit作為子網號,就可以分為兩個子網,每個子網依次重復之前的步驟。
不斷劃分子網的網絡前綴不是其他子網的網絡前綴的前綴,其實就是哈夫曼編碼。
2. 路由聚合
????????當路由表項的部分網絡前綴相同并且轉發的出口一致,就可以合并為一個路由表項。這樣的聚合叫做路由聚合也叫做超網。
優點:
①路由表變小,內存占用減少。
②查詢速度減少。
缺點:
①可能引入無效地址;但是轉發的時候會走默認0.0.0.0,此幀將會被丟棄。
2.1 最長前綴匹配原則
當目的地址與表項中多個路由地址相同,有限選取匹配程度最高的表項,從該表項的接口轉發。
3. 網絡地址轉換NAT
3.1 端口號
????????網絡層實現了主機和主機之間的通信,但是事實上的通信一定是進程之間的通信,例如微信發送消息只能微信接收,那么我們要實現進程之間的通信就會引入端口號這一概念。
? ? ? ? IP地址+端口號就可以鎖定某一個主機的特定進程;每一臺主機的端口號相互獨立。
傳輸層包含的首部是:源端口和目的端口;網絡層包含的首部是:源IP地址和目的IP地址。
3.2 IP地址不夠用?
????????地址是32個bit,如果每一臺主機都要消耗全球唯一的IP地址,那么2的32次方 = 42億肯定是不夠用,那么如果一個局域網使用一個IP呢?例如校園網,有成千上萬臺設備,如果學校只用一個IP,成千上萬臺設備里面運行了幾十萬+個進程,我們只需要給這些進程編號即可區分彼此,所以端口號就能做到這一點。
3.3 公網IP和內網IP
? ? ? ? 一般來說,一個局域網才有資格使用全球唯一的IP,這個IP叫做公網IP或者外網IP。在局域網內部,有一些可以復用的特殊網段例如192.xx.xx.xx等,這些網段只能由內網使用,可以復用。
3.4 NAT作用
使用NAT可以將外網IP+端口號 ==》內網IP + 端口號(特定主機的特定進程)。
發送信息的流程:
????????首先發送信息的一方把自己的內網IP和端口號、目的進程的公網IP和端口號封裝;然后到了距離目的進程最近的路由器,使用路由器中的NAT表對封裝內的目的IP和端口進行改寫,改寫成該網段下該進程的內網IP和端口,最后將封裝好的信息傳送給指定進程,進程再逐級拆分從而獲得真正的信息。
如何進行封裝信息:
信息首先會添加傳輸層的TCP首部,其中包含源端口和目的端口;然后經過網絡層添加IP首部,其中包含源IP和目的IP。
4. ARP協議?
? ARP協議最核心的就是ARP表,里面記錄著IP和MAC地址之間的映射。
4.1 如何利用IP地址找到MAC地址?
首先將ARP請求分組封裝進MAC幀,目的地址全1進行廣播,源地址是自己的地址;當目的路由器收到ARP請求分組的時候,會記錄分組中的MAC和IP之間的映射關系在ARP表之中。ARP請求分組進行廣播之后,會受到ARP響應分組進行單播,源地址是要找的地址,目的地址是請求分組的源地址。此時發送方的路由器也會記錄IP和MAC地址在ARP表之中。
ARP請求分組:
我的IP是xx,我的MAC是xx,要找IP是xx的家伙。
ARP響應分組:?
我是你要找的那個家伙,我的IP是xx,MAC是xx。
5. DHCP協議
5.1 DHCP作用
分配IP地址,配置子網掩碼、默認網關。
5.2 DHCP分配流程
一臺新接入網絡的主機會經過以下幾個步驟:
①discover:
首先在應用層封裝DHCP報文,自報家門,把自己的MAC地址封裝。
然后再傳輸層封裝UDP數據報,把自己的端口號和目的端口號進行封裝。
然后網絡層中封裝IP數據報,目的地址是全1進行廣播,源地址因為沒有分配所以是全0,形成廣播數據報
最后在數據鏈路層封裝MAC幀,把自己的MAC地址和全1的MAC地址封裝進去形成廣播幀。
如果是其他服務器接受到這個MAC幀,一層一層剝開發現傳輸層里面的目的端口是67,而67是DHCP獨占端口,所以接受到之后直接丟棄。
②offer:
DHCP服務端接收到客戶端發送的MAC幀就會一層一層拆開,最后發現傳輸層的端口就是自己的端口,于是返回一個offer。
首先在IP地址池里面找到一個空閑地址,應用層封裝DHCP數據報里面存著提供的空閑IP地址租用期、默認網關、子網掩碼。
然后到了傳輸層封裝UDP數據報里面存放著源端口號和目的端口號。
然后到了網絡層封裝IP數據報,目的IP是廣播,源IP。
最后封裝成MAC數據幀,把客戶端的MAC地址作為目的地址,源地址是本地地址,進行發送。
到了路由器直接進行精準發送。
DHCP客戶端收到MAC幀之后一層層拆開獲得IP地址、子網掩碼、默認網關。
③request:
此時在應用層封裝DHCP請求報文,內含自己的MAC地址,以及接受此IP地址。
然后去傳輸層封裝UDP數據報,內含DHCP服務器的端口和客戶端的端口。
在網絡層封裝IP數據報,內含廣播IP地址和0.0.0.0
在數據鏈路層封裝MAC幀,內含廣播MAC地址和自己的MAC地址
路由器收到MAC幀直接廣播,非DHCP服務器接收之后拆到傳輸層發現端口不對,直接丟棄
最后DHCP服務器收到。
5.2.1 提出問題
????????為什么第一次DHCP客戶端收到服務端的信息報文里面不含服務端的IP和MAC地址呢,這樣一來第二次發送request的時候就直接點對點發送不就好了嗎??
答案:因為不止一個DHCP服務器,第一次discover是進行廣播的,所以服務器都會發送一個offer,如果第三次是點對點發送給服務器,那么就有n-1個服務器不知道那個客戶端接收了誰的IP地址等信息,所以第三次的request必須是廣播形式。
④acknowledge:
DHCP服務端收到客戶端發來的MAC幀之后,需要返回確認幀。
DHCP確認報文被封裝到UDP報文,封裝到IP數據報,最后封裝到MAC幀指定發送給客戶端。