網路協議從入門到底層原理
- 互聯網(internet)
- 為什么要學習網路協議
- 客戶端-服務器
- 跨平臺的原理(Java、C++)
- 網路互連模型(OSI參考模型)
- 計算機之間的通信基礎
- 計算機之間的連接方式 - 網線直連
- 計算機之間的連接方式 - 同軸電纜(Coaxial)
- 計算機之間的連接方式 - 集線器(Hub)
- 計算機之間的連接方式 - 網橋(Bridge)
- 計算機之間的連接方式 - 交換機(Switch)
- 計算機之間的連接方式 - 路由器(Router)
- MAC地址(40-55-82-0A-8C-6D)
- MAC地址的表示格式(Windows、Linux)
- MAC地址操作(`ipconfig /all`)
- MAC地址的獲取(`arp -a`)
- IP地址(127.0.0.1)
- IP地址的組成(網路ID + 主機ID)
- IP地址的分類(A類、B類、C類、D類、E類)
- 子網掩碼的CIDR表示方法(192.168.1.100/24)
- 子網劃分
- 為什么要進行子網劃分?
- 子網劃分
- 等長子網劃分 - C類子網劃分(2、4、8等分)
- 等長子網劃分 - A、B類子網劃分
- 子網劃分實踐
- 變長子網劃分
- 思考題:雙方子網掩碼不同,計算對方所處網段
- 超網 - 合并網段
- 合并4個網段
- 子網合并的規律
- 判斷一個網段是子網還是超網
互聯網(internet)

資料是如何從一個設備傳遞到另一個設備的?
答:網路協議
為什么要學習網路協議
互聯網、移動互聯網、物聯網,都離不開網路協議:
- 最熟悉的網路協議:HTTP
- 為了滿足各種需求,有各式各樣的網路協議(HTTPS、SMTP、MQTT、RTMP等)
網路協議方面的面試題目近年來要求提高了:
- TCP和UDP的區別?說一下它們的報文格式?
- TCP的流量控制和和擁塞控制?TCP如何實作可靠性傳輸?
- 為什么連接是3次握手,關閉是4次揮手?
- 7層模型與4層模型的區別?每一層的作用是什么?
- 交換機與路由器的區別?
客戶端-服務器


跨平臺的原理(Java、C++)
Java跨平臺的原理:

解釋型語言跨平臺的原理與 Java 類似:例如 JavaScript,甚至不需要經過編譯,有瀏覽器即可決議,
C++跨平臺的原理:使用平臺相關的編譯器生成對應平臺的可執行檔案

網路互連模型(OSI參考模型)
什么是協議?為什么要有協議?
- 協議就是通用的標準,
如果沒有一個國際通用的標準,那么各大公司按照自己的標準來,相互之間的互動就會很麻煩,比如我撰寫的代碼在微軟的服務器可以運行,但是要在蘋果的服務器運行又需要重新撰寫…
為了更好地促進互聯網路的研究和發展,國際標準化組織 ISO 在 1985 年制定了網路互連模型 OSI 參考模型(Open System Interconnect Reference Model),具有7層結構,
實際上 OSI參考模型(7層) 更偏理論,而 TCP/IP 協議(4層) 在才是在實際中使用的協議,而為了研究和學習計算機網路,又常將之劃分為 5層,

請求程序:不管什么協議都是經過下列的 包裝 + 解包 的程序,

計算機之間的通信基礎
1、需要得知對方的 IP地址
2、最終是根據 MAC地址(網卡地址),輸送資料到網卡,被網卡接收
- 如果網卡發現資料的目標MAC地址是自己,就會將資料傳遞給上一層進行處理
- 如果網卡發現資料的目標MAC地址不是自己,就會將資料丟棄,不會傳遞給上一層
計算機之間的連接方式 - 網線直連
需要用 交叉線(不是直通線)

ARP協議的作用:已知 IP地址,通過 廣播 獲取 MAC地址,
為什么右邊出現3個ARP包,實際上是 一次完整的發送請求,接收回應的程序,

計算機之間的連接方式 - 同軸電纜(Coaxial)

