【計算機網絡】網絡層——IP協議

目錄

一. 基本概念

二. 協議報文格式

三. 網段劃分

1. 第一次劃分?

2. CIDR方案

3. 特殊的IP地址

四. IP地址不足

1. 私有IP和公網IP

2. DHCP協議

3. 路由器

4. NAT技術?

內網穿透(NAT穿透)

五. 路由轉發?

路由表生成算法

結束語


一. 基本概念

IP指網絡互連協議,Internet Protocol的縮寫,是TCP/IP體系中的網絡層協議。設計IP的目的是提高網絡的可擴展性:一是解決互聯網問題,實現大規模,易構網絡的互聯互通;二是分割頂層網絡應用和底層網絡技術之間的耦合關系,以利于兩者的獨立發展。根據端到端的設計原則。IP只為主機提供一種無連接,不可靠,盡力而為的數據包傳輸服務

TCP協議提供傳輸控制,IP協議提供傳輸服務。TCP協議為傳輸層協議,其保證可靠性和傳輸效率,而下層的網絡層和數據鏈路層負責數據在網絡中的傳輸。

雙方在進行網絡通信時,數據并不是從一方的傳輸層直接發送到另一方的傳輸層的,而是需要依次向下交付給網絡層和數據鏈路層,然后發送到網絡中;對方主機拿到數據后,先需要依次向上交付解包。如下圖

數據自頂向下交付,各協議層添加報頭的過程叫做封裝;報文自底向上,各協議層移除報頭的過程叫做解包

  • 網絡層的作用就是,將數據從一臺主機送到另一臺主機,也就是數據的路由

專有名詞解釋

  • 主機:配有IP地址,但不進行路由控制的設備
  • 路由器:既配有IP地址,又能進行路由控制、
  • 節點:主機和路由器的統稱

需要注意的是,現代操作系統的某些特定配置下,也可以使得主機具備一定程度的路由功能。比如支持NAT(網絡地址轉換),但這并不是主機的主要功能。路由器也可以被稱為主機

二. 協議報文格式

  • 4位版本號(version):指定IP協議的版本,對于IPv4來說,就是4
  • 4位頭部長度(header length):IP頭部的長度,基本單位是4字節,也就是length * 4的字節數。比如length = 4,那么報頭長度(包括選項)就是4*4=16。4bit表示的最大數字是15,因此IP報頭的最大長度是60字節。因為20字節是固定長度,所以選項部分最大為40字節
  • 8位服務類型(Type of service):3位優先權字段(已經棄用),4位TOS字段和1位保留字段(必須為0,后續發展補充)。4位TOS分別為最小延時,最大吞吐量,最高可靠性,最小成本。這四者相互沖突,只能選擇一個,對于ssh/telnet這樣的應用程序,最小時延比較重要;對于ftp這樣的程序,最大吞吐量比較重要
  • 16位總長度(total length):IP數據報整體占多少字節
  • 16位標識(id):唯一的標識主機發送的報文,如果IP報文在數據鏈路層被分片了,那么每一片里的標識都是相同的
  • 3位標志字段:第一位保留(現階段不用,后續發展補充);第二位為1表示禁止分片,此時如果報文長度超過MTU長度,該報文就會被直接丟棄;第三位表示“更多分片”,如果分片,最后一個分片的“更多分片”標志位為0,其他都是1。、
  • 13位分片偏移(framegament offset):是分片相對于原始IP報文開始處的偏移,其實就是在表示當前分片在原報文中處于哪個位置,實際偏移字節數就是這個值 /?8。因此,除了最后一個報文,其他報文的長度必須是8的整數倍(否則報文就不連續了)
  • 8位生存時間(Time of live):數據報到達目的地的最大報文跳數,一般是64。每經過一個路由,TTL - = 1,一直減到0還沒到達,那么就丟棄這個報文。該字段主要用來防止出現路由循環
  • 8位協議:表示上層傳輸層協議類型
  • 16位頭部校驗和:使用CRC進行校驗,來鑒別頭部是否損壞
  • 32位源地址:發送端,源主機IP地址
  • 32位目的地址:接收端,目的主機IP地址
  • 選項字段:不定長,最多40字節

IP報頭在內核中本質是位段類型,給數據封裝報頭,實際上就是使用該位段類型定義一個變量,然后填充IP報頭當中的各個屬性字段,最后將這個IP報頭拷貝到數據的首部,便完成了IP報文的封裝

解包過程需要回答兩個問題:

  • IP報頭和有效載荷如何分離?
  • 有效載荷如何向上交付?

