3.3.1_1 檢錯編碼(奇偶校驗碼)

?從這節課開始,我們會探討數據鏈路層的差錯控制功能,差錯控制功能的主要目標是要發現并且解決一個幀內部的位錯誤,我們需要使用特殊的編碼技術去發現幀內部的位錯誤,當我們發現位錯誤之后,通常來說有兩種解決方案。第一種解決方案就是接收方只負責發現這種比特錯。如果一個幀有位錯誤,就直接把這個幀丟棄,并且想辦法通知發送方,讓他重新傳輸這個幀,關于如何通知發送方重傳幀這個問題,我們會在可靠傳輸功能里邊再進行探討。在差錯控制這個部分,我們先把注意力放在如何發現比特錯誤上。使用檢錯編碼技術可以發現比特錯,我們會學習奇偶校驗碼和 CRC,也就是循環冗余校驗碼這兩種檢錯編碼技術。除了直接把幀丟棄重傳之外,還可以有第二種解決方案,就是接收方可以發現并且糾正幀內部的比特錯誤。如果要糾正這種比特錯誤,我們就需要使用糾錯編碼的技術,之后我們會探討海明教驗碼,這就是一種糾錯編碼。既可以發現比特錯,同時還可以糾正比特錯。

在這個視頻中,我們先探討最簡單的奇偶校驗碼。我們會首先介紹奇偶校驗的這種校驗原理,如何檢測出比特錯誤,緊接著,我們會為跨考的同學補充異或運算的一個規則。在這個視頻中,我們依然需要對異或運算進行一個簡單的補充,因為除了奇偶校驗之外,接下來要學習的CRC校驗碼以及海明校驗碼都需要使用到異或運算。

接下來看奇偶校驗碼的校驗原理,奇偶校驗具體來說可以分為兩種,一種就是奇校驗,另一種是偶校驗。二者的原理類似。假設有n個有效信息位,我們會在這n個信息位之前或者之后增加一個比特的這種奇偶校驗位,如果我們采用的是奇校驗的規則,那么我們添加這一個比特之后需要確保這 n+1位當中總共有奇數個1。相應的如果是偶校驗的規則,那么我們需要確保添加了這一位之后,整體來看總共需要有偶數個1。

舉個例子,假設這兒給出了兩個比特串,我們分別求這兩個比特串的基叫頁碼和偶叫頁碼。我們假設這個校驗位是添加在有效信息位之前,那如果我們采用的是基校驗的規則。看第一個比特串,這個比特串總共有七個信息位。其中包含一個一兩個一三個一四個一,我們需要在這七個信息位之前增加一個校驗位。并且要確保整體來看總共有奇數個1,那么原本有四個1,因此這個校驗位我們就得填1,這樣的話,整體就有五個1,也就是奇數個1。再來看第二個比特串,同樣有七個比特的信息位,那么其中包含一個兩個三個四個五個一。所以前邊這個校驗位,我們只需要添零。這是采用奇校驗的規則,如果采用的是偶校驗規則,原理類似。前邊這個比特串,總共有四個1,添加這個校驗位之后,需要確保整體來看總共有偶數個1,因此這個校驗位我們只能添0。對于第二個比特串,總共有一個兩個三個四個五個一,所以為了使整體擁有偶數個1,我們需要在校驗位這兒再添加一個比特1。這就是基于偶校驗規則的校驗位的確定。在計算機網絡中,發送方給接收方發送一個幀,那么發送方的數據鏈路層,會在幀的數據部分添加這個校驗位的信息,然后把校驗位和信息位一起發給接收方,而接收方的數據鏈路層又會基于奇偶校驗的規則去檢查整個幀有沒有出錯。

接收方的數據鏈路層是這么來檢錯的,如果發送方和接收方共同約定使用奇校驗的規則,接收方的數據鏈路層收到這個幀之后會檢查這個幀的校驗位和信息位里邊含有的比特1是不是奇數個?如果是奇數個,那么就認為沒有錯誤。如果不是奇數個,就認為有錯誤。在現實應用中,偶校驗要比基校驗更常用,一些原因是偶校驗很容易用簡單的異或門來實現。

