自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

IP協(xié)議頭格式的詳細(xì)分析

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
下面我們主要介紹一下IP協(xié)議頭格式的內(nèi)容。其中包括它的版本信息,包頭長(zhǎng)度等相關(guān)結(jié)構(gòu)內(nèi)容。希望大家能夠了解和掌握這部分內(nèi)容。

IP協(xié)議是我們學(xué)習(xí)網(wǎng)絡(luò)協(xié)議最開始,也是最基礎(chǔ)的協(xié)議。那么今天我們主要介紹一下有關(guān)于IP協(xié)議頭格式的基本狀態(tài)。那么就讓我們具體看以下有關(guān)于IP協(xié)議頭格式和Sniiffer Portable的IP頭的相關(guān)內(nèi)容吧。IP(Internet Protocol,因特網(wǎng)協(xié)議)是OSI第三層——網(wǎng)絡(luò)層協(xié)議,本節(jié)僅以IPv4版本為例進(jìn)行介紹。IP協(xié)議也是一個(gè)無(wú)連接的協(xié)議,主要就是負(fù)責(zé)在主機(jī)間尋址,并為數(shù)據(jù)包設(shè)定路由,在交換數(shù)據(jù)前它并不建立會(huì)話。因?yàn)樗槐WC正確傳遞。另一方面,數(shù)據(jù)在被收到時(shí),IP不需要收到確認(rèn),所以它是不可靠的。

IP協(xié)議頭格式

數(shù)據(jù)在經(jīng)過(guò)IP網(wǎng)絡(luò)層時(shí),也會(huì)對(duì)數(shù)據(jù)進(jìn)行封裝,也就有相應(yīng)的IP協(xié)議包頭了。在以太網(wǎng)幀中,IPv4包頭緊跟著以太網(wǎng)幀頭,同時(shí)以太網(wǎng)幀頭中的協(xié)議類型值設(shè)置為十六進(jìn)制的0800。

◆版本(Version)

指定IP協(xié)議的版本號(hào)。因?yàn)槟壳叭灾饕褂肐Pv4版本,所以這里的值通常是 0x4 (注意封包使用的數(shù)字通常都是十六進(jìn)位的)。占4位。

◆包頭長(zhǎng)度(Internet Header Length,IHL)

指明IPv4協(xié)議包頭長(zhǎng)度的字節(jié)數(shù)包含多少個(gè)32位。由于IPv4的包頭可能包含可變數(shù)量的可選項(xiàng),所以這個(gè)字段可以用來(lái)確定IPv4數(shù)據(jù)報(bào)中數(shù)據(jù)部分的偏移位置。IPv4包頭的最小長(zhǎng)度是20個(gè)字節(jié),因此IHL這個(gè)字段的最小值用十進(jìn)制表示就是5。占4位。由于它是一個(gè)4比特字段,因此首部最長(zhǎng)為60個(gè)字節(jié),但實(shí)際上目前最多仍為24個(gè)字節(jié)。

◆服務(wù)類型(Type of Service,TOS)

定義IP封包在傳送過(guò)程中要求的服務(wù)類型,共由8個(gè)bit組成其中每個(gè)bit的組合分別代表不同的意思。4bit中只能置其中1bit。如果所有4bit均為0,那么就意味著是一般服務(wù)。具體如下:

◆000..... (Routine): 過(guò)程字段,占3位。設(shè)置了數(shù)據(jù)包的重要性,取值越大數(shù)據(jù)越重要,取值范圍為:0(正常)~ 7(網(wǎng)絡(luò)控制)

◆...0....(Delay):延遲字段 ,占1位,取值:0(正常)、1(期特低的延遲) 

◆....0...(Throughput):流量字段,占1位。取值:0(正常)、1(期特高的流量) 

◆.....0..(Reliability) :可靠性字段,占1位。取值:0(正常)、1(期特高的可靠性)

◆…..0.(ECN-Capable Transport):顯式擁塞指示傳輸字段,占1位。由源端設(shè)置,以顯示源端節(jié)點(diǎn)的傳輸協(xié)議是支持ECN(Explicit Cogestion Notifica tion,顯式擁塞指示)的。取值:0(不支持ECN)、1(支持ECN)