注意:同軸電纜只要有一個地方線斷了,整個線路都癱瘓了,
計算機之間的連接方式 - 集線器(Hub)

集線器相比同軸電纜唯一的優點就是:哪怕連著集線器的某一個設備中間線路出問題,不會影響到連著集線器的其他設備,
計算機之間的連接方式 - 網橋(Bridge)

所謂隔絕沖突域是通過:記錄設備的MAC地址在左還是在右,
例如,6向7發資料包,
當6發出請求ARP廣播時,網橋會記錄6的MAC地址在左;
當7發出回應ARP廣播時,網橋會記錄7的MAC地址在左,

計算機之間的連接方式 - 交換機(Switch)

若全球所有設備都用交換機連接:
1、他們必然處于同一網段,因此 IP地址可能會不夠用
2、即使使用交換機,第一次發送資料包仍然需要ARP廣播,耗費大量時間,
3、形成廣播風暴,只要有一個設備發送ARP廣播,全球設備都能收到
計算機之間的連接方式 - 路由器(Router)
主機在發資料之前,首先會判斷目標主機的IP地址跟它是否在同一個網段:
- 在同一個網段:ARP廣播、通過 交換機\集線器 傳遞資料
- 不在同一個網段:通過路由器轉發資料
網線直連、同軸電纜、集線器、網橋、交換機
- 連接的設備必須在同一網段
- 連接的設備處在同一廣播域
路由器
- 可以在不同網段之間轉發資料
- 隔絕廣播域

MAC地址(40-55-82-0A-8C-6D)
每個網卡都有一個 6位元組(48bit) 的 MAC地址(Media Access Control Address)
MAC地址全球唯一,固化在網卡的ROM中,由 IEEE802 標準規定
- 前3位元組:OUI(Organizationally Unique Identifier),組織唯一識別符號
由 IEEE 的注冊管理機構分配給廠商 - 后3位元組:網路介面識別符號
由廠商自行分配

OUI 查詢:
- http://standards-oui.ieee.org/oui.txt
- https://mac.bmcx.com/
MAC地址的表示格式(Windows、Linux)
- Windows
40-55-82-0A-8C-6D - Linux、Android、Mac、iOS(類Unix作業系統)
40:55:82:0A:8C:6D - Packet Tracer
4055.820A.8C6D
注:當48位全為1時,代表廣播地址:FF-FF-FF-FF-FF-FF
MAC地址操作(ipconfig /all)
查看MAC地址:ipconfig /all
修改MAC地址:更改配接器選項-屬性-配置-高級-網路地址(填寫的時候需要把 減號- 去掉)

注: 有時可以通過修改 MAC地址蹭網,,,,
MAC地址的獲取(arp -a)
當不知道對方主機的MAC地址時,可以通過發送ARP廣播獲取對方的MAC地址
- 獲取成功后,會快取IP地址、MAC地址的映射資訊,俗稱:ARP快取
- 通過ARP廣播獲取的MAC地址,屬于 動態(dynamic)快取
存盤時間比較短(默認是2分鐘),過期就自動洗掉
arp -a [主機地址]:查看ARP快取
arp -d [主機地址]:洗掉ARP快取
arp -s 主機地址 MAC地址:增加一條快取資訊(這是靜態快取,存盤時間較久,不同系統的存盤時間不同)
IP地址(127.0.0.1)
IP地址(Internet Protocol Address):互聯網上的每一個主機都有一個IP地址
- 最初是 IPv4 版本,32bit(4位元組),2019年11月25日,全球的IP地址已經用完
- 后面推出了 IPv6 版本,128bit(16位元組)
- 我們在學習中討論的都是 IPV4

