Computer network: crc(cyclic redundancy check)
π CRC(Cyclic Redundancy Check)
1οΈβ£ CRC κ°μ
CRC(Cyclic Redundancy Check)λ λμ§νΈ ν΅μ λ° λ°μ΄ν° μ μ₯ λΆμΌμμ μ€λ₯ κ²μΆμ μν΄ λ리 μ¬μ©λλ μ½λμ
λλ€.
μ‘μ μΈ‘μμ λ°μ΄ν° λΉνΈμ€νΈλ¦Όμ νΉμ ν μμ± λ€νμ(Generator Polynomial)λ‘ λλμ
(Modulo-2 Arithmetic)μ μνν΄ λλ¨Έμ§(R, FCS)λ₯Ό ꡬν ν, μ΄λ₯Ό λ°μ΄ν° λ€μ λΆμ¬ μ μ‘νλ©°, μμ μΈ‘μμλ λμΌν μμ± λ€νμμΌλ‘ κ²μ¦νμ¬ μ€λ₯λ₯Ό νλ³ν©λλ€.
2οΈβ£ CRC κ³μ° κ³Όμ
βοΈ μ‘μ μΈ‘
1οΈβ£ λ°μ΄ν°(Message, M) μ€λΉ
- μ‘μ μκ° μ μ‘νλ €λ μ€μ λ°μ΄ν° λΉνΈμ€νΈλ¦Ό.
2οΈβ£ λ°μ΄ν° λ€μ μμ± λ€νμ P(x)μ μ°¨μ(n)λ§νΌ 0μ λΆμ
T = M Γ 2βΏ
3οΈβ£ Modulo-2 λλμ μν
T Γ· P(x) = Q (λͺ«), R (λλ¨Έμ§)
- μ¬κΈ°μ Rμ΄ λ°λ‘ CRC λλ¨Έμ§(FCS)μ λλ€.
4οΈβ£ μ μ‘ λ°μ΄ν° μμ±
T* = T + R
- XOR μ°μ°(Modulo-2 λ§μ )μΌλ‘ λΆμ.
βοΈ μμ μΈ‘
1οΈβ£ T* μμ ν λμΌν P(x)λ‘ λλμ μν**
T* Γ· P(x) = Q', R'
- Rβ = 0 β μ€λ₯ μμ.
- Rβ β 0 β μ€λ₯ λ°μ.
3οΈβ£ Modulo-2 μ°μ°μ νΉμ§
- λ§μ
(+)κ³Ό λΊμ
(-)μ΄ XORλ‘ λμΌ.
- μ) 1+1=0, 1+0=1, 0+0=0
- λλμ μ λ°λ³΅μ μΈ XOR μ°μ°μΌλ‘ ꡬν.
- λ°λΌμ CRC κ³μ°μ λμ§νΈ νλ‘μ νλ‘κ·Έλ¨ λͺ¨λμμ ν¨μ¨μ μΌλ‘ μν κ°λ₯.
4οΈβ£ 1λΉνΈ μ€λ₯ κ²μΆ
λ°μ΄ν° μ μ‘ μ€ λ¨μΌ λΉνΈκ° λ€μ§νλ μ€λ₯(μ: 1β0 λλ 0β1)κ° λ°μνλ©΄ μ€λ₯ λ€νμ E(x)=xα΅λ‘ λνλΌ μ μλ€.
- μ‘μ μκ° μ μ‘ν λ°μ΄ν° T*λ μ€κ³μ P(x)λ‘ λλμ΄λ¨μ΄μ§λλ‘ λ§λ€μ΄μ Έ μμ΄ μμ μκ° λλ΄μ λ λλ¨Έμ§κ° 0μ΄λ€.
- 1λΉνΈ μ€λ₯κ° λ°μνλ©΄:
T*' = T* + E(x)
(T*' Γ· P(x)) = (T* Γ· P(x)) + (E(x) Γ· P(x)) = 0 + (E(x) Γ· P(x))
- E(x)λ λ¨μΌνμ΄λ―λ‘ P(x)λ‘ λλμ΄λ¨μ΄μ§μ§ μμ β Rβ β 0 β μ€λ₯ κ²μΆ.
β CRCλ λ¨μΌ λΉνΈ μ€λ₯λ₯Ό 100% κ²μΆνλ€.
5οΈβ£ 2λΉνΈ λ° 3λΉνΈ μ€λ₯ κ²μΆ
CRC λ€νμμ ꡬ쑰μ λ°λΌ 2λΉνΈ, 3λΉνΈ μ€λ₯ κ²μΆλ ₯μ΄ κ²°μ λλ€.
- λλΆλΆμ μ μ€κ³λ CRC λ€νμμ κ±°μ λͺ¨λ 2λΉνΈ μ€λ₯λ₯Ό κ²μΆ κ°λ₯.
- μΌλΆ CRC λ€νμμ 3λΉνΈ μ€λ₯λ λμ κ²μΆλ₯ μ 보μ₯.
- Burst Error(μ°μλ λΉνΈ μ€λ₯)λ CRC μ°¨μμ λ°λΌ νΉμ κΈΈμ΄κΉμ§ 100% κ²μΆμ΄ κ°λ₯.
β CRCμ μ€λ₯ κ²μΆ λ₯λ ₯μ μμ± λ€νμ P(x)μ μ€κ³μ λ¬λ €μλ€.
6οΈβ£ CRC λ€νμμ μ€μμ±
- μμ± λ€νμ P(x)κ° 1(xβ°)μ΄λΌλ©΄ μ΄λ€ λ°μ΄ν°λ λλ¨Έμ§κ° νμ 0 β μ€λ₯ κ²μΆ λΆκ°λ₯.
- λ°λΌμ CRC μ€κ³μμλ λ°λμ μ°¨μκ° 1 μ΄μμΈ λ€νμμ μ νν΄ κ²μΆλ ₯μ ν보.
- μμ:
- CRC-4: xβ΄ + x + 1 (0b10011)
- CRC-8: xβΈ + xΒ² + x + 1 (0x07)
- CRC-16: xΒΉβΆ + xΒΉΒ² + xβ΅ + 1 (0x1021)
- CRC-32: xΒ³Β² + β¦ + 1 (0x04C11DB7)
μ΄λ¬ν λ€νμλ€μ IEEE, ITU λ± νμ€ν κΈ°κ΄μμ μ€λ₯ κ²μΆ μ±λ₯μ μνμ μΌλ‘ λΆμν ν μ±νλ κ²μ΄λ€.
7οΈβ£ CRCμ μνμ νν μμ½
λ¨κ³ | μμ |
---|---|
μ‘μ λ°μ΄ν° μ€λΉ | T = M Γ 2βΏ |
λλ¨Έμ§ κ³μ° | R = T mod P(x) |
μ μ‘ λ°μ΄ν° | T* = T + R |
μμ μ κ²μ¦ | T* Γ· P(x) = Rβ |
μ€λ₯ νλ³ | Rβ = 0 β μ μ, Rβ β 0 β μ€λ₯ |
8οΈβ£ κ²°λ‘
β
CRCλ Modulo-2 μ°μ°μ μ¬μ©νμ¬ λ°μ΄ν° μ μ‘ μ€ λ°μν μ μλ λ¨μΌ λΉνΈ μ€λ₯, λ€μ€ λΉνΈ μ€λ₯(2λΉνΈ, 3λΉνΈ) λ° Burst Errorλ₯Ό κ²μΆνλ κ°λ ₯ν λ°©μμ΄λ€.
β
CRCκ° μ€λ₯λ₯Ό μ κ²μΆνλ μ΄μ λ μμ± λ€νμ P(x)λ₯Ό μ΄λ»κ² μ ννλλμ λ¬λ €μμΌλ©°, νμ€ CRC λ€νμμ μ΄λ¬ν μ€λ₯ κ²μΆ λ₯λ ₯μ κ·Ήλννλλ‘ μ€κ³λμλ€.
β
λ°λΌμ CRCλ λ€νΈμν¬ ν΅μ , λ°μ΄ν° μ μ₯ μ₯μΉ, 무μ ν΅μ λ±μμ λ°μ΄ν° 무결μ±μ κ²μ¦νλ λ° λ§€μ° μ€μν μν μ μννλ€.
νμνλ€λ©΄ μ€μ μμ (Modulo-2 λλμ )λ νΉμ CRC λ€νμ μ€κ³ κ³Όμ κΉμ§ μμΈν μΆκ°λ‘ λ€λ£° μ μμ΄μ. μΈμ λ λκΈμ΄λ λ¬Έμμ£ΌμΈμ! π