最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TCP/IP協(xié)議棧與數(shù)據(jù)包封裝圖文教程

  發(fā)布時(shí)間:2016-07-04 11:10:04   作者:佚名   我要評(píng)論
TCP/IP網(wǎng)絡(luò)協(xié)議即網(wǎng)絡(luò)中(包括互聯(lián)網(wǎng))傳遞、管理信息的一些規(guī)范,TCP/IP協(xié)議是網(wǎng)絡(luò)的基礎(chǔ),是Internet的語言,可以說互聯(lián)網(wǎng)的發(fā)展全靠TCP/IP

目的主機(jī)收到數(shù)據(jù)包后,如何經(jīng)過各層協(xié)議棧最后到達(dá)應(yīng)用程序呢?整個(gè)過程如下圖所示(該圖出自[TCPIP])。

36.5. Multiplexing過程

以太網(wǎng)驅(qū)動(dòng)程序首先根據(jù)以太網(wǎng)首部中的"上層協(xié)議"字段確定該數(shù)據(jù)幀的有效載荷(payload,指除去協(xié)議首部之外實(shí)際傳輸?shù)臄?shù)據(jù))是IP、ARP還是RARP協(xié)議的數(shù)據(jù)報(bào),然后交給相應(yīng)的協(xié)議處理。假如是IP數(shù)據(jù)報(bào),IP協(xié)議再根據(jù)IP首部中的"上層協(xié)議"字段確定該數(shù)據(jù)報(bào)的有效載荷是TCP、UDP、ICMP還是IGMP,然后交給相應(yīng)的協(xié)議處理。假如是TCP段或UDP段,TCP或UDP協(xié)議再根據(jù)TCP首部或UDP首部的"端口號(hào)"字段確定應(yīng)該將應(yīng)用層數(shù)據(jù)交給哪個(gè)用戶進(jìn)程。IP地址是標(biāo)識(shí)網(wǎng)絡(luò)中不同主機(jī)的地址,而端口號(hào)就是同一臺(tái)主機(jī)上標(biāo)識(shí)不同進(jìn)程的地址,IP地址和端口號(hào)合起來標(biāo)識(shí)網(wǎng)絡(luò)中唯一的進(jìn)程。

注意,雖然IP、ARP和RARP數(shù)據(jù)報(bào)都需要以太網(wǎng)驅(qū)動(dòng)程序來封裝成幀,但是從功能上劃分,ARP和RARP屬于鏈路層,IP屬于網(wǎng)絡(luò)層。雖然ICMP、IGMP、TCP、UDP的數(shù)據(jù)都需要IP協(xié)議來封裝成數(shù)據(jù)報(bào),但是從功能上劃分,ICMP、IGMP與IP同屬于網(wǎng)絡(luò)層,TCP和UDP屬于傳輸層。本文對(duì)RARP、ICMP、IGMP協(xié)議不做進(jìn)一步介紹,有興趣的讀者可以看參考資料。

2. 以太網(wǎng)(RFC 894)幀格式

以太網(wǎng)的幀格式如下所示(該圖出自[TCPIP]):

36.6. 以太網(wǎng)幀格式

其中的源地址和目的地址是指網(wǎng)卡的硬件地址(也叫MAC地址),長(zhǎng)度是48位,是在網(wǎng)卡出廠時(shí)固化的。用ifconfig命令看一下,"HWaddr 00:15:F2:14:9E:3F"部分就是硬件地址。協(xié)議字段有三種值,分別對(duì)應(yīng)IP、ARP、RARP。幀末尾是CRC校驗(yàn)碼。

以太網(wǎng)幀中的數(shù)據(jù)長(zhǎng)度規(guī)定最小46字節(jié),最大1500字節(jié),ARP和RARP數(shù)據(jù)包的長(zhǎng)度不夠46字節(jié),要在后面補(bǔ)填充位。最大值1500稱為以太網(wǎng)的最大傳輸單元(MTU),不同的網(wǎng)絡(luò)類型有不同的MTU,如果一個(gè)數(shù)據(jù)包從以太網(wǎng)路由到撥號(hào)鏈路上,數(shù)據(jù)包長(zhǎng)度大于撥號(hào)鏈路的MTU了,則需要對(duì)數(shù)據(jù)包進(jìn)行分片(fragmentation)。ifconfig命令的輸出中也有"MTU:1500"。注意,MTU這個(gè)概念指數(shù)據(jù)幀中有效載荷的最大長(zhǎng)度,不包括幀首部的長(zhǎng)度。

