⑴ 計算機網路中分片與分組一樣嗎
不一樣,很奇怪網路沒這種問題。分片是在分組的基礎上把分組分成若乾片段。
⑵ 什麼是數據分片
MTU(Maximum Transmission Unit)是指一個特定的網路所允許的物理幀的最大數據量,當路由器收到一個大於其要轉發的網路的MTU的數據報時,路由器必須將這個數據報分成可通過該網路的數據報片,每一片仍採用數據報的格式,且保留原數據報的標識符,但只包含原數據報的部分數據,在需要時,數據報片可以再次分片。
在一個TCP/IP互聯網上,一旦數據報分片後,每片都作為獨立的數據報傳送,一直等到到達目的網點的主機後,才對它們重組。目的網點的主機通過數據報首部的標識符來查證各片是否為同一個數據報的分片,且根據片偏移及標志來控制分片和重組。目的主機首次接到某一數據報的一個分片時,就啟動一個計時器,如果在收到所有分片之前計時器超時,則接收機廢棄已收到的分片,不對數據報處理。
http://blog.csdn.net/yliang/archive/2004/08/02/58982.aspx
⑶ 試比較幀與IP數據報的異同點。數據報分片、重組的作用是什麼它們分別在何處進行
數據幀,是物理網路傳輸過程中的一種模式,一種固定的模式,所有的數據包都會被封裝成這樣的數據幀投到網路上。由網路上的路由器,電腦等網路設備處理這些數據幀,選擇丟掉或者解包。
IP數據報是一個虛擬的,假想的東西,打個比方,它就是一輛車,有車牌(編號),有固定的路線(有收方的IP),還有裝人的地方(數據),當車想上路時候,就會被ISO的物理層,處理,封裝成數據幀,然後傳輸出去,當然了,物理層,什麼都不知道,它只會發和收,解包和封裝,但是它不知道對方的物理地址,所以,就這樣了。
當一台電腦的網卡收到一個數據幀,物理層會解包,然後由物理層的上一層解讀IP地址,如果不是,會丟棄掉這個幀,不會處理數據,如果是,那麼就會處理數據,接收後面的數據幀。
我以上講的只是一個大概,其中,解讀IP的過程,一般是對照電腦本身的物理地址,IP地址影射表的,這個是路由,電腦一般只看物理IP地址,這個跟你的問題無關。
還有,理論上,如果你的機器是在網路中,可以連接到任何機器,那麼你的機器的網卡就會處理很多數據幀,但是不會處理那些不是給你機器的IP數據報,因為有路由和IP地址的存在,我們的網路才不會出現大量的數據幀橫行的情況,這種情況,就是網路堵塞。
⑷ 在TCP/IP網路中為什麼要對數據包進行分片
首先應該知道 網路數據單元從上層到下層都是逐層封裝的
你想
三層上的數據單元 稱為包
這個包到2層上自然會被封裝成幀啊
數據包是怎麼封裝成幀的?
是不是在IP包的兩頭加東西上去啊,你就想像
就是給IP包加一層外殼
。。。
但是呢 由於數據鏈路層不是規定了一個最大傳輸單元MTU的限制嗎
一個幀IEEE802規定了大小為0~1500位元組
假如你的IP包很大 大於了這個范圍
那麼這個IP包 還能封裝成一個幀嗎 ?
很顯然封裝不了 於是就要將這個大的IP包給分片 然後再網下封裝
⑸ 為什麼有時需要對IP數據報進行分片如何分片
任何時候IP層接收到一份要發送的IP數據報時,它要判斷向本地哪個介面發送數據(選路),並查詢該介面獲得其MTU。IP把MTU與數據報長度進行比較,如果需要則進行分片。分片可以發生在原始發送端主機上,也可以發生在中間路由器上。
把一份IP數據報分片以後,只有到達目的地才進行重新組裝(這里的重新組裝與其他網路協議不同,它們要求在下一站就進行進行重新組裝,而不是在最終的目的地)。重新組裝由目的端的IP層來完成,其目的是使分片和重新組裝過程對運輸層( T C P和UDP)是透明的,除了某些可能的越級操作外。已經分片過的數據報有可能會再次進行分片(可能不止一次)。IP首部中包含的數據為分片和重新組裝提供了足夠的信息。
回憶IP首部(圖3 - 1),下面這些欄位用於分片過程。對於發送端發送的每份IP數據報來說,其標識欄位都包含一個唯一值。該值在數據報分片時被復制到每個片中(我們現在已經看到這個欄位的用途)。標志欄位用其中一個比特來表示「更多的片」。除了最後一片外,其他每個組成數據報的片都要把該比特置1。片偏移欄位指的是該片偏移原始數據報開始處的位置。另外,當數據報被分片後,每個片的總長度值要改為該片的長度值。
最後,標志欄位中有一個比特稱作「不分片」位。如果將這一比特置1,IP將不對數據報進行分片。相反把數據報丟棄並發送一個I C M P差錯報文(「需要進行分片但設置了不分片比特」,見圖6 - 3)給起始端。在下一節我們將看到出現這個差錯的例子。
當IP數據報被分片後,每一片都成為一個分組,具有自己的IP首部,並在選擇路由時與其他分組獨立。這樣,當數據報的這些片到達目的端時有可能會失序,但是在IP首部中有足夠的信息讓接收端能正確組裝這些數據報片。
盡管IP分片過程看起來是透明的,但有一點讓人不想使用它:即使只丟失一片數據也要重傳整個數據報。為什麼會發生這種情況呢?因為IP層本身沒有超時重傳的機制——由更高層來負責超時和重傳(T C P有超時和重傳機制,但UDP沒有。一些UDP應用程序本身也執行超時和重傳)。當來自T C P報文段的某一片丟失後,T C P在超時後會重發整個T C P報文段,該報文段對應於一份IP數據報。沒有辦法只重傳數據報中的一個數據報片。事實上,如果對數據報分片的是中間路由器,而不是起始端系統,那麼起始端系統就無法知道數據報是如何被分片的。就這個原因,經常要避免分片。文獻[Kent and Mogul 1987]對避免分片進行了論述。
使用UDP很容易導致IP分片(在後面我們將看到, T C P試圖避免分片,但對於應用程序來說幾乎不可能強迫T C P發送一個需要進行分片的長報文段)。我們可以用s o c k程序來增加數據報的長度,直到分片發生。在一個乙太網上,數據幀的最大長度是1 5 0 0位元組(見圖2 - 1),其中1 4 7 2位元組留給數據,假定IP首部為2 0位元組, UDP首部為8位元組。我們分別以數據長度為1471, 1472, 1473和1 4 7 4位元組運行s o c k程序。最後兩次應該發生分片:
bsdi % sock -u -i -nl -w1471 svr4 discard
bsdi % sock -u -i -nl -w1472 svr4 discard
bsdi % sock -u -i -nl -w1473 svr4 discard
bsdi % sock -u -i -nl -w1474 svr4 discard
相應的tcpmp輸出如圖11 - 7所示。
前兩份UDP數據報(第1行和第2行)能裝入乙太網數據幀,沒有被分片。但是對應於寫1473位元組的IP數據報長度為1 5 0 1,就必須進行分片(第3行和第4行)。同理,寫1 4 7 4位元組產生的數據報長度為1 5 0 2,它也需要進行分片(第5行和第6行)。
當IP數據報被分片後, tcpmp列印出其他的信息。首先,frag 26304(第3行和第4行)和frag 26313(第5行和第6行)指的是IP首部中標識欄位的值。
分片信息中的下一個數字,即第3行中位於冒號和@號之間的1480,是除IP首部外的片長。兩份數據報第一片的長度均為1480:UDP首部佔8位元組,用戶數據佔1 4 7 2位元組(加上IP首部的2 0位元組分組長度正好為1 5 0 0位元組)。第1份數據報的第2片(第4行)只包含1位元組數據—剩下的用戶數據。第2份數據報的第2片(第6行)包含剩下的2位元組用戶數據。
在分片時,除最後一片外,其他每一片中的數據部分(除IP首部外的其餘部分)必須是8位元組的整數倍。在本例中, 1480是8的整數倍。
位於@符號後的數字是從數據報開始處計算的片偏移值。兩份數據報第1片的偏移值均為0(第3行和第5行),第2片的偏移值為1480(第4行和第6行)。跟在偏移值後面的加號對應於IP首部中3 bit標志欄位中的「更多片」比特。設置這一比特的目的是讓接收端知道在什麼時候完成所有的分片組裝。
最後,注意第4行和第6行(不是第1片)省略了協議名( UDP)、源埠號和目的埠號。協議名是可以列印出來的,因為它在IP首部並被復制到各個片中。但是,埠號在UDP首部,只能在第1片中被發現。
發送的第3份數據報(用戶數據為1473位元組)分片情況如圖11 - 8所示。需要重申的是,任何運輸層首部只出現在第1片數據中。
另外需要解釋幾個術語: IP數據報是指IP層端到端的傳輸單元(在分片之前和重新組裝之後),分組是指在IP層和鏈路層之間傳送的數據單元。一個分組可以是一個完整的IP數據報,也可以是IP數據報的一個分片。
⑹ 以太坊的「分片」是指什麼
寫在文前:視頻版本和文字版本略有不同,想要看我深情並茂演繹,請看視頻版本 (喵懂區塊鏈22期|分片(Sharding):以太坊太慢,「盤」他!),思維邏輯怪,請看文案加長版。
最近以太坊由於君士坦丁堡升級(Constantinople)而出現了壓倒性的積極走勢,而以太坊的升級之路則猶如升級打怪一般,落入了rabbithole,誰也不知道這洞有多深。既然是「路漫漫其修遠兮」,則把腳下的每一步走好走准,則成了至關重要的點。攻破這一難點之後,以太坊的下一技術難點---Sharding分片,則又被擺到了檯面上。本期《喵懂區塊鏈》會帶大家走進讓以太坊快起來的法寶--- Sharding分片。
什麼是sharding分片?
分片技術其實並不是什麼新概念,起初是針對大型中心資料庫提出的優化方案,具體來說就是將大型資料庫中的數據劃按照某種規則分成很多數據分片(shard),再將這些數據分片分別存放在不同的伺服器中,以減小每個伺服器的數據訪問壓力,從而提高整個資料庫系統的性能。
我們舉一個通俗的小例子:
比如我們平時經常使用的美團,滴滴打車等軟體,就可以按照「城市」來進行分片,由於不同城市的數據不需要互通,就可以將不同城市的數據存放在不同資料庫中,這樣既可以把資料庫伺服器部署到離對應城市最近的節點上,還可以提高訪問速度,何樂而不為呢?!
從上面的例子中,我大家應該對分片的概念有了初步了解,那麼對應到區塊鏈場景中來說,分片又是怎麼樣的呢?
以以太坊分片為例,在原有的單鏈系統中,公鏈整體的性能取決於單個節點的性能,進行分片之後,每個節點只需要承當全網部分工作,各個分片並行工作,按照Vitalik的話來說,each shard is like a separate galaxy每個分片都像是獨立的小宇宙,這樣效率自然噌噌噌提升!原本以太坊鏈全網TPS約為20,現在若增加到100個分片,那麼全網TPS可以提升至2000,同理,全網容量也將提升至原來的100倍。
「每個節點只需要承擔全網部分工作」,這就會引出幾大問題,1.怎麼確定這個節點是負責哪個分片的工作?2.哪些交易應該歸類到哪些分片當中去?3.每個節點是否只需要儲存自己所在分片的交易信息(賬本)?
根據以上問題的實現與否,我們可以將分片依次分為三種類型:網路分片,交易分片,狀態分片。
網路分片:如何將全網節點劃分到不同分片當中去。
交易分片:如何將全網交易劃分到不同分片當中去。
狀態分片:如何讓各個節點只維護各自分片內的賬本,但又不影響整個系統的安全性。
主鏈和分片鏈的區別和聯系?
分片的類型我們已經明白了,那麼主鏈(Main chain)和分片鏈(shard chain)有什麼不同呢?
以太坊分片的實現是一個漫長的過程,就連Vitalik自己也說將會分階段來逐步實現,分片到底能不能從理論走向實踐,我們還是小小期待一下吧。
⑺ 為什麼IP包在傳輸過程中,路由器有時需要對它進行分片
乙太網的數據包大小范圍正常情況下是64—1518位元組之間。有些數據包位元組太大(處於正常通訊的網路中,數據包大小應該是在幾百位元組),所以需要分片。
⑻ 分片技術是什麼
分片技術是開發人員用來提高交易吞吐量的幾種常見方法之一。簡單地說,分片就是一種在點對點網路中分割計算能力和存儲工作負載的分區方式,分片後每個節點不再需要負責處理整個網路的交易負載,而僅需處理其所在分區(或稱分片)中的交易。與當前的區塊鏈相同,分片中包含的信息也是由多個節點共同維護的,從而保證了賬本的去中心化和安全性,啟用分片後每個人仍然可以看到賬本中的所有信息,只不過人們不再需要處理和存儲所有的信息。
⑼ 什麼是IP分片技術
在計算機網路中IP分片的情況發生在IP層,不僅源端主機會進行分片,中間的路由器也有可能分片,因為不同的網路的MTU是不一樣的,如果傳輸路徑上的某個網路的MTU比源端網路的MTU要小,路由器就可能對IP數據報再次進行分片。而分片數據的重組只會發生在目的端的IP層。
在網路中IP首部有4個位元組是用於分片的,如下圖所示。前16位是IP數據報的標識,同一個數據報的各個分片的標識是一樣的,目的端會根據這個標識來判斷IP分片是否屬於同一個IP數據報。中間3位是標志位,其中有1位用來表示是否有更多的分片,如果是最後一個分片,該標志位為0,否則為1。後面13位表示分片在原始數據的偏移,這里的原始數據是IP層收到的傳輸的TCP或UDP數據,不包含IP首部。
避免IP分片在網路編程中,我們要避免出現IP分片,那麼為什麼要避免呢?原因是IP層是沒有超時重傳機制的,如果IP層對一個數據包進行了分片,只要有一個分片丟失了,只能依賴於傳輸層進行重傳,結果是所有的分片都要重傳一遍,這個代價有點大。由此可見,IP分片會大大降低傳輸層傳送數據的成功率,所以我們要避免IP分片。對於UDP包,我們需要在應用層去限制每個包的大小,一般不要超過1472位元組,即乙太網MTU(1500)—UDP首部(8)—IP首部(20)。對於TCP數據,應用層就不需要考慮這個問題了,因為傳輸層已經幫我們做了。在建立連接的三次握手的過程中,連接雙方會相互通告MSS(Maximum Segment Size,最大報文段長度),MSS一般是MTU—IP首部(20)—TCP首部(20),每次發送的TCP數據都不會超過雙方MSS的最小值,所以就保證了IP數據報不會超過MTU,避免了IP分片。
⑽ 為什麼ip在傳輸過程中要分片
你指的是分段吧?
把一個大的數據分成小的段進行傳送,這樣可以保證網路鏈路不會長時間被某一用戶獨占,所有用戶的數據可以分成小段混合的在網路中傳輸。
另外,如果不分段的話,傳輸過程中出現錯誤,整個數據都需要重新傳送,而分段之後,某一段出錯,只要重新傳送那一段即可。
總體來說,數據分段增加了網路的傳輸效率。