標籤:des style io os 使用 ar for 檔案 資料
網路中的每一台主機和路由器都有一個網路層部分,而路由器中也沒有網路層以上的層次。網路層是協議棧中最複雜的層次。
轉寄forwarding:當一個分組到達某路由器的輸入鏈路時,該路由器將分組移動到適當的輸出鏈路。
選路routing:當分組從發送方流向接收方時,網路層必須決定這些分組所採用的路由或路徑。而計算這些路徑的演算法被稱為選路演算法routing algorithm。
轉寄是路由器將分組從輸入鏈路介面轉移到適當的輸出鏈路介面的本地動作。而選路分組由源到目的地時,決定端到端路徑的網路範圍的進程。
每台路由器具有一張 轉寄表forwarding table。路由器檢測到達分組首部中一個欄位的值,然後該值在轉寄表中索引查詢,然後轉寄該分組。轉寄表查詢的結果是分組要被轉寄的路由器的鏈路介面。檢測首部的欄位為該分組的目的地地址或該分組所屬串連的指示。
路由中的轉寄表的設定,一般選路演算法決定。選路演算法可能是集中式的,即演算法在某個中心點執行然後由各個路由器下載選路資訊;也可能是分布式的,即選路演算法的各個部分運行在每台路由器上。其中,路由器都接收 選路協議報文,用來配置轉寄表。可以不需要選路協議,而人工設定所有轉寄表,但是這是不切實際的,容易出錯,且轉寄表實際效果差。
封包交換機分為鏈路層交換器 link-layer switch 和路由器router。鏈路層交換器根據鏈路層傳輸的幀中首部欄位的值進行轉寄,而路由器根據網路層資料報中的首部欄位的值進行轉寄。
網路層除了進行轉寄和選路,還進行串連建立connection setup。從源到目的地,沿著所選擇的路徑彼此握手,以便在網路層資料分組開始流動以前,在給定源到目的地的串連之間建立其狀態。
網路服務模型network service model:定義網路的一側邊緣到另一側邊緣之間即發送端系統和接收端系統之間的分組的端到端運輸特性。
網路層能夠提供給發送主機的運輸層的服務:
確保交付:確保分組將最終到達其目的地。
具有時延上限的確保交付:確保分組在特定的主機到主機時延上界內交付。
能夠為給定的源和目的地之間提供給分組的流的服務:
有序分組交付:確保分組以被發送的順序到達目的地。
確保最小頻寬:只要發送主機以低於某特定位元速率的速度傳輸位元,分組就會按時交付。
確保最大時延抖動Guaranteed maximum jitter:確保發送方發送兩個相繼分組之間的時間量等於在目的地接受到它們之間的時間量或這個時間間隔不超過一個固定的值。
安全性服務:使用僅僅源和目的主機知曉的秘密工作階段金鑰,源主機的網路層能夠加密向目的主機發送的所有資料報負載。目的主機的網路層則負責解密該負載。
網際網路的網路層提供單一的網路服務,稱為儘力而為服務best-effort service,分組間的定時得不到保障,分組接收的順序也無法保證按序,傳送的分組也不能保證交付。
除了網際網路中的儘力而為服務模型,在ATM網路體繫結構中,有恒定位元速率和可用位元速率兩種服務:
恒定位元速率Constant Bit Rate CBR ATM網路服務:適用於承載即時、恒定位元速率的音頻和視頻流量。
可變位元速率Available Bit Rate ABR ATM網路服務,也許最好服務稍微比儘力而為好一點的服務,ABR可能會丟失信元,但信元不能重排序即有序。最小信元傳輸速率MCR是可以得到保證的,且有擁塞指示。
虛電路和資料報網路:
網路層與運輸層類似,也有無串連服務和有串連服務。網路層與運輸層在連線導向方面的重要差異:1.在網路層,這些服務是提供給運輸層的主機到主機的服務,而在運輸層,這些服務是提供給應用程式層的進程到進程的服務。2.電腦網路體繫結構中,在網路層只提供其中一種服務。提供串連服務的網路稱為虛電路Virtual-Circuit網路,提供無串連服務的電腦網路稱為資料報網路datagram network。3.在運輸層實現的連線導向的服務建立的串連是兩個端系統之間的串連,而在網路層實現的串連除了端系統外,也在位於網路核心的路由器中實現。
虛電路網路:網際網路是資料報網路,而其他網路體繫結構ATM和框架轉送都是虛電路網路。
一條虛電路的組成:1.源和目的地之間的路徑,即一系列鏈路和路由器。2.VC號,沿著該路徑的每段鏈路的一個號碼 。3.沿著該路徑的每個路由器中的轉寄表表項。
屬於一條虛電路的分組必須在其首部攜帶一個VC號,因為一條虛電路在每條鏈路上的VC號可能不同,則經過路由時,使用一個新的VC號來替代分組中的VC號,該VC號由轉寄表中擷取。則當跨越一個路由器建立一個虛電路時,轉寄表中就增加了一個新項,而虛電路終止時,就刪除沿著該路徑的每個路由器中的轉寄表中的相應項。
對於虛電路中每條鏈路保持不同VC號的原因:逐鏈路代替該號碼可以減少分組首部VC欄位的長度;通過使虛電路的每條鏈路有不同的VC號,簡化了虛電路的建立。
在虛電路中,路由器必須為進行中的串連維持串連狀態資訊connection state information。而這裡作為串連項一同在建立時加入轉寄表中儲存。
虛電路中的3個階段:1.虛電路建立:運輸層與網路層聯絡,指定接收方地址,等待網路建立虛電路。網路層決定路徑,確定鏈路的VC號,在每台路由器的轉寄表中增加一項,還可以預留虛電路路徑上的資源如頻寬。2.資料轉送:分組沿著虛電路流動。3.虛電路拆除:當接收方或發送方通知網路層終止該虛電路時,通知另一端,並更新每台路由器中的轉寄表。
端系統向網路發送指示虛電路啟動及終止的報文,以及路由器之間傳遞的用於建立虛電路的報文稱為 信令報文signaling message。用來交換這些報文的協議稱為信令協議signaling protocol。
資料報網路:在資料報網路中,每個端系統要發送分組時,它為分組加上目的地端系統的地址,然後將分組推入網路中。在網路中,每個路由器都使用該分組的目的地址來轉寄該分組。每台路由器都有一個將目的地址映射到連結介面的轉寄表,然後根據地址尋找輸出鏈路介面,進行轉寄。
轉寄表中是以目的位址範圍來設定對應的鏈路介面。而轉寄表中目的地址的範圍是一種首碼匹配的形式,即轉寄表中儲存的是一定地址的首碼,然後使用目的地址與這些首碼進行匹配,當匹配時,就使用此項所對應的連結介面轉寄分組。路由器中還是使用最長首碼匹配規則longest prefix matching rule,當多個匹配時,尋找轉寄表中最長的匹配項,並用其鏈路介面轉寄分組。如轉寄表中有一項為10001000 10001000 鏈路介面為0,另一項為10001000 10001000 10001000 鏈路介面為1,還有一項為 “其他”,鏈路介面為2,則當地址為10001000 10001000 10001000 10001000時,使用鏈路介面1轉寄分組。
在資料報網路中,轉寄表由選路演算法修改,通常每1-5分鐘更新一次轉寄表。
虛電路的概念來源於電路交換網路,電路交換網路比封包交換網路要複雜許多,因為電話網路要串連的是一些低端的裝置,這些裝置所能做到的幾乎只有接收和發送資料,所以大多數工作要在網路層實現。而封包交換網路面向的是電腦這樣的端系統,而這樣的端系統可以在更高層實現很多功能,也就減輕了網路層的工作:提供最少的服務保證的網際網路服務模型,使得互聯使用各種鏈路層技術的網路變得更加容易;新的協議都可以在位於網路邊緣的端系統電腦上實現。
路由器工作原理:
一個路由器由4個組成部分:
輸入連接埠input ports:執行將一條輸入物理鏈路接到路由器的物理層功能。也要執行與 位於鏈路遠端的鏈路層功能 互動的鏈路層功能,它還要完成尋找和轉寄功能,以便轉寄到路由器交換結構部分的分組能出現在適當的輸出連接埠。控制分組(如攜帶了選路協議資訊的分組)從輸入連接埠轉寄到選路處理器。在路由器中多個連接埠經常被集中到路由器中的一塊線路卡line card上。
交換介面switching fabric:將路由器的輸入介面串連到它的輸出連接埠。交換結構完全包容contained在路由器中,即它是路由器中的網路。
輸出連接埠:儲存經交換結構轉寄給它的分組,並將這些分組傳輸給輸出鏈路。則輸出連接埠執行的是與輸入連接埠順序相反的功能,先鏈路層,再物理層。當一條鏈路是雙向時,與鏈路相連的輸出視窗和輸入視窗在同一線路卡上出現。
選路處理器routing processor:執行選路協議,維護選路資訊和轉寄表,並執行路由器中的網路管理功能。
輸入連接埠:在路由器中,是在輸入連接埠來尋找轉寄表確定轉寄的輸出連接埠。轉寄表在被選路處理器處理的同時被拷貝到每個輸入連接埠中,並會被更新。所以分組可以直接在輸入連接埠做出轉寄決策,而無需調用中央選路處理器。這種分散式的decentralized轉寄效率更高。當使用一個工作站或伺服器用作一個路由器時,其輸入輸出連接埠為其網路介面卡,其選路處理器為其CPU,但其輸入連接埠無法進行選路操作,便將分組直接發給中央選路處理器,然後有處理器來執行轉寄尋找並進行轉寄。路由器尋找速度要足夠快,處理速度應該達到 線路速度line speed,即執行一次尋找的時間應小於輸入連接埠接收一個分組所需的時間。將轉寄表表項存放在一個樹形結構中,樹的每一級與目標地址中的一位元相對應,0為左子樹,1為右子樹。尋找地址時,從根節點開始,進行2分尋找。但這樣選路還是不夠快,因為每次尋找都要訪問一次記憶體。所以應該使用更加高速的演算法。
內容可定址記憶體Content Addressable Momery CAM,允許一個32位元IP地址提交給CAM,由它來返回該地址對應的轉寄表表項內容。
一旦尋找到分組的輸出連接埠,就將該分組轉寄進交換結構。分組進入交換結構時,由於其他分組當前正在使用該交換結構,而被暫時阻塞。則將阻塞分組在輸入連接埠處排隊,等待調度。
交換結構:交換結構有三種交換的技術:
1.經記憶體交換switching via memory:最早最簡單的路由器就是電腦,則其輸入連接埠和輸出連接埠都在CPU的直接控制下完成。CPU將到達的分組拷貝到處理器記憶體上,然後取出目的地址,在轉寄表中找出適當的輸出連接埠,將分組拷貝到輸出連接埠的緩衝中。這裡若記憶體頻寬為每秒可寫進或讀出B個分組,則總的轉寄輸送量必然小於B/2,除以2是因為從輸入連接埠讀到CPU再從CPU複製到輸出連接埠這兩個操作不是同步的,小於是因為計算耗時。 許多現代路由器也使用記憶體交換,但與電腦路由器不同,目的地址的尋找和將分組儲存進適當的位置由輸入線路卡上的處理器來執行的。
2.經一個匯流排bus交換:輸入連接埠經一根共用匯流排將分組直接傳送到輸出連接埠,不需要選路處理器的幹預。經記憶體交換分組進出記憶體也是會跨越系統匯流排的。這裡每個分組要跨越單一匯流排,交換頻寬受匯流排速率限制。
3.經一個互連網絡交換:克服匯流排頻寬節流設定的一個方法就是使用複雜的互連網絡。一個縱橫式crossbar交換器,就是一個由2n條匯流排組成的互連網絡,它將n個輸入連接埠與n個輸出連接埠串連。分組沿著串連到輸入連接埠的水平匯流排穿行,直至水平匯流排與連到所希望的輸出連接埠的垂直匯流排的交叉點。如果被阻塞,則返回輸入連接埠排隊。
排隊:路由器中隊列增加,導致緩衝空間被耗盡,就會出現丟包。分組丟失的位置(輸入連接埠或輸出連接埠)取決於 流量負載traffic load,交換結構的相對速率和線路速率等幾個因素。交換結構速率為交換結構從輸入連接埠到輸出連接埠移動分組的速率。則當交換結構的速率至少為輸入線路的速率的n倍時,則在輸入連接埠處不會出現排隊。n為輸入連接埠的數,即所有連接埠都在以最大速率接收分組,但交換結構仍能夠將所有輸入進行傳輸。而輸入連接埠排隊的情況為交換結構速率小於可能的輸入速率。但輸出連接埠並不相同,當交換結構速率大於輸出鏈路速率時,就可能需要排隊,因為這些流量可能想要前往相同的輸出鏈路。
路由器中的緩衝長度計算的經驗方法:緩衝量B 等於 平均往返時延RTT 乘以鏈路容量C。這是相對少量的TCP流的情況。對於大量TCP流(N)經過一條鏈路時,緩衝量為B = RTT * C / √N 。
輸出連接埠的排隊,輸出連接埠的一個分組發送器packet scheduler 必須在這些排隊的分組中選出一個來傳送。而選擇的策略有多種:先來先服務FCFS調度,加權公平排隊WFQ。WFQ規則是在具有排隊等待傳輸的分組的不同端到端串連之間公平的共用輸出鏈路。
輸入連接埠排隊過多,則丟棄到達的分組,即棄尾drop-tail,或者刪除一個或多個已排隊的分組。在某些情況下,緩衝填滿前就丟棄,以便向發送方提供一個擁塞訊號。這些策略稱為主動隊列管理AQM演算法。隨機早期檢測Random Early Detection RED演算法是一種廣泛使用的AQM演算法:為輸出隊列長度維護一個加權平均值,如果平均隊列長度小於最小閾值min,則當一個分組到達時,被接納如隊列。相反,如果隊列已滿或超過最大閾值max,則標記分組或丟棄。如果平均隊列長度在 (min ,max)中,則該分組以某種機率標記或丟棄。
然而當輸入隊列前端的兩個分組是發往同一輸出隊列時,則其中一個分組被阻塞,必須在輸入隊列中等待,因為交換結構一次只能傳送一個分組到指定的一個輸出連接埠中。之前考慮的是一段時間內,而這裡是說在一個瞬間,不能有兩個分組被交換結構同時傳給一個輸出連接埠。
線路前端head-of-the-line HOL阻塞:當在一個時刻,位於輸入隊列前端的兩個分組發往同一個輸出連接埠,則其中一個分組必須等待,而等待分組之後的分組即使與另一個分組無競爭關係,但被其隊列前端分組阻塞而無法傳輸。
IP網際協議:
目前有兩個版本的IP正在使用,IP協議版本4, IPv4,IP協議版本6,IPV6。網際網路的網路層有三個主要部分:IP協議,選路組件:決定資料報從源到目的地所流經的路徑,由轉寄表和選路協議構成。報告資料報中差錯和對某些網路層資訊請求進行響應的設施。網際網路的網路層差錯和資訊報告協議,即互連網控制報文協議ICMP。
資料報的格式:考慮IPv4的資料報datagram的格式。資料報中也是使用32個位元作為一個字。則依次儲存的資料為:
版本號碼:4個位元的版本號碼,這裡使用的是IPv4。
首部長度:一個IPv4的資料報中首部可包含一些可選項,所以需要使用4個位元來記錄首部的長度。但大多數資料報不包含可選項,一般有20位元組的首部長度。但是顯然這裡4個位元應該儲存的是首部的字的數目。
服務類型:服務類型TOS 佔8個位元,用來區別不同類型的資料報。如即時資料報與非即時資料流量(如FTP)區分開來。
資料報長度:欄位長度為16位元,儲存IP資料報的總長度,首部加資料,以位元組記,則最大為65535位元組。但資料報一般很少超過1500位元組,
標識 Identifier 16位元 、標誌 flags 3位元 、片位移 fragmentation offset 13位元:與IP分區 fragmentation 有關。在IPv6上不允許在路由器上分區。
壽命 Time-to-live TTL:8個位元的壽命欄位,用來確保資料報不會永遠在網路中迴圈。每當資料報經過一個路由器,就將該欄位減1,如果TTL欄位減為0,則丟棄該資料報。
協議:這裡的8個位元儲存的是上層即運輸層的協議,指明資料報的資料部分應交付給哪個運輸層協議。這裡使用協議號將網路層與運輸層綁在一起,如同運輸層報文段中的連接埠號碼將運輸層與應用程式層綁在一起一樣。
首部檢驗和:16個位元的首部檢驗和,如資料報中的首部檢驗和一樣進行計算得到。路由器對每個收到的資料報計算其首部檢驗和,進行檢測,如果出錯,則一般會丟棄此錯誤資料報。注意,路由器還必須在TTL欄位改變後,重新計算檢驗和並放在原處。這裡是首部檢驗和,即IP只對自己的首部進行檢驗和計算,而TCP中是對整個報文段進行檢驗。其次TCP/UDP與IP並不一定在同一個協議棧,TCP可以運行在不同的協議上,如ATM,而IP也能狗攜帶傳遞給其他運輸層協議的資料。
源和目的IP地址:各32位元。當源主機產生一個資料報時,它在源IP欄位插入IP地址,在目的IP地址欄位插入其最終目的地的IP地址。通常源主機通過DNS來尋找目的地址。
選項options:選項欄位允許IP首部被擴充。首部的存在使資料前序部長度可變,無法預先確定資料欄位從何處開始,且選項增加的處理選項會導致路由器速率降低。選項的存在使路由器效率不高,所以在IPv6中不採用IP選項。
資料 (有效載荷payloda):IP資料報中資料欄位一般含有要交付給目的地的運輸層報文段(TCP或UDP),也可以承載其他類型的資料,如ICMP報文段。
資料報分區:乙太網路幀可承載不超過1500位元組的資料。一個鏈路層幀可承載的最大資料量叫做傳輸單元最大值 MTU。鏈路層協議MTU嚴格限制著IP資料報的長度。而發送方到目的地路徑上的每條鏈路可能使用不同的鏈路層協議,而每種協議可能具有不同的MTU。則需要進行分區,即將IP資料報中的資料分區成兩個或更多個較小的資料報,用單獨的鏈路層幀來封裝這些較小的IP資料報,然後向輸出鏈路上發送這些幀。這些較小的資料報稱為片 fragment。IPv4的設計者認為,片在路由器間傳遞時,如果再進行重新組裝,這會嚴重影響路由器的效能,為堅持使網路核心保持簡單的原則,將資料報的重新組裝工作放在端系統中。端系統從相同源收到一些列資料報時,要確定這些資料報中某些是否是原來較大的資料報的片。如果確定這些資料是片,它進一步確認何時收到最後一片,以及如何將這些片拼接成初始資料報。
為了讓目的主機執行這些重新組裝任務,使用IP資料報中的 標識 ,標誌 和 片位移 欄位來記錄相關資訊。當源主機建立一個資料報時,為其加上源地址,目的地址和標識號,每一個新的資料報的標識號加1。當路由器將資料報分區時,為每個資料報附加上初始資料的源地址、目的地址和標識號,同時為最後一個片的標誌位元設為0,其他片的標誌位元為1,並在位移欄位中指定片應放在初始資料報中的位置。除了最後一片外所有的有效載荷的數量應是8位元組的倍數,而且位移值offset value 以8位元組塊 為單位。位移值為有效載荷起始位置在資料報中的位置。
例:一個4000位元組的資料報,其首部為20位元組,有3980有效載荷,要由路由器轉寄到MTU為1500位元組的鏈路上,則分為3片,如果標識位為777,則第一片長度為1500,有效載荷為1480,標識為777,offset 為0,flag 為 1 ; 第二片 長度仍為1500,標識為777,offset 為185 (1480/8),flag為1;第三片 長度為1040位元組,1020位元組的資料,indentification為777,offset為370,flag 為0,標識為最後一片。
資料報的有效載荷僅當完全重構為初始IP資料報時,才能被傳遞給目的地運輸層。如果發生片的丟失,則丟棄不完整的資料報。但如果運輸層在使用TCP,TCP將通過源重複資料報中的資料而恢複丟失的片。但是我對書中這裡表示不理解:TCP是端到端,丟失的片可能在路由器中被分區,而且TCP發送操作的是報文段,如何讓發送方重發對應的丟失的片?而如果按照上章的內容,應該是丟棄所有片,直接再次重傳,因為片不是資料區段,TCP只能重傳自己的資料區段,或者這裡有些細節書上未詳細說明,不解。
IPv4編址:
主機與物理鏈路之間的邊界稱為 介面interface。路由器與鏈路之間的邊界也稱為介面。因為每台主機和路由器都能發送和接收IP資料報,所以IP要求每台主機和路由器介面都有自己的IP地址。因此一個IP地址在技術上是與 一個介面相關聯的,而不是與包括該介面的主機或路由器相關聯。
每個IP地址長度為32位元4個位元組,約40億個IP地址。每台主機和路由器上的每個介面都有一個全球唯一的IP地址(在NAT後面的介面除外)。
一台路由器可以有多個介面,而一台主機通常只有一個介面,一台路由器的一個介面可以與多台主機的介面相連,這種不包含路由器的網路 可以是一個以太LAN,通過乙太網路集線器或乙太網路鏈路層交換器互聯。在IP中,互聯主機的介面與路由器的一個介面的網路 形成一個 子網subnet。IP編碼為這個子網分配一個地址如:223.1.1.0/24,其中/24的計法有時稱為子網路遮罩subnet mask。它表明地址32位元中左側的24位元定義了一個子網地址。因此所有在223.1.1.0/24的網路中的地址形式都為223.1.1.xxx。
網路中,路由器與路由器之間的點到點鏈路也是一個子網,將路由器串連到多個主機的廣播鏈路broadcast link也是子網。
網際網路的地址分配策略稱為無類別域間選路Classless Interdomain Routing CIDR。形式為a.b.c.d/x的地址中的x最高位元構成了IP地址的網路部分network portion,並且經常被稱為該地址的首碼prefix。一個地址的剩餘32-x位元可認為是用於區分組織內部裝置的。當組織內部轉寄分組時才會考慮這些位元。而該組織內部可能還能劃分子網。
在採用CIDR之前,IP地址的網路部分被限制長度為8,16,24位元,而組成的子網分別被稱為A、B和C類網路。這種編址方案稱為分類編址classful addressing。一個C類網路/24 最多容納254台主機,其中2個地址預留用於特殊用途。B類網路/16最多支援65534台主機。由於這樣分配對於小型和中規模的子網浪費大量地址,造成地址空間的低利用率。
IP廣播位址 255.255.255.255 ,當一台主機發出目的地址為這樣的資料報時,該報文將交付給同一個子網中的所有主機。
獲得一塊地址:一個子網管理員要想擷取一塊IP地址,一般會與ISP聯絡,ISP會從自己分得的地址塊中分配一個塊給子網管理員。或者向ICANN機構擷取。ICANN不僅負責分配IP地址,還管理DNS根伺服器,還分配網域名稱和解決網域名稱爭端。
獲得主機地址:對於路由器介面地址,系統管理員手工配置路由器中的IP地址,在遠程通過網路管理工具進行配置。也可以手動設定主機,但更常用的是動態主機設定通訊協定Dynamic Host Configuration Protocol DHCP:利用DHCP主機可以自動的擷取IP地址。網路系統管理員可以配置DHCP,以便給定主機在每次與該網路連接時都得到一個相同的IP地址,或者分配一個臨時的IP地址temporary IP address,主機每次串連的IP地址都可能不同。DHCP還允許一台主機擷取其他資訊,如子網編碼,它的第一跳路由器地址(稱為預設閘道default gateway)與它的本地DNS伺服器的地址。DHCP具有主機串連進一個網路的自動化處理功能,所有又稱為隨插即用協議plug-and-play protocol。DHCP是一個客戶機/伺服器協議,新到達的主機是客戶機。
對於一台新到達的主機,DHCP執行以下4個步驟:1.DHCP伺服器發現,新到主機的首要任務是發現與其互動的DHCP伺服器,主機發送DHCP發現報文DHCP discover message來完成。客戶機在UDP分組中向連接埠67發送該報文,使用廣播目的地址255.255.255.255,使用0.0.0.0作為本主機的源地址。2.DHCP伺服器提供 server offer:DHCP收到報文後,用一個DHCP提供報文DHCP offer message 對客戶機做出響應。仍然使用255.255.255.255廣播位址作為目的地址。提供報文中含有收到報文的事物ID、向客戶機推薦的IP地址、網路掩碼以及IP地址租用期IP address least time。伺服器一般將租用期定為幾小時或幾天。3.DHCP請求request:客戶機從多個伺服器中選擇一個,並用一個DHCP請求報文DHCP request message對選中伺服器進行響應,並回顯echo back配置參數configuration parameters。4.DHCP ACK:伺服器用DHCP ACK 報文對DHCP報文進行響應,證實所要求的參數。
當客戶機收到DHCP ACK後,互動就完成了,客戶機就能夠在租用期內使用分配到的IP地址。到客戶機超過租用期時,DHCP提供一種允許客戶機更新租用期的機制。
網路位址轉譯 Network Address Translation NAT:簡單來說,就是平時使用的路由器的實現。路由器從DHCP獲得一個IP地址做為路由器的地址,而路由器又為多個家庭使用者裝置提供地址,以便多個裝置能夠同時與網路連接。這裡家庭使用者的地址使用的是虛擬位址在地址空間10.0.0.0/8這個RFC中保留的IP地址中,這些地址用於專用於網路或具有專用地址的地區realm。具有專用地址的地區是指其地址僅對該網路中的裝置有意義的網路。則許多家用網路中使用這些相同的地址空間。NAT路由器對外界的行為就認同一個具有單一IP地址的單一裝置,所有離開家庭路由器通向更大的網際網路的報文都採用同一個源IP地址即路由器的地址,且所有進入家用網路的報文都用於同一個目的IP地址。NAT使路由器對外界隱藏了家用網路的細節。
路由器的IP地址由ISP的DHCP伺服器獲得,而其自己也運行一個DHCP伺服器來為家用網路中的電腦分配具有專有地址的地區中的地址。路由器同過NAT轉換表Nat translation table 來確定發向路由器的資料報轉寄給哪個內部主機。轉寄表中包含連接埠號碼和IP地址。當家用網路中主機發送資料報到LAN中時,NAT為該資料報產生一個新的且當前為在NAT轉換表中使用的源連接埠號碼,並更改,同時將源IP地址修改為其廣域網路一側WAN-side 介面的IP地址,並為轉換表添加新項。而當廣域網路傳來資料報時,NAT再根據轉寄表中的表項 改寫資料報的目的IP和目的連接埠號碼,並向家用網路轉寄該資料報。
NAT妨礙P2P應用程式。如果對等方B位於NAT後,則就不能充當伺服器並接收TCP串連。因為很簡單,A給B發送的報文,其連接埠號碼為正確的連接埠號碼,但是在NAT轉換表中找不到或會出錯,所以無法無法直接充當伺服器。解決方案是讓在NAT後的B先去與中間對等方C建立TCP串連,C不在NAT後且作為伺服器,然後A再經C請求B,建立TCP串連後雙方就可以交換報文和檔案了。稱為NAT穿越NAT traversal。如果雙方都在NAT後面,則需要使用應用程式來中繼處理。
通用隨插即用Universal Plug and Play UPnP:NAT穿越多使用這種方式,允許主機發現並配置臨近NAT。
互連網控制報文協議 Internet Control Message Protocol ICMP:用於主機和路由器彼此交換網路層資訊。ICMP在IP的上層,報文承載在IP資料報中。ICMP報文有一個類型欄位和一個編碼欄位,並且包含該ICMP報文首次產生的IP資料報的首部和前8個位元組內容。 ping程式發送一個ICMP類型8編碼0的報文到指定主機,接收到的主機發回一個類型0編碼0的報文的ICMP回顯回答。ICMP也可以發送源抑制報文,即擁塞時強制主機減小發送速率。Trancerout通過發送UDP報文,並接收路由返回的ICMP報文來判斷路徑中的路由器以及路由器的資訊和時延。
IPv6:開發IPv6的最初動機是因為32位元的地址空間即將用盡。主要變化:擴大的地址容量:將IP地址長度由32位元增加到128位元。這確保全世界不會用盡IP地址。除了單播和多播地址外,還引入了一種稱為任播地址anycase address的新型地址,是資料報交付給主機中的任意一個。簡單高效的40位元組首部:新的選項編碼允許進行更靈活的選項處理。流標籤和優先順序Flow labeling and priority:IPv6中的流確切定義還未完全確定,其優先順序同時也表明流的類型不同。
IPv6中資料報的欄位:版本號碼:4位元,為6。流量類型:8位元。流標籤:20位元,用來標識一個資料報的流。有效載荷長度:16位元。下一個首部next header:使用與IPv6中協議欄位相同的值,指示的是要交付給哪個運輸層協議。跳限制Hop linmit:這裡一跳就是經過一個路由器,到達0則丟棄資料報。源和目的地址:256位元。資料:有效載荷。
IPv6中沒有片位移位和標誌位,不允許在中間路由器上進行分組和重新組裝,這些操作只能在源和目的地上執行。當一台路由器收到IPv6資料報應太大而不能轉寄到出鏈路上時,則丟棄資料報,並向發送方返回一個分組太大的ICMP差錯報文。然後發送方使用較小長度的IP資料報重發資料。大大加快了網路中的IP轉寄速度。
首部檢驗和:因為運輸層和鏈路層協議執行了檢驗操作,則在網路層省略了這種操作。提高速率。
選項:選項欄位不再是標準IP的首部中的一部分。TCP或UDP的協議首部可出現在IP分組的下一個首部欄位指出一樣,選項欄位也可在下一個首部欄位中指出。而刪除選項欄位導致一個定長40位元組的IP首部。
IPv4如何升級到IPv6,這是一個很麻煩的事情。暫時使用雙棧dual-stack的方法,即IPv6的節點也具有完整的IPv4功能。當IPv6與IPv4節點相互操作時,使用IPv4,兩個IPv6節點使用IPv6.
另一種雙棧的方法是建隧道tunneling,即兩個IPv6節點間由中間IPv4路由器互聯,則將兩個IPv6節點間IPv4路由器的集合稱為隧道tunnel,則當IPv6使能-capable節點想IPv4節點轉寄資料報時,要將原來的IPv6的資料報封裝在IPv4中,而後在IPv6節點間轉寄時,在解鎖出來。
IP安全性:IPsec為流行的安全網路層協議,也是虛擬私人網路VPN中廣泛採用的協議。運輸層傳遞報文段時進行加密和解密,使用的是對稱式加密演算法。IPv4和IPv6沒有進行加密,幾乎沒有安全性。
選路演算法routing algorithm:
資料報服務中在給定源和目的地間,傳輸不同的分組可能採用不同的路由,因為有選路演算法的存在,當其更新了路由中的轉寄表就可能導致分組經不同的路由轉寄,而虛電路在一開始就使用選路演算法將所有路徑固定了,所以分組傳輸採用相同的路徑。
直接與主機相連的路由器稱為該主機的 預設路由器default router。又稱第一條路由器first-hop router。稱源主機的預設路由器為源路由器source router。同理目的主機的預設路由器稱為目的路由器destination router。則研究的選路問題為從源路由器到目的路由器的選路問題。而一般的選路的目的是選取一條好的路徑,即具有最低費用的路徑。
圖論graph被用於形式化選路問題。這裡的圖是無向圖,選路就是在選 最低費用路徑 least-cost path,費用可以是鏈路的物理長度,鏈路速度或該鏈路的金融上的費用。令c(x,y)為兩個節點間的費用,當節點對不屬於網路E時,c(x,y)= ∞。如果邊(x,y)屬於E,則xy互為鄰居neightbor。
選路演算法可以根據是全域性還是分布式分為:
全域選路演算法global routing algorthm:用完整的全域性的網路資訊來計算源到目的地之間的最低費用。該演算法以所有節點之間的連通性connectivity和所有鏈路的費用costs作為輸入。計算可以在某個場點(集中式centrailized全域選路演算法)運行,也可以在多個場點冗餘地進行。這樣具有全域狀態資訊的演算法被稱為 鏈路狀態Link-State LS演算法。
分布式選路演算法decentrailized routing algorithm:以迭代分布式的方式計算出最低費用路徑。每個節點僅有與其直接相連的鏈路的費用資訊即可開始工作。通過迭代計算過程並與相鄰neighboring節點交換資訊,一個節點逐漸計算出到達目的節點或一組目的節點的最低費用。距離向量Distance-Vector DV演算法,每個節點維護到網路中所有其他節點的費用估計的向量。
選路演算法還可以根據演算法是靜態還是動態來進行分類。在靜態選路static routing演算法中,路由的變換非常緩慢,通常由人工幹預進行調整 ,如手工編輯路由器的轉寄表。動態dynamic選路演算法:在網路流量負載或拓撲topology發生變化時改變選路路徑。動態演算法周期性的運行或直接響應拓撲或鏈路費用的變化而進行。
選路演算法還可以根據其負載敏感還是負載遲鈍進行分類:負載敏感load-sentitive 演算法,鏈路費用會動態反應底層鏈路的當前擁塞水平。當前選路演算法都是負載遲鈍的,鏈路費用不能明顯的反應當前擁塞水平。
鏈路狀態選路演算法:網路拓撲和所有鏈路費用都是已知的。通過讓每個節點路由器想網路中的所有其他路由器廣播鏈路狀態分組 來實現,其中每個鏈路狀態分組包含路由器所串連的鏈路的特徵和費用。由鏈路狀態廣播link state broadcast演算法來實現。
使用Dijkstra演算法來計算最低費用路徑。Dijkstra演算法是圖論中計算最短路徑的演算法,是一種迭代演算法,迭代k次,可知道網路中k個節點時最低費用路徑。這裡記: D(v):隨著演算法進行本次迭代,從源節點到目的節點v的最低費用路徑的費用。p(v)為從源節點到目的節點v沿著當前最低費用路徑的前一節點(v的鄰居)。N‘為節點子集,每次迭代就增加一個節點進入節點子集,而當節點v加入N’中時,最低費用路徑已確定。
該全域選路演算法由一個初始化步驟,和之後的迴圈構成,迴圈的次數與網路中的節點數量相同。這裡就是資料結構中的Dijkstra演算法,不過分詳細說明。然後初始化階段加入源節點,則與源節點相連的節點的費用就是費用而不相連的為∞,而其前一個節點p(v)都為源節點。然後迭代時,觀察尋找未加入集合N‘中的最低費用節點,將其加入N’。再更新所有的D(v),當新加入的節點時源節點到目的節點費用更低時,更新Dv和P(v)。重複迭代。則最後我們可以得到每個節點到源節點的最低費用路徑的前一個節點,依次選取就可獲得完整的從源節點到所有目的節點的最短路徑的路徑。而通過為 節點存放 其他節點為源節點到它的最低費用路徑上的前一個節點 ,則可以為這個節點構建轉寄表。最壞情況複雜度為O(n^2)
距離向量演算法:距離向量演算法是迭代的iterative,非同步asynchronous和分布式的dirtributed。Bellman-Ford方程:d x(y) = min v{c(x,v)+d v(y)};即x到y 的最低費用為 與x相連的所有節點中 到x的鏈路費用與到y節點最低費用之和的最小值,而這個節點即為x節點要轉寄分組的下一跳 。同時該方程提出了DV演算法中發生鄰居到鄰居通訊的形式:其基本思想是:每個節點x以Dx(y)開始,對N中所有節點估計之間費用。令 Dx = [Dx(y):y∈N]為節點x的距離向量distance vector,向量裡儲存所有x到N中節點的費用估計。採用DV演算法,每個節點要維護以下資料:到鄰居的直接費用c(x,v);節點的距離向量;所有鄰居節點的距離向量。在這個分布式的非同步演算法中,每個節點不時的向它的每個鄰居發送距離向量拷貝。而當節點接收到距離向量時,還會使用方程更新自己的距離向量。如果一個節點的距離向量因為這個更新步驟而改變,則該節點要想它所有的鄰居發送更新後的向量。
而在DV演算法中,節點需要知道的不是x到y的最短路徑距離,而是鄰居節點的最短路徑距離。而節點選擇其最短路徑的鄰居節點作為下一跳路由器,節點據此來更新到目的地y的轉寄表。選路表中routing table每一行就是一個向量,而初始時,未知道其他路由器的情況,所以費用為無窮大。然後每個向量互相發送自己的向量,並接收計算,再發送。。。直到無更新進入靜止狀態。
鏈路費用變化與鏈路故障:當運行DV演算法的節點檢測到從它到鄰居的鏈路費用發生改變時,就更新距離向量,如果最低費用路徑的費用也發生改變,則向鄰居通知其更新後的距離向量。當某節點未正確接收到距離向量的更新,導致類似一下情況:在x,y,z三個路由器組成的網路中,x沒有獲得正確更新的y到z的距離向量,而認為x到y到z的路徑是最短的,便將分組轉寄給了y,並將計算得到的新的距離向量轉寄給y,而路由器y接收到x發過來的基於錯誤產生的錯誤的距離向量,卻以此來更新自己距離向量中的正確部分給更新了,即y認為x找到了一條更短的路徑,判斷是y到x到z路徑是最短的,又將分組傳回給了x,同時更新自己的正確的距離向量,並將新的得到的錯誤距離向量重新發給x,然後迴圈,遇到了選路環路routing loop。而每次來回傳的過程中距離會增加這段鏈路的費用,直到兩者之間錯誤的距離向量來回更新到打破迴圈就會退出迴圈。
增加毒性逆轉poison reverse:即z通過y選路到達目的地x時,z將通知y,z到x的距離是無窮大的,只要z經y選路到x,它就會持續這個狀態。但設計到3個或更多個節點的環路將不能被毒性逆轉技術檢測到。
LS與DV選路演算法的比較:報文複雜度:LS演算法中發送的報文更多,而且無論何時一條鏈路的費用改變,都必須想所有節點發送新的鏈路資訊。收斂速度:DV演算法收斂較慢,遇到環路還會遭到計數到無限的問題。健壯性:一台路由器發生了故障,LS節點僅計算自己的轉寄表,路由器在某種程度上是分離的,而DV演算法下,一個小的故障將導致大量的錯誤。
層次選路:規模,隨著路由器數量變得很大,選路資訊的計算儲存即通訊的開銷變得極大,LS中廣播傳輸的開銷將使佔據大量的頻寬,而DV演算法的迭代也將永遠無法收斂。管理自治,一個組織想要能夠按自己的意願進行和管理其網路,還能將其網路與外部網路連接。
這兩個問題通過將路由器組織進自治系統Autonomou System AS中解決。每個AS由一組通常在相同管理控制下的路由器組成。在相同的AS內的路由器全部運行相同的選路演算法,而內部的選路協議稱為自治系統內部選路協議,且擁有彼此之間的資訊。在AS內有一台或多台路由器負責向本AS外的目的轉寄分組,這些路由器稱為網關路由器gateway router。兩個AS間的通訊使用自治系統間選路資訊inter-autonomous system routing protocol,網際網路中都使用BGP4。
使用熱馬鈴薯hot potato routing選路,AS儘可能快(儘可能低費用)的擺脫分組。通過讓路由器向某網關路由器發送分組來完成,同時同時要求該網關路由器到目的地路徑上的所有網關路由器具有最低費用。即路由器選擇網關後迅速發送分組,並決定使用此網關路由器,然後選定最低費用路徑,對其轉寄表增加用於x的表項所採取的動作。ISP中包含一個或多個AS。AS內部的路由器只需要知道本AS內的路由器。
網際網路中的選路:
網際網路中的自治系統內部選路協議有兩個選路資訊協議Routing Information Portocol RIP和開放最段路徑優先Open Shortest Path First OSPF。
RIP:是一種距離向量協議,使用跳數作為其費用測度,即每條鏈路的費用都為1。跳是沿著路由器到目的子網包括目的子網 的最短路徑所經曆的子網數量。一條路徑的最大費用被限制為15,RIP被限制在網路直徑不超過15跳的自治系統內。在RIP中,選路更新資訊在鄰居之間通過RIP響應報文 交換,大約30秒交換一次,每台路由器維護一個叫選路表的RIP表,其中放著路由器的距離向量和轉寄表。
OSPF:使用洪泛鏈路狀態資訊的鏈路狀態協議和一個Dijkstra最低費用路徑演算法。使用OSPF,一台路由器構建一副關於整個自治系統的完整拓撲圖。各條鏈路費用有管理員配置,且周期性地向相鄰路由器廣播以確保健壯。OSPF的優點:安全,多條相同費用路徑,對單播選路與多播選路的綜合支援,支援在單個選路域內的階層。在AS內的一個地區內,有一台或多台區域界限路由器,負責發送到地區外的分組選路。一個AS中有一個地區會被配置稱主幹backbone,主幹地區為AS內其他地區之間的流量選路,主幹包含AS內所有區域界限路由器。路由器分為內部路由,區域界限路由器,骨幹路由器,和邊界路由器。
自治系統間的選路BGP:邊界網關協議Broder Gateway Protocol
廣播和多播選路:
廣播選路:網路層提供從一個源節點到網路中的所有節點交付分組的服務。多播選路:每一個源節點能夠向其他網路節點的一個子集發送分組的拷貝。
廣播選路演算法:最簡單的是N次單播,但是其效率低。 洪泛flooding:該方法要求節點在收到廣播分組後向他所有鄰居(除了接收分組的那個鄰居)發送該分組的拷貝。其缺點是致命的,如果圖中有圈,即廣播分組會在網路中無限迴圈。在這種情況下還有一個更加致命缺陷,當一個節點與多個節點相連時,會產生並轉寄多個拷貝,導致廣播風暴。受控洪泛:通過一些限制使節點明智的選擇何時洪泛分組。有多種方法進行限制:序號控制:源節點將地址以及廣播序號放入分組,其他節點會賦值澤瀉資訊放在一個列表中並維護,然後每次檢查分組是否已在列表中。反向路徑轉寄RPF:基本思路是,一台路由器收到具有給定源地址的廣播分組後,僅當該分組到達的鏈路正好位於它自己到其源的最短單播路徑上,它才向其所有出鏈路傳輸分組。原理就是任何一節點都只有唯一的一條最短單播路徑,所以每個節點註定只會傳播到一次。產生樹廣播:將圖轉換為最小產生樹,根據最小產生數來確定傳播。
多播multicast:多播資料報使用間接地址來編址,用一個標識來表示一組接收方,這個標識為D類多播地址。互連網組管理協議IGMP:運行在一台主機於第一條路由器之間,為主機提供手段用於組的管理。多播選路演算法:使用一個基於源的數進行多播選路,通過剪枝來實現刪去不想要的多播分組。網際網路中使用的多播協議是協議網關的多播選路協議PIM。
電腦網路 4.網路層與IP協議