1. IP報頭和有效載荷如何分離

方法與TCP一樣。在IP報頭中,前20字節是固定長度,其中有4位首部長度,根據首部長度就可以知道報頭的長度,再根據16位總長度,將報頭和有效載荷分離

2. 有效載荷如何向上交付

基于IP協議的傳輸層協議不止一種,因此IP封裝時,需要記錄上層協議類型。報頭中的8位協議字段,就記錄了上層協議類型

常見的8位協議字段有這些

  • 1:ICMP(Internet Control Message Protocol,互聯網控制報文協議)
  • 6:TCP (Transmission Control Protocol,傳輸控制協議)
  • 17:UDP (User Datagram Protocol,用戶數據報協議)
  • 41:IPv6 (Internet Protocol version 6,互聯網協議版本 6)
  • 89:OSPF (Open Shortest Path First,開放最短路徑優先)
  • 132:SCTP (Stream Control Transmission Protocol,流控制傳輸協議)
  • 253:使用實驗/測試用途的協議
  • 254:保留字段
  • 255:保留字段

三. 網段劃分

IP地址標識網絡中唯一一臺主機,端口號標識主機中唯一一個進程。所以IP地址+端口號可以表示網絡中唯一一臺主機的進程

網絡通信的實質是,網絡中,兩個不同主機的進程的通信

端口號在傳輸層使用,而IP地址在網絡層使用


IP地址分為兩部分:網絡號和主機號

  • 網絡號:保證相互連接的兩個網段(局域網)具有不同的標識
  • 主機號:同一網段(局域網),主機之間具有相同的網絡號,但必須有不同的主機號

數據在網絡傳輸過程中會遇到一個個的路由器,這些路由器會幫助網絡當中的數據進行路由轉發,使得網絡中的數據慢慢接近目標主機。路由器在幫助數據進行路由轉發時,會提取該數據的IP報頭當中的目的IP地址,并以此作為數據路由轉發的重要依據。

當主機A收到主機B的數據,可能要返回響應或者也要給主機B發送數據,此時雙方身份就對掉了,主機B可以根據主機A發送的報文,其中有源IP地址——主機A的IP地址。此時主機B構建的IP報文,源IP是主機B的IP,目的IP是主機A的IP地址

  • 不同的子網(局域網),其實就是把網絡號相同的主機放到一起
  • 如果在子網中新增一臺主機,則這臺主機的網絡號和這個子網的網絡號一致,但是主機號必須不能和子網中任何一臺主機重復

1. 第一次劃分?

過去曾經提出一種劃分網絡號和主機號的方案,把所有IP地址分為五類,如下圖

  • A類:0.0.0.0 ~ 127.255.255.255
  • B類:128.0.0.0 ~ 191.255.255.255
  • C類:192.0.0.0 ~ 223.255.255.255
  • D類:224.0.0.0 ~ 239.255.255.255
  • E類:240.0.0.0 ~ 247.255.255.255

當要判斷一個IP地址屬于哪一類時,只需要遍歷IP地址的前5個比特位,第幾個比特位最先出現0,那么就對應屬于哪一類IP地址

主機號越多,代表該網絡可容納的主機數越多

但隨著Internet的飛速發展,這種劃分方案的局限性很快顯現出來,大多數組織都申請B類網絡地址,導致B類地址很快分配完了,而A類卻浪費了大量的地址:

例如,申請一個B類地址,理論上該子網中允許容納6萬5千多臺主機

但實際網絡架構中,不存在一個子網有這么多主機的情況,因此大量的IP地址都別浪費掉

針對這種情況提出了新的劃分方案,稱為CIDR(Classless Interdomain Routing)

2. CIDR方案

在原有的五類網絡的基礎上繼續進行子網劃分,需要借用主機號當中的若干位充當網絡號

  • 引入一個額外的子網掩碼(subnet mask)來區分網絡號和主機號
  • 子網掩碼也是一個32位的正整數,通常用一串“0”來結尾
  • 每一個子網都有自己的子網掩碼
  • 將IP地址和子網掩碼進行“按位與”操作,得到的就是網絡號
  • 網絡號和主機號的劃分與這個IP地址是A類,B類還是C類無關

下面舉兩個例子

因為255的比特位為8個1,即全1。任何數與之按位與都為其本身,所以IP地址的前三位不變。最后一位為0,按位與為0。并且不管最后一位數字怎么變,與子網掩碼按位與都為0。所以該子網范圍為140.252.20.0 ~ 140.252.20.255?

