Ⅰ 求解,計算機網路技術基礎詳細過程!
1. 在CRC校驗中。已知生成多項式是G(x)=x4+x3+1。要求寫出信息1011001的CRC校驗碼。 解:
生成多項式G(x)=11001,為5位,校驗余數取4位,按模2除法計算過程如下:
1101010 11001 10110010000
11001 11110
11001 011110 11001 011100 11001 1010 余數R(x)= 1010
CRC校驗碼=1011001 1010
2. 雙方採用CRC循環校驗碼進行通信,已知生成多項式為x4+x3+x+1,接收到碼字為10111010011。判斷該信息有無錯誤。 解:
依題意,生成多項式G(x)=11011,如果信息正確,則模2除法余數應為0
1100101 11011 10111010011 11011 11000
11011 11100 11011 11111 11011 100 結果余數R(x)= 100不為零所以結果有錯。
在一個帶寬為 3KHZ、沒有雜訊的信道,能夠達到的碼元速率極限值為6kbps 碼元速率是信道傳輸數據能力的極限,奈奎斯特(Nyquist)首先給出了無雜訊情況下碼元速率的極限值與信道帶寬的關系:B=2H (Baud)其中,H是信道的帶寬,也稱頻率范圍,即信道能傳輸的上、下限頻率的差值。由此可以推出表徵信道數據傳輸能力的奈奎斯特公式:C=2•H•log2N (bps)對於特定的信道,其碼元速率不可能超過信道帶寬的2倍,但若能提高每個碼元可能取的離散值的個數,則數據傳輸速率便可成倍提高。例如,普通電話線路的帶寬約為3kHz,則其碼元速率的極限值為6kBaud。若每個碼元可能取得離散值的個數為32(即N=32),則最大數據傳輸速率可達C=2*3k*log2 32=30kbps。
實際的信道總要受到各種雜訊的干擾,香農(Shannon)則進一步研究了受隨機雜訊干擾的信道的情況,給出了計算信道容量的香農公式: C=H*log2(1+S/N) (bps)其中,S表示信號功率,N為雜訊功率,由此可見,只要提高信道的信噪比,便可提高信道的最大數據傳輸速率
希望能幫到你
Ⅱ crc是什麼意思
CRC(Cyclic Rendancy Check),即循環冗餘校核,是一種根據網路數據包或電腦文件等數據產生簡短固定位數校核碼的快速演算法,主要用來檢測或校核數據傳輸或者保存後可能出現的錯誤。CRC利用除法及余數的原理,實現錯誤偵測的功能,具有原理清晰、實現簡單等優點。
CRC也就是循環冗餘校驗碼,是計算機網路通信領域常用的校驗碼。循環冗餘校驗碼包括一系列移位、相除等數據編碼規則,其演算法原理、演算法程序的設計與分析,都可以通過相應的軟體編碼進行解決。
循環冗餘校驗碼是利用軟體進行校驗的演算法,因此其檢驗速度很快,校驗的誤碼率也較低,整個計算機網路通信的信息傳輸速度很高。CRC差錯糾正控製法能夠有效減少通信線路的誤碼率,得到的通信數據傳輸信息更准確。
在數據的傳輸過程中由於空間電磁環境復雜等原因,可能會產生誤碼,即某幾位數據0變為1,或1變為0,導致接收端得到錯誤的數據。為了降低誤碼率,通常對數據進行特定編碼,在收發端進行額外的驗證,使接收端能發現某些錯誤;
進而實現糾錯功能,常用的編碼方法有CRC-32校驗碼、CRC-16校驗碼、漢明碼、奇偶校驗法等。其中32位循環冗餘校驗簡稱CRC-32校驗在性能和資源消耗兩方面都有較大的優勢,因而,在無線電通信、SATA硬碟數據傳輸等系統中,CRC-32校驗是最常用的檢錯手段之一。
Ⅲ 計算機網路CRC碼問題
由於多項式是4階,所以在信息碼後面加上四個0,然後除以多項式地11001,得到地結果是10001
所以說crc碼就是110101110001
最後地數據碼是不對地
Ⅳ 計算機網路題求解答 謝謝
2017年12月28日,星期四,
兄弟,你這照片上的第一題中多項式的指數看不清呀,
沒事,我就現在的情形,給你說一下大概的思路,你參考著,再結合題目中實際的參數,再套一遍就能把題目解出來了,
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)基帶沖突檢測的載波監聽多路訪問技術(載波監聽多點接入/碰撞檢測)。所有的節點共享傳輸介質。
原理,如下,
1、所有的站點共享唯一的一條數據通道,
2、在一個站點發送數據時,其他的站點都不能發送數據,如果要發送就會產生碰撞,就要重新發送,而且所有站點都要再等待一段隨即的時間,
3、對於每一個站而言,一旦它檢測到有沖突,它就放棄它當前的傳送任務。換句話說,如果兩個站都檢測到信道是空閑的,並且同時開始傳送數據,則它們幾乎立刻就會檢測到有沖突發生。
4、它們不應該再繼續傳送它們的幀,因為這樣只會產生垃圾而已;相反一旦檢測到沖突之後,它們應該立即停止傳送數據。快速地終止被損壞的幀可以節省時間和帶寬。
5、它的工作原理是: 發送數據前 先偵聽信道是否空閑 ,若空閑,則立即發送數據。若信道忙碌,則等待一段時間至信道中的信息傳輸結束後再發送數據;若在上一段信息發送結束後,同時有兩個或兩個以上的節點都提出發送請求,則判定為沖突。若偵聽到沖突,則立即停止發送數據,等待一段隨機時間,再重新嘗試。
6、原理簡單總結為:先聽後發,邊發邊聽,沖突停發,隨機延遲後重發。
7、Carrier Sense Multiple Access就是,要發送和發送中都要進行監聽,
8、有人將CSMA/CD的工作過程形象的比喻成很多人在一間黑屋子中舉行討論會,參加會議的人都是只能聽到其他人的聲音。每個人在說話前必須先傾聽,只有等會場安靜下來後,他才能夠發言。人們將發言前監聽以確定是否已有人在發言的動作稱為"載波監聽";將在會場安靜的情況下每人都有平等機會講話成為「多路訪問」;如果有兩人或兩人以上同時說話,大家就無法聽清其中任何一人的發言,這種情況稱為發生「沖突」。發言人在發言過程中要及時發現是否發生沖突,這個動作稱為「沖突檢測」。如果發言人發現沖突已經發生,這時他需要停止講話,然後隨機後退延遲,再次重復上述過程,直至講話成功。如果失敗次數太多,他也許就放棄這次發言的想法。通常嘗試16次後放棄。
9、核心問題:解決在公共通道上以廣播方式傳送數據中可能出現的問題(主要是數據碰撞問題)
包含四個處理內容:監聽、發送、檢測、沖突處理
監聽:
通過專門的檢測機構,在站點准備發送前先偵聽一下匯流排上是否有數據正在傳送(線路是否忙)?
若「忙」則進入後述的「退避」處理程序,進而進一步反復進行偵聽工作。
發送:
當確定要發送後,通過發送機構,向匯流排發送數據。
檢測:
數據發送後,也可能發生數據碰撞。因而,要對數據邊發送,邊檢測,以判斷是否沖突了。
沖突處理:
當確認發生沖突後,進入沖突處理程序。有兩種沖突情況:
① 偵聽中發現線路忙
② 發送過程中發現數據碰撞
① 若在偵聽中發現線路忙,則等待一個延時後再次偵聽,若仍然忙,則繼續延遲等待,一直到可以發送為止。每次延時的時間不一致,由退避演算法確定延時值。
② 若發送過程中發現數據碰撞,先發送阻塞信息,強化沖突,再進行監聽工作,以待下次重新發送
10、
先聽後說,邊聽邊說,邊說邊聽;
一旦沖突,立即停說;
等待時機,然後再說;
註:「聽」,即監聽、檢測之意;「說」,即發送數據之意。
11、在發送數據前,先監聽匯流排是否空閑。若匯流排忙,則不發送。若匯流排空閑,則把准備好的數據發送到匯流排上。在發送數據的過程中,工作站邊發送邊檢測匯流排,是否自己發送的數據有沖突。若無沖突則繼續發送直到發完全部數據;若有沖突,則立即停止發送數據,但是要發送一個加強沖突的JAM信號,以便使網路上所有工作站都知道網上發生了沖突,然後,等待一個預定的隨機時間,且在匯流排為空閑時,再重新發送未發完的數據。
12、
CSMA/CD網路上進行傳輸時,必須按下列五個步驟來進行
(1)傳輸前監聽
(2)如果忙則等待
(3)如果空閑則傳輸並檢測沖突
(4)如果沖突發生,重傳前等待
(5)重傳或夭折
補充一個重要的知識點:
要使CSMA/CA 正常工作,我們必須要限制幀的長度。如果某次傳輸發生了碰撞,那麼正在發送數據的站必須在發送該幀的最後一比特之前放棄此次傳輸,因為一旦整個幀都被發送出去,那麼該站將不會保留幀的復本,同時也不會繼續監視是否發生了碰撞。所以,一旦檢測出有沖突,就要立即停止發送,
舉例說明,
A站點發送數據給B站點,當A站通過監聽確認線路空閑後,開始發送數據給B站點,同時對線路進行監聽,即邊發送邊監聽,邊監聽邊發送,直到數據傳送完畢,那麼如果想要正確發送數據,就需要確定最小幀長度和最小發送間隙(沖突時槽)。
CSMA/CD沖突避免的方法:先聽後發、邊聽邊發、隨機延遲後重發。一旦發生沖突,必須讓每台主機都能檢測到。關於最小發送間隙和最小幀長的規定也是為了避免沖突。
考慮如下的情況,主機發送的幀很小,而兩台沖突主機相距很遠。在主機A發送的幀傳輸到B的前一刻,B開始發送幀。這樣,當A的幀到達B時,B檢測到沖突,於是發送沖突信號,假如在B的沖突信號傳輸到A之前,A的幀已經發送完畢,那麼A將檢測不到沖突而誤認為已發送成功。由於信號傳播是有時延的,因此檢測沖突也需要一定的時間。這也是為什麼必須有個最小幀長的限制。
按照標准,10Mbps乙太網採用中繼器時,連接的最大長度是2500米,最多經過4個中繼器,因此規定對10Mbps乙太網一幀的最小發送時間為51.2微秒。這段時間所能傳輸的數據為512位,因此也稱該時間為512位時。這個時間定義為乙太網時隙,或沖突時槽。512位=64位元組,這就是乙太網幀最小64位元組的原因。
以上信息的簡單理解是:A發送一個幀的信息(大小不限制),B收到此幀,發現有沖突,馬上發送包含檢測到了沖突的信息給A,這個沖突信息到達A也是需要時間的,所以,要想A成功發送一個幀(並知道這個幀發送的是否成功,沖沒沖突)是需要這個幀從A到B,再從B到A,這一個來回的時間,
也就是說,當一個站點決定是否要發送信息之前,一定要先進行線路的檢測,那麼隔多長時間檢測一次合適呢(在沒有檢測的期間是不進行數據的發送的,因此也就不存在沖突),這就要看, 一個電子信號在這兩個站點之間跑一個來回的時間了,試想一下,如果這個信號還沒有跑到地方,你就開始檢測,顯然是浪費檢測信號的設備資源,然後,A站點發送一個電子信號給B站點,信號經過一段時間到達了B站點,然後假設B發現了沖突,馬上告訴A,那麼這個電子信號再跑回A也需要一段時間,如果當這個信號在路上的時候,A就開始檢測是不是有沖突,顯然是不合適的,因為,B發送的沖突信號還在路上,如果A在這個時間段就檢測,一定不會發現有沖突,那麼,A就會繼續發送信號,但這是錯誤,因為已經有沖突被檢測出來,因此,A這么做是錯誤的,所以,A要想正確發送一個電子信號給B,並且被B正確接收,就需要,A發送一個電子信號,並等待它跑一個來回的時間那麼長,才能確認是沒有沖突,然後再繼續發送下一個信號,
這個電子信號跑一個來回的時間,是由站點間的距離s、幀在媒體上的傳播速度為v(光速)以及網路的傳輸率為r(bps)共同決定的,
那麼,假設電子信號跑一個來回的時間是t,則有如下式子,
t=2s/v;
又有,假設在時間t內可以傳送的數據量(最小幀)為L,則有如下式子,
L=t*r;解釋:這個就是說,一個電子信號從A跑到B需要t這么長時間,又因為電子信號幾乎接近光速,因此,即使在t這么短的時間內,我仍然可以不停的發送很多個電子信號,這樣就形成了一串二進制數列在t這個很小的時間段內被從A發送出去,那麼我在t這個時間段內究竟能發送出去多少的電子信號,就要看我的傳輸率r是多少了,因為有這種關系,所以就形成了最小幀的概念,
將 L=t*r 變形為 t=L/r,並將 t=L/r 帶入 t2s/v,得到式子:L/r=2s/v,
再將,題目中給出的數據帶入上式,得到
2500位元組/(1G bps)=2s/200000(Km);將單位統一後,有下式:
(2500*8)/(1024*1024*1024)=2s/200000(Km);繼續計算,得:
s=1.86Km,
若1Gbps取值為1000*1000*1000,則s=2Km;
兄弟,我這個利用工作空隙給你寫答案,你別著急啊,現在是12:48,第三題,我抓緊時間幫你算。
Ⅳ 計算機網路問題,急,,,
2017年12月13日星期三,
這里需要強調一點,生成多項式(generator polynomial)和多項式不是一個概念,這里需要注意。我個人的理解是你要進行幾位的CRC校驗,就需要幾位的生成多項式(generator polynomial),但還收到生成多項式(generator polynomial)的第一位必須為1的限制,因此生成的多項式還需要注意這一點。原始信息所對應的多項式和生成多項式(generator polynomial)不是一個概念。
首先,我們要知道,任何一串二進制數都可以用一個多項式表示:且這串二進制數的各位對應多項式的各冪次,多項式中假如有此冪次項(比如多項式匯中有冪次項x^2對應二進制串碼中從右至左的第三位二進制數一定為1.因為右數第一位的冪次項為x^0,右數第二位的冪次項為x^1),則對應二進制數串碼中此位置的1,無此冪次項對應0。
舉例:代碼1010111對應的多項式為x^6+x^4+x^2+x+1,若我們將缺失的冪次項補全的話就有x^6+(x^5)+x^4+(X^3)+x^2+x+1,又因為x^5和X^3所對應的二進制位為0,不記入多項式中,因此有x^6+x^4+x^2+x+1,就是表示 1010111這個串碼。
而多項式為x^5+x^3+x^2+x+1的完整多項式為x^5+(x^4)+x^3+x^2+x+1正好對應二進制串碼101111,而x^4對應的二進制串碼中右數第五位(左數第二位)為0,不記入多項式中,因此,101111可以使用多項式x^5+x^3+x^2+x+1來表示。
通過上述兩個多項式的例子,可以看出,當多項式中的冪次項所對應的那一位二進制為1時,多項式中的那一個冪次項存在,而當二進制串碼中的某位為0時,對應的多項式冪次項忽略不記錄,例如,10111 1因為從左向右第二位是0,因此對應的多項式分子x^4就沒有被記錄到多項式中,
書面的說法是:
多項式和二進制數有直接對應關系:X的最高冪次對應二進制數的最高位,以下各位對應多項式的各冪次,有此冪次項對應1,無此冪次項對應0。可以看出:X的最高冪次為R,轉換成對應的二進制數有R+1位,
我們現在來看題目中generator plynomial (生成多項式)is X^4+x^2+1,最高冪次是4,因此,其表示的二進制為(4+1=5)5位,
且通過crc的原理,我們知道,循環冗餘校驗碼(CRC)是由兩部分組拼接而成的,
第一部分是信息碼,
第二部分是校驗碼,
可得公式:
CRC=信息碼+校驗碼,
很明顯校驗碼是跟在信息碼之後的,所以,題目中1101011011中左數的那5位是真正傳輸的信息(信息碼),即actual bit string transmitted(實際傳輸的信息位流)是11010,而後面的5位(11011)是校驗碼,
接下來我們結合上面的內容來理解對CRC的定義:
循環冗餘校驗碼(CRC)的基本原理是:在K位信息碼後再拼接R位的校驗碼,整個編碼長度為N位,因此,這種編碼也叫(N,K)碼。對於一個給定的(N,K)碼,可以證明存在一個最高次冪為N-K=R的多項式G(x)。根據G(x)可以生成K位信息的校驗碼,而G(x)叫做這個CRC碼的生成多項式。 校驗碼的具體生成過程為:假設要發送的信息用多項式C(X)表示,將C(x)左移R位(可表示成C(x)*2^R),這樣C(x)的右邊就會空出R位,這就是校驗碼的位置。用 C(x)*2^R 除以生成多項式G(x)得到的余數就是校驗碼。
另一個定義:
利用CRC進行檢錯的過程可簡單描述為:在發送端根據要傳送的k位二進制碼序列,以一定的規則產生一個校驗用的r位監督碼(CRC碼),附在原始信息後邊,構成一個新的二進制碼序列數共k+r位,然後發送出去。在接收端,根據信息碼和CRC碼之間所遵循的規則進行檢驗,以確定傳送中是否出錯。這個規則,在差錯控制理論中稱為「生成多項式」。
再看另一個描述,在代數編碼理論中,將一個碼組表示為一個多項式,碼組中各碼元當作多項式的系數。例如 1100101 表示為1·x^6+1·x^5+0·x^4+0·x^3+1·x^2+0·x^1+1,即 x^6+x^5+x^2+1。
設,編碼前的原始信息多項式為P(x),P(x)的最高冪次加1等於k(這里的K就是整個原始信息的二進制編碼的長度,以上例1100101為例,此串二進制編碼的最高位對應的多項式冪次為6,根據定義得K=6+1=7,正好是此串二進制編碼的長度,);
設,生成多項式為G(x),G(x)的最高冪次等於r,這個r可以隨意指定,也就是r可以不等於K,但指定r時,必須滿足生成多項式G(x)最高位必須為1的條件,
設,CRC多項式為R(x)。:將P(x)乘以x^r(即對應的二進制碼序列左移r位),再除以G(x),所得余式即為R(x)。
設,編碼後的帶CRC的信息多項式為T(x)。:用公式表示為T(x)=x^r*P(x)+R(x),翻譯過來就是,編碼後的帶CRC校驗的多項式由左移了r位的原始信息P(x)後接CRC的校驗碼R(x)組成,
而在接收端,是使用T(x )去除G(x),若無余數,則表示接收正確。就是接收端使用接收到的信息T(x )去除和發送端約好的生成多項式G(x),若除盡沒有餘數則表示信息正確接收。
我們再來看本題,
題中給出已傳輸的信息為:1101011011,即T(x )=1101011011;
而generator polynomial 生成多項式是:x^4+x^2+1,即G(x)=10101;
那麼,我們來使用T(x )除以G(x)=110,根據上面的定義,我們知道,出現了沒有除盡的情況,有餘數,余數為110,則說明信息11010在傳遞過程出現了錯誤,而題目中給出,若將此信息串碼的左數第三位進行翻轉,則接收到的信息為:1111011011,那麼,
T(x )=1111011011,
則,再通過T(x )除以G(x)進行校驗運算後,得到余數1,沒有除盡
即T(x )除以G(x)=1,
所以沒有通過CRC校驗,此時,接收端能發現這個錯誤,
但是,如果我們將此串數據的左數第三位和最後一位同時翻轉,得到1111011010,那麼再經過T(x )除以G(x)的接收端校驗後,除盡了,余數為0,則,此時,因為T(x )除以G(x)=0,通過了接收端的校驗,因此,接收端並不能發現這個錯誤,以為是收到了正確的串碼:11110,但實際上我們發送的串碼是:11010,
最後,我們再來研究一下,T(x )是怎麼除G(x)的,實際上我們必須清楚,這里的除法實際上並不是我們傳統意義上的十進制除法,而是兩個二進制的「按位異或」(請注意每步運算都是先進行高位對齊的。)的演算法,在二進制數運算中,這被稱為模二除運算,
來看兩個例子,
【例一】假設使用的生成多項式是G(X)=X3+X+1。4位的原始報文為1010,求編碼後的報文。
解:
1、將生成多項式G(X)=X^3+X+1轉換成對應的二進制除數1011。
R=3,R就是生成多項式的最高次冪,
2、此題生成多項式有4位(R+1)(注意:通過對生成多項式計算所得的校驗碼為3位,因為,生成多項式的R為生成多項式的最高次冪,所以校驗碼位數是3位),要把原始報文C(X)【這里的C(X)就是1010】左移3(R)位變成1010 000
3、用生成多項式對應的二進制數對左移3位後的原始報文進行模2除(高位對齊),相當於按位異或:
1010000
1011
------------------
0001000, 請注意這里,通過第一次除法,也就是模2除(高位對齊)的運算,將兩個二進制代碼進行了高位對齊後的按位異或的操作後,得到0001000即1000,接下來,需要進行第二次除法,即使用第一步得到的二進制數1000去除1011【G(x)】,則有下面的式子,
1000
1011
------------------
0011,請注意,結果為0011,也可以寫成11,但是我們由上面得知,由生成多項式G(X)=X^3+X+1,已經確定了校驗位是3位,因此,
得到的余位011,所以最終編碼為:1010 011。
例二:
信息欄位代碼為: 1011001;對應的原始多項式P(x)=x6+x4+x3+1
假設生成多項式為:g(x)=x4+x3+1;則對應g(x)的代碼為: 11001,又因為g(x)最高次冪為4,因此可以確定校驗位是4位,
根據CRC給生成多項式g(x)定義的規則,將原始代碼整體左移4位,這樣在原始數據後面多出4位校驗位的位置,即x^4*P(x),得到:10110010000;
接下來使用10110010000去除以g(x),得到最終的余數1010,並與原始信息組成二進制串碼:1011001 1010發送出去,
接收方:使用相同的生成多項式進行校驗:接收到的欄位/生成碼(二進制除法)
如果能夠除盡,則正確,
給出余數(1010)的計算步驟:
除法沒有數學上的含義,而是採用計算機的模二除法,即除數和被除數做異或運算。進行異或運算時除數和被除數最高位對齊,按位異或。
10110010000
^11001
--------------------------
01111010000 ,這里進行第一次按位異或,得到01111010000,即1111010000,將1111010000再去除以11001,如下步驟,
1111010000
^11001
-------------------------
0011110000,進行了第二次模2除後,得到0011110000,即11110000,將
11110000去除11001,
11110000
^11001
--------------------------
00111000,第三次摸2除,得到00111000,即111000,用
111000去除11001,
111000
^11001
-------------------
001010,進行第四次模2除後,得到最終的余數,001010,即1010,
則四位CRC校驗碼就為:1010。
Ⅵ 計算機網路原理中求CRC校驗碼。
01100。演算法你可以用手算,或者用代碼計算,代碼分按位和按位元組。手算演算法是:多項式為101101你在信息的後面補5個0信息碼變為1101101100000這時開始用多項式對上面的信息碼進行異或操作,要打的話很麻煩。我只把沒一次運算的結果寫一下1:011011(注意,前面一位已經為零,這時,要在此數後面補一個數,也就是說,現在已經對8為信息碼操作了一位)移位以後變為110111。(此時的首位又為1,再與多項式異或,下面的類似)2:0110103:0110004:0111015:0101116:000011 注意此時的信息碼已經被操作了5次了,就是說還有3位沒有操作,這時把這個數左移3位就好了,因為他的前3位都為零,所以最後的crc碼為01100整個要發送的數據為11011011+01100中間算的可能有錯誤,開始看crc的時候可能會很難懂,看看代碼很不錯的
Ⅶ 關於計算機網路的crc計算
我們知道,一台主機向另外一台主機發送報文的時候,需要一層層經過自己的協議棧進行數據封裝,到達最後一層(四層協議的網路介面層)時需要在幀尾部添加FCS校驗碼(通過CRC演算法得出)。當對端主機收到時,在接收端同樣通過CRC演算法進行驗證,確認傳輸過程中是否出現錯誤。它只能確認一個幀是否存在比特差錯,但沒有提供解決措施。
循環冗餘校驗的原理
在發送端,先把數據劃分為組(即:一幀)。假定每組 k 個比特。
在每組後面,添加供差錯檢測用的 n 位冗餘碼一起發送。即:實際發送長度為:k+n 比特。
發送前雙方協商n+1位的除數P,方便接收方收到後校驗。
給K比特的數據添加除數減一個0(P-1)作為被除數,與第三步確定的除數做「模2除法」。得出的余數即FCS校驗序列,它的位數也必須是(P-1)。
將FCS校驗序列添加至K個比特位的後面發送出去。
接收方對接收到的每一幀進行校驗,若得出的余數 R = 0,則判定這個幀沒有差錯,就接受(accept)。若余數 R ≠ 0,則判定這個幀有差錯,就丟棄。
對「模2除法」進行說明:
「模2除法」與「算術除法」類似,但它既不向上位借位,也不比較除數和被除數的相同位數值的大小,只要以相同位數進行相除即可。模2加法運算為:1+1=0,0+1=1,0+0=0,無進位,也無借位;模2減法運算為:1-1=0,0-1=1,1-0=1,0-0=0,也無進位,無借位。相當於二進制中的邏輯異或運算。
計算示例
那麼接收方拿到的就是:101001001。再以它為被除數,1101為除數進行「模2除法」。
Ⅷ crc 計算機網路
2017年12月29日,星期五,
兄弟,我先給你簡單再捋一遍CRC編碼的概念和計算公式,原理明白了,以後不管碰到什麼樣的題,你都會迎刃而解了。
首先,需要知道如下幾個概念,
CRC編碼,就是你題目中所說的「待發字串」,它是經加工後帶有CRC校驗的待發送信息,
CRC校驗碼,就是你題目中所說的「CRC循環冗餘碼」,以下都簡稱為CRC校驗碼,它是通過CRC規則計算得來,
多項式,即真實信息,就是未經CRC編碼規則處理的原始的信息,就是你題目中說的「已知信息碼」,原始的真實信息有兩種表現形式,以本題為例,
a、原始信息的 二進制字串(形式):1000100101,
b、原始信息的 多項式(形式):X^9+X^5+X^2+1,
X^9+X^5+X^2+1多項式,就是由原始信息的二進制形式1000100101得來的,多項式中每一個因數都對應二進制形式 1000100101 中值為1的那一位,X^9 X^5 X^2就是2^9+2^5+2^2,那表示二進制數的權位,
1000100101
1*2^90*2^80*2^70*2^6 1*2^5 0*2^4 0*2^3 1*2^2 0*2^11*2^0
2^0=1...2^9=1 000 000 000,凡是二進制字串中值為1的權位都出現在了多項式中,例如,二進制字串最高位(左1)的1,就是2^9,所以它出現在了多項式中,形狀為X^9,而二進制數串中值為0的權位都沒有出現在多項式中,可以數一下,二進制數串中有4個1,所以對應的多項式中有4個因子:X^9、X^5、X^2、1,其中多項式的最後一個因子1,其實就是X^0,而我們都知道,任何數的0次冪都是1(0除外),可以看出,這兩種形式是等價的,即1000100101=X^9+X^5+X^2+1,當我們再遇到多項式時,就是去數原始信息(1000100101)中的1,然後把它的值為1的權位放到一起,寫成式子(X^9+X^5+X^2+1),兩者意義是一樣的,從二進制形式能推導出多項式,也可以從多項式推導出二進制形式,
生成多項式,就是你題目中提到的「G(x)=X^5+X^4+X^2+1」,生成多項式也可以寫成二進制形式,X^5+X^4+X^2+1其對應的二進制形式:110101,
通常,我們為了方便說明問題將生成多項式叫做:G(x),這里請注意,需要將
「生成多項式」和「多項式」進行區分,G(x)中的G就是generator polynomial,生成多項式的意思,
多項式:指的是原始信息1000100101中所有權位為1的權位寫在一起的形式X^9+X^5+X^2+1
生成多項式:是人為指定的多項式,由編碼人指定的東西,本例被人為指定成X^5+X^4+X^2+1即 110101 ,這個生成多項式是人為指定的,不是固定的,個人理解你指定成X^5+X^3+X^2+1也行,制定成X^5+X^4+X^3+X^2+1也行,
好了,接下來,我們要說最關鍵的CRC的定義和計算過程了,
CRC的定義:
多項式*2^(G(x)的最高次冪指數,你給的圖片題目中G(x)的最高次冪指數是5)/G(x)=CRC校驗碼;
用文字表達,就是原始數據信息乘以,2的 【生成多項式中最高冪指數】 次冪,乘2的多少次冪,就是在右邊加幾個0,比如乘以2^2,就是在右邊加2個零,因為是二進制數,所以乘幾個2就是加幾個零,和十進制數乘幾個10就是加幾個零道理一樣,然後再去除以生成多項式,請注意,這里的除,不是數學中的除法,而是指計算機中的模二除運算,實際上就是邏輯異或運算,說白了,就是將除數和被除數高位,進行左對齊後,相同為0,不同為1,然後一直除下去,直到得到最後的余數為止,這個余數就是我們需要的CRC校驗碼,而且這個最後得到的余數,取幾位由生成多項式中最高冪指數決定,最高冪指數是5就取5位,最高冪指數是6就取6位,最高冪指數是4就取4位,是根據生成多項式的最高次冪來定取幾位的.本例中,最高次冪是5,所以,最後的余數是5位二進制數,
X^5+X^4+X^2+1寫成二進制就是: 110101
你的圖片題目中,G(x)=X^5+X^4+X^2+1,也就是生成多項式是110101,
結合本題,我們來做一遍,原始數據:1000100101,生成多項式:110101,根據上面的規則有,
1000100101*2^5=1000100101 00000
把原始值右邊加上5個零:1000100101 00000之後,去除以生成多項式:110101
1000100101 00000
110101
----------------------------
0101110101 00000
左對齊,並開始按位異或,得0101110101 00000,
進行第二次除運算:
101110101 00000
110101
--------------------------
011011101 00000
左對齊,再按位異或,得到011011101 00000
開始第三次除運算:
11011101 00000
110101
--------------------
00001001 00000
左對齊,再按位異或,得到00001001 00000
進行第四次除運算:
100100000
110101
-----------------
010001000
左對齊,再異或,得到010001000
進行第五次除運算:
10001000
110101
------------
01011100
左對齊,再異或,得到01011100
進行第六次除運算:
1011100
110101
-------------
0110110
左對齊,再異或,得到0110110
進行第七次,最後一次除運算:
110110
110101
------------
000011
最終余數為000011,而由G(x)的最高次冪X^5的冪指數決定了,CRC校驗碼取5位,因此,最終得到的CRC校驗碼為:00011,
多項式*2^(G(x)的最高次冪指數,本例中G(x)的最高次冪指數是5)+G(x)=最終在物理線路上傳送的CRC編碼待發字串,
用文字表達就是,原始數據乘以,2的 【生成多項式中最高冪指數】 次冪,然後再加上生成多項式,最終得到要在線路中傳送的CRC編碼待發字串,
接著,以本例進行餘下的計算,原始數據:1000100101,CRC校驗碼(CRC循環冗餘碼)為:00011,
根據上面的定義,有:
1000100101*2^5=1000100101 00000,
1000100101 00000
+ 00011
----------------------
100010010100011
所以最終的「待發字串」CRC編碼為:100010010100011
Ⅸ 計算機網路原理的計算題(CRC校驗和數據傳輸問題)
第一題:進行模2除法時被除數錯了,應該是M*2^4,不是M*2^5,因為多項式是4階的,在M後面添4個0
Ⅹ 計算機網路crc演算法。
發送的數據是原數據+余數
接受端收到數據後除以多項式,有餘數說明數據在傳輸的時候改變(如果數據改變了碰巧余數還為0,那隻能說明運氣太差了。。)