◆.......0(Congestion Experienced):擁塞預(yù)警字段,占1位。取值:0(正常,不擁塞)、1(擁塞)

◆包長(zhǎng)度(Total Length,TL)

IP協(xié)議頭格式中指定IP包的總長(zhǎng),通常以byte做單位來(lái)表示該封包的總長(zhǎng)度此數(shù)值包括標(biāo)頭和數(shù)據(jù)的總和。它以字節(jié)為單位,占16位。利用首部長(zhǎng)度字段和總長(zhǎng)度字段,就可以知道IP數(shù)據(jù)報(bào)中數(shù)據(jù)內(nèi)容的起始位置和長(zhǎng)度。

由于該字段長(zhǎng)16比特,所以IP數(shù)據(jù)報(bào)最長(zhǎng)可達(dá)65535字節(jié)。盡管可以傳送一個(gè)長(zhǎng)達(dá)65535字節(jié)的IP數(shù)據(jù)報(bào),但是大多數(shù)的鏈路層都會(huì)對(duì)它進(jìn)行分段。而且,主機(jī)也要求不能接收超過(guò)576字節(jié)的數(shù)據(jù)報(bào)。由于TCP把用戶數(shù)據(jù)分成若干段,因此一般來(lái)說(shuō)這個(gè)限制不會(huì)影響TCP。UDP的應(yīng)用(如RIP、TFTP、BOOTP、DNS、SNMP等),都限制用戶數(shù)據(jù)報(bào)長(zhǎng)度為512字節(jié),小于576字節(jié)。但是,事實(shí)上現(xiàn)在大多數(shù)的實(shí)現(xiàn)允許超過(guò)8192字節(jié)的IP數(shù)據(jù)報(bào)。

總長(zhǎng)度字段是IP首部中必要的內(nèi)容,因?yàn)橐恍?shù)據(jù)鏈路(如以太網(wǎng))需要填充一些數(shù)據(jù)以達(dá)到最小長(zhǎng)度。盡管以太網(wǎng)的最小幀長(zhǎng)為46個(gè)字節(jié)(將在本章后面介紹),但是IP數(shù)據(jù)可能會(huì)更短。如果沒(méi)有總長(zhǎng)度字段,那么IP層就不知道46字節(jié)中有多少是IP數(shù)據(jù)報(bào)的內(nèi)容。

◆標(biāo)識(shí)(Identification)

每一個(gè)IP封包都有一個(gè)16位的唯一識(shí)別碼。當(dāng)程序產(chǎn)生的數(shù)據(jù)要通過(guò)網(wǎng)絡(luò)傳送時(shí)都會(huì)被拆散成封包形式發(fā)送,當(dāng)封包要進(jìn)行重組的時(shí)候這個(gè)ID就是依據(jù)了。占16位。

標(biāo)識(shí)字段唯一地標(biāo)識(shí)主機(jī)發(fā)送的每一份數(shù)據(jù)報(bào)。通常每發(fā)送一份消息它的值就會(huì)加1。RFC791認(rèn)為標(biāo)識(shí)字段應(yīng)該由讓IP發(fā)送數(shù)據(jù)報(bào)的上層來(lái)選擇。假設(shè)有兩個(gè)連續(xù)的IP數(shù)據(jù)報(bào),其中一個(gè)是由TCP生成的,而另一個(gè)是由UDP生成的,那么它們可能具有相同的標(biāo)識(shí)字段。盡管這也可以照常工作(由重組算法來(lái)處理),但是在大多數(shù)從伯克利派生出來(lái)的系統(tǒng)中,每發(fā)送一個(gè)IP數(shù)據(jù)報(bào),IP層都要把一個(gè)內(nèi)核變量的值加1,不管交給IP的數(shù)據(jù)來(lái)自哪一層。內(nèi)核變量的初始值根據(jù)系統(tǒng)引導(dǎo)時(shí)的時(shí)間來(lái)設(shè)置。

