網(wǎng)絡(luò)基礎(chǔ)-數(shù)據(jù)包
前言
本筆記通過(guò)記錄 數(shù)據(jù)包 在網(wǎng)絡(luò)中的生命履歷來(lái)引出一些網(wǎng)絡(luò)基礎(chǔ)知識(shí),如:
MAC、ARP、IP、子網(wǎng)掩碼、網(wǎng)關(guān)、集線器、交換機(jī)、路由器這些概念都是在鏈路層和網(wǎng)絡(luò)層。
(這些都不做嚴(yán)謹(jǐn)?shù)恼f(shuō)明,只是為了更好的了解而表達(dá)的個(gè)人描述)
數(shù)據(jù)包簡(jiǎn)要生命周期
瀏覽本小節(jié)的時(shí)候遇到疑問(wèn)點(diǎn)可以可以跳到理解區(qū) check 一下有沒(méi)有答案。
數(shù)據(jù)包:
簡(jiǎn)單路徑:源主機(jī) -> 目標(biāo)主機(jī)。可能路徑:源主機(jī) -> 交換機(jī)A -> 路由器A -> 路由器B -> 交換機(jī)B -> 目標(biāo)主機(jī)。
參考圖:
源主機(jī)視角:
- 需要知道 本地IP 和 目標(biāo)IP。
- 通過(guò)子網(wǎng)掩碼判斷是否在同一個(gè)子網(wǎng)中。
- 同一子網(wǎng),則直接獲取目標(biāo)主機(jī)的MAC地址,發(fā)送出去。
- 不同子網(wǎng),獲取默認(rèn)網(wǎng)關(guān)的 MAC,把數(shù)據(jù)包發(fā)給默認(rèn)網(wǎng)關(guān)設(shè)備。
交換機(jī)視角:
- 收到的數(shù)據(jù)包必須有目標(biāo) MAC 地址。
- 通過(guò) MAC 地址表查映射關(guān)系。
- 查到了就按照映射關(guān)系從我的指定端口發(fā)出去。
- 查不到就所有端口都發(fā)出去。
路由器視角:
- 收到的數(shù)據(jù)包必須有目標(biāo) IP 地址。
- 通過(guò)路由表查映射關(guān)系。
- 查到了就按照映射關(guān)系從我的指定端口發(fā)出去(不在任何一個(gè)子網(wǎng)范圍,走其路由器的默認(rèn)網(wǎng)關(guān)也是查到了)。
- 查不到則返回一個(gè)路由不可達(dá)的數(shù)據(jù)包。
三張表:
- arp 緩存表 是不斷通過(guò) arp 協(xié)議的請(qǐng)求逐步完善起來(lái)的。
- 交換機(jī)中的 MAC 地址表,用于映射 MAC 地址和它的端口。
- 路由器中的 路由表 用于映射 IP 地址(段)和它的端口。
理解區(qū)
數(shù)據(jù)包
得先了解 TCP/IP 網(wǎng)絡(luò)七層級(jí)及各級(jí)的作用和數(shù)據(jù)封裝。
- 應(yīng)用層
- 表示層
- 會(huì)話層
- 傳輸層
- 網(wǎng)絡(luò)層(本節(jié)需要了解)
- 數(shù)據(jù)鏈路層(本節(jié)需要了解)
- 物理層
應(yīng)用層的數(shù)據(jù)一層一層通過(guò)包裝下來(lái),通過(guò)物理層的物理設(shè)備發(fā)出去,到最終目的主機(jī)后,又像扒洋蔥一樣,一層一層扒開(kāi),最終到達(dá)應(yīng)用層后的數(shù)據(jù)和源主機(jī)應(yīng)用層的數(shù)據(jù)一樣。如圖:
名詞說(shuō)明:
IP:主機(jī)地址。屬于網(wǎng)絡(luò)層地址。
一般用于源主機(jī)和最終目標(biāo)主機(jī)中。
MAC:設(shè)備地址。屬于數(shù)據(jù)鏈路層地址。
一般用于當(dāng)前設(shè)備和下一設(shè)備中(不一定是最終設(shè)備)。
子網(wǎng)掩碼:用于判斷 IP 處于哪個(gè)網(wǎng)段。
一般用于比較兩個(gè) IP 是否處于同一個(gè)子網(wǎng)中。
默認(rèn)網(wǎng)關(guān):
若發(fā)送的數(shù)據(jù)不在本子網(wǎng),就丟給默認(rèn)網(wǎng)關(guān)處理。
一般用于與外網(wǎng)通信。
默認(rèn)網(wǎng)關(guān)IP一般都設(shè)為路由器IP,因?yàn)橐话愣际峭ㄟ^(guò)路由器與外網(wǎng)通信。
ARP:
是一種地址解析協(xié)議。根據(jù)IP地址來(lái)獲取MAC地址的。
源主機(jī)攜帶IP數(shù)據(jù)廣播給通過(guò)支持ARP設(shè)備連接起來(lái)的多主機(jī),若目標(biāo)IP對(duì)于,則該主機(jī)返回?cái)y帶MAC數(shù)據(jù)給源主機(jī)。
集線器:
字面理解即可,如何一臺(tái)主機(jī)數(shù)據(jù)發(fā)到集線器,都廣播到所有出口。
作用在物理層(第一層),不對(duì)MAC操作。
交換機(jī):
比集線器高級(jí),不再是廣播到所有出口,而是只轉(zhuǎn)發(fā)到目標(biāo)MAC的出口。
作用在數(shù)據(jù)鏈路層(第二層),參考MAC,只轉(zhuǎn)發(fā)到目標(biāo)MAC的出口。
工作在局域網(wǎng)內(nèi)。
路由器:
比交換機(jī)高級(jí)。
具有路由功能。
作用在網(wǎng)絡(luò)層(第三層),參考IP。
連接局域網(wǎng)和外網(wǎng)。
MAC
MAC:設(shè)備地址。屬于數(shù)據(jù)鏈路層地址。
一般用于當(dāng)前設(shè)備和下一設(shè)備中(不一定是最終設(shè)備)。
IP
IP:主機(jī)地址。屬于網(wǎng)絡(luò)層地址。
一般用于源主機(jī)和最終目標(biāo)主機(jī)中。
子網(wǎng)
子網(wǎng)掩碼 & 判斷是否在同一子網(wǎng):
IP 與 子網(wǎng)掩碼 做 按位與 ,就可以得出該 IP 的子網(wǎng)網(wǎng)段。
如:
子網(wǎng)掩碼:255.255.255.0
IP-1: 192.168.1.2 & 255.255.255.0 = 192.168.1.0
IP-2: 192.168.1.123 & 255.255.255.0 = 192.168.1.0
IP-3: 192.168.2.123 & 255.255.255.0 = 192.168.2.0
因?yàn)?192.168.1.0 = 192.168.1.0,所以IP-1與IP-2處于同一子網(wǎng)。
因?yàn)?192.168.1.0 != 192.168.2.0,所以IP-1與IP-3不在同一子網(wǎng)。
在發(fā)數(shù)據(jù)包時(shí),子網(wǎng)的作用:
- 若源IP和目標(biāo)IP在同一子網(wǎng):直接獲取目標(biāo)IP主機(jī)的MAC,然后把數(shù)據(jù)包丟出去。
- 若源IP和目標(biāo)IP不在同一子網(wǎng):獲取默認(rèn)網(wǎng)關(guān)的 MAC ,然后把數(shù)據(jù)包丟給默認(rèn)網(wǎng)關(guān)那邊。
ARP
ARP:
- 是一種地址解析協(xié)議。根據(jù)IP地址來(lái)獲取MAC地址的。
- 源主機(jī)攜帶IP數(shù)據(jù)廣播給通過(guò)支持ARP設(shè)備連接起來(lái)的多主機(jī),若目標(biāo)IP對(duì)于,則該主機(jī)返回?cái)y帶MAC數(shù)據(jù)給源主機(jī)。如圖:
集線器
字面理解即可,如何一臺(tái)主機(jī)數(shù)據(jù)發(fā)到集線器,都廣播到所有出口。
作用在物理層(第一層),不對(duì)MAC操作。
如圖:
交換機(jī)
比集線器高級(jí),不再是廣播到所有出口,而是只轉(zhuǎn)發(fā)到目標(biāo)MAC的出口。
作用在數(shù)據(jù)鏈路層(第二層),參考MAC,只轉(zhuǎn)發(fā)到目標(biāo)MAC的出口。
工作在局域網(wǎng)內(nèi)。
交換機(jī)連接:
左邊交換機(jī)的地址表:
MAC 地址 | 端口 |
---|---|
bb-bb-bb-bb-bb-bb | 1 |
cc-cc-cc-cc-cc-cc | 3 |
aa-aa-aa-aa-aa-aa | 4 |
dd-dd-dd-dd-dd-dd | 5 |
ee-ee-ee-ee-ee-ee | 6 |
ff-ff-ff-ff-ff-ff | 6 |
gg-gg-gg-gg-gg-gg | 6 |
hh-hh-hh-hh-hh-hh | 6 |
路由器
作用在網(wǎng)絡(luò)層(第三層),參考IP。
路由器的每一個(gè)端口,都有獨(dú)立的 MAC 地址。
連接局域網(wǎng)和外網(wǎng)。
轉(zhuǎn)發(fā)時(shí),根據(jù)路由表轉(zhuǎn)發(fā),實(shí)際出口是根據(jù)MAC來(lái)發(fā)送到下一個(gè)設(shè)備。下一個(gè)設(shè)備判斷數(shù)據(jù)包目標(biāo)IP是否是本設(shè)備,若不是,就又找出下一個(gè)MAC地址把數(shù)據(jù)包丟出去。
到此這篇關(guān)于網(wǎng)絡(luò)基礎(chǔ)-數(shù)據(jù)包的文章就介紹到這了,更多相關(guān)數(shù)據(jù)包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
適合后臺(tái)管理系統(tǒng)開(kāi)發(fā)的12個(gè)前端框架(小結(jié))
當(dāng)你寫(xiě)項(xiàng)目的時(shí)候,如何快速的完成一個(gè)項(xiàng)目的搭建,這個(gè)時(shí)候就需要借助到一些模板了,前端開(kāi)發(fā)的一個(gè)好處就是,各類UI模板都是相當(dāng)?shù)凝R全的,本文就介紹幾個(gè)前端框架,感興趣的可以了解一下2021-06-06Security安裝 Elastic SIEM 和 EDR的超詳細(xì)教程
這篇文章主要介紹了Security安裝 Elastic SIEM 和 EDR的超詳細(xì)教程,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03阿里巴巴開(kāi)源 Dragonwell JDK 最新版本 8.1.1-GA 發(fā)布
距離 Dragonwell JDK 第一個(gè)正式版本 8.0.0-GA 發(fā)布已經(jīng)過(guò)去 3 個(gè)月了,項(xiàng)目在 Github 上的 stars 繼續(xù)攀升達(dá)到了 1900。今天我們帶來(lái)了最新版本 8.1.1-GA 的發(fā)布,包含了全新的特性和更新,需要的朋友可以參考下2019-10-10IntelliJ IDEA下的SVN使用(傻瓜式教學(xué))
這篇文章主要介紹了IntelliJ IDEA下的SVN使用(傻瓜式教學(xué)),文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12詳解SHA-256算法的原理以及C#和JS的實(shí)現(xiàn)
SHA-256 是 SHA-2 下細(xì)分出的一種算法。截止目前(2023-03)未出現(xiàn)“碰撞”案例,被視為是絕對(duì)安全的加密算法之一,本文主要介紹了SHA-256算法的原理以及C#和JS的實(shí)現(xiàn),希望對(duì)大家有所幫助2023-03-03