1. 程式人生 > 其它 >第五章_Spark核心程式設計_Rdd_map運算元

第五章_Spark核心程式設計_Rdd_map運算元

資料鏈路層

資料鏈路層的功能

研究OSI七層網路中某一層時,一般只需要關注其中一層就可以,即可以認為,資料是在水平方向傳遞的(如上圖)

資料鏈路層的基本概念

  • 結點:主機、路由器

  • 鏈路:結點間的物理通道。是⼀條⽆源的點到點的 物理線路段(雙絞線、光纖等),中間沒有任何其 他交換結點。⼀條鏈路只是⼀條通路的⼀個組成部分。

  • 資料鏈路:是結點間的邏輯通道。除了物理線路以 外,還必須有通訊協議來控制這些資料的傳輸。若 把實現這些協議的硬體和軟體加到鏈路上,就構成 了資料鏈路。

    資料鏈路 = 鏈路 + 協議

  • 幀:鏈路層協議資料單元,封裝⽹絡層的資料報。

  • 資料鏈路層:負責通過⼀條鏈路從⼀個結點向 物理鏈路直接相連的相鄰結點傳送幀。

    ⽹卡實現的物理層和資料鏈路層協議.

    鏈路中通訊雙⽅的通道使⽤形式不同,會相應有 不同的控制協議.

資料鏈路層通道型別

  • 點對點通道: 這種通道使⽤⼀對⼀的點對點通訊⽅式,控制協議相對簡單

  • ⼴播通道:使⽤⼀對多的⼴播通訊⽅式,通訊過程⽐較複雜。⼴播通道上 連線的主機很多,因此必須使⽤專⽤的共享協議來協調這些主 機的資料傳送,控制協議相對複雜

為什麼需要資料鏈路

  • 物理層解決了相鄰結點透明傳輸⽐特的問題。

  • 物理層沒有解決的問題:

    1. 傳輸錯誤問題,傳送端傳送⽐特1,⽽接收端收到⽐特 0,接收端⽆法知道接收的是否正確?
    2. 誰接收的問題,多個裝置連線問題:誰能傳送資料?資料傳送給誰?誰負責接收和處理?
    3. 傳輸結束問題,如何知道⼀組資料即將到來?這組資料何時結束?

功能概述

資料鏈路層在物理層提供服務的基礎上向網路層提供服務,其最基本的服務是將源自網路層來的資料可靠地傳輸到相鄰節點的目標機網路層。主要作用是加強物理層傳輸原始位元流的功能,將物理層提供的可能出錯的物理連線改造成為邏輯上無差錯的資料鏈路,使之對網路層表現為一條無差錯的鏈路

  • 功能一:為網路層提供服務。無確認無連線服務、有確認無連線服務、有確認面向連線服務。(有連線一定有確認!)
  • 功能二:鏈路管理,即連線的建立、維持、釋放 (用於面向連線的服務)。
  • 功能三:組幀。
  • 功能四:流量控制。
  • 功能五:差錯控制(幀錯、位錯)。

封裝成幀

封裝成幀 (framing) 就是在⼀段資料的前後分別新增⾸部和尾部, 然後就構成了⼀個幀。⾸部和尾部的⼀個重要作⽤就是進⾏幀定 界,確定幀的界限。

如何成幀
  • 字元計數法

    問題: 如果第一個幀的計數字段出現錯誤,那麼後繼的都幀都會出錯,這樣就會造成災難性後果,所以這種方式已經不常用。

  • 當資料是由可列印的 ASCII 碼組成的⽂本⽂件時,幀定界可以使⽤特殊的幀定界符控制字元SOH (Start Of Header) 放在⼀幀的最前⾯,表示幀的⾸部開始,控制字元 EOT (End Of Transmission) 表示幀的結束。

ASCII表
存在問題

如果資料中的某個位元組的⼆進位制程式碼恰好和 SOH 或 EOT ⼀ 樣,資料鏈路層就會錯誤地“找到幀的邊界”,這樣就會造成無法實現透明傳輸。如下圖

透明傳輸

概念和存在問題

透明傳輸 是指無論所傳輸的資料是什麼樣的位元組合,都應當可以在鏈路上正確的傳輸。但是資料傳輸往往會存在一些問題,這些問題的存在就會導致資料無法實現透明傳輸。所以就需要一些手段來保證資料能夠在鏈路上實現透明傳輸。

解決辦法

位元組填充 (byte stuffing) 或字元填充 (character stuffing)

  • 傳送端的資料鏈路層在資料中出現控制字元“SOH”或“EOT”的前⾯ 插⼊⼀個轉義字元“ESC”;
  • 接收端的資料鏈路層在將資料送往⽹絡層之前刪除插⼊的轉義字 符;
  • 如果轉義字元也出現在資料當中,那麼應在轉義字元前⾯插⼊⼀個 轉義字元 ESC。當接收端收到連續的兩個轉義字元時,就刪除其中 前⾯的⼀個

資料鏈路層的兩種通道

區域網、廣域網

鏈路層的裝置