計算機網絡之網絡層

一、概述

主要任務是實現網絡互連,進而實現數據包在各網絡之間的傳輸

1.1網絡引入的目的

從7層結構上看,網絡層下是數據鏈路層

從4層結構上看,網絡層下面是網絡接口層

至少我們看到的網絡層下面是以太網

以太網解決了什么問題?

答:以太網解決了具體網絡上主機間數據傳輸的問題;主機之間可以以物理地址,以廣播的傳輸方式進行數據的交換傳輸

網絡解決問題的基本方案

1)強制要求采用一種新的統一的網絡連接方式(強制的統一成一種物理地址)

2)保留現有網絡,重新定義一個虛擬的新的網絡連接方式;求同存異

TCP/IP協議網絡解決問題的方案

1.虛擬的IP互連協議

該協議為了實現網絡互連,要求對有互連需求的網絡,必須在將原有的網絡數據轉換成IP數據報格式,然后在虛擬IP網絡上進行數據的傳輸

2.潛在的IP協議中要給出協議的轉換功能(翻譯功能)

3.同樣要求在虛擬的IP協議中要給出數據傳輸狀態的報告信息

上述三個內容最后都要轉換為3個具體的協議,因此IP協議不是一個協議,是一族協議;只不過這一族中IP地位最強

1.2網絡擴展后可采用的數據傳輸方式

?面向連接的虛電路服務

  • 可靠的通信由網絡來保證
  • 必須建立網絡層的連接----虛電路VC(Virtual Circuit)
  • 通信雙方沿著已建立的虛電路發送分組
  • 目的主機的地址僅在連接建立階段使用,之后每個分組的首部只需攜帶一條虛電路的編號(構成虛電路的每一段鏈路都有一個虛電路編號)。
  • 這種通信方式如果再使用可靠傳輸的網絡協議,就可使所發送的分組最終正確到達接收方(無差錯按序到達、不丟失、不重復)。
  • 通信結束后,需要釋放之前所建立的虛電路

無連接的數據報服務

  • 可靠通信應當由用戶主機來保證
  • 不需要建立網絡層連接
  • 每個分組可走不同路徑
  • 每個分組的首部必須攜帶目的主機的完整地址
  • 這種通信方式所傳送的分組可能誤碼、丟失、重復和失序
  • 由于網絡本身不提供端到端的可靠傳輸服務,這就使網絡中的路由器可以做得比較簡單,而且價格低廉
  • 因特網采用了這種設計思想,也就是將復雜的網絡處理功能置于因特網的邊緣(用戶主機和其內部的運輸層),而將相對簡單的盡最大努力的分組交付功能置于因特網核心。

1.3虛擬IP互連協議引入后數據的轉發流程

1.直接交付

屬于同一個虛擬邏輯網絡和同一個現實物理網絡上主機或主機接口之間數據的轉發,只要解決目的地址IP地址對應的物理地址,就簡單了,就利用物理地址直接在物理網絡上進行傳輸了

屬于同一個廣播域(局域網)內的交付,可以利用ARP協議協議直接找到目的主機IP地址對應的物理地址,從而完成數據的交付

ARP怎么工作的,工作流程,解決的問題:IP->物理地址,數據鏈路層封裝,

A,B是一家的,屬于直接交付范圍,怎么界定,通俗的老說就是姓氏相同?

2.間接交付

屬于不同網絡內的數據傳輸,因此無法直接找到目的地址主機的
MAC地址,只能將數據交付到網絡出口路由器,因此,此時ARP協議并不是去尋找目的地址的MAC地址,而是尋找本網絡出口路由器物理地址

A和C通信,隔著千山萬水,借助第三方(郵筒),怎樣把數據交付出去----中間路由器的接口和A屬于同一個局域網,以廣播的形式發給路由器,到網絡層把真正的目的地提取出來了,在進行封裝,交到C(MAC)

A-》C通信,一跳一跳的,路由器的作用就是傳送數據(跳到網絡層---數據真實的傳輸方向)換一個包裝,向目的地傳遞,網絡中傳遞數據,是一跳一跳的進行傳輸數據(傳輸數據的物理地址改變)大體方向不變,朝著目的地址走

