主要回顧一下TCP/IP的傳輸過程,在這個過程中,做了什么事情
ip : 網(wǎng)際協(xié)議,IP協(xié)議能讓世界上任意兩臺計算機之間進行通信。
- IP協(xié)議的三大功能:
- 尋址和路由
- 傳遞服務(wù):不可靠(盡最大努力交付傳輸數(shù)據(jù)包),可靠性由上層協(xié)議提供;無連接
- 數(shù)據(jù)包分片重組
OSI七層架構(gòu)(理論) 和 TCP/IP的4層架構(gòu)(實現(xiàn))
IP的主要作用是在復雜的網(wǎng)絡(luò)環(huán)境中將數(shù)據(jù)包發(fā)給最終的目標地址。
主機和路由器的區(qū)別:
- 主機是配置有IP地址,但是不進行路由控制
- 路由器是即配有IP地址,又具有路由控制能力
- 主機和路由器都可被當作網(wǎng)絡(luò)節(jié)點
由于IP地址包括網(wǎng)絡(luò)標識和主機標識,在路由的過程中正是利用IP地址的網(wǎng)絡(luò)標識進行路由。
網(wǎng)絡(luò)號相同則屬于統(tǒng)一網(wǎng)段內(nèi)的主機,網(wǎng)絡(luò)號不同則不屬于同一網(wǎng)絡(luò)。
實現(xiàn)IP通信的主機和路由器必須要有路由表:指明路由器或主機的信息。
路由表的形成方式:
- 管理員手動設(shè)置;(靜態(tài)路由)
- 路由器與其他路由器相互交換時自動刷新。(動態(tài)路由)
路由表中包含了信息:
路由表中的表項內(nèi)容包括:
destination:目的地址,用來標識IP包的目的地址或者目的網(wǎng)絡(luò)。
mask:網(wǎng)絡(luò)掩碼,與目的地址一起標識目的主機或者路由器所在的網(wǎng)段的地址。
pre:標識路由加入IP路由表的優(yōu)先級??赡艿竭_一個目的地有多條路由,但是優(yōu)先級的存在讓他們先選擇優(yōu)先級高的路由進行利用。
cost:路由開銷,當?shù)竭_一個目的地的多個路由優(yōu)先級相同時,路由開銷最小的將成為最優(yōu)路由。
interface:輸出接口,說明IP包將從該路由器哪個接口轉(zhuǎn)發(fā)。
nexthop:下一跳IP地址,說明IP包所經(jīng)過的下一個路由器。
IP地址的網(wǎng)絡(luò)地址部分被用來進行路由控制
DNS查詢流程圖:
域名是怎樣變成數(shù)據(jù)幀中的目標地址的:
ARP協(xié)議:
以目標IP地址為線索,用來定位下一個應(yīng)該接受數(shù)據(jù)分包的網(wǎng)絡(luò)設(shè)備對應(yīng)的MAC地址,
如果目標主機不在同一個鏈路上時,可以通過ARP查找下一跳路由器的MAC地址。
ARP數(shù)據(jù)包報文結(jié)構(gòu):
- 以太網(wǎng)幀頭部(Ethernet Frame Header):包含目的MAC地址和源MAC地址。
- 以太網(wǎng)幀類型(Ethernet Type):指示數(shù)據(jù)幀中的上層協(xié)議類型,對于ARP數(shù)據(jù)包,該字段的值為0x0806。
- ARP幀頭部(ARP Frame Header):包含以下字段:
- 硬件類型(Hardware Type):指示網(wǎng)絡(luò)適配器的類型,例如以太網(wǎng)的硬件類型為1。
- 協(xié)議類型(Protocol Type):指示上層協(xié)議的類型,例如IPv4的協(xié)議類型為0x0800。
- 硬件地址長度(Hardware Address Length):指示硬件地址的長度,例如以太網(wǎng)的硬件地址長度為6個字節(jié)。
- 協(xié)議地址長度(Protocol Address Length):指示協(xié)議地址的長度,例如IPv4的協(xié)議地址長度為4個字節(jié)。
- 操作碼(Operation Code):指示ARP請求或ARP響應(yīng)的類型。ARP請求的操作碼為1,ARP響應(yīng)的操作碼為2。
- 發(fā)送方硬件地址(Sender Hardware Address):指示發(fā)送方的MAC地址。
- 發(fā)送方協(xié)議地址(Sender Protocol Address):指示發(fā)送方的IP地址。
- 目標硬件地址(Target Hardware Address):在ARP請求中,該字段為空;在ARP響應(yīng)中,該字段指示目標的MAC地址。
- 目標協(xié)議地址(Target Protocol Address):指示目標的IP地址。
通過ARP數(shù)據(jù)包中的這些字段,可以實現(xiàn)ARP協(xié)議的功能,即通過IP地址解析對應(yīng)的MAC地址。
發(fā)送ARP請求時,目標硬件地址和目標協(xié)議地址為空;接收到ARP請求后,目標主機會發(fā)送ARP響應(yīng),將目標硬件地址和目標協(xié)議地址填充到響應(yīng)中,以便發(fā)送方可以獲取目標主機的MAC地址。
ARP是如何知道MAC地址的:借助ARP請求和ARP響應(yīng)兩種類型的包確定MAC地址。
原理:ARP高速緩存中存儲的有IP和MAC的映射表,但是生命周期只有20分鐘,如果在主機發(fā)送IP數(shù)據(jù)包的時候,ARP的高速緩存剛好失效或在高速緩存中不存在IP-MAC的映射記錄,那么主機就會發(fā)送ARP廣播包,此時在同一子網(wǎng)內(nèi)的所有設(shè)備都會收到此廣播包,所有的主機都會檢查自己的IP是否是主機的目的IP,如果是則發(fā)送自己的MAC地址給主機,主機在收到MAC地址后,首先對自己的ARP高速緩存列表進行更新,然后再對目標設(shè)備發(fā)送數(shù)據(jù)。
ARP協(xié)議工作原理:
路由選擇協(xié)議:自適應(yīng)的,那個隨著網(wǎng)絡(luò)通信量和拓撲結(jié)構(gòu)的變化而自適應(yīng)的進行調(diào)整。
以上情況是,源主機與目標主機在同一子網(wǎng)下的操作方式,那么如果源主機與目的主機不在同一子網(wǎng)下,又該如何應(yīng)對呢?
此時就體現(xiàn)出了,路由的重要性了。當源主機與目的主機不在同一子網(wǎng)下,ARP廣播包就會發(fā)送到默認網(wǎng)關(guān),有默認網(wǎng)關(guān)轉(zhuǎn)發(fā)至同一網(wǎng)絡(luò)下的其他路由器或者設(shè)備,直到找到目的主機,目的主機在進行ARP響應(yīng)的操作。
ARP響應(yīng)包并非沿著路由的路徑原路返回給源主機的,因為目的主機在進行響應(yīng)的時候是知道源主機的MAC地址的,所以會直接將ARP響應(yīng)包發(fā)送給源主機,以確保響應(yīng)包能夠直接到達源主機。
路由轉(zhuǎn)發(fā)流程:
為什么IP地址可以唯一標識一臺主機,在進行數(shù)據(jù)傳輸?shù)臅r候還要知道MAC地址?
因為IP地址是在邏輯上唯一標識一臺主機或者網(wǎng)絡(luò)設(shè)備,IP地址工作在網(wǎng)絡(luò)層,實際上的數(shù)據(jù)傳輸需要經(jīng)過數(shù)據(jù)鏈路層,將數(shù)據(jù)封裝成數(shù)據(jù)幀,在數(shù)據(jù)幀首部插入源MAC地址和目標MAC地址,通過MAC地址來確保數(shù)據(jù)的準確傳輸。
在數(shù)據(jù)包從源主機到達目標主機的過程中,需要使用物理層(OSI模型的第一層)的MAC地址來實際傳輸數(shù)據(jù)幀。MAC地址是一個全球唯一的硬件地址,它是由網(wǎng)絡(luò)適配器(網(wǎng)卡)廠商分配的。每個網(wǎng)絡(luò)適配器都有一個唯一的MAC地址,用于在局域網(wǎng)中識別設(shè)備。
因此,盡管IP地址提供了邏輯上的唯一標識,但在實際的數(shù)據(jù)傳輸中,需要使用MAC地址來確保數(shù)據(jù)幀能夠正確地在局域網(wǎng)中傳輸?shù)侥繕嗽O(shè)備。知道目標設(shè)備的MAC地址可以準確地將數(shù)據(jù)幀發(fā)送到目標設(shè)備,從而實現(xiàn)數(shù)據(jù)的傳輸。
IPv4數(shù)據(jù)報首部:
標識:當IP數(shù)據(jù)報的長度大于MTU時,就需要進行分片傳輸,傳輸之后,相同標識符的數(shù)據(jù)片會被重新組裝成一個數(shù)據(jù)報。此標識并非排序標識。
標志:占三位,一般有用的是前兩位,最低位叫做MF,MF=1表示后面還有若干個數(shù)據(jù)報,MF=0表示這已經(jīng)是最后一個數(shù)據(jù)報了;中間位叫做DF,DF表示不能進行分片,DF=0才可以進行分片。
ttl:跳數(shù),也就是IP數(shù)據(jù)報生存周期,最多只能有255跳,經(jīng)過一個路由器此值就減一,超過255就丟棄。
特殊IP地址:
- 廣播地址: 一個子網(wǎng)內(nèi)所有網(wǎng)絡(luò)接口都能收到此廣播消息。 直接廣播:帶目標網(wǎng)絡(luò)號,主機地址二進制全1的地址。(使用的范圍在當前網(wǎng)段下) 有限廣播:網(wǎng)絡(luò)號和主機地址二進制全為1的地址(即255.255.255.255)。(使用范圍限于當前網(wǎng)段下 ,通常用于 DHCP
客戶端向DHCP服務(wù)器請求時設(shè)置的報文目的地 IP 地址,且目標 MAC 為 FF:FF:FF:FF:FF:FF)- 組播地址
- 環(huán)回地址
- 私有地址
![]()
子網(wǎng)技術(shù)
劃分子網(wǎng)的步驟:
- 根據(jù)所需的網(wǎng)絡(luò)數(shù)確定需要多少二進制位子網(wǎng)號標識網(wǎng)絡(luò)上的每一個子網(wǎng)
- 根據(jù)子網(wǎng)中的主機數(shù)確定需要多少主機號來標識每個子網(wǎng)上的每一條主機。
- 根據(jù)網(wǎng)絡(luò)好和子網(wǎng)號的位數(shù),計算符合網(wǎng)絡(luò)要求的子網(wǎng)掩碼
- 確定標識每個子網(wǎng)的網(wǎng)絡(luò)地址。
- 確定每一個子網(wǎng)所使用的主機地址范圍。
IPV6
ipv6的地址表示方法:
- IPv6 地址采用十六進制的表示方法,共 128 位,分 8 組表示,每組 16 位,每組表示 4 個十六進制數(shù)。
- 各組之間用 “ : ”號隔開,例如:1080:0:0:0:8:800:200C:417A
- 在 IPv6 地址段中有時會出現(xiàn)連續(xù)的機組0,為了簡化書寫,這些 0 可以用“ : : ”代替,但一個地址中只能出現(xiàn)一次“ : : ”。
IPv6 包含 IPv4 地址:在某些情況下,IPv4 地址需要包含在 IPv6 地址中,這時,IPv6 的最后兩組用現(xiàn)在習慣使用的 IPv4 地址的十進制表示法,前6組用 IPv6表示。例如:IPv4地址 61.1.133.1 包含在 IPv6地址中表示為 0:0:0:0:0:0:61.1.133.1 或者 ::61.1.133.1
IPv6的地址結(jié)構(gòu):
128位的IPv6地址由64位網(wǎng)絡(luò)地址 和64位主機地址組成。其中,64位的網(wǎng)絡(luò)地址又分為48位的全球網(wǎng)絡(luò)標識符和16位的本地子網(wǎng)標識符:
網(wǎng)際控制報文協(xié)議ICMP
icmp是為了更有效的轉(zhuǎn)發(fā)IP數(shù)據(jù)報和提高交付成功的機會。
ping主要用來測試兩臺主機之間的連通性。
原理:通過向目的主機發(fā)送ICMP Echo請求報文,目的主機收到后會發(fā)送Echo回答報文。ping會根據(jù)時間和成功響應(yīng)的次數(shù)估算出數(shù)據(jù)包往返時間以及丟包率。
ping過程中都經(jīng)歷了什么設(shè)備,會發(fā)送什么數(shù)據(jù)包?
在這個過程中,數(shù)據(jù)包會經(jīng)過交換機、路由器等網(wǎng)絡(luò)設(shè)備,根據(jù)目標主機的IP地址進行轉(zhuǎn)發(fā)。ARP請求和響應(yīng)消息在局域網(wǎng)中進行廣播,以獲取目標主機的MAC地址。一旦獲取到目標主機的MAC地址,ICMP消息會直接發(fā)送到目標主機。整個過程中,源主機和目標主機之間的連通性和路由路徑都會被測試和確定。
在Ping的過程中,通常會發(fā)送以下幾個包,并經(jīng)歷以下設(shè)備和流程:
1. 發(fā)送ICMP回顯請求消息(Echo Request):源主機(發(fā)送方)向目標主機(接收方)發(fā)送一個ICMP回顯請求消息,該消息包含一個唯一的標識符和序列號,以及其他必要的字段。
2. ARP請求:如果源主機和目標主機之間沒有建立過通信,源主機會發(fā)送一個ARP請求廣播,詢問局域網(wǎng)中的其他主機,以獲取目標主機的MAC地址。
3. ARP響應(yīng):目標主機收到ARP請求后,會發(fā)送一個ARP響應(yīng),將自己的MAC地址告訴源主機。
4. 獲取目標主機的MAC地址:源主機收到ARP響應(yīng)后,將目標主機的MAC地址添加到ARP緩存表中,并使用該MAC地址發(fā)送ICMP回顯請求消息。
5. 目標主機接收ICMP回顯請求消息:目標主機接收到ICMP回顯請求消息后,會檢查目標IP地址是否與自己匹配。
6. 目標主機發(fā)送ICMP回顯應(yīng)答消息(Echo Reply):如果目標主機的IP地址與ICMP回顯請求消息中的目標IP地址匹配,它會生成一個ICMP回顯應(yīng)答消息,并將該消息發(fā)送回源主機。
7. 源主機接收ICMP回顯應(yīng)答消息:源主機接收到ICMP回顯應(yīng)答消息后,會檢查標識符和序列號是否與之前發(fā)送的ICMP回顯請求消息匹配。
8. 分析結(jié)果:根據(jù)接收到的ICMP回顯應(yīng)答消息,源主機可以判斷目標主機是否可達。如果接收到回答消息,說明主機之間連通;如果沒有接收到回答消息,說明主機之間不可達。
通俗來講ping命令(將DNS域名解析,ARP地址解析,ICMP連通性測試綜合敘述):
假設(shè)有主機A和主機B,現(xiàn)在哪個都不知道有彼此的存在,但是現(xiàn)在有一條業(yè)務(wù)線,需要主機A給主機B發(fā)送消息,主機A現(xiàn)在只知道主機B的IP的域名,那么再發(fā)送消息之前主機A就需要確認與主機B的連通性?。克藭r就會發(fā)送一條ping命令, ping主機B。那么A主機在收到ping命令的時候,首先A主機會判斷ping的是域名還是IP,如果目標地址是一個域名,那么主機會向本地的域名解析器發(fā)送一條DNS查詢請求,請求解析該域名對應(yīng)的IP地址。
域名解析器會先查詢本地的DNS緩存,如果找到對應(yīng)的IP地址,就將這個IP地址返回給主機,如果在高速緩存中沒有找到對應(yīng)的IP地址,DNS解析器會向根域名服務(wù)器發(fā)送查詢請求,根域名服務(wù)器會返回一個頂級域名服務(wù)器的IP地址,域名解析器會在向頂級域名服務(wù)器發(fā)從查詢請求,頂級域名服務(wù)器在返回下一級域名服務(wù)器的IP,域名解析器繼續(xù)發(fā)送查詢請求,以此步驟不斷迭代,知道查詢到域名對應(yīng)的IP地址,域名解析器將查詢到的IP地址返回給主機。
主機知道IP地址之后,就會向該IP發(fā)送一個ICMP回顯請求數(shù)據(jù)包,確認網(wǎng)絡(luò)通路。此時ARP協(xié)議就要登場了,因為此時我們只知道目標主機B的IP地址,并不知道其MAC地址。此時主機就會在本地的ARP高速緩存進行查詢,如果查到目標地址的IP-MAC記錄,就可以直接向目標主機發(fā)送ICMP數(shù)據(jù)包;但我們當前的前提下,A的ARP高速緩存中肯定是沒有B的記錄的,此時A會將ARP請求進行廣播,所有的主機對照自己的IP地址,目的主機會將自己的MAC地址放在ARP響應(yīng)包中,發(fā)送給源主機A。
此時萬事具備,只欠東風!源主機A已經(jīng)知道目標主機B的MAC地址和IP地址,以此為基礎(chǔ),對目標主機B發(fā)送ICMP回顯請求數(shù)據(jù)包,當目標主機B收到請求后,目標主機會檢查目標IP地址是否與自己匹配,如果ICMP回顯請求消息中的IP地址與目標主機B自己的IP地址匹配,目標主機會生成一個ICMP回顯應(yīng)答消息,并將此應(yīng)答消息發(fā)送給源主機。源主機接收到ICMP回顯應(yīng)答消息后,會檢查標識符與序列號是否與之前發(fā)送的ICMP請求消息匹配。
根據(jù)分析結(jié)果,源主機A判斷與目標主機B是否可達。如果接收到回答消息,說明主機可通,如果沒有收到,說明主機之間不可達。
traceroute用來跟蹤一個分組從源點到終點的路徑。
原理:
1. traceroute發(fā)送的IP數(shù)據(jù)報封裝的是無法交付的UDP用戶數(shù)據(jù)報,并由目的主機發(fā)送終點不可達差錯報告報文。
2. 源主機向目的主機發(fā)送一連串的 IP 數(shù)據(jù)報。第一個數(shù)據(jù)報 P1 的生存時間 TTL 設(shè)置為 1,當 P1 到達路徑上的第一個路由器 R1 時,R1 收下它并把 TTL 減 1,此時 TTL 等于 0,R1 就把 P1 丟棄,并向源主機發(fā)送一個 ICMP 時間超過差錯報告報文;
3. 源主機接著發(fā)送第二個數(shù)據(jù)報 P2,并把 TTL 設(shè)置為 2。P2 先到達 R1,R1 收下后把 TTL 減 1 再轉(zhuǎn)發(fā)給 R2,R2 收下后也把 TTL 減 1,由于此時 TTL 等于 0,R2 就丟棄 P2,并向源主機發(fā)送一個 ICMP 時間超過差錯報文。
4. 不斷執(zhí)行這樣的步驟,直到最后一個數(shù)據(jù)報剛剛到達目的主機,主機不轉(zhuǎn)發(fā)數(shù)據(jù)報,也不把 TTL 值減 1。但是因為數(shù)據(jù)報封裝的是無法交付的 UDP,因此目的主機要向源主機發(fā)送 ICMP 終點不可達差錯報告報文。
5. 之后源主機知道了到達目的主機所經(jīng)過的路由器 IP 地址以及到達每個路由器的往返時間。
因特網(wǎng)采用的設(shè)計思路:網(wǎng)絡(luò)層向上提供簡單靈活的、無連接的、盡最大努力交付的數(shù)據(jù)報服務(wù)。
與IP協(xié)議配套的四個協(xié)議:
1. 地址解析協(xié)議ARP
2. 逆地址解析協(xié)議RARP
3. 網(wǎng)際控制報文協(xié)議ICMP
ping 命令都做了那些事情?
在進行ping操作時,通常會發(fā)送一系列的數(shù)據(jù)包,并且會經(jīng)歷以下過程:
- 發(fā)送請求數(shù)據(jù)包:發(fā)送方(通常是ping命令所在的主機)向目標主機發(fā)送一個ICMP Echo Request(請求回顯)數(shù)據(jù)包。
- 路由選擇:發(fā)送方的操作系統(tǒng)將數(shù)據(jù)包發(fā)送到默認網(wǎng)關(guān)(路由器),或者根據(jù)路由表選擇合適的下一跳路由器。數(shù)據(jù)包將通過網(wǎng)絡(luò)傳輸?shù)竭_目標主機。
- 目標主機接收數(shù)據(jù)包:目標主機接收到ICMP Echo Request數(shù)據(jù)包。
- 目標主機生成回復數(shù)據(jù)包:目標主機收到請求后,會生成一個ICMP Echo Reply(回復回顯)數(shù)據(jù)包作為響應(yīng)。
- 回復數(shù)據(jù)包返回:回復數(shù)據(jù)包通過網(wǎng)絡(luò)返回到發(fā)送方。
- 發(fā)送方接收回復數(shù)據(jù)包:發(fā)送方接收到ICMP Echo Reply數(shù)據(jù)包。
- 統(tǒng)計信息顯示:發(fā)送方的ping命令會顯示接收到的回復數(shù)據(jù)包的數(shù)量、往返時間(RTT)以及丟包率等統(tǒng)計信息。
在這個過程中,數(shù)據(jù)包通過網(wǎng)絡(luò)傳輸,經(jīng)過多個路由器和網(wǎng)絡(luò)設(shè)備,最終到達目標主機,并返回到發(fā)送方。每個數(shù)據(jù)包都包含源IP地址、目標IP地址、ICMP協(xié)議頭部和數(shù)據(jù)部分。路由器根據(jù)目標IP地址將數(shù)據(jù)包轉(zhuǎn)發(fā)到下一個跳點,直到到達目標主機。目標主機接收到數(shù)據(jù)包后,根據(jù)協(xié)議頭部的信息進行處理,并生成回復數(shù)據(jù)包發(fā)送回發(fā)送方。
在傳輸過程中,數(shù)據(jù)包可能會經(jīng)歷延遲、丟包、重新排序等情況。這些情況可能由網(wǎng)絡(luò)擁塞、路由器故障、鏈路質(zhì)量等原因引起。ping命令通過發(fā)送多個數(shù)據(jù)包并統(tǒng)計回復數(shù)據(jù)包的情況,可以評估網(wǎng)絡(luò)的可達性和性能。
路由器的結(jié)構(gòu):
路由表和轉(zhuǎn)發(fā)表的區(qū)別:
路由器的結(jié)構(gòu)結(jié)構(gòu)可劃分為兩大部分:路由選擇部分和分組轉(zhuǎn)發(fā)部分
路由選擇部分也叫做控制部分,其核心構(gòu)件是路由選擇處理機。路由選擇處理機的任務(wù)是根據(jù)所選定的路由協(xié)議構(gòu)造出路由表,同時經(jīng)?;蚨ㄆ诘睾拖噜彽穆酚善鹘粨Q路由信息而不斷地更新和維護路由表。
分組轉(zhuǎn)發(fā)部分由三部分組成:交換結(jié)構(gòu)、輸入端口和輸出端口。 交換結(jié)構(gòu)的作用就是根據(jù)轉(zhuǎn)發(fā)表(forwarding table)對分組進行處理,將某個輸入端口進入的分組從一個合適的輸入端口轉(zhuǎn)發(fā)出去。
路由表和轉(zhuǎn)發(fā)表是兩種不同的表,他們共享相同的信息,但是用于不同的目的。
路由表是根據(jù)路由選擇算法得出的,而轉(zhuǎn)發(fā)表是從路由表得出的;轉(zhuǎn)發(fā)表的結(jié)構(gòu)應(yīng)當使查找過程最優(yōu)化,路由表則需要對網(wǎng)絡(luò)拓撲變化的計算最優(yōu)化;路由表總是由軟件實現(xiàn)的,而轉(zhuǎn)發(fā)表可由硬件實現(xiàn)。
轉(zhuǎn)發(fā)表(交換機根據(jù)轉(zhuǎn)發(fā)表來轉(zhuǎn)發(fā)數(shù)據(jù)幀)
又稱MAC表。內(nèi)部存儲的是MAC-port的對應(yīng)關(guān)系。
交換機本質(zhì)上也是一個計算機,他會維護一張記錄著局域網(wǎng)主機端口MAC地址與交換機端口對應(yīng)的表, 交換機就是根據(jù)這張表負責將數(shù)據(jù)幀傳輸?shù)街付ǖ闹鳈C端口上的。
交換機的存儲轉(zhuǎn)發(fā)功能:
* 交換機接收到數(shù)據(jù)幀之后,首先會記錄數(shù)據(jù)幀中的源MAC地址和對應(yīng)的到達端口到轉(zhuǎn)發(fā)表中,這一過程稱作自學習,不需要任何的人工干預;
* 接著交換機檢查自己的MAC表是否有數(shù)據(jù)幀中目的MAC地址的匹配條目,如果有,則會根據(jù)MAC表中記錄的對應(yīng)端口將數(shù)據(jù)幀轉(zhuǎn)發(fā)出去,這一轉(zhuǎn)發(fā)方式稱為“單播”。而如果沒有,則會將該數(shù)據(jù)幀從非達到端口的其他全部端口發(fā)送出去,這一轉(zhuǎn)發(fā)方式成為“廣播”
交換機轉(zhuǎn)發(fā)的步驟如下:
1. 主機A會將一個源MAC地址為本機網(wǎng)卡物理地址,目的MAC地址為主機B網(wǎng)卡物理地址的數(shù)據(jù)幀發(fā)送給交換機1;
2. 交換機收到此數(shù)據(jù)幀后,首先將數(shù)據(jù)幀中的源MAC地址和對應(yīng)的輸入端口0記錄到交換機維護的MAC地址表中;
3. 然后交換機會檢查自己的MAC地址表中是否有數(shù)據(jù)幀中的目的MAC地址的信息,如果有,則從MAC地址表中記錄的對應(yīng)端口發(fā)送出去,如果沒有,則會將此數(shù)據(jù)幀從非接收端口的所有端口發(fā)送出去,這里僅從端口1發(fā)出;
4. 這時,局域網(wǎng)的所有主機(通過交換機相連的全部主機)都會收到此數(shù)據(jù)幀,但是只有主機B收到此數(shù)據(jù)幀時會響應(yīng)這個廣播幀,并回應(yīng)一個數(shù)據(jù)幀(這個回應(yīng)由什么機制確定的,需要再查資料確定一下~TCP的ACK包?),此數(shù)據(jù)幀中包括主機B網(wǎng)絡(luò)設(shè)備的MAC地址;
5. 當交換機收到主機B回應(yīng)的數(shù)據(jù)幀后,也會記錄數(shù)據(jù)幀中的源MAC地址,即主機B網(wǎng)絡(luò)設(shè)備的MAC地址,這時,再當主機A和主機B相互通信時,交換機就根據(jù)MAC地址表中的記錄,實現(xiàn)單播了,一趟轉(zhuǎn)發(fā)流程實際交換機就“學習”到了兩個轉(zhuǎn)發(fā)表條目。
那么當局域網(wǎng)內(nèi)存在多個交換機互聯(lián)時,交換機的MAC地址表應(yīng)該如何記錄呢?
-
主機A將一個源MAC地址為本機網(wǎng)卡物理地址,目的MAC地址為主機C網(wǎng)卡物理地址的數(shù)據(jù)幀發(fā)送給交換機1;
-
交換機1收到此數(shù)據(jù)幀后,會學習源MAC地址,并檢查MAC地址表,發(fā)現(xiàn)沒有目的MAC地址的記錄,則會將數(shù)據(jù)幀廣播出去,主機B和交換機2都會收到此數(shù)據(jù)幀;
-
交換機2收到此數(shù)據(jù)幀后也會將數(shù)據(jù)幀中的源MAC地址和對應(yīng)的端口記錄到MAC地址表中,并檢查自己的MAC地址表,發(fā)現(xiàn)沒有目的MAC地址的記錄,則會廣播此數(shù)據(jù)幀,主機C和主機D都會收到此數(shù)據(jù)幀;
-
主機C收到數(shù)據(jù)幀后,會響應(yīng)這個數(shù)據(jù)幀,并回復一個源MAC地址為本機網(wǎng)卡物理地址的數(shù)據(jù)幀,該幀最終會送往主機A,這時交換機1和交換機2都會將主機C的MAC地址記錄到自己的MAC地址表中,并且以單播的形式將此數(shù)據(jù)幀發(fā)送給主機A;
-
這時,主機A和主機C通信就可以以單播的形式傳輸數(shù)據(jù)幀了,A與D、B與C及B與D的通信與上述過程一樣,因此交換機2的MAC地址表中記錄著主機A和主機B的MAC地址都對應(yīng)其端口3。
總結(jié): 交換機具有動態(tài)自學習源MAC地址與物理端口映射的功能,并且交換機的一個端口可以對應(yīng)對各MAC地址,但是一個MAC地址只能對應(yīng)一個端口。
交換機動態(tài)學習的MAC地址默認只有300s的有效期,如果300s內(nèi)記錄的MAC地址沒有對應(yīng)的通信過程來更新對應(yīng)條目,則會自動刪除此記錄,這是由交換機中的一個計時器所維護的
ARP表
在以太網(wǎng)環(huán)境下,同一個網(wǎng)段的主機之間需要知道對方的MAC地址,才能進行通信。
在構(gòu)造數(shù)據(jù)包準備發(fā)送時,源主機究竟要如何獲得目的主機網(wǎng)絡(luò)設(shè)備MAC地址?
這時就需要使用到ARP協(xié)議。在網(wǎng)絡(luò)拓撲中的每個節(jié)點或說主機上,實際都維護有一張ARP表,他記錄這主機的IP地址到MAC地址的映射關(guān)系。
ARP地址解析協(xié)議: 工作在網(wǎng)絡(luò)層,運行在各網(wǎng)絡(luò)節(jié)點上,負責完成主機IP地址到MAC地址的映射。
ARP協(xié)議的工作原理:1. 如果主機A想發(fā)送數(shù)據(jù)包給同一網(wǎng)段內(nèi)的另一臺主機B(通過交換機相連的節(jié)點處于同一網(wǎng)段),很明顯,A的用戶應(yīng)用程序要么已經(jīng)知道B的IP地址,或者說域名(Domain Name,DNS協(xié)議會完成主機名到IP地址的映射,這里不是重點),那么主機A首先會檢查自己的ARP緩存表(ARP Cache),查看是否有主機B的IP地址與其MAC地址的對應(yīng)關(guān)系,如果有,則直接將主機B網(wǎng)絡(luò)設(shè)備的MAC地址作為目的MAC地址封裝到數(shù)據(jù)幀中,無需進一步操作即獲取到數(shù)據(jù)幀封裝所需的全部信息,此后完成封裝并發(fā)送數(shù)據(jù)幀到目的MAC地址。如果沒有,主機A則會發(fā)送一個ARP請求信息(ARP Request),請求的目的IP地址是主機B的IP地址,目的MAC地址是MAC層的廣播地址(即ff:ff:ff:ff:ff:ff),源IP地址和MAC地址是主機A的IP地址及其MAC地址; 2. 當交換機接收到此數(shù)據(jù)幀之后,發(fā)現(xiàn)此幀是廣播幀,因此,會將此數(shù)據(jù)幀從非接收的所有端口發(fā)送出去; 3. 同一網(wǎng)段中的所有節(jié)點都會接收到該ARP請求數(shù)據(jù)包,目的IP不匹配的節(jié)點會直接忽略該請求,而當主機B接收到此數(shù)據(jù)幀后,解析到IP地址與自己的IP地址一致,先將主機A的IP地址及其MAC地址的對應(yīng)關(guān)系記錄到自己的ARP緩存表中,同時會發(fā)送一個ARP應(yīng)答(ARP Response),應(yīng)答數(shù)據(jù)包源MAC地址即主機B自身網(wǎng)絡(luò)設(shè)備的MAC地址,該應(yīng)答通過交換機轉(zhuǎn)發(fā)至主機A; 4. 主機A在收到這個回應(yīng)的數(shù)據(jù)幀之后,在自己的ARP緩存表中記錄主機B的IP地址和MAC地址的對應(yīng)關(guān)系。而此時主機A已經(jīng)可以繼續(xù)封裝準備發(fā)往主機B的數(shù)據(jù)幀,而交換機也已經(jīng)學習到了主機A和主機B的MAC地址與其端口的對應(yīng)關(guān)系,之后主機A發(fā)送的數(shù)據(jù)幀通過交換機轉(zhuǎn)發(fā)至主機B。
這里有一點值得注意的是傳輸過程中IP地址與MAC的地址的變化問題:
* MAC地址在同一個廣播域中傳播時始終不變,但在跨越廣播域(即經(jīng)過路由器)時,會由于重新封裝而改變,源MAC地址將變?yōu)槁酚善鞯妮敵龆丝诘腗AC地址,目的MAC地址隨網(wǎng)絡(luò)拓撲實際情況而定,若路由器與目的主機所在網(wǎng)段直連,此時目的MAC地址就是目的主機的MAC地址;而不管是源IP地址還是目的IP地址,在數(shù)據(jù)包傳輸過程中都始終不會改變。、
路由器之間是如何進行數(shù)據(jù)傳輸?shù)模?/strong>
路由器之間的數(shù)據(jù)傳輸是通過路由協(xié)議和轉(zhuǎn)發(fā)表來實現(xiàn)的。當一個路由器接收到一個數(shù)據(jù)包時,它會根據(jù)目標IP地址查找轉(zhuǎn)發(fā)表,確定下一跳路由器,并將數(shù)據(jù)包發(fā)送給下一跳路由器。路由器之間數(shù)據(jù)傳輸?shù)幕具^程:
路由協(xié)議選擇:路由器使用路由協(xié)議(如RIP、OSPF、BGP等)來學習和交換路由信息。這些協(xié)議允許路由器之間互相通信,交換關(guān)于網(wǎng)絡(luò)拓撲和可達性的信息。
轉(zhuǎn)發(fā)表構(gòu)建:路由器通過路由協(xié)議學習到的路由信息被存儲在轉(zhuǎn)發(fā)表中。轉(zhuǎn)發(fā)表中包含目標網(wǎng)絡(luò)的IP地址范圍和對應(yīng)的下一跳路由器的信息。路由器根據(jù)轉(zhuǎn)發(fā)表來決定將數(shù)據(jù)包發(fā)送到哪個下一跳路由器。
數(shù)據(jù)包轉(zhuǎn)發(fā):當路由器收到一個數(shù)據(jù)包時,它會檢查數(shù)據(jù)包的目標IP地址,并與轉(zhuǎn)發(fā)表進行匹配。如果找到匹配的目標網(wǎng)絡(luò),路由器會將數(shù)據(jù)包發(fā)送給轉(zhuǎn)發(fā)表中指定的下一跳路由器。如果找不到匹配的目標網(wǎng)絡(luò),路由器會根據(jù)默認路由進行轉(zhuǎn)發(fā),或者丟棄數(shù)據(jù)包。
下一跳選擇:路由器根據(jù)轉(zhuǎn)發(fā)表中的下一跳路由器信息,選擇合適的出接口將數(shù)據(jù)包發(fā)送出去。這通常涉及到路由選擇算法,如距離矢量算法、鏈路狀態(tài)算法等。
數(shù)據(jù)包傳輸:路由器將數(shù)據(jù)包發(fā)送到下一跳路由器,通過物理鏈路進行傳輸。下一跳路由器接收到數(shù)據(jù)包后,會進行類似的處理過程,根據(jù)轉(zhuǎn)發(fā)表決定下一個跳點,直到數(shù)據(jù)包到達目標主機。
整個過程中,路由器之間通過交換路由信息和更新轉(zhuǎn)發(fā)表來實現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā)。路由器根據(jù)目標IP地址和轉(zhuǎn)發(fā)表中的路由信息,選擇合適的路徑將數(shù)據(jù)包轉(zhuǎn)發(fā)到下一跳路由器,最終到達目標主機。這樣,數(shù)據(jù)就能在不同的路由器之間進行傳輸和轉(zhuǎn)發(fā)。
確認下一跳的路由的過程:
- 路由選擇算法:路由選擇算法是用來確定數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑的算法。常見的路由選擇算法包括距離矢量算法(Distance Vector)、鏈路狀態(tài)算法(Link State)和路徑矢量算法(Path
Vector)等。這些算法使用不同的指標和策略來選擇最佳路徑,其中包括考慮距離、開銷、帶寬、負載均衡等因素。- 路由表的使用:路由表是存儲在路由器或主機上的一張表格,記錄了網(wǎng)絡(luò)的拓撲結(jié)構(gòu)和路由信息。路由表中的每一條路由條目都包含了目的網(wǎng)絡(luò)地址、下一跳、出接口等信息。當數(shù)據(jù)包到達路由器或主機時,根據(jù)數(shù)據(jù)包的目的網(wǎng)絡(luò)地址,通過查找路由表中的匹配條目,確定下一跳路由。
具體的確認下一跳路由的過程如下:- 數(shù)據(jù)包到達路由器或主機時,根據(jù)數(shù)據(jù)包的目的IP地址,查找路由表中匹配的路由條目。
- 路由表中的路由條目包含了目的網(wǎng)絡(luò)地址、下一跳、出接口等信息。根據(jù)路由選擇算法,選擇最佳的路由條目。
- 如果路由條目中的下一跳是一個具體的IP地址,那么將數(shù)據(jù)包發(fā)送到該IP地址。如果下一跳是一個出接口,那么將數(shù)據(jù)包發(fā)送到該接口。
- 數(shù)據(jù)包繼續(xù)按照下一跳路由進行轉(zhuǎn)發(fā),直到到達目的網(wǎng)絡(luò)。
需要注意的是,路由表中的路由條目是動態(tài)更新的,路由器會根據(jù)網(wǎng)絡(luò)拓撲的變化、鏈路狀態(tài)的變化等信息進行路由表的更新。所以,在確認下一跳路由時,需要及時查看和更新路由表的信息。
默認路由的作用?
默認路由是一種特殊的路由,用于處理目標網(wǎng)絡(luò)無法匹配的情況。當一個路由器收到一個數(shù)據(jù)包時,如果目標IP地址在轉(zhuǎn)發(fā)表中找不到匹配的路由信息,路由器將使用默認路由來決定下一跳路由器。
默認路由的作用如下:
處理未知目標網(wǎng)絡(luò):當路由器收到一個數(shù)據(jù)包,目標IP地址在轉(zhuǎn)發(fā)表中找不到匹配的路由信息時,路由器會使用默認路由來決定下一跳路由器。這樣,即使目標網(wǎng)絡(luò)是未知的,數(shù)據(jù)包也不會被丟棄,而是被轉(zhuǎn)發(fā)到默認路由指定的下一跳路由器。
連接到其他網(wǎng)絡(luò):默認路由可以用于連接到其他網(wǎng)絡(luò)。當一個路由器連接到多個網(wǎng)絡(luò)時,它可以使用默認路由將數(shù)據(jù)包轉(zhuǎn)發(fā)到另一個網(wǎng)絡(luò)。這樣,路由器就可以將數(shù)據(jù)包傳遞給其他網(wǎng)絡(luò)中的路由器,實現(xiàn)網(wǎng)絡(luò)間的通信。文章來源:http://www.zghlxwxcb.cn/news/detail-665015.html
簡化路由表:默認路由可以幫助簡化路由表。如果一個路由器只需要將數(shù)據(jù)包轉(zhuǎn)發(fā)到一個默認網(wǎng)關(guān),而不需要為每個目標網(wǎng)絡(luò)都配置具體的路由信息,那么路由表會更加簡潔和易于管理。文章來源地址http://www.zghlxwxcb.cn/news/detail-665015.html
總之,默認路由在處理未知目標網(wǎng)絡(luò)和連接到其他網(wǎng)絡(luò)時起到了關(guān)鍵作用。它允許路由器將數(shù)據(jù)包轉(zhuǎn)發(fā)到一個默認網(wǎng)關(guān),確保數(shù)據(jù)包不會被丟棄,并且簡化了路由表的配置和管理。
到了這里,關(guān)于IPv4,IPv6,TCP,路由的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!