分組交換:
我們知道網絡是通過分組交換進行通信,是将使用者傳送的資訊資料劃分成一定的長度,每個部分叫做一個分組。每個分組的前面有一個分組頭,用以指明該分組發往何位址,然後由交換機根據每個分組的位址标志,将他們轉發至目的地,這一過程稱為分組交換。
OSI模型:
OSI(Open System Interconnection,開放系統互聯)模型是由國際标準化組織(ISO)定義的标準,它定義了一種分層體系結構,在其中的每一層定義了針對不同通信級别的協定。OSI模型有7層,1到7層分别是:實體層、資料鍊路層、網絡層、傳輸層、會話層、表示層、應用層。OSI模型在邏輯上可分為兩個部分:低層的1至3層關注的是原始資料的傳輸;高層的4至7層關注的是網絡下的應用程式。
封包:
計算機隻能識别二進制的資料,資料也是用二進制的方式存儲在計算機中。要想實作多台計算機之間的通信,就要依賴一定的通信協定,如TCP/IP/HTTP等網絡協定。為了區分每個協定,資料在傳輸過程中,會被用到的協定加上指定的格式。資料包在網絡中用指定的協定傳輸過程稱為網絡封包。也可以了解為對資料的打包發送。例如:快遞人員要把你購買的東西送到你家,就要先包裝好,然後加上你的個人資訊,最後送到你手中,整個過程稱為封包。
資料包:
包(Packet)是TCP/IP協定通信傳輸中的資料機關,一般也稱“資料包”。 TCP/IP協定是工作在OSI模型第三層(網絡層)、第四層(傳輸層)上的,幀工作在第二層(資料鍊路層)。上一層的内容由下一層的内容來傳輸,是以在區域網路中,“包”是包含在“幀”裡的。 包(Packet):在包交換網絡裡,單個消息被劃分為多個資料塊,這些資料塊稱為包,它包含發送者和接收者的位址資訊。這些包然後沿着不同的路徑在一個或多個網絡中傳輸,并且在目的地重新組合。 概述: 任意一台主機都能夠發送具有任意源位址的資料包。當資料包進行長距離的傳輸時需要經過許多中繼站。每個中繼站就是一台主機或路由器,他們基于路由資訊,将資料包向下一個中繼站傳遞。在資料傳輸的路途上,如果路由器遇到大資料流量的情況下,它可能在沒有任何提示的情況下丢掉一些資料包。較高層的協定(如TCP協定)用于處理這些問題,以便為應用程式提供一條可靠的鍊路。如果對于下一個中繼站來說資料包太大,該資料包就會被分片。也就是說,打的資料包會被分成兩個或多個小資料包,每個小資料包都有自己的IP頭,但其淨荷僅僅是大資料包淨荷的一部分。每個小資料包可以經由不同的路徑到達目的地。在傳輸的路途上,每個小資料包還可能會被繼續分片。當這些小資料包到達目标機器時,他們會被重新拼裝到一起。按照規則規定,在中間節點上,不允許對小資料包進行拼裝組合。 我們可以用一個形象一些的例子對資料包的概念加以說明:我們在郵局郵寄産品時,雖然産品本身帶有自己的包裝盒,但是在郵寄的時候隻用産品原包裝盒來包裝顯然是不行的。必須把内裝産品的包裝盒放到一個郵局指定的專用紙箱裡,這樣才能夠郵寄。這裡,産品包裝盒相當于資料包,裡面放着的産品相當于可用的資料,而專用紙箱就相當于幀,且一個幀中隻有一個資料包。 “包”聽起來非常抽象,那麼是不是不可見的呢?通過一定技術手段,是可以感覺到資料包的存在的。比如在Windows 2000 Server中,把滑鼠移動到工作列右下角的網卡圖示上(網卡需要接好雙絞線、連入網絡),就可以看到“發送:××包,收到:××包”的提示。通過資料包捕獲軟體,也可以将資料包捕獲并加以分析。 就是用資料包捕獲軟體Iris捕獲到的資料包的界面圖,在此,大家可以很清楚地看到捕獲到的資料包的MAC位址、IP位址、協定類型端口号等細節。通過分析這些資料,網管員就可以知道網絡中到底有什麼樣的資料包在活動了。 執行個體: 資料包的結構:資料包的結構非常複雜,不是三言兩語能夠說清的,在這裡主要了解一下它的關鍵構成就可以了,這對于了解 TCP/IP協定 的通信原理是非常重要的。資料包主要由“目的IP位址”、“源IP位址”、“淨載資料”等部分構成,包括標頭和包體,標頭是固定長度,包體的長度不定,各字段長度固定,雙方的請求資料包和應答資料包的標頭結構是一緻的,不同的是包體的定義。 資料包的結構與我們平常寫信非常類似,目的IP位址是說明這個資料包是要發給誰的,相當于收信人位址;源IP位址是說明這個資料包是發自哪裡的,相當于發信人位址;而淨載資料相當于信件的内容。 正是因為資料包具有這樣的結構,安裝了TCP/IP協定的計算機之間才能互相通信。我們在使用基于TCP/IP協定的網絡時,網絡中其實傳遞的就是資料包。了解資料包,對于 網絡管理 的 網絡安全 具有至關重要的意義。
運用: 簡單的說,你上網打開網頁,這個簡單的動作,就是你先發送資料包給網站,它接收到了之後,根據你發送的資料包的IP位址,傳回給你網頁的資料包,也就是說,網頁的浏覽,實際上就是資料包的交換。 1、資料鍊路層對資料幀的長度都有一個限制,也就是鍊路層所能承受的最大資料長度,這個值 稱為最大傳輸單元,即MTU。以以太網為例,這個值通常是1500位元組。 2、對于IP資料包來講,也有一個長度,在IP標頭中,以16位來描述IP包的長度。一個IP包,最長可能是65535位元組。 3、結合以上兩個概念,第一個重要的結論就出來了,如果IP包的大小,超過了MTU值,那麼就需要 分片,也就是把一個IP包分為多個,這個概念非常容易了解,一個載重5T的卡車,要拉10T的貨,它 當然就得分幾次來拉了。 4. IP分片是很多資料常講的内容,但是我倒是覺得分不分片其實不重要,重要的是另一個東西。一個資料包穿過一個大的網絡,它其間會穿過多個網絡,每個網絡的MTU值是不同的。我們可以設想,如果接受/發送端都是以太網,它們的MTU都是1500,我們假設發送的時候,資料包會以1500來封裝,然而,不幸的是,傳輸中有一段X.25網,它的MTU是576,這會發生什麼呢?我想,這個才是我們所關心的。 當然,結論是顯而易見的,這個資料包會被再次分片,咱開始用火車拉,到了半路,不通火車,隻通汽車,那一車貨會被分為很多車……僅此而已,更重要的是,這種情況下,如果IP包被設定了“不允許分片标志”,那會發生些什麼呢?對,資料包将被丢棄,然後收到一份ICMP不可達差錯,告訴你,需要分片!這個網絡中最小的MTU值,被稱為路徑MTU,我們應該有一種有效的手段,來發現這個值,最笨的方法或許是先用traceroute檢視所有節點,然後一個個ping…… 5、到了傳輸層,也會有一個最大值的限制,當然,對于隻管發,其它都不管的UDP來說,不在我們讨論之列。這裡說的是TCP協定。說到大小,或許會讓人想到TCP著名的滑動視窗的視窗大小,它跟收發兩端的緩存有關,這裡讨論的是傳輸的最大資料包大小,是以,它也不在讨論之列。 TCP的選項字段中,有一個最大封包段長度(MSS),表示了TCP傳往另一端的最大資料的長度,當一個連接配接建立時,連接配接的雙方都要通告各自的MSS,也就是說,它是與TCP的SYN标志在一起的。當然,對于傳輸來講,總是希望MSS越大越好,超載這麼嚴重,誰家不希望多拉點貨……但是,MSS總是有個限制的,也就是它的值=MTU-IP頭長度-TCP頭長度,對于以太網來講它通常是1500-20-20=1460,雖然總是希望它能很大(如1460),但是大多數BSD實作,它都是512的倍數,如1024…… 6、回到分片上來,例如,在Win2000下執行如下指令: "ping 192.168.0.1 -l 1473 按剛才的說法,1473+20(ip頭)+8(icmp頭)=1501,剛好大于1500,它會被分片,但是,我們關心的是: 這個資料包會被怎麼樣分法? 可以猜想,第一個包是 以太頭+IP頭+ICMP頭+1472的資料; 那第二個分片包呢? 它可以是: 以太頭+IP頭+ICMP頭+1個位元組的資料 或者是: 以太頭+IP頭+1個位元組的資料"(引号内的内容可否在這裡不詳細闡述,對于1473的資料如何被分為1472和1不是很清楚2010.01.15 13:50)也就是省去ICMP頭的封裝,當然,IP頭是不可以省的,否則怎麼傳輸了…… 事實上,TCP/IP協定采用的是後一種封裝方式,這樣,一次可以節約8個位元組的空間。IP標頭中,用了三個标志來描述一個分片包: 1、分片标志:如果一個包被分片了,分片标志這個字段被置于1,最後一個分片除外;——這樣,對于接收端來講,可以根據這個标志位做為重組的重要依據之一; 2、分片偏移标志:光有一個标志位說明“自己是不是分片包”是不夠的,偏移标志位說明了自己這個分片位于原始資料報的什麼位置。很明顯,這兩個标志一結合,就很容易重組分片包了。 3、不允許分片标志:如果資料包強行設定了這個标志,那麼在應該分片的時候
(本文摘自百度百科:包交換技術、資料包、網絡封包 )