11網絡層-分組轉發算法

路由

分組轉發

1)從數據報的首部提取目的主機的IP地址D,得出目的網絡地址N

2)若N就是與此路由器直接相連的某個網絡地址,則進行直接交付,不需要經過其他路由器,直接將數據報交付給目的主機(這里包括將目的主機地址D轉為具體硬件地址,把數據報封裝為MAC幀,再發送此幀);否則間接交付,執行(3);

3)若路由表中有目的地址為D的特定主機路由,則把數據報送給路由表中下一條路由器;否則執行4

4)若路由表中有到達網絡N的路由,則把數據報傳送給路由表中所指明的下一條路由器;否則,執行5

5)若路由表中有一個默認路由,則把數據報傳送給路由表中指明的默認路由器;否則執行6)

6)報告轉發分組出錯

在互聯網上轉發分組時,都是從一個路由器轉發到下一個路由器。對于每條路由最主要的時以下兩個信息(目的網絡地址,下一條地址)

現在互聯網所有分組的轉發都是基于目的主機所在的網絡,但大多數情況下都允許有這樣的特例,即對特定的目的主機指明一個路由。這個路由也叫做特定主機路由。特定主機路由的子網掩碼時255.255.255.255.要在所有路由器上添加。

默認路由

默認路由(Default route),是對IP數據包中的目的地址找不到存在的其他路由時,路由器所選擇的路由。目的地不在路由器的路由表里的所有數據包都會使用默認路由。這條路由一般會連去另一個路由器,而這個路由器也同樣處理數據包: 如果知道應該怎么路由這個數據包,則數據包會被轉發到已知的路由;否則,數據包會被轉發到默認路由,從而到達另一個路由器。每次轉發,路由都增加了一跳的距離。

默認路由和靜態路由的命令格式一樣。只是把目的地ip和子網掩碼改成0.0.0.0和0.0.0.0。

主機里的默認路由通常被稱作默認網關。默認網關通常會是一個有過濾功能的設備,如防火墻和代理服務器。

路由還可以采用默認路由以交少路由表所占用的空間和搜索路由表所用的時間。這種轉發方式在一個網絡只有很少的對外連接時時很有用的。默認路由用0.0.0.0表示

子網劃分

子網劃分的基本思路:

1)一個擁有很多物理網絡的單位,可將所屬的物理網絡劃分為若干個子網。劃分子網純屬一個單位內部的事情,本單位意外看不到這個網絡是由多少個子網構成的,因為這個單位對外仍然表現為一個網絡。

2)劃分子網的方法時從網絡主機號借用若干位作為子網號當然主機號也就相應的減少了同樣的位數。于是兩級IP地址在本單位內部變為三級IP地址:網絡號、子網號和主機號。也可記為:

IP地址 ::={,,}

3)凡是從其他網絡發送給本單位某臺主機的IP數據報,仍然是根據IP數據報的目的網絡號找到連接本單位網絡上的路由器。但此路由器收到IP數據報后,再按照目的網絡號和子網號找到目的子網,再把OP數據報交付給目的主機。

子網掩碼

子網掩碼

再IP數據報的首部無法看出源主機和目的主機所連接的網絡是否進行了子網的劃分。這是因為32為的IP地址本身以及數據報的首部都沒有包含任何有關子網劃分的信息。因此必須寧外想辦法,這就是使用子網掩碼。

把三級地址的子網掩碼與收到的數據報的目的IP地址逐位相“與”,就能得出所要找的子網的網絡地址。

使用子網掩碼的好處是:不論有沒有劃分子網,只要把子網掩碼與IP地址進行與運算,就能立即得出網絡地址。這樣再路由器處理到來的分組時就可采用同樣的算法。

互聯網規定:所有的網絡都必須使用子網掩碼,同時再路由器的路由表也必須有子網掩碼一欄。不劃分子網,那么該網絡的子網掩碼就是默認子網掩碼。

A類地址的默認子網掩碼是255.0.0.0

B類地址的默認子網掩碼是255.255.0.0

C類地址的默認子網掩碼是255.255.255.0

使用子網掩碼時的分組轉發

在使用子網劃分之后,路由表中現必須包含以下三項內容:目的網路地址、子網掩碼和下一跳地址。

在劃分子網的情況下,路由器轉發分子算法