我們簡單介紹一下異或運算的規則,異或運算又稱為模2加運算,如果兩個比特進行異或運算,那么當且僅當兩個比特都相異不同的時候,運算的結果才等于1。比如說第二個式子0和1兩個比特相異,它們倆異或運算得到的結果是1,第三個式子1和0兩個比特相異,所以它們倆異或得到的結果等于1。相反,兩個零進行異或得到的結果是0,兩個0進行異或得到的結果也是零,這就是異或運算的規則。

如果我們把幾個比特的信息位全部一起來異或就可以得到偶校驗位。比如我們以這一串比特串為例,剛才我們用手算的方式得到它的偶校驗位等于0。如果用機器計算偶校驗位,我們只需要把這七個比特依次進行異或。首先1和0異或等于1,這個1和后一個0異或同樣等于1,這個1和后一個1再進行異或等于0,這個0和后一個1繼續異或等于1,這個1再和后一個0進行異或等于1,最后還有一個1再進行異或最后的結果就是0。所以把這七個信息位分別異或最終計算的結果是零,可以看到這個計算的結果和我們剛才手算求得的偶校驗位是一致的。所以如果要用硬件來求偶校驗位會非常快,只需要用異或門就可以實現。

第二個例子也是類似的,把所有的這七個信息位分別異或最終得到的結果就是1,和我們手算求得
的偶校驗位是相同的。這兒就不再贅述。

這就是數據的發送方要做的事情,他會把幀的這n個信息位分別進行異或求得一個偶校驗位,然后把這個偶校驗位加入到信息位的前面。當然,也可以加入到信息位的后面這個都 OK,那么發送方會把這個校驗位和n比特的信息位一起傳給數據的接收方,而數據的接收方他的數據鏈路層會對收到的這 n+1個比特進行偶校驗。進行偶校驗,也可以用異或運算來實現。接收方會把所有的比特依次進行異或運算。我們總共收到八個比特,大家可以自己算一下這八個比特進行異或得到的結果等于0,此時說明這八個比特并沒有發生錯誤。這個式子對應的是偶校驗的第一個,這個比特串八個比特都沒有發生錯誤,現在假設數據的接收方接收到的是后面的這八個比特,并且這八個比特當中最后一個比特1跳變成了0。此時對所有的比特進行異或運算,得到的結果就是1,結果為1,說明出現了比特錯誤。我們可以用人類視角數一數,總共有幾個1,總共有五個1,接收方收到的這八個比特當中包含奇數個1。這并不符合偶校驗的規則。所以我們從人類視角來看也能發現,這八個比特當中肯定有某些比特出現了錯誤。

接下來再看一個例子,同樣是發送這八個比特。假設最后的兩個比特發生了跳變,都是從1變成了0,那么此時數據的接收方對這八個比特進行異或運算之后,得到的結果等于零結果為零,意味著這一串比特符合偶校驗的規則。我們從人類的視角來數一下,里邊包含四個1,有偶數個1,因此這串二進制數是符合偶校驗的規則的。然而,我們從上帝視角可以知道,這一串二進制數當中有兩個比特發生了錯誤。因此,如果有偶數個比特發生錯誤,那么,數據的接收方將無法檢測出這種錯誤。

剛才我們主要介紹了偶校驗的硬件實現的原理,對于奇校驗來說,硬件實現原理也是類似的,同樣可以通過異或運算去實現。對于計算機網絡的考試來說,我們只需要能夠用人類的算法確定這個校驗位等于多少,以及能夠分辨一串二進制數是否符合校驗的規則就可以了,大家不需要深究機器實現原理。

在這個視頻中我們介紹了一種最簡單的檢錯技術:奇偶校驗碼。我們提到了信息位、校驗位這兩個概念。信息位指的就是幀內部的有效數據,而校驗位在有的教材中又會把它稱為冗余位,因為校驗位是我們為了給幀的數據部分糾錯或者檢錯而附加的一些冗余比特信息。對于奇偶校驗來說校驗原理很簡單,我們只需要在n比特信息位的首部或者尾部添加一個比特的校驗位。如果數據的發送方和接收方約定的是奇校驗規則,就需要確保添加了這個校驗位之后。整體來看,總共會有奇數個1,而如果采用偶校驗的約定,就需要確保添加校驗位之后整體來看,有偶數個1。