ARP地址解析協議

在虛擬網絡上的主機也必須有唯一的標識

虛擬統一網絡的引入,為每一個在網絡中的主機又提出了一個標識問題,在IP網絡中就稱為IP地址;也就是說在虛擬互連網絡中每個接入主機必須有一個唯一的虛擬IP地址;這個是邏輯地址,與物理網絡位置無關

虛擬網絡是在現實物理網絡上進行抽象總結抽象形成的,而現實網絡上每臺接入網絡的主機都有一個固有的物理地址

兩個地址之間的關系是什么,兩個地址如何進行相互的轉換

1)協議作用

應用進程看到的網絡是統一的IP網絡,因此它所描述的進程之間數據的傳輸是在統一一致的IP網絡上進行傳輸;而這個統一的IP網絡是在不同的現實物理網絡上進行抽象的,所以虛擬網絡間數據的傳輸必須要經過現實的物理地址才能完成真正的傳輸,就必須有個地址能完成兩種地址之間的轉換

封裝成以太數據幀

?2)協議工作原理

A->B發送消息時,首先去查找自己的內存ARP表格,若找到對應的MAC地址則直接進行封裝,轉到介質上進行傳輸,否則,就封裝一個數據鏈路層上的廣播幀,去詢問對應的IP的MAC地址

根據發送的性質:該協議只能解決同一個廣播域(局域網)內,邏輯IP地址到物理MAC地址的轉換問題

3)協議存在缺陷

協議本身工作是開放性的工作方式,缺乏驗證機制?

1.4? IPv4地址

IPv4地址就是因特網上的每一臺主機(或路由器)的每一個接口分配一個在全世界范圍內是唯一的32比特的標識符

分類編址

?

  • A類地址網絡號第1位固定為0,網絡號后面部分不能全0,也不能全1,所以網絡號范圍是1~126
  • B類地址網絡號前2位固定為10,網絡號后面部分可以全取0或1,所以網絡號范圍是128.0~191.255
  • C類地址網絡號前3位固定為110,網絡后后面部分可以全取0或1,所以網絡號范圍是192.0.0~223.255.255
  • D類地址為多播地址,IP地址為224.0.0.0~239.255.255.255

?

?劃分子網的IPv4地址

為什么需要劃分子網?

比如一個單位有300臺主機,此時需要申請一個B類網絡地址,很容易得知,分配出去300個IP地址后,申請得到的B類網絡還剩下很多IP地址。
當單位擴大規模,需要再添加兩個子網的時,又要為這兩個子網分別申請B類地址,這會花費一些不必要的支出,實際上子網1申請到的B類地址還有很多沒用到,我們希望能夠將這些剩余地址應用到其他子網中(節約地址)

如何實現子網劃分?

32比特的子網掩碼可以表明分類IP地址的主機號部分被借用了幾個比特作為子網號

  • 子網掩碼使用連續的比特1來對應網絡號和子網號(子網號來自原先的一部分主機號)
  • 子網掩碼使用連續的比特0來對應主機號
  • 將劃分子網的IPv4地址與其相應的子網掩碼進行邏輯與運算【即掩碼是1的部分】就可得到IPv4地址所在子網的網絡地址

?無分類編址的IPv4地址

為什么需要?

劃分子網在一定程度上緩解了因特網發展中遇到的困難,但是數量巨大的C類網因為其地址空間太小并沒有得到充分使用,而因特網的IP地址仍在加速消耗,整個IPv4地址空間面臨全部耗盡的威脅

?

路由聚合

如路由器A上連接同一網絡的多臺主機,路由器B與A相連。若A將所有主機的具體IP地址都報給B,則路由器B中會增加多項路由條目。可實際上B向A中任意一個主機轉發數據的時都是走同一個端口,因此我們可以將這些網絡的共同前綴提取出來成為新的網絡號,同時將剩余主機號置0放入路由器B中

如:A連接了172.1.4.0/25和172.1.7.0/24,則提取公共前綴聚合后變為172.1.4.0/22

IPV4地址的應用規劃

對于一個給定的IP地址,我們又進行了內部的劃分的重新分配,這樣分配就稱為內部子網的劃分