240的比特位為1111 0000,即按位與后會保留最后一位的前4個比特位。68的比特位為0100 0100,與240按位與后保留前四位:0100 0000——64

因為最后一位的后4個比特位為主機號,所以最多有16臺主機,即從140.252.20.64 ~ 140.252.20.79

可見,IP地址與子網掩碼做與運算可以得到網絡號,主機號從全0到全1就是子網的地址范圍

此時一個網絡就被更細粒度的劃分成一個個更小的子網,通過不斷地子網劃分,子網中IP地址對應的主機號就越來越短,因此子網中可用的IP地址的個數也越來越少,這就避免了IP地址被浪費的情況

需要注意的是,子網劃分不是只能進行一次,我們可以在劃分出來的子網的內部再繼續進行子網劃分

因此一個數據在路由器轉發時——路由,隨著數據不斷路由進入更小的子網,其網絡號的位數是不斷變化的,準確淶水其網絡號的位數在不斷增加,這就意味著IP地址中的主機號位數不斷減少,子網規模不斷變小。最終當數據路由到達目的主機所在網絡時,就可以在該網絡中找到對應的目的主機


IP地址和子網掩碼還有一種更簡潔的表示方法:例如140.252.20.68/24?

這表示該主機的IP為140.252.20.68,子網掩碼的高24位為1,也就是255.255.255.0

補充:運營商

運營商其實就是中國電信,移動,聯通等等

  • 實際網絡通信的基礎設施建設都是運營商完成的,我們訪問服務器并不是直接發送給對應的服務器的,而是需要經過運營商建設的各種基站和各種路由器,?才能最終送達到對應的服務器
  • 我們交網費,其實也就是購買入網許可。當我們成功輸入聯網密碼,運營商的路由器會檢查是否欠費,沒有則正常路由,欠費則不進行數據轉發,因此無法上網

也就是說,用戶上網的數據首先必須經過運營商相關的網絡設備,然后才能發送到互聯網公司對應的服務器。網段劃分,子網劃分等工作都是運營商做的

3. 特殊的IP地址

并不是所有的IP地址都能夠作為主機的IP地址,有些IP地址本身就具有特殊用途

  • 將IP地址中的主機號全部設為0,就稱為網絡號,代表這個局域網。比如192.168.0.0
  • 將IP地址中的主機號全設為1,就成為了廣播地址,用于給同一個鏈路中相互連接的所有主機發送數據包。比如192.168.255.255
  • 127.*的IP地址用于本地環回(loop back)測試,通常是127.0.0.1

主機號全0和全1一般不被主機使用,所以一個子網(局域網)的主機數最多為2^{n}-2,n為主機號位數。例如192.168.2.0。該子網的主機號為最后一位,有8bits,即主機數最多為2^{8}-2


本地環回

本地環回會將數據貫穿網絡協議棧,但最終并不會將數據發送到網絡當中,相當于本地環回不會講數據寫到網卡上

本地環回的目的就是將數據自頂向下貫穿協議棧,進行一次數據封裝的過程,然后再自底向上貫穿協議棧,進行一次數據的解包和分用,用于測試本地的網絡功能是否正常

本地環回的基本原理:

  • 當數據到達IP層需要繼續向下交付時,如果是環回程序,那么IP輸出函數會將該數據放到IP輸入隊列中,然后再由IP輸入函數讀取上去
  • 而IP輸入函數將數據讀取上去的本應該是鏈路層交付的數據,因此該數據后續就會被當作從網絡中讀取上的數據看待,各層協議會對該數據依次進行解包和分用
  • 如果不是環回程序,那么接下來就會判斷該數據對應的目的IP是否為廣播或多播地址,或者目的IP地址是否與本主機的IP地址相同,如果是則也會將數據放入到IP輸入隊列當中,等IP輸入函數將其讀走
  • 只有判斷程序不是環回程序,并且也不是廣播或多播,或發給本主機的數據后,才會用ARP協議(后續將)獲取該數據的目的主機的MAC地址(數據鏈路層)并進行后續數據發送的操作

loopback設備:

四. IP地址不足

IP地址(IPv4)是一個4字節,32位的正整數,因此最多表示的主機數為2^{32},將近43億個。又因為IP地址唯一標識網絡中的一臺主機,所以要想網絡通信,就必須有IP地址。

但全球人口已經有超70億,更何況不僅電腦,手機等設備,只要是需要上網的,都需要IP地址。由此可見,32位IP地址是遠遠不夠的