◆標(biāo)記(Flags)

這是當(dāng)封包在傳輸過(guò)程中進(jìn)行***組合時(shí)使用的3個(gè)bit的識(shí)別記號(hào)。占3位。

◆000(Reserved Fragment):保留分段。當(dāng)此值為0的時(shí)候表示目前未被使用。

◆.0.(Don't Fragment):不分段。當(dāng)此值為0的時(shí)候表示封包可以被分段,如果為1則不能被分割。 

◆..0( More Fragment):更多分段。當(dāng)上一個(gè)值為0時(shí),此值為0就示該封包是最後一個(gè)封包,如果為1則表示其後還有被分割的封包。

◆分段偏移(Fragment Offset,FO)

IP協(xié)議頭格式規(guī)定當(dāng)封包被分段之后,由于網(wǎng)路情況或其它因素影響其抵達(dá)順序不會(huì)和當(dāng)初切割順序一至,所以當(dāng)封包進(jìn)行分段的時(shí)候會(huì)為各片段做好定位記錄,以便在重組的時(shí)候就能夠?qū)μ?hào)入座。值為多少個(gè)字節(jié),如果封包并沒(méi)有被分段,則FO值為“0"。 占13位。  #p#

◆生存時(shí)間(Time To Live,TTL)

生存時(shí)間字段設(shè)置了數(shù)據(jù)報(bào)可以經(jīng)過(guò)的最多路由器數(shù),表示數(shù)據(jù)包在網(wǎng)絡(luò)上生存多久。TTL的初始值由源主機(jī)設(shè)置(通常為32或64),一旦經(jīng)過(guò)一個(gè)處理它的路由器,它的值就減去1。當(dāng)該字段的值為0時(shí),數(shù)據(jù)報(bào)就被丟棄,并發(fā)送ICMP消息通知源主機(jī)。這樣當(dāng)封包在傳遞過(guò)程中由於某些原因而未能抵達(dá)目的地的時(shí)候就可以避免其一直充斥在網(wǎng)路上面。占8位。

◆協(xié)議(Protocol,PROT)

指該封包所使用的網(wǎng)絡(luò)協(xié)議類型,如ICMP、DNS等。占8位。各協(xié)議對(duì)應(yīng)的值如表1所示。

表1 協(xié)議號(hào)

協(xié)議號(hào)

協(xié)議

協(xié)議號(hào)

協(xié)議

00

IP

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

◆頭校驗(yàn)和(Header checksum)

指IPv4數(shù)據(jù)報(bào)包頭的校驗(yàn)和。這個(gè)數(shù)值用來(lái)檢錯(cuò)用的,用以確保封包被正確無(wú)誤的接收到。當(dāng)封包開始進(jìn)行傳送后,接收端主機(jī)會(huì)利用這個(gè)檢驗(yàn)值會(huì)來(lái)檢驗(yàn)余下的封包,如果一切無(wú)誤就會(huì)發(fā)出確認(rèn)信息表示接收正常。與UDP和TCP協(xié)議包頭中的校驗(yàn)和作用是一樣的。占16位。

首部檢驗(yàn)和字段是根據(jù)IP首部計(jì)算的檢驗(yàn)和碼,不對(duì)首部后面的數(shù)據(jù)進(jìn)行計(jì)算。ICMP、IGMP、UDP和TCP協(xié)議在它們各自的首部中均含有同時(shí)覆蓋首部和數(shù)據(jù)檢驗(yàn)和碼。

IP協(xié)議頭格式規(guī)定了:計(jì)算一份數(shù)據(jù)報(bào)的IP檢驗(yàn)和,首先把檢驗(yàn)和字段置為0。然后,對(duì)首部中每個(gè)16位進(jìn)行二進(jìn)制反碼求和(整個(gè)首部看成是由一串16位的字組成),結(jié)果存在檢驗(yàn)和字段中。當(dāng)接收端收到一份IP數(shù)據(jù)報(bào)后,同樣對(duì)首部中每個(gè)16 位進(jìn)行二進(jìn)制反碼的求和。由于接收方在計(jì)算過(guò)程中包含了發(fā)送方存在首部中的檢驗(yàn)和,因此,如果首部在傳輸過(guò)程中沒(méi)有發(fā)生任何差錯(cuò),那么接收方計(jì)算的結(jié)果應(yīng)該為全1。如果結(jié)果不是全1(即檢驗(yàn)和錯(cuò)誤),那么IP就丟棄收到的數(shù)據(jù)報(bào)。但是不生成差錯(cuò)消息,由上層去發(fā)現(xiàn)丟失的數(shù)據(jù)報(bào)并進(jìn)行重傳。

ICMP、IGMP、UDP和TCP都采用相同的檢驗(yàn)和算法,盡管TCP和UDP除了本身的首部和數(shù)據(jù)外,在IP首部中還包含不同的字段。由于路由器經(jīng)常只修改TTL字段(減1),因此當(dāng)路由器轉(zhuǎn)發(fā)一份消息時(shí)可以增加它的檢驗(yàn)和,而不需要對(duì)IP整個(gè)首部進(jìn)行重新計(jì)算。

◆源地址(Source Address,SA)

發(fā)送IP數(shù)據(jù)包的IP地址。占32位。

◆目的地址(Destination Address)

接收IP數(shù)據(jù)包的IP地址。也占32位。

◆選項(xiàng)(Options)+填充(Padding)

這兩個(gè)選項(xiàng)較少使用,只有某些特殊的封包需要特定的控制才會(huì)利用到。共32位。這些選項(xiàng)通常包括:

◆安全和處理限制:用于軍事領(lǐng)域

◆記錄路徑:讓每個(gè)路由器都記下它的IP地址

◆時(shí)間戳:讓每個(gè)路由器都記下它的IP地址和時(shí)間

◆寬松的源站選路:為數(shù)據(jù)報(bào)指定一系列必須經(jīng)過(guò)的IP地址

◆嚴(yán)格的源站選路:與寬松的源站選路類似,但是要求只能經(jīng)過(guò)指定的這些地址,不能經(jīng)過(guò)其他的地址。

以上這些選項(xiàng)很少被使用,而且并非所有的主機(jī)和路由器都支持這些選項(xiàng)。選項(xiàng)字段一直都是以32位作為界限,在必要的時(shí)候插入值為0的填充字節(jié)。這樣就保證IP首部始終是32位的整數(shù)倍(這是首部長(zhǎng)度字段所要求的)。

從以上IP協(xié)議頭格式可以看出,IP協(xié)議包頭大小也有兩種:當(dāng)沒(méi)有“選項(xiàng)"這個(gè)字段時(shí),為160位,20個(gè)字節(jié);當(dāng)有“選項(xiàng)"字段時(shí)為192位,24個(gè)字節(jié)。它與TCP協(xié)議包頭大小是一樣的。

責(zé)任編輯:佟健 來(lái)源: IT168
相關(guān)推薦

2009-06-18 14:00:51

2009-09-25 14:23:39

2009-09-28 10:39:01

Hibernate基礎(chǔ)

2009-12-24 15:26:14

2009-11-11 14:18:00

動(dòng)態(tài)路由協(xié)議

2009-12-03 17:41:40

PHP應(yīng)用發(fā)展

2021-10-25 19:52:52

IntentFilte

2009-09-08 15:56:50

Linq使用Group

2009-09-14 13:50:35

LINQ編程模型

2009-11-20 13:11:44

Oracle XML數(shù)

2010-01-06 13:50:37

.NET Framew

2010-04-26 18:17:19

Oracle存儲(chǔ)過(guò)程

2009-09-09 09:48:43

Linq延遲加載

2009-10-10 13:52:57

VB Update方法

2009-09-14 16:21:34

LINQ To XML

2010-03-08 17:18:46

Linux du命令

2010-04-12 10:53:07

Oracle SQL

2010-04-26 14:32:21

Oracle SQL

2009-09-09 13:53:21

Linq表值函數(shù)

2009-09-07 14:18:01

C#內(nèi)存管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)