局域網網絡傳輸流程圖
兩臺主機在同一個局域網,是否能夠直接通信?????????以太網原理舉例:上課,老師點名小王讓他站起來回答問題。教室里的其他人是可以聽見的,為什么其他人不響應?因為老師叫的是小王,和其他人無關。因此教室發送消息,并不是只有一個人能收到,而是有吃瓜群眾(發消息有點類似消息隊列,有類型的數據塊)每臺主機在局域網上,要有唯一的標識來保證主機的唯一性:mac地址。
以太網原理
????????以太網發送數據,數據是用一個結構封裝的,src:源主機mac地址,dst:目標主機mac地址,data:數據。
結論:
- 以太網中,任何時刻,只允許一臺機器向網絡中發送數據。
- 如果有多臺同時發送,會發生數據干擾,我們稱之為數據碰撞。
- 沒有交換機的情況下,一個以太網就是一個碰撞域。
- 所有發送數據的主機要進行碰撞檢測和碰撞避免。
????????工作流程:所有主機 先發 數據,然后進行碰撞檢測,檢測到碰撞進行碰撞避免,執行碰撞避免算法,例如發數據的主機休眠一段隨機的時間后重發。如果沒有檢測到碰撞,收集到數據的主機對數據判斷dst是否是自己,不是就丟棄,是就留下。
????????理解記憶:以太網本質就是共享的資源!-> 臨界資源,互斥屬性(與互斥鎖不同的是,主機是先發在處理)
主機間通信的本質
主機之間通信:本質是兩個協議棧在通信
數據發送的原始動力:人(90%情況)
TCP/IP協議棧理解
? ? ? ? 用戶通信流程:用戶A發送數據,用戶層添加用戶層報頭,傳輸層添加傳輸層報頭,以此類推,直到數據鏈路層,將數據交給網卡,網卡把數據發送給用戶B的主機,傳到數據鏈路層,然后往上傳層層解包分用(對端同層,要先解包:報頭和有效載荷進行分離),到用戶B就拿到了數據。????????報文=報頭+有效載荷為什么要自頂向下封裝?? ? ? ? 必須貫穿操作系統,貫穿協議棧(發送數據需要網卡,OS是硬件網卡的管理者)。封裝和解包實現了,同層之間,在直接通信,因為我收到的,就是你發送的!、細節1:
- 報頭必須要能做到,和有效載荷進行分離的能力。
- 報頭中必須包含,如何將自己的有效載荷,交付給上層的那一個具體協議。
細節2:
????????底層收到報文,但是報文不是發送給我的,數據鏈路層直接丟棄(數據鏈路層的報頭有起始mac地址和目標mac地址)
細節3:
? ? ? ? 協議棧,棧的理解:自頂向下封裝的過程(入棧),自底向上解包分用的過程(出棧)
拓展:網卡和數據鏈路層,混雜模式,抓包工具的原理(目標mac地址即便不是自己,也保留數據)
同層之間,都認為自己在和對方同層協議直接通信理解:
? ? ? ? 同層之間,報文的結構一樣(報頭結構一樣,有效載荷結構也一樣)
網絡中的地址管理---認識IP地址
IP地址,用來表示,全球范圍內,主機的唯一性(公網IP)
IP和MAC理解:
????????唐僧帶著四個徒弟去西天取經,逢人便說,貧僧自東土大唐而來,要去往西天求取真經(東土大唐是起點,西天是終點)。他們到車遲國面見國王,車遲國國王說離我最近的是女兒國,你下一站是女兒國(車遲國是短期起點,女兒國是短期終點)。
從哪來,到哪去 --- 源IP,目標IP地址
上一站從哪里來,下一站去哪里 --- 源MAC,目標MAC地址
總結:MAC地址是標識局域網主機唯一性的地址,IP地址是標識廣域網主機唯一性的地址。
跨網絡傳輸流程(一切皆IP)
主機A發送數據給主機B,主機A的IP地址:192.168.2.2,主機B的IP地址:172.168.2.2,。
????????主機A不知道172主機在哪里!但是主機A一定能確定,報文絕對不是發送給本地網絡的主機的!(有了目的IP,可以判定要將報文發送給路由器)
? ? ? ? 路由:發現不能發給自己局域網主機的報文,就推送給路由器
網絡層報頭包含:源IP地址和目標IP地址
數據鏈路層報頭包含:源MAC地址和目標MAC地址
????????主機A發送數據到網卡,A局域網來發送,發給路由器的網卡macLeft。路由器數據鏈路層拿到數據,進行解包分用,報頭去掉傳到網絡層。數據鏈路層對IP地址做分析,發現是B局域網內的IP,封裝主機B的MAC地址,通過B局域網傳到主機B。
結論:
- 路由過程中,IP地址不變,mac地址一直在變(mac地址只會在本局域網內有效)
- 無論底層用的是以太網,無線LAN還是自定義局域網通信原理,都可以
- 網絡層+IP的本質意義:給網絡提供了一層虛擬化層,讓世界上所有的網絡,都叫做IP網絡(一切皆IP,類比一切皆文件,封裝了struct file,屏蔽底層硬件差異)
????????只要IP地址,技術上可以實現網絡通信嗎?可以,IP地址是唯一的,局域網內也是唯一的,使用IP地址替換MAC地址技術上可以做到。
為什么不這么做?
? ? ? ? 網絡的發展是從局部到整體的,局域網到廣域網,MAC地址是比IP地址先出,復用MAC地址那套成本更低,兼容性更好,且只使用IP地址并不會給效率帶來顯著的提高(類比C語言翻譯成匯編,匯編在翻譯成2進制)。