因此才提出CIDR的方案,對已經劃分好的五類網絡繼續進行子網劃分,其目的就是為了減少IP地址的浪費。

CIDR雖然一定程度上緩解了IP地址不夠用的問題,減少了IP地址的浪費,但IP地址的絕對上線并沒有增加,即能表示的主機數沒有增加。

為了,人們提出了以下幾種方式:

  • DHCP協議:動態分配IP地址。只給介入網絡的設備分配IP地址,因此同一個MAC地址(數據鏈路層)的設備,每次接入互聯網中,得到的IP地址不一定相同,避免了IP地址強綁定與某一臺設備。MAC地址是一個48位的地址,每一個網卡至少配備一個MAC地址。后續數據鏈路層再詳細講解
  • NAT技術:能夠讓不同局域網當中同時存在兩個相同的IP地址,NAT技術不僅能解決IP地址不足的問題,而且還能夠有效的避免來自網絡外部的攻擊,隱藏并保護網絡內部的計算機
  • IPv6:IPv6用16字節,128bits來表示IP地址,從根本上緩解IP地址不足的問題。但IPv6并不是IPv4的簡單升級,兩者是互不相干的兩個協議,彼此并不兼容。目前IPv6在公網還沒有普及,但在我國的內網內,基本都已經支持IPv6

1. 私有IP和公網IP

如果一個組織內部組建局域網,IP只用于局域網內部的通信,而不直接練到Internet上,理論上,使用任意的IP地址都可以,但是RFC 1918規定了用于組建局域網的私有IP地址。

  • 10.0.0.0 :前8位是網絡號,共16,777,216個地址
  • 172.16.0.0? ~ 172.31.255.255 :前12位為網絡號,共1,048,576個地址
  • 192.168.0.0 :前16位為網絡號,共65,536個地址

包含在這個范圍內的,都稱為私有IP,只在子網(局域網)是使用,其余被稱為公網IP(或全局IP)

在Linux中,可以使用ifconfig查看網絡信息,第一段的etho代表這臺主機的網絡接口,第二段的lo(loop)代表本地環回。可以看到,私有IP為10.0.12.11

?在Windows下,可以先Win+r,輸入cmd打開命令行控制器,使用ipconfig命令查看網絡信息

?可以看到已經支持IPv6協議


2. DHCP協議

手動管理IP地址是非常麻煩的,當子網中新增主機時需要給其分配IP地址,當子網當中有主機斷開網絡時,又需要將其IP地址回收,便于后續給新增主機分配

  • 因此,對于IP地址的分配和回收一般不會手動進行,而是采用DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)協議
  • DHCP通常被應用在大型的局域網中,其主要作用就是集中管理地址,分配IP地址,使網絡環境中的主機動態的獲得IP地址,Gateway地址,DNS服務器地址等信息,并能夠提高地址的使用率
  • DHCP是一個基于UDP的應用層協議,一般的路由器都帶有DHCP功能,因此路由器也可以看作一個DHCP服務器

舉例:

比如家里面的局域網的網絡號為:192.168.2.

可用的IP地址就是192.168.2.0 ~ 192.168.2.255;一般規定.0和.255是不用的路由器一般為局域網中的第一臺主機,即192.168.2.1

DHCP的作用就是,當你的手機和你的電腦連網時,按順序分配IP地址,如果早上你的手機先連,那么手機的IP地址為192.168.2.2,電腦為192.168.2.3;中午手機和電腦都斷了網,下午電腦比手機先連,那么電腦的IP為192.168.2.2,手機為192.168.2.3。這就是動態地址分配——DHCP

3. 路由器

路由器是連接兩個或多個網絡的硬件設備,路由器上有兩種網絡接口,分別是LAN口和WAN口:

  • ?LAN口(Local Area Network):表示連接本地網絡的端口,主要用于家庭網絡中的交換機,集線器或PC相連
  • WAN口(Wide Area Network):表示連接廣域網的端口,一般指互聯網

我們將LAN口的IP地址叫做LAN口IP,也叫子網IP;將WAN口的IP地址叫做WAN口IP,也叫做外網IP

我們使用的電腦,家用路由器,運營商路由器,廣域網以及我們要訪問的服務器之間的關系大致如下:

