摘要:
本文給出IPv4與IPv6數據報格式示意圖,並整理了各個字段含義,最后對比IPv4與IPv6數據報格式的區別。
一、IPv4數據報
圖1 IPv4數據報格式
版本號(version)
不同的IP協議版本使用不同的數據報格式。
首部長度(HL, Internet Head Length)
確定IP數據報中數據部分實際從哪里開始,包含可變數量的選項。若IP數據報沒有包含選項,則IP數據報首部長度為20字節。
服務類型(TOS, Type Of Service)
更好地服務不同類型IP數據報(如實時數據報IP電話應用、非實時通信流FTP),Cisco將TOS前3位標識不同服務等級,即優先級。
數據報長度(TL, Total Length)
IP數據報長度,即首部+數據。
分片:標識(identification)、標志(flags)、段位移(Fragment Offset)
這3個字段跟IP分片有關,當目的主機從同一個源收到一批數據報時,需要確定這些數據報是完整數據報還是分片后的數據報,數據報首部標識字段解決這個問題,檢查數據報的標識號確定哪些數據報真正是同一個較大數據報的片;如何判斷最后一個分片已收到,數據報首部標志字段解決這個問題,將最后一片的標志為0,其他標記為1;如何順序重組這些片,這就需要記錄每個片的在數據報有效凈荷的偏移量,這也確定了片是否丟失。若丟失某些片,則丟棄這個不完整的數據報(不會交給傳輸層)。需要可靠傳輸怎么辦呢,由傳輸層讓源重傳原始數據攝中的數據(如TCP)。
壽命(TTL, Time To Live)
每次數據報經過一台路由器時,該字段的值減1,若TTL字段減為0,則丟棄該數據報,從而確保數據報不會永遠在網絡循環。
上層協議(Protocol)
該字段用於指明IP數據報的數據部分應該交給哪個傳輸層協議(6為TCP、17為UDP)。
首部檢查和(Header Checksum)
只是對IP首部進行檢驗,對整個TCP/UDP報文段檢驗交由TCP/UDP完成。將首部中的每兩個字節當作一個數,用反碼運算對這些數求和,該和按1補碼值存放在檢查和字段。當路由器收到IP數據報時,計算其首部檢查和,與該字段值比較,若出錯則丟棄該數據報。
注:因為TTL字段及選項字段可能改變,所以每個路由器上的檢查和都須重新計算並存放在原處。(檢查后,再更新)
源和目的IP地址(Source/Destination Address)
選項(Options)
選項字段允許IP首部被擴展,由此導致數據報首部長度可變,故不能預先確定數據字段從何開始,同時也使路由器處理一個IP數據報所需時間差異很大(有的要處理選項,有的不需要)。
數據(Data)
當使用TCP/UDP協議時,數據即為傳輸層報文段(TCP/UDP)。數據字段也可承載其他類型數據,如ICMP報文段。
二、IPv6數據報
圖2 IPv6數據報格式
版本號(version)
不同的IP協議版本使用不同的數據報格式。
通信量等級(Traffic Classes)
使得源節點和路由器能夠識別IPv6信息包的優先級。與IPv4服務類型TOS字段含義類似。
流標簽(Flow Label)
標記那些需要IPv6路由器特殊處理(如一種非默認服務質量或實時服務)的信息包順序。
有效負載長度(Payload Length)
定長40字節數據報首部后面的字節數量,包括擴展報頭和負載數據,即數據報長度-40。
下一個首部(Next Header)
當IPv6沒有擴展報頭時,該字段的作用和IPv4的上層協議字段一樣。當含有擴展報頭時,該字段的值即為第一個擴展報頭的類型。
跳限制(Hop Limit)
轉發數據報的每台路由器對該字段的值減1,若減為0則丟棄該數據報。
源和目的IP地址(Source/Destination Address)
數據(Data)
當數據報到達目的地時,該有效載荷就從IP數據報移出,並交給下一個首部字段中指定的協議。
源和目的IP地址(Source/Destination Address)
選項(Options)
選項字段允許IP首部被擴展,由此導致數據報首部長度可變,故不能預先確定數據字段從何開始,同時也使路由器處理一個IP數據報所需時間差異很大(有的要處理選項,有的不需要)。
數據(Data)
當使用TCP/UDP協議時,數據即為傳輸層報文段(TCP/UDP)。數據字段也可承載其他類型數據,如ICMP報文段。
三、區別
3.1 首部長度
首部長度可變,IPv4首部的選項字段允許IP首部被擴展,由此導致數據報首部長度可變,故不能預先確定數據字段從何開始,同時也使路由器處理一個IP數據報所需時間差異很大(有的要處理選項,有的不需要)。基於此,IPv6采用固定40字節長度的報頭長度(稱基本報頭)。IPv6如何實現IPv4選項字段類似的功能,答案是擴展報頭,並由IPv6基本報頭的下一個首部指向擴展報頭(如果有的話)。路由器不處理擴展報頭,提升了路由器處理效率。
3.2 分片/重組
IPv6,分片與重組只能在源與目的地上執行,不允許在中間路由器進行。分片與重組是個耗時的操作,將該功能從路由器轉移到端系統,大大加快了網絡中的IP轉發速率。那,如果路由器收到IPv6數據報太大而不能轉發到出鏈路上怎么辦?該路由器丟棄該包,並向發送發發回一個"分組太大"的ICMP差錯報文,於是發送發使用較小長度的IP數據報重發數據。
3.3 首部檢查和
每個路由器上,IPv4首部檢查和都需要重新計算,是一項耗時操作。加之,傳輸層和鏈接層協議執行了檢驗操作,網絡傳輸可靠性提升,所以IPv6不進行首部檢查和,從而更快速處理IP分組。
既然IPv6有如此之多優勢,那么,接下來的問題,如何從IPv4向IPv6遷移?
參考資料:
[1] 《TCP/IP指南》
[2] 《計算機網絡--自頂向下方法與Internet特色》[M].
[3] 基於6LoWPAN的IPv6無線傳感器網絡的研究與實現[D].上海交通大學.
IPv4g和IPv6數據報格式visio原文件 IPv4g和IPv6數據報格式.rar
from:http://blog.chinaunix.net/uid-9112803-id-3206178.html