首頁>科技>

我們現在基本上每天都在使用網路,在網路上進行互相通訊,但你知道你電腦傳送的資訊是如何傳遞到遠端電腦上的呢?本篇就講述一下網路傳輸原理過程。

首先,我們先得了解一下資料包的封裝和解封裝過程,這是啥意思呢,比如說你在QQ上發訊息“Hello”給你的朋友。這句話想要在網路上進行傳輸時是需要處理過的,那計算機網路體系結構的通訊協議通常劃分為七層。自下而上依次為:物理層(Physics Layer)、資料鏈路層(Data Link Layer)、網路層(Network Layer)、傳輸層(Transport Layer)、會話層(Session Layer)、表示層(Presentation Layer)、應用層(Application Layer)。

其中下四層完成資料傳送服務,上面三層面向用戶。資料要通過網路進行傳輸,要從高層一層一層的向下傳送,如果一個主機要傳送資料到別的主機,每層協議都要加上一個相對應的頭部,這個過程稱為封裝。

就好比寄信一樣,為了把“Hello”這條訊息傳送到目的地,首先在傳輸層我們要把這訊息打包到資料段裡,然後網路層要將你的“寫信人地址”和“收信人地址”寫到資料段上面,即:將資料的源IP地址和目的IP地址分別打包,這樣才知道你的這條資訊是要送到哪裡的。接下來資料鏈路層主要負責把IP地址對應到硬體地址(MAC),因為要找到遠端相應的計算機是要根據硬體地址來查詢的。最後在物理層變成位元流也就是一串0和1,也就是變成了低電壓和高電壓的訊號這樣就可以通過網線傳送出去了。

資料被封裝並通過網路傳輸後,接收裝置將刪除新增的資訊,並根據報頭中的資訊決定如何將資料沿協議棧向上傳給合適的應用程式。這個過程叫解封裝。最終將資料交給QQ應用程式進行處理。這樣對方就可以看到你傳送給他的“Hello”這條資訊咯。

明白資料的封裝和解封裝對理解資料包在網路中的傳輸相當重要,以下以telnet遠端登入的例項講解資料包封裝和解封裝以及資料包在網路中的傳輸過程。

如圖,IP裝置中,PC1和PC2連線在同一個集線器上,R1和R2通過序列線路相連,集線器則連線在路由器R1上,一臺二層交換機連線在R2,在它上面連線著的PC1需要遠端登入的伺服器(Server),以及另外一臺PC3:

下面是PC1使用Telnet登入伺服器的具體步驟:

1)首先,PC1封裝資料包,它用本地網路號比較要去往的目的地IP(202.2.2.2),發現此IP不在本地網路(202.1.1.0)當中,PC1知道要發往其他網段的資料先要發給閘道器路由器R1的fa0/0介面(202.1.1.1),PC1先在本地ARP快取中查詢202.1.1.1的MAC地址,如果找到的話就用它封裝,如果沒有找到就傳送ARP進行查詢,再利用查詢到的閘道器MAC(111111111111)進行封裝。

2)PC1將資料傳至到傳輸層,然後分段處理,由於Telnet使用的是TCP協議,所以PC1使用本地一個大於1024的任意埠作為源埠,在這裡假設是1234,目的埠為23,這兩個埠新增到傳輸層的協議資料單元中;資料在傳輸層封裝好後被傳輸到網路層,網路層在資料頭部新增源IP(202.1.1.2)以及目的IP(202.2.2.2);資料在網路層封裝好後,被傳輸到資料鏈路層,在區域網中這一層主要是在資料頭部新增源MAC(AAAAAAAAAAAA)以及目的MAC(111111111111),然後資料尾部新增一個CRC效驗,封裝好後如圖:

現在可能大家覺得很奇怪,為什麼目的MAC是閘道器的MAC而不是Server的MAC呢?由於MAC只是用於區域網內定址,發往其他網段的資料都要先經過閘道器,假設封裝的MAC是Server的MAC的話,資料被傳送到路由器R1後,R1檢查MAC地址,發現不是發往本路由的,就會直接丟棄這個資料,那樣PC1就不可能和Server通訊成功了。