3. ARP數(shù)據(jù)報(bào)格式

在網(wǎng)絡(luò)通訊時(shí),源主機(jī)的應(yīng)用程序知道目的主機(jī)的IP地址和端口號(hào),卻不知道目的主機(jī)的硬件地址,而數(shù)據(jù)包首先是被網(wǎng)卡接收到再去處理上層協(xié)議的,如果接收到的數(shù)據(jù)包的硬件地址與本機(jī)不符,則直接丟棄。因此在通訊前必須獲得目的主機(jī)的硬件地址。ARP協(xié)議就起到這個(gè)作用。源主機(jī)發(fā)出ARP請(qǐng)求,詢問"IP地址是192.168.0.1的主機(jī)的硬件地址是多少",并將這個(gè)請(qǐng)求廣播到本地網(wǎng)段(以太網(wǎng)幀首部的硬件地址填FF:FF:FF:FF:FF:FF表示廣播),目的主機(jī)接收到廣播的ARP請(qǐng)求,發(fā)現(xiàn)其中的IP地址與本機(jī)相符,則發(fā)送一個(gè)ARP應(yīng)答數(shù)據(jù)包給源主機(jī),將自己的硬件地址填寫在應(yīng)答包中。

每臺(tái)主機(jī)都維護(hù)一個(gè)ARP緩存表,可以用arp -a命令查看。緩存表中的表項(xiàng)有過期時(shí)間(一般為20分鐘),如果20分鐘內(nèi)沒有再次使用某個(gè)表項(xiàng),則該表項(xiàng)失效,下次還要發(fā)ARP請(qǐng)求來獲得目的主機(jī)的硬件地址。想一想,為什么表項(xiàng)要有過期時(shí)間而不是一直有效?

ARP數(shù)據(jù)報(bào)的格式如下所示(該圖出自[TCPIP]):

36.7. ARP數(shù)據(jù)報(bào)格式

注意到源MAC地址、目的MAC地址在以太網(wǎng)首部和ARP請(qǐng)求中各出現(xiàn)一次,對(duì)于鏈路層為以太網(wǎng)的情況是多余的,但如果鏈路層是其它類型的網(wǎng)絡(luò)則有可能是必要的。硬件類型指鏈路層網(wǎng)絡(luò)類型,1為以太網(wǎng),協(xié)議類型指要轉(zhuǎn)換的地址類型,0×0800為IP地址,后面兩個(gè)地址長(zhǎng)度對(duì)于以太網(wǎng)地址和IP地址分別為6和4(字節(jié)),op字段為1表示ARP請(qǐng)求,op字段為2表示ARP應(yīng)答。

下面舉一個(gè)具體的例子。

請(qǐng)求幀如下(為了清晰在每行的前面加了字節(jié)計(jì)數(shù),每行16個(gè)字節(jié)):

以太網(wǎng)首部(14字節(jié))

0000: ff ff ff ff ff ff 00 05 5d 61 58 a8 08 06

ARP幀(28字節(jié))

0000: 00 01

0010: 08 00 06 04 00 01 00 05 5d 61 58 a8 c0 a8 00 37

0020: 00 00 00 00 00 00 c0 a8 00 02

填充位(18字節(jié))

0020: 00 77 31 d2 50 10

0030: fd 78 41 d3 00 00 00 00 00 00 00 00

以太網(wǎng)首部:目的主機(jī)采用廣播地址,源主機(jī)的MAC地址是00:05:5d:61:58:a8,上層協(xié)議類型0×0806表示ARP。

ARP幀:硬件類型0×0001表示以太網(wǎng),協(xié)議類型0×0800表示IP協(xié)議,硬件地址(MAC地址)長(zhǎng)度為6,協(xié)議地址(IP地址)長(zhǎng)度為4,op為0×0001表示請(qǐng)求目的主機(jī)的MAC地址,源主機(jī)MAC地址為00:05:5d:61:58:a8,源主機(jī)IP地址為c0 a8 00 37(192.168.0.55),目的主機(jī)MAC地址全0待填寫,目的主機(jī)IP地址為c0 a8

00 02(192.168.0.2)。

由于以太網(wǎng)規(guī)定最小數(shù)據(jù)長(zhǎng)度為46字節(jié),ARP幀長(zhǎng)度只有28字節(jié),因此有18字節(jié)填充位,填充位的內(nèi)容沒有定義,與具體實(shí)現(xiàn)相關(guān)。

應(yīng)答幀如下:

以太網(wǎng)首部