權利對主機地址部分進行重新的組合,來表示內部使用方式的分配

定長掩碼劃分方式

對于一個給定IP地址,我們有權對主機地址部分進行重新的組合,來表示內部使用方式的分配

變長掩碼劃分方式

1.5IP數據報發送轉發過程?

1.IP網絡虛擬互連網絡的互連設備-----路由器

路由器的作用:

1)工作在網絡層上,意味著它能識別網絡層上的數據傳輸格式

2)路由器按網絡層上數據傳輸地址,進行有目的的數據轉發

3)路由器有針對性的數據轉發依賴于路由器中的路由表

2.IP網絡中路由器轉發分組的算法

特定 默認 一般的網絡路由

同一個網絡之間的主機可以直接通信,不同網絡之間的主機通信需要路由器中轉?

源主機如何判斷目的主機是否和自己在同一個網絡中?

將自身的IP地址與子網掩碼相與得到自身的網絡號1,再將目的IP地址與自身子網掩碼相與得到網絡號2。若兩個網絡號相等,則說明處在同一個網絡?

主機如何知道應該把IP數據報交給哪個路由器進行轉發呢?

通過設置默認網關。所謂默認網關,即當路由表中查不到數據時會將數據發往的路由器端口IP地址?

?靜態路由配置

靜態路由配置是指用戶或網絡管理員使用路由器的相關命令給路由器人工配置路由表

  • 這種人工配置方式簡單、開銷小。但不能及時適應網絡狀態的變化。一般只在小規模網絡中采用
  • 可能由于:①配置錯誤 ②聚合了不存在的網絡 ③網絡故障 而出現路由環路錯誤
  • 默認路由為:0.0.0.0/0?。其作用是當路由表不知道往哪里轉發時,就會往默認路由指定的下一跳位置轉發,根據網絡號最長匹配原理,默認路由網絡號長度為0,因此一定是最后一個被匹配的條目
  • 特定主機路由:具體主機IP/32。網絡號前綴長度32保證了這是第一個被匹配的靜態條目

?如何防止錯誤路由導致IP數據報永久兜圈?

  1. IP數據報首部設置生存時間TTL字段
    • IP數據報進入路由器后,TTL字段的值減1若TTL的值不等于0,則被路由器轉發,否則被丟棄
  2. 對于聚合后或由于網絡故障而不存在的路由條目設置黑洞路由
    • 所謂黑洞路由,即路由器應該丟棄的路由

1.6?路由選擇協議

因特網所采用的的路由選擇協議主要特點

  • 自適應:動態路由選擇,能較好地適應網絡狀態的變化
  • 分布式:路由器之間交換路由信息
  • 分層次:將整個因特網劃分為許多較小的自治系統AS

路由信息協議RIP

基于距離向量的路由選擇協議(應用層是UDP)? ?RIP協議(路由信息協議)?

動態的形成路由器上路由表的內容,作為數據包轉發的依據

距離:是指去某一個網絡所經過路由器的個數(跳數);一個路由器直接相連的網絡距離為1;距離為16表示網絡不可達1

工作原理:

1)通過與相鄰路由器進行信息交互,完成AS內部路由的形成

2)相鄰路由器之間相互交換彼此的全部路由表信息

3)固定時間進行一次交換20s-30s

RIP算法的工作流程:

基于最短距離來形成路由

  • RIP包含以下三個要點
    • 僅和相鄰路由器交換信息
    • 交換的是各自路由表的信息
    • 周期性交換信息

RIP存在的問題

存在"壞消息傳播很慢"的問題,又稱為路由環路(兩個路由器相互學習錯誤路由,造成循環)或距離無窮計數問題,這是距離向量算法的一個固有問題,可以采取多種措施減少出現該問題的概率或減小該問題帶來的危害

  • 限制最大路徑距離為15(16表示不可達)
  • 當路由表發生變化時就立即發送更新報文(即"觸發更新"),而不是周期性發送
  • 讓路由器記錄收到某特定路由信息的接口,而不讓同一路由信息再通過此接口反方向傳送(即**“水平分割”“毒性反轉”**)