4. NAT技術?

  • 一個路由器可以配置兩類IP地址,一個是WAN口IP,一個是LAN口IP
  • 路由器LAN口連接的主機,都從屬于當前這個路由器的子網中
  • 不同的路由器,子網IP其實都是一樣的(通常都是192.168.1.1),即子網的第一個IP。子網內的主機IP地址不能重復,但是子網之間的IP地址就可以重復了,即兩個子網允許出現相同的主機號
  • 每一個家用路由器,其實又作為運營商路由器的子網中的一個節點,這樣的運營商路由器可能會有很多級,最外層的運營商路由器,WAN口IP就是一個公網IP了
  • 子網內的主機需要和外網進行通信時,路由器將IP首部中的IP地址進行替換(替換成WAN口IP),這樣逐級替換,最終數據包中的IP地址會成為一個公網IP,這種技術成為NAT(Network Address Translation,網絡地址轉換)
  • 如果希望我們自己實現的服務器程序,能夠在公網上被訪問到,就需要把程序部署在一臺具有公網IP的服務器上,這樣的服務器可以在阿里云/騰訊云等等云服務平臺購買

路由器在做IP地址替換時,還會將源IP和目的IP的映射關系保存,記錄在NAT轉換表中。

當局域網內的主機訪問公網主機時,通常情況下,局域網出口路由器會將發往公網主機的數據包進行網絡地址轉換(NAT),將數據包中的源IP地址修改為路由器的公網IP地址,以便公網主機能夠正確地返回響應。

在進行 NAT 轉換時,路由器會將源 IP 地址替換為它自己的公網 IP 地址,并在其 NAT 轉換表中記錄轉換信息,以便在接收到響應數據包時,能夠將目標 IP 地址從公網 IP 地址轉換為對應的私有 IP 地址,并將響應數據包發送回相應的局域網主機。

當局域網出口路由器進行網絡地址轉換(NAT)時,它會在轉換表中記錄每個轉換的信息,包括私有 IP 地址和對應的公網 IP 地址。這樣,在接收到公網主機返回的響應數據包時,出口路由器可以根據目標 IP 地址查找轉換表,并將目標 IP 地址從公網 IP 地址映射回相應的私有 IP 地址。

具體而言,當出口路由器接收到返回的數據包時,它會檢查數據包的目標 IP 地址。然后,它會查詢轉換表,找到與目標 IP 地址對應的私有 IP 地址。接著,出口路由器會將數據包的目標 IP 地址修改為對應的私有 IP 地址,并將數據包發送到局域網內的相應主機。

內網穿透(NAT穿透)

  • ?主機C在局域網A中,主機D在局域網B中,理論上主機C和主機D是不能不跨公網進行通信的,因為一個主機要想將數據發送給另一臺主機,就得先知道該主機的IP地址
  • 即便主機C知道了主機D的IP地址,這個IP地址也是私有IP,可能會和局域網A中的主機重復,包括主機C
  • 當和主機C重復時,操作系統會認為是本主機通信,如此甚至不會向外發送;和局域網A的其他主機重復,則會認為是局域網通信,不會經由路由器

所以數據要從一個局域網發送到另一個局域網,如果不經過公網是基本上不可能的。我們在和別人聊天的時候,也不是直接將數據從一個局域網直接發送到了另一個局域網,而是先將數據經過公網發送到了服務器,然后再由服務器將數據經過公網轉發到了另一個局域網。

但實際確實存在一些技術能夠使數據包在發送過程中不進行公網IP的替換,而將數據正確送到目標主機,這種技術叫做內網穿透,也叫做NAT穿透


內網穿透是一種網絡技術,內網穿透通常用于實現兩個不同局域網之間的通信。當兩個局域網之間由于網絡隔離或安全限制而無法直接通信時,可以使用內網穿透技術來建立一條安全的通道,使得兩個局域網中的設備可以相互訪問和通信。

常見的內網穿透技術包括端口映射、反向代理和虛擬專用網絡(VPN)等。

  1. 端口映射:通過在路由器或防火墻上設置端口映射規則,將公網上的某個端口映射到私有網絡中的設備,從而實現對該設備的訪問。

  2. 反向代理:在公網上搭建一個反向代理服務器,當公網用戶請求訪問時,反向代理服務器會將請求轉發到內網中的目標設備上,并將響應返回給公網用戶。

  3. 虛擬專用網絡(VPN):通過建立加密隧道,將公網用戶連接到私有網絡中,使得公網用戶可以像在內網中一樣訪問內網設備或服務。

這些技術都可以實現內網穿透,但具體選擇哪種方式取決于實際需求和網絡環境。需要注意的是,在使用內網穿透技術時應確保網絡安全,采取適當的安全措施來保護內網設備和數據的安全性。

五. 路由轉發?

