我們知道網路是通過分組交換進行通訊,是將使用者傳送的資訊資料劃分成一定的長度,每個部分叫做乙個分組。每個分組的前面有乙個分組頭,用以指明該分組發往何位址,然後由
交換機根據每個分組的位址標誌,將他們**至目的地,這一過程稱為
分組交換
。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、不允許分片標誌:如果資料報強行設定了這個標誌,那麼在應該分片的時候
)
資料報網路
主機到主機通訊就是所謂的網路服務模型。有兩類 1 面向連線服務 傳送方向接收方傳送控制分組進行握手,握手提醒傳送方傳送資料分組前,彼此通過傳送控制分組進行握手,握手過程結束,兩個端系統之間會建立連線,可以不再收發資料分組,資料傳輸完成後要拆除這種連線,也就是所謂的揮手。2 面向無連線服務 直接傳送分...
抓取網路資料報
當使用者在區域網內傳遞資料時,處於同一網段的所有計算機的網絡卡都會收到這些資料,儘管它不是傳遞資料的目的地。利用這一特點,我們就可以截獲區域網中傳遞的資料。為了能夠獲取通過網絡卡上的資料,需要建立原始套接字。使用者可以將socket函式的第二個引數設定為sock raw來建立原始套接字。例如 m s...
網路基礎 資料報
目錄 本筆記通過記錄 資料報 在網路中的生命履歷來引出一些網路基礎知識,如 mac arp ip 子網掩碼 閘道器 集線器 交換機 路由器這些概念都是在鏈路層和網路層。這些都不做嚴謹的說明,只是為了更好的了解而表達的個人描述 瀏覽本小節的時候遇到疑問點可以可以跳到理解區 check 一下有沒有答案。...