1)從收到的數據報的首部提取目的IP地址D;

2)先判斷是否位直接交付。對路由器直接相連的網絡逐個進行檢查:用各個網絡的子網掩碼與D逐位相與,看結果是否和相應的網絡地址匹配。若匹配,則把分組進行直接交付(當然還要將D轉為物理地址,將數據報封裝成幀發送出去),轉發任務結束。否則就間接交付,執行3)

3)若路由表中有目的地址位D的特定主機路由,則把數據報傳送給路由表中所執行的下一條路由器;否則執行4)

4)對路由表中的每一行(目的網絡地址,子網掩碼,下一跳地址),用其中的子網掩碼和D逐位相與,得到結果N。若N與改行的目的網絡地址匹配,則把數據傳送給改行指明下一跳路由器;否則執行5)

5)若路由表中有一個默認路由,則把數據報傳送給路由表中指明的默認路由器;否則,執行6)

6)報告轉發分組出錯

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44590.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44590.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44590.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

人為因素:為什么網絡安全不僅僅關乎技術

關注公眾號網絡研究觀獲取更多最新內容。 我們生活在一個生活與技術日益緊密交織的世界。但在構建防火墻和安裝防病毒軟件時,我們常常會忘記一個關鍵因素:人的行為。 網絡犯罪分子正是利用了人為因素,利用巧妙的心理戰術繞過最強大的安全措…

【MySQL基礎篇】事務

事務簡介 事務是一組操作的集合,它是一個不可分割的工作單位,事務會把所有的操作作為一個整體一起向系統提交或或撤銷操作請求,即這些操作要么同時成功,要么同時失敗。 典型事例:銀行轉賬操作 假設張三向李四進行轉賬…

Python:正則表達式相關整理

最近因為一些原因頻繁使用正則表達式,因為以前系統整理過關于正則表達式的相關知識,所以這里僅記錄使用期間遇到的問題。 本文內容基于re包 1. match和search方法的區別 在Python中,re.search和re.match都是用于匹配字符串的正則表達式函數&a…

防火墻NAT、智能選路綜合實驗

一、實驗拓撲 二、實驗要求 1,辦公區設備可以通過電信鏈路和移動鏈路上網(多對多的NAT,并且需要保留一個公網IP不能用來轉換) 2,分公司設備可以通過總公司的移動鏈路和電信鏈路訪問到Dmz區的http服務器 3,多出口環境基于帶寬比例…

Curator分布式鎖

Curator 是一個用于 Apache ZooKeeper 的客戶端庫,提供了更高級的抽象和工具,以簡化 ZooKeeper 的使用。Curator 是由 Netflix 開發的,并已成為分布式應用程序中使用 ZooKeeper 的事實標準。它解決了原生 ZooKeeper API 使用復雜、易出錯的問…

node js安裝、配置(Windows版)

目錄 node js 安裝 node js 全局配置 1、全局安裝路徑 2、全局緩存路徑 3、修改環境變量 pnpm安裝、卸載 全局安裝pnpm 驗證pnpm版本 卸載pnpm 1、移除全局安裝的包 2、移除pnpm cli 腳本直接安裝 npm安裝的使用命令直接卸載 node js 安裝 cmd 查看是否存在&…

容器docker 架構命令案例

文章目錄 前言一、docker1.1 為什么有docker1.2 docker架構1.3 docker 安裝1.4 docker中央倉庫1.5 docker 基本指令1.6 docker數據卷,掛載例:nginx 數據卷掛載例:mysql 本地持久化 1.7 鏡像制作鏡像結構dockerfile基礎指令容器生成鏡像 1.8 d…

宿主機訪問docker容器中的mysql被拒絕

問題: 解決方案: 1.進入docker中的mysql容器 docker exec -it 容器名稱/id /bin/bash 2.登錄用戶 mysql -u root -p 3.進去mysql自帶的管理數據庫mysql use mysql; 4.查詢用戶的訪問權限 SELECT user, host FROM user WHERE userroot;5.發現該用…

繪畫平臺小程序的設計

管理員賬戶功能包括:系統首頁,個人中心,學生管理,講師管理,課程類型管理,課程信息管理,課程購買管理,作業類型管理 開發系統:Windows 架構模式:SSM JDK版本&…

AURORA仿真