資料鏈路層封裝後的資料幀被傳到物理層,轉換成二進位制形式的位元流,從PC1的網絡卡傳送出去。物理層的用途就是處理位元流,把位元轉換成電子、光學或微波訊號。反之在接收端,物理層從傳輸媒體中重新得到這些訊號,恢復成位元流,傳輸位元流到資料鏈路層。

3)PC1傳送的位元流到達集線器,集線器將資料訊號放大,並把它從接收埠之外的其他介面進行發出,PC2和R1都會收到這個資料,PC2收到這個資料包,把位元流轉換成幀上傳到資料鏈路層,PC2比較資料幀的目的MAC地址,發現與本機網絡卡的MAC地址不同,PC2將會丟棄資料幀,放棄處理。

4)路由器R1收到該位元流,轉換成幀上傳到資料鏈路層,發現目的MAC地址是本機fa0/0介面的MAC地址,它將會解封裝該幀,上傳到網路層,那麼網路層R1看到這個資料包的目的地址是202.2.2.2,並不是發給本路由的,就需要進行轉發。R1對本地路由表進行檢視,發現需要將這個資料從s0/0介面發出,但是此時R1並不能直接將資料進行發出,原因是資料在被解封裝到網路層後還需要進行再封裝才能從物理層發出;因為R1和R2之間是序列線路,序列線路與區域網不一樣,不是使用MAC通訊,序列線路的通訊協議可能為PPP或者是HDLC(這裡假設是PPP協議),並且在一端發出另一端就一定能收到。所以在資料發出去之前,在R1的資料鏈路層給這個資料包封裝PPP協議頭部時,從s0/0發出,此時,資料幀格式如下圖·:

資料鏈路層封裝後的資料幀被傳到物理層,轉換成二進位制形式的位元流,從路由器R1的s0/0介面傳送出去。

5)路由器R2收到這個位元流,上傳至資料鏈路層處理,資料鏈路層丟棄了PPP封裝,上傳至網路層處理;網路層發現了這個資料包的目的地址並非本路由,但是目的連線在本路由的乙太網介面上,這個時候如果R2有Server的MAC地址,就直接用Server的MAC地址封裝,否則它先發送ARP查詢,在收到迴應後進行封裝,封裝後的資料幀從fa0/0發出,源地址是fa0/0介面的MAC地址,目的地址是伺服器網絡卡的MAC地址,如下圖:

資料鏈路層封裝後的資料幀被傳到物理層,轉換成二進位制形式的位元流,從R2的fa0/0介面傳送出去。

6)R2發出的位元流到達交換機,交換機除了對位元流進行放大外,還根據源MAC地址進行學習,根據目的MAC地址進行轉發。交換機根據資料幀中的目的MAC地址查詢MAC地址表,把位元流從對應的埠傳送出去,當交換機的MAC快取表中存在Server的MAC和對應埠,就直接將位元流發給Server,如果不知道Server的MAC則會發送ARP查詢,然後再進行轉發;

7)Server收到了該位元流,把位元流轉換成幀格式,上傳到資料鏈路層,發現是本機的MAC,Server拆除資料鏈路層的封裝後,然後再上傳到網路層,發現目的IP地址是本機的IP,Server拆除網路層的封裝後,再把資料分段上傳到傳輸層,發現是訪問本機23埠,最後資料被傳輸到應用層;

8)Server對PC1的應答就剛好相反,它將目的IP、源IP以及目的埠、源埠位置對調,發回的資料幀格式如下:

完整的網際網路Telnet資料包傳輸以及封裝解封裝過程就是這樣。從這個過程中可以看出,資料流在中間裝置上執行的是OSI模型下三層的操作,物理層裝置就是集線器不對幀格式進行改變以及廣播式轉發;資料鏈路層裝置,即二層交換機,也不改變幀格式,但可根據幀的目的地址進行轉發;網路層的裝置則會改變幀格式,要進行幀的解封裝再封裝,但不改變資料包中源和目的IP地址(會改變資料包中的一些欄位,比如TTL欄位會減1)。

最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • Windows 10X是可摺疊電腦的作業系統,但這還不是故事的結局