?上面說到,路由器是集連多個子網的設備,子網內的主機如果要訪問公網的服務器,其數據需要路由器轉發到公網。這就是路由轉發

數據在路由過程中,實際是一跳一跳的(Hop by Hop)“問路”的過程。所謂“一跳”就是數據鏈路層中的一個區間,具體在以太網中指從源MAC地址到目的MAC地址之間的幀傳輸區間

IP數據包的傳輸過程:

  • 當IP數據包,到達路由器時,路由器會先查看目的IP
  • 路由器決定這個數據包是能夠直接發送給目標主機,還是需要發給下一個路由器
  • 依次反復,一直到達目的IP地址
  • 如何判定當前數據包要發送到哪個子網呢?這個依靠每個節點內部維護的路由表

路由器的查找結果可能有以下三種:

  • 路由器經過路由表查詢后,得知該數據應該跳到哪一個子網
  • 路由器經過路由表查詢后,沒有發現匹配的子網,此時路由器會將該數據轉發給默認路由。
  • 路由器經過路由表查詢后,得知該數據的目標網絡就是當前所在的網絡,此時路由器就會將該數據轉給當前網絡中對應的主機。

Linux路由表可以使用route命令查看;Windows下使用route PRINT -4

route PRINT -4

route命令

  • Destination:代表的是目的網絡地址
  • Gateway:代表下一跳地址
  • Genmask:代表的是子網掩碼
  • Flags:U標志表示此條目有效(可以禁用某些條目);G標志表示此條目的下一跳地址是某個路由器的地址,沒有G標志的條目表示目的網絡是與本機接口直接相連的網絡,不必經由路由器轉發
  • Iface:代表的是發送接口

當一個數據包從源設備發送出去時,它首先會通過源設備的網卡發送到本地網段。然后,根據目標 IP 地址,源設備的操作系統會查找路由表來確定下一跳的路由器。路由表中記錄了網絡的目的地址和相應的下一跳路由器。根據目的地址,源設備會將數據包發送給下一跳路由器。

下一跳路由器接收到數據包后,會根據自己的路由表,依次與子網掩碼Genmask進行按位與操作,然后結果與子網掩碼對應的目的網絡地址Destination進行對比,如果匹配則將數據發送到這個子網,通過對應的發送接口Iface發出。這個過程會一直持續,直到數據包到達目標設備所在的網絡,并被目標設備接收。如果沒有匹配的子網,就會發送到默認路由——default,其對應的FlagsUG

路由轉發過程中,路由器會根據目標地址進行決策,選擇最佳路徑來轉發數據包。路由器之間通過路由協議來交換路由信息,更新各自的路由表,以保證網絡中的路由信息能夠得到更新和同步。

通過路由轉發機制,網絡中的數據包可以在不同的網絡之間進行傳輸,實現了跨網絡的通信和互聯互通。


舉例

假設某主機上的網絡接口配置和路由表如下:

  • ?這臺主機有兩個網絡接口,一個網絡接口連到192.168.10.0/24網絡,另一個網絡接口連到192.168.56.0/24網絡

轉發過程例1:如果要發送的數據包的目的地址是192.168.56.3

  • 跟第一行的子網掩碼做與運算得到 192.168.56.0,與第一行的目的網絡地址不符
  • 再跟第二行的子網掩碼做與運算 得到192.168.56.0,與目的網絡地址相同,因此從eth1接口發送出去;
  • 由于192.168.56.0/24正是與eth1接口直接相連的網絡,因此可以直接發送到目的主機,不需要經由路由器轉發

轉發過程例2:如果要發送的數據包的目的地址是202.10.1.2

  • 依次和路由表前幾項進行對比,發現都不匹配
  • 按缺省路由條目,從eth0接口發出去,發往192.168.10.1 路由器
  • 由192.168.10.1 路由器根據它的路由表決定下一跳地址

總結

路由器通過使用路由表和路由算法來進行路由轉發。下面是一個簡化的描述路由器路由轉發的過程:

  1. 接收數據包:路由器首先接收到一個數據包,這個數據包通常是從其中一個接口進入路由器的。

  2. 解析目標 IP 地址:路由器檢查數據包的目標 IP 地址,以確定下一步的路由決策。

  3. 查找路由表:路由器查詢自己的路由表,路由表是存儲在路由器內部的一個表格,記錄了目標網絡地址和相應的出接口之間的映射關系。

  4. 路由決策:根據路由表的信息,路由器選擇一個最佳的出接口來轉發數據包。這個決策可能基于多種因素,例如目標網絡的距離、接口的負載情況或者其他策略。

  5. 封裝數據包:路由器將數據包重新封裝,更新源和目標的 MAC 地址,并將其發送到下一跳路由器或目標主機。

  6. 轉發數據包:路由器將封裝好的數據包通過選定的出接口發送出去。這可能涉及到數據鏈路層的處理,例如將 IP 數據包封裝為適當的鏈路層幀。

  7. 循環直至目標:如果目標主機不在直接連通的網絡上,路由器將重復上述過程,將數據包發送到下一跳路由器,直到數據包到達目標主機為止。