IP地址的組成(網路ID + 主機ID)
IP地址 由2部分組成:網路標識(網路ID)、主機標識(主機ID)
- 通過子網掩碼(subnet mask)可以得知 網路ID 、主機ID
主機所在的網段 = 子網掩碼 & IP地址
例如:
IP地址:192.168.1.10
子網掩碼:255.255.255.0
1100 0000 . 1010 1000 . 0000 0001 . 0000 1010
& 1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
----------------------------------------------------
1100 0000 . 1010 1000 . 0000 0001 . 0000 0000
網段:192.168.1.0
網段是由子網掩碼計算得出,只有IP地址無法得知網段,
IP地址:130.168.1.10
子網掩碼:255.255.0.0
網段:130.168.0.0
該網段最多有 256*256-2 個IP地址
-2是因為: 全0代表網段,全1代表廣播
網段和廣播無法分配IP地址.
計算機和其他計算機通信前,會先判斷目標主機和自己是否在同一網段:
- 同一網段:不需要由路由器進行轉發
- 不同網段:交由路由器進行轉發
IP地址的分類(A類、B類、C類、D類、E類)
注:判斷IP地址的類別只要看第一部分即可,
只有 A\B\C 類地址才能分配給主機
- 主機ID為 全0,表示主機所在的網段,如
192.168.1.0 - 主機ID為 全1,表示主機所在網段的全部主機(廣播),如
192.168.1.255
可以嘗試用ping給某個網段的全部主機發資料
A類地址:默認子網掩碼是 255.0.0.0


網路ID
- 0 不能用,127 作為保留網段,
- 其中 127.0.0.1 是 本地環回地址(Loopback),代表本機地址
- 可以分配給主機的第1部分的取值范圍是:1~126
主機ID
- 第2、3、4部分的取值范圍是:0~255
- 每個A類網路能容納的最大主機數是:256*256*256–2 = 224–2 = 16777214
B類地址:默認子網掩碼是 255.255.0.0


網路ID
- 第1部分的取值范圍是:128~191
- 第2部分的取值范圍是:0~255
主機ID
- 第3、4部分的取值范圍是:0~255
- 每個B類網路能容納的最大主機數是:256*256-2 = 216-2 = 65534
C類地址:默認子網掩碼是 255.255.255.0
目前用的最多的是 C類地址!


網路ID
- 第1部分的取值范圍是:192~223
- 第2、3部分的取值范圍是:0~255
主機ID
- 第4部分的取值范圍是:0~255
- 每個C類網路能容納的最大主機數是:256-2 = 254
D類地址:沒有子網掩碼,用于多播(組播)地址
以 1110 開頭,多播地址

第一部分取值是:224~239
E類地址:以 1111 開頭,保留為今后使用

第一部分取值是:240~255
子網掩碼的CIDR表示方法(192.168.1.100/24)
CIDR(Classless Inter-Domain Routing):無類別域間路由
子網掩碼的CIDR表示方法
- 192.168.1.100/24,代表子網掩碼有24個1,也就是 255.255.255.0
- 123.210.100.200/16,代表子網掩碼有16個1,也就是 255.255.0.0
計算工具:https://www.sojson.com/convert/subnetmask.html
子網劃分
為什么要進行子網劃分?
如果需要讓 200 臺主機在同一個網段內,可以分配一個 C類網段,比如192.168.1.0/24
- 共 254 個可用IP地址:
192.168.1.1~192.168.1.254 - 多出 54 個空閑的IP地址,這種情況并不算浪費資源
如果需要讓 500 臺主機在同一個網段內,那就分配一個 B類網段,比如191.100.0.0/16
- 共 65534 個可用IP地址:
191.100.0.1~191.100.255.254 - 多出 65034 個空閑的IP地址,這種情況屬于極大的浪費資源
如何盡量避免浪費IP地址資源?
- 合理進行 子網劃分
子網劃分
子網劃分:借用主機位作子網位,劃分出多個子網
- 等長子網劃分:將一個網段等分成多個子網,每個子網的可用IP地址數量一樣
- 變長子網劃分:每個子網的可用IP地址數量可以是不一樣的
子網劃分器:http://www.ab126.com/web/3552.html
子網劃分的步驟
- 確定子網的子網掩碼長度
- 確定子網中第1個、最后1個主機可用的IP地址
等長子網劃分 - C類子網劃分(2、4、8等分)
例:
本來有一個C類網段: 192.168.0.0/24
劃分成兩個子網后:
A子網: 192.168.0.0/25 子網掩碼: 255.255.255.128
可用IP地址: 192.168.0.1 ~ 192.168.0.126 共 126 個
B子網: 192.168.0.128/25 子網掩碼: 255.255.255.128
可用IP地址: 192.168.0.129 ~ 192.168.0.254 共 126 個
等分成 2 個子網:

