亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

  發(fā)布時間:2016-07-04 11:10:04   作者:佚名   我要評論
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)用程序呢?整個過程如下圖所示(該圖出自[TCPIP])。

36.5. Multiplexing過程

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

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

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

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

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

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

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

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

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

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

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

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

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

下面舉一個具體的例子。

請求幀如下(為了清晰在每行的前面加了字節(jié)計數(shù),每行16個字節(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地址)長度為6,協(xié)議地址(IP地址)長度為4,op為0×0001表示請求目的主機(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ù)長度為46字節(jié),ARP幀長度只有28字節(jié),因此有18字節(jié)填充位,填充位的內(nèi)容沒有定義,與具體實現(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地址)長度為6,協(xié)議地址(IP地址)長度為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請求的廣播幀無法穿過路由器,源主機(jī)如何與目的主機(jī)通信?

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

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

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

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

相關(guān)文章

最新評論