開放最短路徑優先OSPF

簡單來說就是得到一個帶權有向圖,以當前路由器為起點,通過迪杰斯特拉算法得到到達某個點的最短路徑

基于鏈路狀態的路由選擇協議(網絡層 IP)? OSPF協議(開放最短路徑優先算法形成的路由

OSPF協議:基于鏈路狀態的路由協議、

鏈路狀態:又只鏈路成本,就是數據在這條鏈路上傳輸所花費的時延,安全,費用等等信息所構成的

鏈路狀態就是綜合參數來形成路由協議

工作原理:(是網絡層的協議)

(1)每個路由器將自己的狀態數據摘要以洪范的方式向所有路由器進行轉發

(2)所有路由器最終會獲取到每個路由器的鄰接關系和鏈路權重(即全網的網絡拓撲結構)

(3)每個路由器以自己為根節點,采用迪杰斯特拉算法計算一個最小生成樹,到達每個路由器

(4)路由穩定后,只有鏈路狀態發生改變時,才將改變的路由狀態發給所有路由器以便重新計算路由

邊界網關協議BGP

盡力尋找一條能夠到達目的網絡且比較好的路由(不兜圈子),而并非找最佳路由

內部網關協議IGP(如路由信息協議RIP或最短路徑優先OSPF)

  • 設法使分組在一個自治系統內盡可能有效地從源網絡傳輸到目的網絡
  • 無需考慮自治系統外部其他方面的策略

外部網關協議EGP(如邊界網關協議BGP)

  • 在不同自治系統內,度量路由的"代價"(距離,寬帶,費用等)可能不同。因此,對于自治系統之間的路由選擇,使用"代價"作為度量來尋找最佳路由是不行的
    • 比如A系統路由選擇度量是距離,B系統是帶寬……那么A到系統E的路由怎樣走最好呢?由于沒有統一度量,所以不能直接得到最佳路由
  • 自治系統之間的路由選擇必須考慮相關策略(政治、經濟、安全等)
    • 如中國的數據報盡量要繞開美國的自治系統

?1.7IPv4數據報首部格式

  • 版本

    4比特,表示IP協議版本。通信雙方使用的IP協議版本必須一致。目前廣泛使用的IP協議版本為號為4(IPv4)

  • 首部長度

    4比特,表示IP數據報首部長度。該字段取值以4字節為單位

    最小十進制取值為5,表示IP數據報首部只有20字節4字節單位,所以取值5對應20字節】固定部分

    最大十進制取值為15,表示IP數據報首部包含20字節固定部分和最大40字節可變部分

  • 總長度

    16比特,表示IP數據報的總長度【首部+數據載荷】,最大取值為十進制65535以字節為單位

  • 可選字段

    長度從140個字節不等。用來支持排錯、測量及安全等措施

    可選字段增加了IP數據報的功能,但這同時也使得IP數據報的首部長度成為可變的。這就增加了每一個路由器處理IP數據報的開銷。實際上可選字段很少被使用

  • 填充字段

    確保首部長度為4字節長度的整數倍,使用全0進行填充

1.8網際控制報文ICMP?

為了更有效地轉發IP數據報和提高交付成功的機會,在網際層使用了網際控制報文協議ICMP

  • 主機或路由器使用ICMP來發送差錯報告報文和詢問報文
  • ICMP報文被封裝在IP數據報中發送

回答報文類型

終點不可達

當路由器或主機不能交付數據報時,就向源點發送終點不可達報文。具體可再根據ICMP的代碼字段細分為目的網絡不可達、目的主機不可達、目的協議不可達、目的端口不可達、目的網絡位置、目的主機未知等13種錯誤?

源點抑制

當路由器或主機由于擁塞而丟棄數據報時,就向源點發送源點抑制報文,使源點知道應當把數據報發送速率放慢?

時間超過

當路由器收到一個目的IP地址不是自己的IP數據報,會將其生存時間TTL字段值減1。若結果不為0,則將該IP數據報轉發出去;若結果為0,除丟棄該IP數據報外,還要向源點發送時間超過報文

當終點在預先規定的時間內不能收到一個數據報的全部數據報片時,就把已收到的數據報片都丟棄,也會向源點發送時間超過報文

?參數問題

當路由器或目的主機收到IP數據報后,根據其首部中的檢驗和字段發現首部在傳輸過程中出現了誤碼,就丟棄該數據報,并向源點發送參數問題報文

改變路由(重定向)

路由器把改變路由報文發送給主機,讓主機知道下次應將數據報發送給另外的路由器(可通過更好的路由)

如主機1的默認路由是R1,信息經過R1時,R1發現最佳路由不是自己,而是R2,所以通過ICMP告知主機1

1.9虛擬專用網VPN

利用公用的因特網作為本機構各專用網之間的通信載體,這樣的專用網又稱為虛擬專用網。
虛擬專用網中各主機所分配的地址應該是本機構可自由分配的專用地址?

?1.10網絡地址轉換NAT

NAT能使大量使用內部專用地址的專用網絡用戶共享少量外部全球地址來訪問因特網上的主機和資源【為了節省IPv4地址】

由于絕大多數的網絡應用都是使用運輸層協議TCPUDP來傳送數據,因此可以利用運輸層的端口號和IP地址一起進行轉換。

這樣,用一個全球IP地址就可以使多個擁有本地地址的主機同時和因特網上的主機進行通信。這種將端口號和IP地址一起進行轉換的技術叫作網絡地址與端口號轉換NAPT

?

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

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

相關文章

【Python 千題 —— 基礎篇】刪除列表值

題目描述 題目描述 刪除列表的指定值。有一個列表 [1, 3, 5, 2, 44, 1, 9, 10, 32] ,請使用 for 循環刪除該列表中與 [44, 1, 9] 列表相同的值,并輸出該列表。 輸入描述 無輸入。 輸出描述 輸出操作后的列表。 示例 示例 ① 輸出: …

記錄:通過day.js獲取兩個日期相差的時間,并轉化為年月日的格式

day.js這個日期庫真的是很不錯的日期庫,足夠滿足日常的開發需求。 Day.js中文網 (fenxianglu.cn) 需求:獲取兩個日期相差的時間,轉化為年月日的形式;話不多少,直接放代碼 import dayjs from "dayjs"; imp…

計算機網絡之應用層

一、概述 引入目的: 為了方便用戶去使用; 該如何方便用戶使用網絡呢,即怎樣幫助用戶使用網絡? 1.用戶需要知道網絡資源所在的位置 2.網絡上資源一定是在資源子網的主機上 3.資源子網上的主機,在通信子網中用IP地…

qt-C++筆記之終端Ctrl+C關閉界面和ROS節點

qt-C筆記之終端CtrlC關閉界面和ROS節點 code review! 文章目錄 qt-C筆記之終端CtrlC關閉界面和ROS節點1.運行2.main.cpp3.main_window.hpp 1.運行 2.main.cpp 3.main_window.hpp

vue-router 路由權限,路由導航守衛

addRouter() 添加路由 使用場景 列如:菜單權限的分配(管理員與用戶不一致) 根據后臺返回 參數 定義isAdmin根據isAdmin 分配 let isAdmin true // 添加路由 可以傳參 一級路由名稱 來添加二級路由 if (isAdmin) {router.addRoute({path: /…

SpringCloud 微服務全棧體系(十六)

第十一章 分布式搜索引擎 elasticsearch 六、DSL 查詢文檔 elasticsearch 的查詢依然是基于 JSON 風格的 DSL 來實現的。 1. DSL 查詢分類 Elasticsearch 提供了基于 JSON 的 DSL(Domain Specific Language)來定義查詢。常見的查詢類型包括&#xff1…

P1030 [NOIP2001 普及組] 求先序排列

1.先找根(后序最后一個元素) 2.以根分中序為兩個中序即: (相當于分為兩個子樹) A中序 對應->A后序 (長度對應) B中序 對應->B后序 (長度對應) 遞歸循壞即可(中序長度小…

【數據結構(C語言)】淺談棧和隊列

目錄 文章目錄 前言 一、棧 1.1 棧的概念及結構 1.2 棧的實現 1.2.1. 支持動態增長的棧的結構 1.2.2 初始化棧 1.2.3 入棧 1.2.4 出棧 1.2.5 獲取棧頂元素 1.2.6 獲取棧中有效元素個數 1.2.7 檢查棧是否為空 1.2.8 銷毀棧 二、隊列 2.1 隊列的概念及結構 2.2 隊…

Javaweb之前后臺分離開發介紹的詳細解析

2.1 前后臺分離開發介紹 在之前的課程中,我們介紹過,前端開發有2種方式:前后臺混合開發和前后臺分離開發。 前后臺混合開發,顧名思義就是前臺后臺代碼混在一起開發,如下圖所示: 這種開發模式有如下缺點&a…

守護進程的理解

什么是守護進程 daemon False # 是否以守護進程方式運行,True守護,False 非守護 在這段代碼中,daemon 變量的值決定了進程是否以守護進程方式運行。如果 daemon 的值為 True,則表示進程將以守護進程方式運行,否則為…

使用vcpkg安裝庫失敗的解決方法

1、前言 vcpk是是一款開源的c/c庫管理工具,尤其是在windows平臺,可以幫助我們很好的管理各種依賴包。 在windows環境做c/c開發的人應該都深有體會,有時候編譯需要下載一堆依賴庫,導致搭建編譯環境特別麻煩。但是,通過v…

前端 vue 面試題(二)

文章目錄 如何讓vue頁面重新渲染組件間通信vue為什么要mutation、 action操作插槽、具名插槽、作用域插槽vue編譯使用的是什么庫?vue怎么實現treeshakingwebpack實現treeshaking為什么只有es module 能支持 tree shaking mixin 的作用mixin的底層原理nexTick原理vue…

預處理機制

跟著肯哥(不是我)學預處理機制 預處理類別 宏定義:#define 將文本替換為表達式或語句 條件編譯:#ifdef、#ifndef和#if、#elif、#endif 根據標識符是否被定義選擇編譯代碼 頭文件包含:#include 將其他文件&#x…

Jmeter怎么實現接口關聯?

用于接口測試時,后一個接口經常需要用到前一次接口返回的結果,應該如何獲取前一次請求的結果值,應用于后一個接口呢,拿一個登錄的例子來說明如何獲取。 1、打開jmeter,新建一個測試計劃,在測試計劃里新建一…

將所有圖片居中對齊

Ctrl h 調出替換框 ^g表示所有圖片 格式里面選擇段落 全部替換

winlogbeat采集windows日志

下載鏈接 https://www.elastic.co/cn/downloads/past-releases/winlogbeat-7-16-2 配置文件 # ---------------------------- Elasticsearch Output ---------------------------- output.elasticsearch:# Array of hosts to connect to.hosts: ["192.168.227.160:9200&…

Vue3中如何響應式解構 props

目錄 1,前言2,解決2.1,利用插件,實現編譯時轉換2.2,toRef 和 toRefs 1,前言 Vue3 中為了保持響應性,始終需要以 props.x 的方式訪問這些 prop。這意味著不能夠解構 defineProps 的返回值&#…

Navicat 技術指引 | 適用于 GaussDB 的數據遷移工具

Navicat Premium(16.2.8 Windows版或以上) 已支持對 GaussDB 主備版的管理和開發功能。它不僅具備輕松、便捷的可視化數據查看和編輯功能,還提供強大的高階功能(如模型、結構同步、協同合作、數據遷移等),這…

Cesium 展示——地球以及渲染數據導出(下載)為圖片或 pdf

文章目錄 需求分析新加需求分析第一種方式第二種方式需求 將 Cesium 球體以及渲染數據導出為 jpg/png/pdf 分析 獲取場景 scene 信息,轉為image 的 octet-stream 流 進行下載為圖片 /*** @todo canvas 導出圖片* @param {string} dataurl - 地址* @return {Blob}*/ functio…

Failed to resolve import “@/..“ from “src/...“ @找不到路徑

安裝path npm install --save-dev types/node再修改 vite.config.ts 中的配置即可 import { defineConfig } from "vite" import react from "vitejs/plugin-react"import path from "path" // 需安裝此模塊// https://vitejs.dev/config/ expo…