0000: 00 05 5d 61 58 a8 00 05 5d a1 b8 40 08 06

ARP幀

0000: 00 01

0010: 08 00 06 04 00 02 00 05 5d a1 b8 40 c0 a8 00 02

0020: 00 05 5d 61 58 a8 c0 a8 00 37

填充位

0020: 00 77 31 d2 50 10

0030: fd 78 41 d3 00 00 00 00 00 00 00 00

以太網(wǎng)首部:目的主機(jī)的MAC地址是00:05:5d:61:58:a8,源主機(jī)的MAC地址是00:05:5d:a1:b8:40,上層協(xié)議類型0×0806表示ARP。

ARP幀:硬件類型0×0001表示以太網(wǎng),協(xié)議類型0×0800表示IP協(xié)議,硬件地址(MAC地址)長(zhǎng)度為6,協(xié)議地址(IP地址)長(zhǎng)度為4,op為0×0002表示應(yīng)答,源主機(jī)MAC地址為00:05:5d:a1:b8:40,源主機(jī)IP地址為c0 a8 00 02(192.168.0.2),目的主機(jī)MAC地址為00:05:5d:61:58:a8,目的主機(jī)IP地址為c0 a8 00 37

(192.168.0.55)。

思考題:如果源主機(jī)和目的主機(jī)不在同一網(wǎng)段,ARP請(qǐng)求的廣播幀無法穿過路由器,源主機(jī)如何與目的主機(jī)通信?

4. IP數(shù)據(jù)報(bào)格式

IP數(shù)據(jù)報(bào)的格式如下(這里只討論IPv4)(該圖出自[TCPIP]):

36.8. IP數(shù)據(jù)報(bào)格式

IP數(shù)據(jù)報(bào)的首部長(zhǎng)度和數(shù)據(jù)長(zhǎng)度都是可變長(zhǎng)的,但總是4字節(jié)的整數(shù)倍。對(duì)于IPv4,4位版本字段是4。4位首部長(zhǎng)度的數(shù)值是以4字節(jié)為單位的,最小值為5,也就是說首部長(zhǎng)度最小是4×5=20字節(jié),也就是不帶任何選項(xiàng)的IP首部,4位能表示的最大值是15,也就是說首部長(zhǎng)度最大是60字節(jié)。8位TOS字段有3個(gè)位用來指定IP數(shù)據(jù)報(bào)的優(yōu)先級(jí)(目前已經(jīng)廢棄不用),還有4個(gè)位表示可選的服務(wù)類型(最小延遲、最大呑吐量、最大可靠性、最小成本),還有一個(gè)位總是0。總長(zhǎng)度是整個(gè)數(shù)據(jù)報(bào)(包括IP首部和IP層payload)的字節(jié)數(shù)。每傳一個(gè)IP數(shù)據(jù)報(bào),16位的標(biāo)識(shí)加1,可用于分片和重新組裝數(shù)據(jù)報(bào)。3位標(biāo)志和13位片偏移用于分片。TTL(Time to live)是這樣用的:源主機(jī)為數(shù)據(jù)包設(shè)定一個(gè)生存時(shí)間,比如64,每過一個(gè)路由器就把該值減1,如果減到0就表示路由已經(jīng)太長(zhǎng)了仍然找不到目的主機(jī)的網(wǎng)絡(luò),就丟棄該包,因此這個(gè)生存時(shí)間的單位不是秒,而是跳(hop)。協(xié)議字段指示上層協(xié)議是TCP、UDP、ICMP還是IGMP。然后是校驗(yàn)和,只校驗(yàn)IP首部,數(shù)據(jù)的校驗(yàn)由更高層協(xié)議負(fù)責(zé)。IPv4的IP地址長(zhǎng)度為32位。選項(xiàng)字段的解釋從略。

相關(guān)文章

最新評(píng)論

东兴市| 扎鲁特旗| 那坡县| 嘉义县| 乌拉特中旗| 鄂伦春自治旗| 岐山县| 濮阳县| 涡阳县| 赣榆县| 邯郸市| 宜州市| 阜城县| 三亚市| 神池县| 慈利县| 临沧市| 尚志市| 贡觉县| 杭锦旗| 盐源县| 石嘴山市| 应城市| 遵义市| 文山县| 个旧市| 肥西县| 杭州市| 阜南县| 德昌县| 鄱阳县| 东明县| 青神县| 定陶县| 宝丰县| 阿克| 牙克石市| 陈巴尔虎旗| 仁怀市| 湖南省| 安图县|