總之,路由器使用路由表和路由算法來決定如何轉發數據包。它根據目標 IP 地址選擇最佳的出接口,并封裝數據包并轉發到下一跳路由器或目標主機。這個過程在整個網絡中重復進行,直到數據包到達目標位置。


路由表生成算法

路由可分為靜態路由和動態路由:

  • 靜態路由:是指由網絡管理員手工配置路由信息。
  • 動態路由:是指路由器能夠通過算法自動建立自己的路由表,并且能夠根據實際情況進行調整。

路由表相關生成算法:距離向量算法、LS算法、Dijkstra算法等。

結束語

本篇博客到此結束,感謝看到此處。
歡迎大家糾錯和補充
如果覺得本篇文章對你有所幫助的話,不妨點個贊支持一下博主,拜托啦,這對我真的很重要。

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

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

相關文章

完整的Web應用程序Tomcat JSF Primefaces JPA Hibernate –第2部分

托管豆 這篇文章是本教程第1部分的繼續。 在“ com.mb”包中,您將需要創建以下類: package com.mb;import org.primefaces.context.RequestContext;import com.util.JSFMessageUtil;public class AbstractMB {private static final String KEEP_DIALOG…

P1014 Cantor表

洛谷 p1014 題目描述 現代數學的著名證明之一是Georg Cantor證明了有理數是可枚舉的。他是用下面這一張表來證明這一命題的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … 3/1 3/2 3/3 … 4/1 4/2 … 5/1 … … 我們以Z字形給上表的每一項編號。第一項是1/1&#xff…

dvd管理系統

>>>>>>>>>>>>>>>>>>>> 語言:java 工具:eclipse 時間:2016.12.1 >>>>>>>>>>>>>>>>>>>> 一代代碼: 1 …

佳能2900打印機與win10不兼容_佳能RF 1.4、RF 2增倍鏡與RF 100500mm L IS USM并不完全兼容...

據佳能官方透露,佳能RF 1.4、RF 2增倍鏡與RF 100-500mm F4.5-7.1 L IS USM鏡頭并不完全兼容。在安裝使用兩款增倍鏡時,用戶需將RF 100-500mm鏡頭變焦環的變焦位置移動到超過300mm的遠攝區域。而在搭配增倍鏡后,鏡頭變焦范圍將限定在300-500mm…

縣級的圖書館計算機管理員,圖書館管理員的崗位職責

圖書館管理員的崗位職責導語:在領導的命令下,緊緊圍繞學校總體工作要求,牢固樹立全心全意為教學及教科研第一線服務的思想,工作主動熱情,努力做好管理育人的工作。圖書館管理員崗位職責:1、每學期認真制訂切…

使用Java快速入門的Apache Thrift

Apache Thrift是由facebook創建的RPC框架,現在它是一個Apache項目。 Thrift可讓您在不依賴語言的定義文件中定義數據類型和服務接口。 該定義文件用作編譯器的輸入,以生成用于構建通過不同編程語言進行通信的RPC客戶端和服務器的代碼。 您也可以參考Thri…

Windows/Linux安裝python2.7,pycharm和pandas——《利用Python進行數據分析》

一、Windows下(兩種方法) 1. 安裝Python EDP_free并安裝pandas ① 如果你沒有安裝python2.7,可以直接選擇安裝Python EDP_free,然后再安裝pandas等包就行 : Python EDP_free 網址: http://epdfree-7-3-2.…

Python基礎類型

1. 列表、元組操作 列表是我們最以后最常用的數據類型之一,通過列表可以對數據實現最方便的存儲、修改等操作 定義列表 names [Alex,"Tenglan",Eric] 通過下標訪問列表中的元素,下標從0開始計數 >>> names[0] Alex >>> nam…

angular點擊按鈕彈出頁面_Win10提示“由于啟動計算機時出現了頁面文件配置問題”解決方法...

我們在使用Windows10系統的過程中,經常會遇到一些問題。近期有一個網友咨詢裝機之家小編,稱自己Windows10系統開機之后,彈出系統屬性對話框,提示“由于啟動計算機時出現了頁面文件配置問題”的問題,我們要如何解決呢&a…

計算機程序編程就業,計算機編程就業

為畢業生寫計算機編程就業提供計算機編程就業范文參考,涵蓋碩士、大學本科畢業論文范文和職稱論文范文,包括論文選題、開題報告、文獻綜述、任務書、參考文獻等,是優秀免費計算機編程就業網站。基于編程語言類課程教學方法的探討位把考查學生的編程能力也…

Spring集成–第1節– Hello World

Spring Integration的“ Hello World ” –考慮一個簡單的程序,以使用Spring Integration將“ Hello World”打印到控制臺,并在此過程中訪問一些企業集成模式概念 在進入程序本身之前,快速回顧一下消息傳遞概念將很有用–消息傳遞是一種集成樣…

正則表達式貪婪模式與懶惰模式

正則表達式貪婪匹配模式&#xff0c;對于初學者&#xff0c;往往也很容易出錯。有時候需要匹配一個段代碼內容&#xff0c;發現匹配與想要不一致。發現原來&#xff0c;跟貪婪模式有關系。如下&#xff0c;我們看下例子&#xff1a; 什么是貪婪模式 字符串有: “<h3>abd&…

stm32 薄膜鍵盤原理_市面上的筆記本鍵盤優缺點解析,看完秒懂

大家在選購電腦時&#xff0c;很多人的關注重點都是筆記本的配置好不好、外觀設計酷不酷和電池續航能力強不強&#xff0c;對電腦鍵盤往往不會太在意&#xff0c;其實一個好的電腦鍵盤也可以幫助你提高工作效率&#xff0c;特別對于小編這樣的文字工作者&#xff0c;如果鍵盤手…

計算機等級考試心得體會,計算機等級考試心得體會(2)

估計以后的考試也可能略有變化&#xff0c;即逐漸增加使用命令的條數。由于該內容變化小&#xff0c;考生應當練習到純熟的境地&#xff0c;在考試時用盡可能少的時間來做這部分內容&#xff0c;以使其他內容有更多的時間。六題能做出五題即可&#xff0c;有一題一時想不起&…

Web開發框架–第1部分:選項和標準

在我的公司&#xff0c;我們正在評估未來幾年將使用哪種Web開發框架。 自上次評估以來&#xff0c;我們一直在使用由Struts 2驅動的Java應用服務器作為MVC&#xff0c;將Tiles作為模板引擎&#xff0c;將jQuery用于Javascript awesomennes&#xff0c;將DWR用于AJAX調用&#x…

增加一個類的功能可以采用繼承或者代理模式或者裝飾者模式

增加一個類的功能有3種辦法&#xff1a; 1.繼承 2.代理模式 3.裝飾者模式轉載于:https://www.cnblogs.com/panxuejun/p/6127837.html

dell增強保護套裝還原失效_汕頭長安歐尚汽車音響改裝升級,還原真實音色

今天給大家分享的是汕頭車韻汽車音響改裝店開業以來&#xff0c;升級改裝的第113輛長安汽車。長安歐尚x7外觀設計十分出彩&#xff0c;整體造型動感十足&#xff0c;前臉采用六邊形大尺寸的前格柵&#xff0c;并加入了“云鷹之翼”的設計元素&#xff0c;造型十分具有攻擊性&am…

POJ 2386 Lake Counting

鏈接&#xff1a;http://poj.org/problem?id2386 Lake Counting Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 24263 Accepted: 12246Description Due to recent rains, water has pooled in various places in Farmer Johns field, which is represented by a…

計算機窗口顏色不能自定義,用RBG顏色設置自定義顏色

這個是Mac自帶的測色計快捷鍵shift command c即可復制RBG格式的顏色#DD0000 這個是csdn 的logo里的紅色我們得到的是十六位顏色代碼但是UIColor()只有這幾種初始化方式init(white: CGFloat, alpha: CGFloat)init(hue: CGFloat, saturation: CGFloat, brightness: CGFloat, al…

http協議和瀏覽器緩存問題

HTTP是超文本傳輸協議。 HTTP是一個應用層協議&#xff0c;由請求和響應構成&#xff0c;是一個標準的客戶端服務器模型。HTTP是一個無狀態的協議。 轉載于:https://www.cnblogs.com/hodgson/p/6128003.html