等分成 4 個子網:

等分成 4 個子網的廣播地址:

等分成 8 個子網:

等長子網劃分 - A、B類子網劃分
B類子網劃分:

A類子網劃分 :

子網劃分實踐
如此劃分(,他們還是屬于同一個網段,可以直接 ping 通,

下面這樣劃分就不是一個網段了,分別屬于 192.168.0.0 和 192.168.0.128 網段,需要用路由器并設定網關才可以 ping 通,

變長子網劃分

思考題:雙方子網掩碼不同,計算對方所處網段
問:下列兩臺計算機可以正常通信嗎?

答:不可以,計算機0 想要發送資料包,先判斷計算機1是否和自己處于同一個網段,計算網段的方法是:IP地址 & 子網掩碼,計算機0判斷計算機1的網段為 192.168.10.10 & 255.255.255.0 = 192.168.10.0,而計算機0判斷自身所處網段為 192.168.0.10 & 255.255.255.0 = 192.168.0.0,雙方不處于同一網段,所以計算機0無法將資料包發給計算機1(不同網段的資料通信需要路由器)

解決方案:利用路由器,

超網 - 合并網段
超網:跟子網反過來,它是將多個連續的網段合并成一個更大的網段
需求:原本有200臺計算機使用 192.168.0.0/24 網段,現在希望增加200臺設備到同一個網段
- 200臺在 192.168.0.0/24 網段,200臺在 192.168.1.0/24 網段
- 合并 192.168.0.0/24、192.168.1.0/24 為一個網段:192.168.0.0/23
(子網掩碼往左移動1位)

問:192.168.0.255/23 這個IP地址,可以分配給計算機使用么?
- 192.168.0.255/24 是廣播,不能分配給計算機,
- 192.168.0.255/23 如下:

主機部分并不全為1,所以是可以分配給計算機使用的,
合并4個網段
子網掩碼向左移動 2 位,可以合并 4 個網段

將 192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24 合并為192.168.0.0/22 網段
子網合并的規律
假設 n 是 2 的 k 次冪(k≥1),子網掩碼左移 k 位能夠將能夠合并 n 個網段

假設 n 是 2 的 k 次冪(k≥1),如果第一個網段的網路號能被 n 整除,那么由它開始連續的 n 個網段,能通過左移 k 位子網掩碼進行合并,
- 第一個網段的網路號以二進制 0 結尾,那么由它開始連續的 2 個網段,能通過左移1位子網掩碼進行合并
- 第一個網段的網路號以二進制 00 結尾,那么由它開始連續的 4 個網段,能通過左移2位子網掩碼進行合并
- 第一個網段的網路號以二進制 000 結尾,那么由它開始連續的 8 個網段,能通過左移3位子網掩碼進行合并

判斷一個網段是子網還是超網
首先看該網段的型別,是A類網路、B類網路、C類網路?
- A類子網掩碼的位數是8(255.0.0.0)
- B類子網掩碼的位數是16(255.255.0.0)
- C類子網掩碼的位數是24(255.255.255.0)
如果該網段的子網掩碼位數比默認子網掩碼多,就是子網
如果該網段的子網掩碼位數比默認子網掩碼少,則是超網
例如:
判斷 25.100.0.0/16 是子網還是超網:
- 根據 25 判斷出這是個 A 類網路,默認子網掩碼 8 位
- 由于該網段子網掩碼 16 位,比默認多,所以是子網
判斷 200.100.0.0/16 是子網還是超網:
- 根據 200 判斷出這是個 C 類網路,默認子網掩碼 24 位
- 由于該網段子網掩碼 16 位,比默認少,所以是超網
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/246551.html
標籤:其他
上一篇:計網復習指南(HDU)
