說明:本文為《TCP/IP詳解,卷1:協議》的第一章“IP:網際協議”的學習筆記。
一.引言
IP是TCP/IP協議族中最為核心的協議。所有的TCP、UDP、ICMP及IGMP數據都以IP數據報格式傳輸。對IP提供不可靠、無連接的數據報傳送服務。
不可靠(unreliable)的意思是它不能保證IP數據報能成功地到達目的地。I P僅提供最好的傳輸服務。如果發生某種錯誤時,如某個路由器暫時用完了緩沖區, IP有一個簡單的錯誤處理算法:丟棄該數據報,然后發送I C M P消息報給信源端。任何要求的可靠性必須由上層來提供(如TCP)。
無連接(connectionless)這個術語的意思是IP并不維護任何關于后續數據報的狀態信息。每個數據報的處理是相互獨立的。這也說明, IP數據報可以不按發送順序接收。
在本章,我們將簡要介紹IP首部中的各個字段,討論IP路由選擇和子網的有關內容。還要介紹兩個有用的命令: ifconfig和netstat。
二.IP首部
1. IP數據報格式圖

2. 首部各部分說明
1)目前的協議版本號是4,因此I P有時也稱作I P v 4。
2)首部長度指的是首部占32 bit字的數目,包括任何選項。由于它是一個4比特字段,因此
首部最長為6 0個字節。
3)服務類型(TOS)字段包括一個3 bit的優先權子字段(現在已被忽略),4 bit的TO S子字
段和1 bit未用位但必須置0。4 bit的TO S分別代表:最小時延、最大吞吐量、最高可靠性和最小費用。4 bit中只能置其中1 bit。如果所有4 bit均為0,那么就意味著是一般服務。
3.服務類型對象推薦值

現在大多數的T C P / I P實現都不支持TO S特性,但是自4.3BSD Reno以后的新版系統都對它進行了設置。另外,新的路由協議如O S P F和I S - I S都能根據這些字段的值進行路由決策。
4.總長度
總長度字段是指整個I P數據報的長度,以字節為單位。利用首部長度字段和總長度字段,就可以知道I P數據報中數據內容的起始位置和長度。由于該字段長16比特,所以IP數據報最長可達65535字節。盡管可以傳送一個長達6 5 5 3 5字節的I P數據報,但是大多數的鏈路層都會對它進行分片。而且,主機也要求不能接收超過5 7 6字節的數據報。由于T C P把用戶數據分成若干片,因此一般來說這個限制不會影響TCP。
TTL(time- to-live)生存時間字段設置了數據報可以經過的最多路由器數。它指定了數據報的生存時間。
首部檢驗和字段是根據I P首部計算的檢驗和碼。它不對首部后面的數據進行計算。ICMP、IGMP、UDP和TCP在它們各自的首部中均含有同時覆蓋首部和數據檢驗和碼。
三. IP路由選擇
IP層既可以配置成路由器的功能,也可以配置成主機的功能。當今的大多數多用戶系統,包括幾乎所有的Unix系統,都可以配置成一個路由器。
在一般的體制中,IP可以從TCP、UDP、ICMP和IGMP接收數據報(即在本地生成的數據報)并進行發送,或者從一個網絡接口接收數據報(待轉發的數據報)并進行發送。I P層在內存中有一個路由表。當收到一份數據報并進行發送時,它都要對該表搜索一次。
1.路由表每一項包含的信息
1)目的IP地址
它既可以是一個完整的主機地址,也可以是一個網絡地址,由該表目中的標志字段來指定。
2) 下一站(或下一跳)路由器(next-hop router)的I P地址或者有直接連接的網絡IP地址
下一站路由器是指一個在直接相連網絡上的路由器,通過它可以轉發數據報。下一站路由器不是最終的目的,但是它可以把傳送給它的數據報轉發到最終目的。
3) 標志
其中一個標志指明目的I P地址是網絡地址還是主機地址,另一個標志指明下一站路由器是否為真正的下一站路由器,還是一個直接相連的接口.
4)為數據報的傳輸指定一個網絡接
2.IP路由選擇主要完成的功能
IP路由選擇是逐跳地(hop-by-hop)進行的。IP路由選擇主要完成的功能如下:
1)搜索路由表,尋找能與目的I P地址完全匹配的表目(網絡號和主機號都要匹配)。如果找到,則把報文發送給該表目指定的下一站路由器或直接連接的網絡接口;
2)搜索路由表,尋找能與目的網絡號相匹配的表目。如果找到,則把報文發送給該表目
指定的下一站路由器或直接連接的網絡接口。目的網絡上的所有主機都可以通過這個表目來處置;
3)搜索路由表,尋找標為“默認(default)”的表目。如果找到,則把報文發送給該表目指定的下一站路由器;如果上面這些步驟都沒有成功,那么該數據報就不能被傳送。
四.子網尋址
現在所有的主機都要求支持子網編址(RFC 950 [Mogul and Postel 1985])。不是把I P地址看成由單純的一個網絡號和一個主機號組成,而是把主機號再分成一個子網號和一個主號。
在InterNIC獲得某類I P網絡號后,就由當地的系統管理員來進行分配,由他(或她)來決定是否建立子網,以及分配多少比特給子網號和主機號。
五.子網掩碼
任何主機在引導時進行的部分配置是指定主機I P地址。大多數系統把I P地址存在一個磁盤文件里供引導時讀用。除了I P地址以外,主機還需要知道有多少比特用于子網號及多少比特用于主機號。這是在引導過程中通過子網掩碼來確定的。
下面看兩個B類地址子網掩碼的例子:

