標籤:ip 網路 電腦
網路層位於資料連結層之上,應用程式層之下,提供兩種服務:資料報和虛電路,前者為不需連線的網路服務,後者為連線導向的網路服務。這裡有點類似TCP和UDP。
資料報服務:網路隨時都可以接受主機發送的分組(資料報),網路為每個分組獨立選擇路由,盡最大努力將分組交付給目的主機,所以資料報服務提供的是不可靠的,不能保證服務品質。
虛電路服務:A要與B通訊,首先A向B發送一條特定的訊息,要求進行通訊,B收到後返迴響應,此時虛電路就建立起來了,然後傳送資料即可,所以服務品質有著較好的保證。
| 項目 |
虛電路服務 |
資料報服務 |
| 思路 |
可靠通訊應當由網路來保證 |
可靠通訊應當由使用者主機來保證 |
| 串連的建立 |
必須有 |
不要 |
| 目的站地址 |
僅在串連建立階段使用,每個分組使用短的虛電路號 |
每個分組都有目的站的全地址 |
| 分組的轉寄 |
屬於同一條虛電路的分組均按照同一路由進行轉寄 |
每個分組獨立選擇路由進行轉寄 |
| 當結點出故障時 |
所有通過出故障的結點的虛電路均不能工作 |
出故障的結點可能會丟失分組,一些路由可能會發生變化 |
| 分組的順序 |
總是按發送順序到達目的站 |
到達目的站時不一定按發送順序 |
| 端到端的差錯處理和流量控制 |
可以由封包交換網負責也可以由使用者主機負責 |
由使用者主機負責 |
如果將全世界範圍內大大小小的網路通過路由器互連起來,並進行通訊,會遇到許多問題需要解決:不同的定址方案、不同的最大分組長度、不同的逾時控制、不同的路由選擇技術等等。
因為使用者的需求是多種多樣的,所以沒有一種單一的網路具備所有使用者的需求。
將網路互連起來需要使用一些中間裝置:
1、物理層的中間裝置稱為轉寄站
2、資料連結層使用的中間裝置叫橋接器或橋接器
3、網路層使用的中間裝置叫路由器
4、網路層以上使用的中間裝置叫網關,通常用網關串連兩個使用不同協議的網路。
一般情況下所說的網路互連是指用路由器進行網路互連和路由選擇。可以將路由器看做一台專用電腦,只是負責在互連網中進行路由選擇。
TCP/IP體系在網路互連上採用的做法是在網路層採用了標準化協議,通過路由器進行互連的網路都使用相同的網際協議IP,因此可以可以把互連後形成的網路看做虛擬互連網路,所謂虛擬互連也就是邏輯互連。
這樣,我們互連起來的各種物理網路雖然都是異構的,但是在網路層上看起來就好像是一個統一的網路,這樣的使用IP協議的虛擬互連網路也稱為IP網。
IP網的好處:隱藏了各種互連網路的底層具體異構細節,當IP網上的主機進行通訊時,就好像是在一個單個的網路上進行通訊一樣。
IP協議是TCP/IP體系中最核心的協議。TCP、UDP、ICMP及IGMP都以IP資料報的格式傳輸資料。
IP協議提供無串連不可靠的服務。
不可靠:不能保證IP資料報能成功到達目的地。只是盡最大努力傳輸。
無串連:說明每個IP資料報處理是相互獨立的,即IP資料報可以不按照順序接收。
與其配套使用的還有4個協議:
ARP:位址解析通訊協定
RARP:反位址解析通訊協定
ICMP:網際網路控制報文協議
IGMP:網際網路組管理協議
後兩者需要用到IP協議,所以在上方,而IP協議需要經常使用前面兩個,因而在下方。
將網際網路看成是單一的,抽象的網路,IP地址就是給每個接入網際網路的主機分配的一個全世界範圍內唯一的32bit的標識符。這樣IP地址使我們很方便在網際網路上進行定址。
IP地址的編址經曆了三個階段:
1、分類的IP地址
2、子網的劃分
3、構成超網
將IP地址劃分為若干個固定類,每一類地址都由網路號和主機號組成。一個主機號在前面網路號指定的網路範圍內是唯一的,所以這種IP地址可以記為
IP地址:{<網路號>,<主機號>}
圖中網路號欄位最前面1~4位表示類別位,用於區分這幾類地址。
A、B、C類地址都屬於單播地址(一對一通訊),D屬於多播(一對多通訊),而E則保留為以後使用。
前面提到,IP地址是32bit的二進位代碼,為了提高可讀性,將用等效的十進位表示:
最常用的IP地址是A、B、C類地址
IP地址空間總共有2^32個地址,A類地址空間共有2^31個地址,佔總地址空間的50%
B類地址空間共有2^30個地址,佔總地址的25%,C類地址約有2^29個地址,占整個IP的12.5%
所以IP的範圍:
一般不使用的IP地址:
IP的特點:
1、IP地址是一種分等級的地址結構,好處:IP地址管理機構只需要分配網路號(第一級),主機號(第二級)由使用該網路號的單位自己分配,方便管理;路由器僅根據目的主機所串連的網路號來轉寄分組,不用考慮主機號,這樣就可以簡化路由表以及尋找路由表的時間。
2、一個主機串連到兩個網路上時,就必須同時具有兩個相應的IP地址,所以由於一個路由器至少應當串連到兩個網路,至少一個路由器至少應有兩個不同的IP地址
3、區域網路都具有相同的網路號
4、所有分配到的網路號的網路都是平等的。
物理地址是指資料連結層和物理層使用的地址而IP地址是網路層及以上各層使用的地址,是一種邏輯地址
IP地址放在IP資料報的首部,而硬體地址放在MAC幀的首部,IP資料報放入資料連結層的MAC幀後,整個IP資料報就成為MAC幀的資料,因而在資料連結層是看不見資料報的IP地址的,只有在剝去MAC幀的首部和尾部把MAC幀上交給網路層,網路層才能在IP資料報的首部中找到源IP地址和目的IP地址。
執行個體:
現在H1要與H2進行通訊,H1->經過R1轉寄->經過R2轉寄->H2
表示了不同層次、不同區間的源地址和IP地址
我們可以看出:雖然IP資料報經過路由器的兩次轉寄,但是在其首部的源地址和目的地址始終分別是H1的IP地址和H2的IP地址,經過的兩個路由器的地址並不會出現在IP資料報的首部中,路由器只根據目的站的IP地址的網路號對其進行路由選擇
MAC幀在不同的網路之間傳送時,其源地址和目的地址要改變,從表中我們就可以看到他的變化情況。但是MAC幀的這種變化,在IP層上是看不見的。
我們可以看出,雖然不同網路之間的硬體地址各不相同,但是IP地址卻很巧妙的屏蔽了這些複雜的細節。
RARP:
反位址解析通訊協定曾經起重要作用,但是如今DHCP中已經包含RARP的功能,因此沒有人單獨的使用RARP協議了,只需知道是自己主機的硬體地址可以通過RARP協議得到其IP地址即可。
ARP:
雖然網路層使用的是IP地址,但是我們在實際的鏈路上傳輸資料幀時,必須使用該網路的硬體地址。
但是IP地址與硬體地址之間不存在簡單的映射關係,ARP解決這個問題的方法是在主機的ARP快取中存放一個從IP地址到硬體地址的映射表,並且這個映射表動態更新。
每一個主機都設有一個ARP快取,裡面有所在區域網路的各主機和路由器的IP地址到硬體地址的映射表,那麼主機怎麼知道這些地址?
執行個體:
當主機A要向本區域網路的某個主機B發送IP資料包,就現在ARP快取中尋找有無主機的IP地址,如果有,就在ARP快取中查出其對應的硬體地址,再把這個硬體地址寫入MAC幀,然後通過區域網路將MAC幀發送此硬體地址。
如果主機B剛入網或者主機A剛剛加電(快取是空的),就會找不到主機B的IP地址,
此時,主機A會自動運行ARP,按照以下步驟找出主機B的硬體地址:
1、ARP進程在本區域網路上廣播發送一個ARP請求分組,請求分組的內容是:自己(主機A)的IP地址和硬體地址以及主機B的IP地址。2、在本區域網路上的所有主機啟動並執行ARP進程都會收到這個請求分組。3、主機B在ARP請求分組中見到自己的IP地址,就向主機A發送ARP響應分組,並寫入自己的硬體地址。其餘的主機都不會理會這個ARP的請求分組。(ARP請求分組是廣播發送,但是響應分組是普通的單播,從某一個源地址發送到一個目的地址)4、主機A收到主機B的ARP響應分組,就在其ARP快取中寫入主機B的IP地址到硬體地址的映射。
以後主機B可能會向主機A通訊,所以還得反著來一次,為了減少網路上的通訊量,主機A發送的請求分組中包括自己的IP地址到硬體地址的映射寫入ARP請求分組。當主機B接收到主機A發來的ARP請求分組時,就順便把主機A的這地址映射寫入主機B自己的ARP快取中,以後直接去快取中尋找即可。
圖解:
前面說到ARP表示動態更新的,當A與B通訊的時候,剛開始好著,後面B的網路介面卡換了,B立即更換了一塊,因此B的硬體地址就改變了,但是A還要和B通訊,由於IP地址還存在,但是以前的硬體地址已經失效了,所以A無法找到B的硬體地址。
ARP中的每一個項目都設定由存留時間,凡是超過存留時間的項目就會從快取中刪除掉。因此上面的情境,A找不到主機B,但是過了存留時間,A的ARP緩衝中已經刪除了B的原先的硬體地址,所以A此時重新廣播發送ARP請求分組,找到B。
如果通訊的兩台主機不再同一個區域網路內,那則需要記錄路由器的ip地址和硬體地址。
這種IP地址到硬體地址是自動進行的,主機的使用者對這種位址解析過程是不知道的,只要主機或路由器和本網路上一個已知IP地址的主機或路由器進行通訊,ARP就會自動把這個IP轉換為硬體地址。
為什麼不直接用硬體地址進行通訊,而非要調用ARP來尋找相應的硬體?
這有點類似最開頭說的IP網的出現,全世界存在各種網路,有各種各樣的硬體地址,要通訊就得進行非常複雜的轉換,幾乎是不可能的。所以抽象出統一的IP地址,串連到網際網路的主機只要用統一的IP地址,他們之間的通訊就像串連在同一個網路上那麼簡單方便。而且ARP是自動的,對使用者而言是看不到的,所以是非常方便的。
這IP地址有點像抽象類別,有各種各樣的子類,但是這些子類要和另外一個地區的子類進行通訊,那麼就需要寫大量大量的代碼,所以抽象出基類,兩個基類互相通訊,方便簡單。
版本:
佔4位,指IP協議的版本。通訊雙方使用的IP協議版本要一致
首部長度——占 4 位,可表示的最大數值
是 15 個單位(一個單位為 4 位元組)
因此 IP 的首部長度的最大值是 60 位元組。
總長度:
是指首部和資料之和的長度,單位是位元組。總長度欄位為16,因此資料報的最大長度為2^6-1(65535),總長度必須不超過最大傳送單元 MTU
存留時間:
8位,表明資料報在網路中的壽命,指資料報在網際網路中最多可經過多少個路由器,顯然最大值是255
協議
指出此資料報攜帶的資料是使用何種協議,以便使目的主機的IP層知道應將資料部分上交給哪個處理過程
| 協議 |
ICMP |
IGMP |
TCP |
EGP |
IGP |
UDP |
IPV6 |
OSPF |
| 協議欄位名 |
1 |
2 |
6 |
8 |
9 |
17 |
41 |
89 |
首部校正和
思路:
首先將IP首部即40位16進位的字串轉化為二進位字串,然後以每16位為一個欄位,分為10個二進位欄位。存放在IP1~IP10字串中; 然後求出每個欄位的反碼,根據IP資料報格式,可以知道IP6存放的就是校正和,將校正和IP6置位全0; 利用求反碼和,求出10個欄位反碼相加後的值sum,然後對字串sum取反,得到發送時所用的校正碼。 假設接收端的IP首部與發送的是相同的,那麼其10個欄位的利用反碼和演算法求出的值應為0
圖解:
(圖片地址:http://wenku.baidu.com/link?url=em2I8OC8FEg-zHslpMcF5r_m2eYFbzXyYkZ0ChdXdWH9CnRs6htX_6IhVosmecTxOWrF_VCQvII1jM2mYiogi9KoMC1b8bwSCcu3vB-Ub4W)
前面已經說過如果按照目的主機號來製作路由表,那最終的路由表則會過於龐大
所以為了簡化路由表,我們用主機所在的網路地址製作路由表,如所示:
所以在路由表中,對每一路由最主要的是以下資訊:
(目的網路地址,下一跳地址)
所以我們用目的網路來確定下一跳路由器,這樣就說明:
IP資料報最終一定可以找到目的主機所在目的網路上的路由器
IP資料報只有到達最後一個路由器時,才試圖向主機進行直接交付
同時,路由器還可以採用預設路由簡化路由表和減少搜尋路由表所用的時間。如所示:當目的網路不是N1和N2,就一律選擇預設路由,把資料報先交付給路由器R1,讓R1在轉寄給下一個路由器,一直轉寄到目的網路上的路由器。
IP資料報中只有源IP地址和目的IP地址,資料報是怎麼找到下一跳路由器?
是通過ARP,首先在路由表中得到下一跳的路由器的IP地址,然後將這個地址通過ARP轉換成硬體地址,然後發送到下一跳路由器,然後不斷重複進行
分組轉寄演算法 :
(1)從資料報的首部提取目的主機的 IP 位址 D,得出目的網路地址為 N。(2)若網路 N 與此路由器直接相連,則把資料報直接交付目的主機 D;否則是間接交付,執行(3)。(3) 若路由表中有目的地址為 D 的特定主機路由,則把資料報傳送給路由表中所指明的下一跳路由器;否則,執行(4)。(特殊情況)(4) 若路由表中有到達網路 N 的路由,則把資料報傳送給路由表指明的下一跳路由器;否則,執行(5)。(5) 若路由表中有一個預設路由,則把資料報傳送給路由表中所指明的預設路由器;否則,執行(6)。(6) 報告轉寄分組出錯。
摘自:電腦網路.第五版.謝希仁
參考:TCP/IP詳解.卷一
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
電腦網路讀書筆記-----網路層