AURORA 仿真驗證 定義:AURORA是一種高速串行通信協議,通常用于在數字信號處理系統和其他電子設備之間傳輸數據。它提供了一種高效的方式來傳輸大量數據,通常用于需要高帶寬和低延遲的應用中。AURORA協議通常由Xilinx公司的FPGA器件支持&#…

golang 項目打包部署環境變量設置

最近將 golang 項目打包部署在不同環境,總結一下自己的心得體會,供大家參考。 1、首先要明確自己目標服務器的系統類型(例如 windows 或者Linux) ,如果是Linux 還需要注意目標服務器的CPU架構(amd或者arm) 目標服務器的CPU架構可執行命令&…

對Mapper.xml文件進行深入的學習

1. 前言 既上次在Mapper.xml文件出現bug之后&#xff0c;痛改前非&#xff0c;決定吃透Mapper.xml映射文件。 讓我們通過具體的代碼段來進一步理解 MyBatis 的 Mapper XML 文件中的每個組成部分。 <?xml version"1.0" encoding"UTF-8"?> <!…

python 爬取當當網圖書榜

首先查看當當網好評書單頁面&#xff0c;找到翻頁的URL參數 直接用requests請求頁面 resp requests.get(url) 找到想要的信息&#xff0c;使用正則表達式把這些信息提取出來 patternre.compile(list_num.*?(\d).<.*?<img src"(.*?)".*?title"(.*?…

Eel入門還有一些案例

Eel入門還有一些案例 Eel 是一個 Python 庫&#xff0c;它允許 Python 程序通過簡單的 API 與網頁進行交互。它使用 WebSocket 協議來實現 Python 后端和 JavaScript 前端之間的實時通信。下面是關于 Eel 的用法、通信原理和使用場景的一篇博客文章。 Eel的基本原理 Eel的基本原…

針對vue3的render函數添加自定義指令

話不多說 直接上代碼 主要是給h函數設置自定義指令控制 import /styles/reset.css import /styles/global.scss import uno.cssimport { createApp } from vue import App from ./App.vue import { setupRouter } from ./router import { setupStore } from ./store import …

Android studio之編譯提示Could not find :umeng-asms-v1.2.1

1 、問題 Could not determine the dependencies of task :app:compileDebugJavaWithJavac. > Could not resolve all task dependencies for configuration :app:debugCompileClasspath.> Could not find :umeng-asms-v1.2.1:.Required by:project :app> Could not …

FGF14:腦部疾病新潛力靶標

成纖維細胞生長因子14&#xff08;FGF14&#xff09;是FGF11亞家族成員&#xff0c;在神經元的所有基本特性&#xff08;內在放電、興奮性和抑制性神經元的突觸傳遞和可塑性&#xff09;中發揮作用。 &#xff08;數據來源AlphaFold&#xff09; FGF14由247個氨基酸組成&#x…

實戰篇(九):解鎖3D魔方的秘密:用Processing編程實現交互式魔方

解鎖3D魔方的秘密:用Processing編程實現交互式魔方 使用 Processing 創建一個 3D 魔方效果展示1. 安裝 Processing2. 項目結構3. 代碼實現4. 代碼解釋4.1. 初始化魔方4.2. 繪制魔方4.3. 處理鼠標事件4.4. 檢查點擊的面4.5. 旋轉面和最終確定旋轉5. 運行和測試6. 細節解釋6.1. …

【資源調度】2-如何解決資源調度問題?

導讀&#xff1a;本期是全網最全【資源調度】系列推文的第2期(共50期左右)。上期我們在《何為調度&#xff1f;》中&#xff0c;對調度的定義與作用、計劃與調度的關系、調度問題的拆解做了詳細介紹。從本期開始&#xff0c;我們選擇【客服調度】場景作為【資源調度】問題的具象…

51單片機(STC8H8K64U/STC8051U34K64)_RA8889_8080參考代碼(v1.3)

硬件&#xff1a;STC8H8K64U/STC8051U34K64 RA8889開發板 硬件跳線變更為并口8080模式&#xff0c;PS00x&#xff0c;R143&#xff0c;R142不接&#xff0c;R141無關 8080接口電路連接圖&#xff1a; 實物連接圖&#xff1a; RA8889開發板外接MCU連接器之引腳定義&…