ip(internet protocol,網際網路協議)是osi第三層——網路層協議,本節僅以ipv4版本為例進行介紹。ip協議也是乙個無連線的協議,主要就是負責在主機間定址,並為資料報設定路由,在交換資料前它並不建立會話。因為它不保證正確傳遞。另一方面,資料在被收到時,ip不需要收到確認,所以它是不可靠的。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
資料在經過ip網路層時,也會對資料進行封裝,也就有相應的ip協議包頭了。在乙太網幀中,
ipv4
包頭緊跟著乙太網幀頭,同時乙太網幀頭中的協議型別值設定為十六進製制的0800
。它的基本格式如圖3-12所示。
n 版本(version)
指定ip協議的版本號。因為目前仍主要使用ipv4版本,所以這裡的值通常是0x4(注意封包使用的數字通常都是十六進製的)。佔4位。 圖
3-12 ip
協議頭格式
n 包頭長度(internet
header
length,ihl)
指明ipv4協議包頭長度的位元組數包含多少個32位。由於ipv4的包頭可能包含可變數量的可選項,所以這個字段可以用來確定ipv4資料報中資料部分的偏移位置。ipv4包頭的最小長度是20個位元組,因此ihl這個欄位的最小值用十進位制表示就是5。佔4位。由於它是乙個4位元字段,因此首部最長為60個位元組,但實際上目前最多仍為24個位元組。
n 服務型別(type of service,tos)
定義ip封包在傳送過程中要求的服務型別,共由8個bit組成其中每個bit的組合分別代表不同的意思。4bit中只能置其中1bit。如果所有4bit均為0,那麼就意味著是一般服務。具體如下:
ø 000.....(routine):過程字段,佔3位。設定了資料報的重要性,取值越大資料越重要,取值範圍為:0(正常)~ 7(網路控制)
ø ...0....(delay):延遲字段,佔1位,取值:0(正常)、1(期特低的延遲)
ø ....0...(throughput):流量字段,佔1位。取值:0(正常)、1(期特高的流量)
ø .....0..(reliability):可靠性字段,佔1位。取值:0(正常)、1(期特高的可靠性)
ø …..0.(ecn-capable transport):顯式擁塞指示傳輸字段,佔1位。由源端設定,以顯示源端節點的傳輸協議是支援ecn(explicit cogestion notifica tion,顯式擁塞指示)的。取值:0(不支援ecn)、1(支援ecn)
ø .......0(congestion experienced):擁塞預警字段,佔1位。取值:0(正常,不擁塞)、1(擁塞)
n 包長度(total
length,tl)
指定ip包的總長,通常以byte做單位來表示該封包的總長度此數值包括標頭和資料的總和。它以位元組為單位,佔16位。利用首部長度欄位和總長度字段,就可以知道ip資料報中資料內容的起始位置和長度。
【經驗之談】由於該字段長16位元,所以ip資料報最長可達65535位元組。儘管可以傳送乙個長達65535位元組的ip資料報,但是大多數的鏈路層都會對它進行分段。而且,主機也要求不能接收超過576位元組的資料報。由於tcp把使用者資料分成若干段,因此一般來說這個限制不會影響tcp。udp的應用(如rip、tftp、bootp、dns、snmp等),都限制使用者資料報長度為512位元組,小於576位元組。但是,事實上現在大多數的實現允許超過8192位元組的ip資料報。
總長度欄位是ip首部中必要的內容,因為一些資料鏈路(如
乙太網)需要填充一些資料以達到最小長度。儘管
乙太網的最小幀長為46個位元組(將在本章後面介紹),但是ip資料可能會更短。如果沒有總長度字段,那麼ip層就不知道46位元組中有多少是ip資料報的內容。
n 標識(identification)
每乙個ip封包都有乙個16位的唯一識別碼。當程式產生的資料要通過網路傳送時都會被拆散成封包形式傳送,當封包要進行重組的時候這個id就是依據了。佔16位。
標識字段唯一地標識主機傳送的每乙份資料報。通常每傳送乙份訊息它的值就會加1。
rfc791認為標識字段應該由讓ip傳送資料報的上層來選擇。假設有兩個連續的ip資料報,其中乙個是由tcp生成的,而另乙個是由udp生成的,那麼它們可能具有相同的標識字段。儘管這也可以照常工作(由重組演算法來處理),但是在大多數從伯克利派生出來的系統中,每傳送乙個ip資料報,ip層都要把乙個核心變數的值加1,不管交給ip的資料來自哪一層。核心變數的初始值根據系統引導時的時間來設定。
n 標記(flags)
這是當封包在傳輸過程中進行最佳組合時使用的3個bit的識別記號。佔3位。
ø 000(reserved fragment):保留分段。當此值為0的時候表示目前未被使用。
ø .0.(don't fragment):不分段。當此值為0的時候表示封包可以被分段,如果為1則不能被分割。
ø ..0(more fragment):更多分段。當上乙個值為0時,此值為0就示該封包是最後乙個封包,如果為1則表示其後還有被分割的封包。
n 分段偏移(fragment offset,fo)
當封包被分段之後,由於網路情況或其它因素影響其抵達順序不會和當初切割順序一至,所以當封包進行分段的時候會為各片段做好定位記錄,以便在重組的時候就能夠對號入座。值為多少個位元組,如果封包並沒有被分段,則
fo 值為
「0」 。
佔 13
位。 n
生存時間(time to live,ttl)
生存時間字段設定了資料報可以經過的最多路由器數,表示資料報在網路上生存多久。ttl的初始值由源主機設定(通常為32或64),一旦經過乙個處理它的路由器,它的值就減去1。當該字段的值為0時,資料報就被丟棄,並傳送icmp訊息通知源主機。這樣當封包在傳遞過程中由於某些原因而未能抵達目的地的時候就可以避免其一直充斥在網路上面。佔8位。
n 協議(protocol,prot)
指該封包所使用的網路協議型別,如icmp、dns等。佔8位。各協議對應的值如表3-1所示。
表 3-1
協議號
協議號 協議
協議號協議
00ip 22
xns-idp 01
icmp 27
rdp 02
igmp 29
iso-tp4 03
ggp 36
xtp 04
ip-encap 37
ddp 05
st 39
idpr-cmtp 06
tcp 73
rspf 08
egp 81
vmtp 12
pup 89
ospfigp 17
udp 94
ipip 20
hmp 98
encap n
頭校驗和(header checksum)
指ipv4資料報包頭的校驗和。這個數值用來檢錯用的,用以確保封包被正確無誤的接收到。當封包開始進行傳送後,接收端主機會利用這個檢驗值會來檢驗餘下的封包,如果一切無誤就會發出確認資訊表示接收正常。與udp和tcp協議包頭中的校驗和作用是一樣的。佔16位。
【經驗之談】首部檢驗和字段是根據ip首部計算的檢驗和碼,不對首部後面的資料進行計算。icmp、igmp、udp和tcp協議在它們各自的首部中均含有同時覆蓋首部和資料檢驗和碼。
為了計算乙份資料報的ip檢驗和,首先把檢驗和字段置為0。然後,對首部中每個16位進行二進位制反碼求和(整個首部看成是由一串16位的字組成),結果存在檢驗和字段中。當接收端收到乙份ip資料報後,同樣對首部中每個16 位進行二進位制反碼的求和。由於接收方在計算過程中包含了傳送方存在首部中的檢驗和,因此,如果首部在傳輸過程中沒有發生任何差錯,那麼接收方計算的結果應該為全1。如果結果不是全1(即檢驗和錯誤),那麼ip就丟棄收到的資料報。但是不生成差錯訊息,由上層去發現丟失的資料報並進行重傳。
icmp、igmp、udp和tcp都採用相同的檢驗和演算法,儘管tcp和udp除了本身的首部和資料外,在ip首部中還包含不同的字段。由於路由器經常只修改ttl欄位(減1),因此當路由器**乙份訊息時可以增加它的檢驗和,而不需要對ip整個首部進行重新計算。 n
源位址(source address,sa)
傳送ip資料報的ip位址。佔32位。
n 目的位址(destination address)
接收ip資料報的ip位址。也佔32位。
n 選項(options)+填充(padding)
這兩個選項較少使用,只有某些特殊的封包需要特定的控制才會利用到。共32位。這些選項通常包括:
ø 安全和處理限制:用於軍事領域
ø ø
ø ø
以上這些選項很少被使用,而且並非所有的主機和路由器都支援這些選項。選項字段一直都是以32位作為界限,在必要的時候插入值為0的填充位元組。這樣就保證ip首部始終是32位的整數倍(這是首部長度欄位所要求的)。
從以上ip包頭格式可以看出,ip協議包頭大小也有兩種:當沒有「選項」這個欄位時,為160位,20個位元組;當有「選項」欄位時為192位,24個位元組。它與tcp協議包頭大小是一樣的。
網路 IP協議頭格式
網路層 在複雜的網路環境中確定乙個合適的路徑 路由選擇 網路層的目的是實現倆個端系統之間的資料透明傳輸,具體工能包括定址,路由選擇,連線的建立,保持和終止。ip協議 基本概念 節點 主機和路由器的統稱 ip協議的功能 定址和路由 根據對方的ip位址,尋找出最佳的路徑傳輸資訊 傳遞服務 不可靠 ip協...
ip頭ttl IP協議簡介
我們這篇文章來介紹一下ip協議。ip協議也就是我們所說的網路層協議,它的主要目的就是將乙個ip位址的資料傳送到另外乙個ip位址所代表的裝置,這兩個ip位址有可能是隸屬於同乙個網段,也有可能隸屬於不同的網段。我們來看乙個比較簡單的情況。當把一組資料發往ip位址為127.127.127.127的裝置,這...
IP 協議幀格式
ip協議rfc ip協議在協議棧中位於網路層,網路資料傳輸封裝方式如下 ip報文格式如下 版本 ip報文版本號 ipv4 4,ipv6 6 首部長度 ip header 長度,沒有選項,則一般為5 5x32bit 20b 8位服務型別 一般沒有使用,詳細參考rfc 總長度 header 資料 總長度...