六.特殊情況的IP地址
1. 特殊情況的IP地址圖

七.ifconfig命令
ifconfig(8)命令一般在引導時運行,以配置主機上的每個接口。ifconfig命令一般支持TCP/IP以外的其他協議族,而且有很多參數。關于這些細節可以查看系統說明書。
八.netstat命令
netstat(1)命令也提供系統上的接口信息。- i參數將打印出接口信息, - n參數則打印出I P地址,而不是主機名字。
Eg. netstat -in
這個命令打印出每個接口的MTU、輸入分組數、輸入錯誤、輸出分組數、輸出錯誤、沖
突以及當前的輸出隊列長度。
九.IP的未來
1. IP主要存在的問題
1)超過半數的B類地址已被分配。根據估計,它們大約在1 9 9 5年耗盡。
2)32bit的I P地址從長期的Internet增長角度來看,一般是不夠用的。
3)當前的路由結構沒有層次結構,屬于平面型( flat )結構,每個網絡都需要一個路由表目。隨著網絡數目的增長,一個具有多個網絡的網站就必須分配多個C類地址,而不是一個B類地址,因此路由表的規模會不斷增長。
2. 針對問題提出的修改建議
1)SIP,簡單Internet協議。它針對當前的I P提出了一個最小幅度的修改建議,采用6 4位地址和一個不同的首部格式(首部的前4比特仍然包含協議的版本號,其值不再是4)。
2)PIP。這個建議也采用了更大的、可變長度的和有層次結構的地址,而且首部格式也不相同。
3)TUBA, 代表“ TCP and UDP with Bigger Address ”, 它基于OSI 的C L N P(Connectionless Network Protocol,無連接網絡協議),一個與I P類似的O S I協議。它提供大得多的地址空間:可變長度,可達2 0個字節。由于C L N P是一個現有的協議,而S I P和P I P只是建議,因此關于C L N P的文檔已經出現
十.小結
本章開始描述了I P首部的格式,并簡要討論了首部中的各個字段。我們還介紹了I P路由選擇,并指出主機的路由選擇可以非常簡單:如果目的主機在直接相連的網絡上,那么就把數據報直接傳給目的主機,否則傳給默認路由器。
在進行路由選擇決策時,主機和路由器都使用路由表。在表中有三種類型的路由:特定主機型、特定網絡型和默認路由型。路由表中的表目具有一定的優先級。在選擇路由時,主機路由優先于網絡路由,最后在沒有其他可選路由存在時才選擇默認路由。
IP路由選擇是通過逐跳來實現的。數據報在各站的傳輸過程中目的I P地址始終不變,但是封裝和目的鏈路層地址在每一站都可以改變。大多數的主機和許多路由器對于非本地網絡的數據報都使用默認的下一站路由器。
A類和B類地址一般都要進行子網劃分。用于子網號的比特數通過子網掩碼來指定。我們為此舉了一個實例來詳細說明,即作者所在的子網,并介紹了變長子網的概念。子網的劃分縮小了I n t e r n e t路由表的規模,因為許多網絡經常可以通過單個表目就可以訪問了。接口和網絡的有關信息通過i f c o n f i g和n e t s t a t命令可以獲得,包括接口的I P地址、子網掩碼、廣播地址以及M T U等。
在本章的最后,我們對I n t e r n e t協議族潛在的改進建議—下一代I P進行了討論。
posted on 2007-08-23 21:45
阿蜜果 閱讀(1466)
評論(0) 編輯 收藏 所屬分類:
網絡通信相關