分組
首先我們來了解下分組的概念。所謂分組,就是將一個資料包分成一個個更小的資料包。例如對於一個10GB的資料包,總不可以一次性傳送過去吧,而是把它分成若干個小的資料包傳送過去。每個分組資料塊的結構圖:
檔案頭一般是一些說明性資料,例如源地址和目標地址,資料型別等。資料部分就是真正要傳達給物件的內容
電路交換
所謂交換,指的就是伺服器與伺服器之間的資料交換。資料傳輸交換的方式有幾種,而電路交換便是其中的一種。
假如A和B之間要進行通訊,我們就假設A要和E打個電話吧。當A輸入E的電話號碼,開始撥號之後,那麼伺服器要做的第一件事就是根據E的電話號碼找到E在哪裡,由於A通往E的路徑有多條,會根據某種演算法找到E之後,建立一條通路,然後進行資料的傳輸。
我們假設選的路徑是A→D-→E
找到一條通往E的路徑並建立會話的過程中,我們稱之為電路交換的第一階段—-建立連線。之後A和E在通話的過程中會始終霸佔著這條路徑,資料傳輸的過程稱為電路交換的第二階段—-資料傳輸。
電路交換的第三階段,也就是最後一個階段—-釋放連線。A和B只要有一方掛了電話,那便了開始釋放連線。
傳輸例題圖:
在這個過程中,新建連線需要花銷一定的額外時間(想象你打電話的時候是不是出現正在撥號的字眼),釋放連線也會花銷一些額外的時間。
那麼,電話交換的過程中,資料需要分組來傳送嗎?
答是不用的,因為電話交換的過程中,A和B兩個人始終霸佔著一條通訊電路,他們每說一句話,都會實時被對方獲取,因此資料是不用分組的。
從這也可以看出,電路交換的方式,在資料的傳輸上是比較高效、實時的,只要A一發出資料,E立馬就能收到了,這也是為什麼我們的電話通訊使用的是電路交換的方式。
但由於一直霸佔著這條路徑,假如霸佔的過程中A與E都在沉默不說話,那麼將是對這條路徑的極大浪費。因此,電路連線的方式資源的利用率是比較低的。
而且,如果你通話的時間超級短,可能花在新建連線的時間比通話的時間還要長,這就更加難受了。
稍微總結一下
電路連線的三個階段:
1、建立連線。
2、資料傳輸。
3、釋放連線。
優點:
1、傳輸速度快、高效。
2、實時。
缺點:
1、資源利用率低。
2、新建連線需要佔據一定的時間,甚至比通話的時間還長。
分組交換
從名字分組字眼,我們就可以知道,這種方式資料包是分組成更小的資料包進行傳輸的。分組交換的資料傳輸過程和電路交換不一樣,分組交換採取儲存轉發傳輸的機制。我們下面還是以A給E傳輸資料作為例子來講解。
假如A要給E傳送一個資料包P,但這個資料包有點大,需要分成三組,例如分成p1,p2,p3三個更小的資料包。
這時A給E傳輸資料不需要新建連線這個過程,即不需要尋找一個通往E的路徑。而且A直接把小的資料包丟給附近的路由器,然後A就不管了,例如A把p1丟給了B,這個時候A就不在去管p1的,當B收到p1這個完整的小資料包之後,B再丟給E。
但是A不一定都會把剩下的資料包都丟給B,有可能會把其他的資料包p2丟給C,之後再把p3丟給D,然後C和D在轉發丟給E。這些都是不確定的,會根據某種演算法的選擇路由器。
這裡有一個關鍵詞儲存,就是說,B必須收到完整的p1資料包後才能進行轉發,這也不難理解,因為p1資料包包含E的地址,如果不是完整的資料包,B也不知道該發給誰啊。
示例圖:
從電路交換的機制我們可以看出如下的一些問題:
由於A把資料包丟給B之後就不管了,B什麼時候會把p1轉發出去,誰也不知道,而且可能B會繞幾個圈子再發給E也是有可能的。因為,電路交換的機制在資料傳輸方面不具有實時性。
而且,很有可能會有很多路由器把資料包丟給B,這個時候就會造成通訊阻塞,這時可能p1只能排隊等待B來傳送。
由於B路由器的容量是有限的,如果有太多的資料包丟給它,它可能會容納不下,這時候就可能會出現丟包的情況。
再者,由於p1,p2,p3資料包都有檔案頭,裡面都包含了A和E的一些資訊,當然還有其他的資訊。可以說這些檔案頭有很多重複的資料,因此分組交換髮送的資料具有很多的重複無用資料。
當然,分組交換還包括時延的缺點,因為B必須收到一個完整的p1才能把p1轉發出去,因為這個接受儲存的過程中存在時延,這種時延也成為傳輸時延,當然還存在傳播時延和處理時延等。所謂處理時延就是每次都得檢查這個資料包的檔案頭和決定將該資料包傳輸給誰。
說了電路交換的這麼多缺點,那總得有優點吧?
實際上,上面的那些缺點,其實都不是什麼大問題的。電路交換最主要的優點就是設計簡單,資源利用率高了。
總結下分組交換
分組交換採用把一個個小的資料包儲存轉發傳輸的機制。
主要的一些缺點:
1、不具有實時性。
2、存在延時。
3、會造成通訊阻塞。
4、存在無用的重複資料。
5、會出現丟包的情況。
致命的優點:
1、設計簡單。
2、資源利用率很高。
生活中的通訊選擇
兩種交換傳輸的特點決定了我們平時的電話通訊使用的是電路交換,像網際網路中的微信等這種不要求實時的通訊用分組交換。
這也就是為什麼急事的時候會打電話,因為比較實時嘛。像微信這些,有時你發個資訊,可能網路不好的話,或者太多人在同時使用的話,可能你的資訊要過一陣子對方才能收到。
這裡可能有些人會說,分組交換為何要把資料包分成一小個來儲存轉發呢?一個大的資料包發過去不好嗎?
假如你的一個資料包100GB,那B這個路由器就得能存100GB的容量,可是發100GB的概率是極少數的,那把路由器設計成100GB不是很浪費?這也是為什麼要分組成小資料包的原因之一。
當然,還有一種報文交換的方式,就是一整個資料包儲存轉發的,不過這種方式使用的比較少,再此就不詳細展開了。
來一張三種交換傳輸的圖:
完
關注公我的眾號:苦逼的碼農,獲取更多原創文章,後臺回覆禮包送你一份特別的資源大禮包。同時也感謝把文章介紹給更多需要的人