需要注意的是,這種奇偶校驗碼只能檢測出奇數位的錯誤,如果剛好有偶數個比特發生了這種比特跳變,奇偶校驗碼是沒辦法檢測出這種錯誤的。同時,奇偶校驗碼只能檢錯,不能糾錯。在這個視頻中,我們也為跨考的同學補充了異或運算,又叫模2加運算的運算規則。當兩個比特進行異或運算的時候,只有二者相異的時候,計算的結果才等于1,否則為0,當我們采用偶校驗規則的時候,數據的接收方會把所有的信息位和校驗位全部進行異或,如果異或的結果等于0,說明沒有錯誤,如果等于1,說明有錯誤。如果恰巧有偶數個比特發生錯誤,那么此時數據的接收方,這個異或的結果也會等于零,也就是說發現不了偶數比特的錯誤。
以上就是這個視頻的全部內容。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86514.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86514.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86514.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Pandas】pandas DataFrame isna

Pandas2.2 DataFrame Missing data handling 方法描述DataFrame.fillna([value, method, axis, …])用于填充 DataFrame 中的缺失值(NaN)DataFrame.backfill(*[, axis, inplace, …])用于**使用后向填充(即“下一個有效觀測值”&#xff09…

MQTT協議:物聯網時代的通信基石

MQTT協議:物聯網時代的通信基石 在當今快速發展的物聯網(IoT)時代,設備之間的通信變得尤為重要。MQTT(Message Queuing Telemetry Transport)協議作為一種輕量級的消息傳輸協議,正逐漸成為物聯…

Excel 表格內批量添加前綴與后綴的實用方法

我們經常需要為 Excel 表格中的內容統一添加前綴或后綴,例如給編號加“NO.”、給姓名加“會員_”等。手動操作效率低,本文將介紹幾種實用的方法,幫助你快速完成批量添加前綴和后綴的操作。 使用“&”運算符添加前綴或后綴(推…

uniapp 實現騰訊云IM群文件上傳下載功能

UniApp 集成騰訊云IM實現群文件上傳下載功能全攻略 一、功能背景與技術選型 在團隊協作場景中,群文件共享是核心需求之一。本文將介紹如何基于騰訊云IMCOS,在uniapp中實現: 群內文件上傳/下載文件元數據管理下載進度追蹤跨平臺文件預覽 二…

GO協程(Goroutine)問題總結

在使用Go語言來編寫代碼時,遇到的一些問題總結一下 [參考文檔]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函數默認的Goroutine 場景再現: 今天在看到這個教程的時候,在自己的電…

uniapp微信小程序視頻實時流+pc端預覽方案

方案類型技術實現是否免費優點缺點適用場景延遲范圍開發復雜度?WebSocket圖片幀?定時拍照Base64傳輸? 完全免費無需服務器 純前端實現高延遲高流量 幀率極低個人demo測試 超低頻監控500ms-2s???RTMP推流?TRTC/即構SDK推流? 付費方案 (部分有免費額度&#x…

分布式鎖實戰:Redisson vs. Redis 原生指令的性能對比

分布式鎖實戰:Redisson vs. Redis 原生指令的性能對比 引言 在DIY主題模板系統中,用戶可自定義聊天室的背景、圖標、動畫等元素。當多個運營人員或用戶同時修改同一模板時,若沒有鎖機制,可能出現“甲修改了背景色,乙…

C++ 設計模式《復制粘貼的奇跡:小明的原型工廠》

👨?🎓 模式名稱:原型模式(Prototype Pattern) 📖 背景故事 創業初期,小明每天加班寫配送路線、配送策略、營銷套餐。可當業務做大后,他發現大家常常下單“上次那個套餐”—— “老…

【Elasticsearch】映射:fielddata 詳解

映射:fielddata 詳解 1.fielddata 是什么2.fielddata 的工作原理3.主要用法3.1 啟用 fielddata(通常在 text 字段上)3.2 監控 fielddata 使用情況3.3 清除 fielddata 緩存 4.使用場景示例示例 1:對 text 字段進行聚合示例 2&#…

開源 vGPU 方案:HAMi,實現細粒度 GPU 切分

本文主要分享一個開源的 GPU 虛擬化方案:HAMi,包括如何安裝、配置以及使用。 相比于上一篇分享的 TimeSlicing 方案,HAMi 除了 GPU 共享之外還可以實現 GPU core、memory 得限制,保證共享同一 GPU 的各個 Pod 都能拿到足夠的資源。…

PlayDiffusion上線:AI語音編輯進入“無痕時代”

在語音合成與語音編輯領域,一個長期存在的挑戰是如何在修改語音內容的同時,保持原始語音的自然性、連貫性和說話人特征。近日,一款名為 PlayDiffusion 的新型 AI 語音修復模型應運而生,成功實現了這一目標。 PlayDiffusion 是一個…

2025年能源電力系統與流體力學國際會議 (EPSFD 2025)

2025年能源電力系統與流體力學國際會議(EPSFD 2025)將于本年度在美麗的杭州盛大召開。作為全球能源、電力系統以及流體力學領域的頂級盛會,EPSFD 2025旨在為來自世界各地的科學家、工程師和研究人員提供一個展示最新研究成果、分享實踐經驗及…

微信小程序前端面經

一、技術棧與編碼能力(10min) 1. Vue 3 & Composition API Q1:請解釋一下 ref 和 reactive 的區別?你在項目中是如何使用的? 答:ref是包裝一個原始值或對象,通過.value訪問,r…

rknn toolkit2搭建和推理

安裝Miniconda Miniconda - Anaconda Miniconda 選擇一個 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh進行安裝 下面配置一下載源 # 清華大學源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…

WordPress插件:AI多語言寫作與智能配圖、免費AI模型、SEO文章生成

厭倦手動寫WordPress文章?AI自動生成,效率提升10倍! 支持多語言、自動配圖、定時發布,讓內容創作更輕松! AI內容生成 → 不想每天寫文章?AI一鍵生成高質量內容!多語言支持 → 跨境電商必備&am…

Houdini POP入門學習07 - 分組

使用PopGroup可對粒子進行分組操作,并通過表達式從而更靈活的處理粒子行為。 1.創建box作為發射器,連接popnet節點。 2.雙擊進入popnet,添加popwind添加向上風力。現在播放粒子可見粒子向上方移動。 3.添加popgroup進行分組,開啟…

機器學習復習3--模型評估

誤差與過擬合 我們將學習器對樣本的實際預測結果與樣本的真實值之間的差異稱為:誤差(error)。 誤差定義: ①在訓練集上的誤差稱為訓練誤差(training error)或經驗誤差(empirical error&#x…

Docker 鏡像上傳到 AWS ECR:從構建到推送的全流程

一、在 EC2 實例中安裝 Docker(適用于 Amazon Linux 2) 步驟 1:連接到 EC2 實例 ssh -i your-key.pem ec2-useryour-ec2-public-ip步驟 2:安裝 Docker sudo yum update -y sudo amazon-linux-extras enable docker sudo yum in…

MobileNet 改進:基于MobileNetV2和SSPP的圖像分類

1.創新點分析 在計算機視覺領域,高效的圖像分類模型一直是研究熱點。 本文將詳細解析一個結合了MobileNetV2和空間金字塔池化(SSPP)的深度學習模型實現。 模型概述 這個代碼實現了一個輕量級但功能強大的圖像分類器,主要包含兩個核心組件: MobileNetV2作為特征提取器 自定…

Java中List的forEach用法詳解

在 Java 中,List.forEach() 是 Java 8 引入的一種簡潔的遍歷集合元素的方法。它基于函數式編程思想,接受一個 Consumer 函數式接口作為參數,用于對集合中的每個元素執行操作。 基本語法 java 復制 下載 list.forEach(consumer); 使用示…