链路层的封装方式与IP选路 (二)
(參考文獻)TCP/IP詳解,卷1:協議
在TCP/IP協議族中,鏈路層主要有3個目的:
一、???為它上層的IP模塊發送和接收IP數據報
二、???為ARP模塊和RARP模塊請求和接收ARP應答
三、???為RARP發送RARP請求和接收RARP應答
對數據幀封裝的兩種方式(IP報文傳給鏈路層進行封裝):
1、以太網封裝
2、IEEE 802封裝(以下的數字都表示Byte)
CRC字段(或FCS,幀檢驗序列)是一個循環冗余校驗碼,用于檢驗數據幀中的錯誤。
環回接口:
大多數的主機都支持環回接口(Loopback Interface),以允許運行在同一個主機上的客戶程序和服務器程序通過TCP/IP進行通信。A類網絡號127就是為環回接口預留的。根據慣例大多數系統吧127.0.0.1分配給這個接口,并命名為localhost。
最大傳輸單元MTU:
如上圖,以太網和802.3對數據幀的長度都有一個限制,其最大值分別是1500和1492,鏈路層的這個特性稱為MTU
路徑MTU:是指兩臺計算機之間通信時,所通過的網絡中最小的MTU。兩臺主機之間的MTU值不是一個常數,因為IP選路總是在變化的。
IP(網際協議)
IP是TCP/IP協議族中最為核心的協議。所有的TCP、UDP、ICMP和IGMP數據都已IP數據報格式傳輸。
IP協議的兩個特性:
不可靠:他的意思是不能保證IP數據報能成功的到達目的地。IP只提供盡力而為的傳輸服務。任何要求的可靠性必須又上層來提供。
無連接:意思是IP并不維護任何關于后續數據報的狀態信息。每個數據報的處理都是相互獨立的。這也說明IP數據報不按照發送順序接收。
IP數據報格式:
普通的IP首部長為20個字節,除非含有選項字段。目前的協議版本是4,因此IP有時稱為IPv4。
首部長度指的是首部占32bit的數目,包括任何選項。由于它是一個4bit字段,因此,首部最長為60個字節。
服務類型(TOS)字段,包含一個3bit的優先權字段,4bit的TOS字段,和1bit未用位但必須置為0。4bit的TOS分別代表:最小延遲,最大吞吐量最高可靠性和最小費用。4bit中只能置其中1bit,如果4bit都為0,那么就意味著是一般服務。
總長度字段是指IP數據包的長度,以字節為單位。利用首部長度字段和總長度字段就可以知道IP數據報中數據內容的起始位置和長度。
TTL(TimeTo Live)生存時間字段設置了數據報可以經過的最多路由器數,他指定了數據包的生存時間。TTL的初始值有源主機設置,一旦經過一個處理他的路由器,他的值就會減1。當該字段的值為0是,數據報就被丟棄并發送ICMP報文通知源主機。
IP路由選擇:
從概念上來說IP路由選擇是簡單的,特別對于主機來說。如果目的主機與源主機直接相連,或者都在一個共享網絡上,那么IP數據報就直接送到目的主機上。否則就把數據報發到一個默認的路由器上,由路由器來轉發該數據報。
? ??大多數的用戶操作系統,包括幾乎所有的unix操作系統,都可以配置成一個路由器,我們可以為他指定主機和路由器都可以使用的簡單路由算法。本質上的區別在于主機從來不會吧數據報從一個接口轉到另外一個借口,而路由器則需要轉發數據報。內含路由器的主機一般不會轉發數據報,除非他被配置成路由器。???
一般的情況是,IP可以上層協議封裝的數據報TCP、UDP、ICMP、IGMP接收數據報(即本地產生要發送的數據報)或者從一個網卡接口接收數據報(待轉發的數據報)進行發送。IP層在內存中有一個路由表,當IP層收到一個數據報時(可能來自某個網絡接口或者本地產的),都會搜索路由表。?? 當數據報來自某個網絡接口時,IP首先檢查目的IP地址是否為本機的IP地址之一或者為廣播地址,如果是這樣,就會送給IP首部協議字段說指定的協議模塊進行處理;如果數據報的目的地址不是這些地址,如果IP層被配置有路由器的功能,那么他就對數據報進行轉發。否則就將該數據包丟棄。
整個過程如下圖:
IP路由表的每一項都包含這些信息:
1.目的IP地址:他既可以是一個完整的主機地址,也可以是一個網絡地址,由該表中的標志字段來指定(如下所述)。
2.下一站路由器的IP地址
3.標志:其中一個標志指明目的IP地址是網絡地址還是主機地址;另一個標志指明,下一站路由器是否為真正的下一站路由器還是一個直接相連的接口。
4.為數據報傳輸指定一個網絡接口
IP路由選擇是逐跳進行的,IP并不知道到達任何目的地的完整路徑,所有的路由選擇只為數據報提供下一站路由器的IP地址。他假定下一站路由器比接近發送數據報的主機更接近目的地。
IP路由選擇主要完成這些功能(按先后順序執行):
1、???? 搜索路由表,尋找能與目的IP地址完全匹配的表目(網絡號和主機號都要匹配),如果找到,則把數據報發給該表目指定的下一站路由器或直接相連的網絡接口。
2、???? 搜索路由表,尋找能與目的網路號相匹配的表目。如果找到,則把該數據報發給該表目指定的下一站路由器或直接相連的網絡接口。
3、???? 搜索路由表,尋找默認的表目(default),則把該數據報發給該表目指定的下一站路由器。
如果上面這些步驟都沒有成功,那么該數據報就不能被傳送。如果該數據報來自本機,那么一般會向生成數據報的應用返回一個“主機不可到達”或網絡不可到達的錯誤。完整的主機號匹配在網絡號之前執行,只有當他們都失敗后才選擇默認路由。
子網尋址
現在所有的主機都要求支持子網編址。不是把IP地址簡單的看成由單純的一個網絡號和一個主機號組成而是把一個主機號再分成一個子網號和主機號。這樣做的原因是A類和B類地址為主機號分配了太多的空間可分別容納的主機位224-2和216-2 (由于全0或全1的主機號都是無效的,所以這里減去2).事實上,在一個網絡中人們并不安排這么多的主機。
從InterNIC獲得某類IP網絡號后,就由當地的系統管理員來進行分配,有他來決定是否建立子網。例如,有一個B類網絡地址? 140.252,在剩下的16bit中8位用于子網號,8位用于網絡號;這樣就允許有254個子網,每個網絡有254臺主機。
大多數的子網地址都是B類地址。子網還可以用于C類地址,只是他可用的比特數較少。
子網掩碼
任何主機在引導時進行的部分配置是指定主機IP地址。除了IP地址外,主機好需要知道有多少位用于子網號多少位用于主機號。這是在引導過程中通過子網掩碼來確定的。子網掩碼是一個32為的值,其中值為1的比特用于網絡號和子網號,為0的比特留給主機號。如下圖:
給定IP地址和子網掩碼以后,主機就可以確定IP數據報的目的是:(1)本子網上的主機;(2)本網絡中,其他子網里的主機;(3)其他網絡上的主機。
?
總結
以上是生活随笔為你收集整理的链路层的封装方式与IP选路 (二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下初次安装mysql使用指南
- 下一篇: 论测试用例的重要性