第一章 前言
網絡協議
數據是如何從一個設備傳遞到另一個設備的?
答:網絡協議
互聯網、移動互聯網、物聯網,都離不開網絡協議:
- 最熟悉的網絡協議:HTTP
- 爲了滿足各種需求,有各式各樣的網絡協議(HTTPS、SMTP、MQTT、RTMP等)
網絡協議方面的面試題目近年來要求提高了:
- TCP和UDP的區別?說一下它們的報文格式?
- TCP的流量控制和和擁塞控制?TCP如何實現可靠性傳輸?
- 爲什麼連接是3次握手,關閉是4次揮手?
- 7層模型與4層模型的區別?每一層的作用是什麼?
- 交換機與路由器的區別?
客戶端—服務器
跨平臺的原理
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地址不是自己,就會將數據丟棄,不會傳遞給上一層
網線直連
需要用 交叉線(不是直通線)
- ping命令使用的是ICMP協議,前提是需要知道對方的ip地址,最終是根據MAC地址輸送數據到網卡,被網卡接收。
- 當不知道對方MAC地址時,使用ARP協議,進行廣播。ARP協議的作用:已知 IP地址,通過 廣播 獲取 MAC地址。
- 廣播只在同一個網段中傳播,目的是獲取MAC地址,給所有連接設備發廣播,詢問對應ip地址下的MAC地址。
- ARP協議的廣播中,目標MAC地址爲FFFF.FFFF.FFFF。即16進制MAC地址,換算二進制全是1。
- 全是1的MAC地址,代表廣播,表示在同一個網段的所有連接設備都能接收。
- ARP協議是有緩存的,當下次在ping的時候,就不需要再去獲取ip地址了,而是直接執行ICMP協議。
地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。
ICMP(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議簇的一個子協議,用於在IP主機、路由器之間傳遞控制消息。
爲什麼下邊出現3個ARP包,實際上是 一次完整的發送請求,接收響應的過程。
同軸電纜(Coaxial)
- 半雙工通信
- 同一時間,單向通信
- 容易衝突
- 電纜兩個方向同時有數據匯入時,會發生衝突。
- 不安全
- 數據不會單向走入對應的計算機,而是向所有設備發送數據。
- 中間斷了, 整個就癱了
- 失去了終止電阻
集線器(Hub)
集線器相比同軸電纜唯一的優點就是:哪怕連着集線器的某一個設備中間線路出問題,不會影響到連着集線器的其他設備。
- 優點:
- 某兩條線路發生衝突,其他線路任可通信
- 缺點:
- 如果連接了1000臺設備,
ARP協議
就會發送1000條數據。即使知道對方MAC地址
,發送數據仍然需要同時發送給1000臺設備。 - 半雙工通信
- 容易衝突
- 不安全
- 如果連接了1000臺設備,
網橋(Bridge)
能夠通過自學習得知每個結構那側的MAC地址
,從而起到隔絕衝突域的作用。
- 通過
MAC地址表
- 當數據通過網橋
MAC地址表
確定目標MAC地址
不在另一側時,就不會繼續向另一側發送數據了。 - 如果左右兩側數據可以被網橋分隔,那麼左右兩側可以同時進行通信。
例如,6向7發數據包,
當6發出請求ARP廣播時,網橋會記錄6的MAC地址在左;
當7發出響應ARP廣播時,網橋會記錄7的MAC地址在左。
交換機(Switch)
- 相當於接口更多的網橋全雙工通信,雙向通信
- 學習能力,能記住每個接口對應的MAC地址
- 比集線器安全
- 區域網最終方案
全球所有設備都用交換機連接會是什麼情況?
- 他們必然處於同一網段(交換機上連接的主機要求是同一網段),因此 IP地址可能會不夠用
- 即使使用交換機,第一次發送數據包仍然需要ARP廣播,耗費大量時間。
- 形成廣播風暴,只要有一個設備發送ARP廣播,全球設備都能收到
路由器(Router)
可以在不同網段之間轉發數據
- 隔絕
廣播域
不同網段
之間的廣播是發不過去的
不同網段如何通信?
目標IP地址
與主機是否在相同網段
- 在同一個
網段
,發送ARP
,通過交換機
、集線器
傳遞數據。 - 不在同一個
網段
- 主機先發送
ARP
到路由器網關
,確定網關MAC地址
。 - 主機發送數據給
網關
,網關
再決定出口是哪個網關
。 - 在
出口網關
發送ARP
,以確認接收方MAC地址
。 - 最後
出口網關
將數據發送給接收方。
- 主機先發送
總結
- 網線直連, 同軸電纜, 集線器, 網橋, 交換機
- 連接的設備必須在
同一網段
- 連接的設備處在
同一廣播域
- 連接的設備必須在
- 路由器
- 可以在
不同網段
之間轉發數據 - 隔絕
廣播域
- 不同
網段
之間的廣播是發不過去的
- 不同
- 可以在
- 主機發數據之前, 首先會判斷目標主機的
ip地址
跟它是否在同一個網段
- 在同一個網段:
ARP
- 不在同一個網段: 通過
路由器
轉發數據
- 在同一個網段: