小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

TCP/IP數(shù)據(jù)包結(jié)構(gòu)詳解

 心不留意外塵 2016-04-15

 from http://blog.csdn.net/prsniper/article/details/6762145

2011.09

一般來說,網(wǎng)絡(luò)編程我們只需要調(diào)用一些封裝好的函數(shù)或者組件就能完成大部分的工作,但是一些特殊的情況下,就需要深入的理解

網(wǎng)絡(luò)數(shù)據(jù)包的結(jié)構(gòu),以及協(xié)議分析。如:網(wǎng)絡(luò)監(jiān)控,故障排查等……

 

IP包是不安全的,但是它是互聯(lián)網(wǎng)的基礎(chǔ),在各方面都有廣泛的應(yīng)用。由IP協(xié)議衍生的協(xié)議族有10數(shù)種(據(jù)我所知),以后還會出現(xiàn)

更多的基于IP的協(xié)議…

 

先從實際出發(fā)吧!

一般我們在談上網(wǎng)速度的時候,專業(yè)上用帶寬來描述,其實無論說網(wǎng)速或者帶寬都是不準(zhǔn)確的,呵呵。比如:1兆,512K……

有些在學(xué)校的學(xué)生,也許會有疑問,明明我的業(yè)務(wù)是1M,為什么下載速度到100K就飆不上去了?512K的為什么50多K就封頂了?…

 

這里所說的1M是指1Mbps = 1 Million Bits Per Second,也就是1M比特每秒,即一秒鐘傳輸1048576個二進制位。我們知道一個字節(jié)

是8個二進制位。

好,又來問題了。即便這樣子,1M=1048756÷8=131072÷1024=128K。那也應(yīng)該有128K啊,為什么下載速度還是很少到120K,

110K都謝天謝地了??赐瓯疚?,你的帳就對了……

 

IP數(shù)據(jù)包結(jié)構(gòu)

如圖,一個刻度表示1個二進制位(比特)。

1-1.版本4位,表示版本號,目前最廣泛的是4=B1000,即常說的IPv4;相信IPv6以后會廣泛應(yīng)用,它能給世界上每個紐扣都分配

       一個IP地址。

1-2.頭長4位,數(shù)據(jù)包頭部長度。它表示數(shù)據(jù)包頭部包括多少個32位長整型,也就是多少個4字節(jié)的數(shù)據(jù)。無選項則為5(紅色部分)。

1-3.服務(wù)類型,包括8個二進制位,每個位的意義如下:

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

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

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

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

       成本字段:1位,取值:0(正常)、1(期特最小成本)

       保留字段:1位 ,未使用

1-4.包裹總長16位,當(dāng)前數(shù)據(jù)包的總長度,單位是字節(jié)。當(dāng)然最大只能是65535,及64KB。

2-1.重組標(biāo)識16位,發(fā)送主機賦予的標(biāo)識,以便接收方進行分片重組。

2-2.標(biāo)志3位,他們各自的意義如下:

       保留段位(2):1位,未使用

       不分段位(1):1位,取值:0(允許數(shù)據(jù)報分段)、1(數(shù)據(jù)報不能分段)

       更多段位(0):1位,取值:0(數(shù)據(jù)包后面沒有包,該包為最后的包)、1(數(shù)據(jù)包后面有更多的包)

2-3.段偏移量13位,與更多段位組合,幫助接收方組合分段的報文,以字節(jié)為單位。

3-1.生存時間8位,經(jīng)常ping命令看到的TTL(Time To Live)就是這個,每經(jīng)過一個路由器,該值就減一,到零丟棄。

3-2.協(xié)議代碼8位,表明使用該包裹的上層協(xié)議,如TCP=6,ICMP=1,UDP=17等。

3-3.頭檢驗和16位,是IPv4數(shù)據(jù)包頭部的校驗和。

4-1.源始地址,32位4字節(jié),我們??吹降腎P是將每個字節(jié)用點(.)分開,如此而已。

5-1.目的地址,32位,同上。

6-1.可選選項,主要是給一些特殊的情況使用,往往安全路由會當(dāng)作攻擊而過濾掉,普聯(lián)(TP_LINK)的TL-ER5110路由就能這么做。

7-1.用戶數(shù)據(jù)。

TCP數(shù)據(jù)包結(jié)構(gòu)

1-1.源始端口16位,范圍當(dāng)然是0-65535啦。

1-2.目的端口,同上。

2-1.數(shù)據(jù)序號32位,TCP為發(fā)送的每個字節(jié)都編一個號碼,這里存儲當(dāng)前數(shù)據(jù)包數(shù)據(jù)第一個字節(jié)的序號。

3-1.確認(rèn)序號32位,為了安全,TCP告訴接受者希望他下次接到數(shù)據(jù)包的第一個字節(jié)的序號。

4-1.偏移4位,類似IP,表明數(shù)據(jù)包頭有多少個32位。

4-2.保留6位,未使用,應(yīng)置零。

4-3.緊急比特URG—當(dāng)URG=1時,表明緊急指針字段有效。它告訴系統(tǒng)此報文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級的數(shù)據(jù))。

4-3.確認(rèn)比特ACK—只有當(dāng)ACK=1時確認(rèn)號字段才有效。當(dāng)ACK=0時,確認(rèn)號無效。參考TCP三次握手

4-4.復(fù)位比特RST(Reset) —當(dāng)RST=1時,表明TCP連接中出現(xiàn)嚴(yán)重差錯(如由于主機崩潰或其他原因),必須釋放連接,然后再重新

       建立運輸連接。參考TCP三次握手

4-5.同步比特SYN—同步比特SYN置為1,就表示這是一個連接請求或連接接受報文。參考TCP三次握手

4-6.終止比特FIN(FINal)—用來釋放一個連接。當(dāng)FIN=1時,表明此報文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運輸連接。

4-7.窗口字段16位,窗口字段用來控制對方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口

       大小,然后通知對方以確定對方的發(fā)送窗口的上限。

5-1.包校驗和16位,包括首部數(shù)據(jù)這兩部分。在計算檢驗和時,要在TCP報文段的前面加上12字節(jié)的偽首部。

5-2.緊急指針16位,緊急指針指出在本報文段中的緊急數(shù)據(jù)的最后一個字節(jié)的序號。

6-1.可選選項24位,類似IP,是可選選項。

6-2.填充8位,使選項湊足32位。

7-1.用戶數(shù)據(jù)……

 

可以看出,每個IP包至少要20字節(jié)的頭部長度,這些與下載內(nèi)容無關(guān),加上目前多數(shù)傳輸,包括http協(xié)議(就是IE直接下載),都是基于

TCP協(xié)議的,所以IP包裹還要從用戶數(shù)據(jù)中扣除20字節(jié)的TCP包頭,這里已經(jīng)是40字節(jié),加上其他程序的連接,狀態(tài)確認(rèn)等等包裹,因

而算出來要比理論值要小。

另外網(wǎng)絡(luò)環(huán)境(包括穩(wěn)定因素和傳輸節(jié)點的轉(zhuǎn)發(fā)率)也是影響下載速度的重要原因……

 

呵呵,好了,就這么多吧!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多