์ฒดํฌ์ฌ (checksum)
์ฒดํฌ์ฌ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๊ฒ์ฆํ๊ธฐ ์ํ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋๋ ์ผ์ด๋ค.
๋คํธ์ํฌ ์ ์ก์ด๋ ๋์คํฌ ์ ์ก ๋ฑ์์ ๋ฐ์ํ ์ ์๋ ์์ค์ ๊ฐ์งํ๊ณ ๋์ํ๊ธฐ ์ํ ์๋จ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
์์ค ๋ฌธ์
๋ฐ์ดํฐ ์์ค๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ ๋๊ฐ ํ๋์จ์ด์ ๋ณธ์ง์ ์ธ ํ๊ณ์์ ๋น๋กฏ๋๋ค.
๋ชจ๋ I/O์ ์ ์ก ๊ณผ์ ์์ ์์ค์ด๋ ์๊ณก์ด ๋ฐ์ํ ์ ์๋ค. ๋ฌผ๋ฆฌ์ ์ธ ํ๊ณ๋ก ์ธํ ๋ช๊ฐ์ง ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ๋น์ฅ ๋คํธ์ํฌ์ ๋ฐ์ดํธ๋ฅผ ์ ์กํ๋๋ผ๋, ์ฌ์ค ์ด๊ฒ ์ ๋๋ก ์ ์ก๋๋ค๋ ๋ณด์ฅ์ ์๋ค.
๋น์ฅ ๋นํธ 4๊ฐ๋ฅผ ๋ณด๋ด๋๋ผ๋
์๋์น ์๊ฒ ์ด๋ ๊ฒ ๊ฐ์ด ์๊ณก๋ ์ ์๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์์ธ์ ๋ค์ํ๋ค.
๋คํธ์ํฌ์ ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ์ผ์ด๋ธ๋ผ๋ฆฌ ์ ๊ธฐ์ ๊ฐ์ญ์ ํด์ ๊ผฌ์ผ ์๋ ์๊ณ , ์ฅ๊ฑฐ๋ฆฌ ์ ์ก์์ ์ ํธ๊ฐ ์ฝํด์ ธ์ ํด์์ ์๋ชป ํ ์๋ ์๋ค. ๋ผ์ฐํฐ ๋ฌธ์ ๋ก ํจํท์ด ๋ค์์ผ ์๋ ์๋ค.
๋์คํฌ์ ๊ฒฝ์ฐ์๋ ๋์คํฌ์ ๋ฌผ๋ฆฌ์ ์์์ด๋ ์๊ธฐ๋ ฅ ๊ฐ์(HDD), ๋์ ์จ๋, ์ ์ ์ฐจ๋จ ๋ฑ์์ ๊ฐ์ ์๊ณก์ด ๋ฐ์ํ๊ณค ํ๋ค. ์ด ๋ํ ๋๋ฌผ์ง ์๋ค.
์ด๊ฑด ๋ณธ์ง์ ์ผ๋ก ํ๋์จ์ด ์์ค์์๋ ์์ ํ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๋ค. ์ ๋ฐ๊ฑธ ์ด๋ป๊ฒ ๋ง๊ฒ ๋๊ฐ..?
์ด์ฐ๋์๋ ๋ชจ๋ ์ปดํจํฐ ์ฅ๋น๋ค์ ๋ฌผ๋ฆฌ์ ์ธ ํ์ค ์์ ์กด์ฌํ๋ค.
์ด๋ฐ ์์ค์ ๋๊ฐ ๋ฐ์ ํ๋ฅ ์ด ์์ฒญ ๋์ง ์์ง๋ง, ์์ง๋ ์๋ค.
๋คํธ์ํฌ ์ ์ก์ ์์ค๋ฅ ์ด ๋๊ฐ 0.0001% ~ 0.0000001% ์ ๋๋ก ๊ฐ์ฅ ๋ฐ์๋ฅ ์ด ๋์ผ๋ฉฐ, ๊ทธ ๋ค์์ผ๋ก HDD, SSD, RAM ์์ผ๋ก ์์ ์ ์ด๋ค.
๊ทธ๋์ ์ฌ์ค 1GB ๋จ์์ ๋คํธ์ํฌ ์ ์ก๋ง ํ๋๋ผ๋, ํ๋ฅ ์ ์ผ๋ก ๋นํธ ์ด์์ด ๋ช๊ฐ์ฏค์ ๋ฐ๋์ ์๊ธด๋ค. ๋คํธ์ํฌ ํ๊ฒฝ์ด ์ฉ ์ข์ง ์๋ค๋ฉด ์์ค ํ๋ฅ ์ ๊ธฐํ๊ธ์์ ์ผ๋ก ์์นํ๋ค.
์ฒดํฌ์ฌ์ ์๋ฆฌ
์ฒดํฌ์ฌ์ ์ด๋ฌํ ๋ฐ์ดํฐ์ ์์ค์ ๊ฐ์งํ๊ธฐ ์ํ ์๋จ์ด๋ค.
ํผ๋ํด์๋ ์๋๋๋ฐ, ์ด๊ฑด ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๊ธฐ ์ํ ๊ฒ์ด์ง, ํด๊ฒฐํ๊ธฐ ์ํ ์๋จ์ด ์๋๋ค. ์ฒดํฌ์ฌ์์ ๋ฌธ์ ๊ฐ ๊ฐ์ง๋๋ฉด ๋ณ๋์ ์๋จ์ ์ฌ์ฉํด์ ์ค๋ฅ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ๋ค.
๋๋ต์ ์ธ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
-
์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฐ์ฐ์ ํด์ "์ฒดํฌ์ฌ"์ด๋ผ๋ ๊ฐ์ ๋ง๋ ๋ค.
-
๋ฐ์ดํฐ์ ์ฒดํฌ์ฌ์ ๋์์ ์ ์กํ๋ค.
-
์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ์ฐ์ฐ์ ํด์ "์ฒดํฌ์ฌ(new)"์ ๋ค์ ๋ง๋ค๊ณ , ๊ธฐ์กด์ "์ฒดํฌ์ฌ(old)"๊ณผ ๋น๊ตํ๋ค.
-
์ฒดํฌ์ฌ์ด ์ผ์นํ์ง ์๋๋ค๋ฉด ๋ญ๊ฐ ๋ฐ์ดํฐ๊ฐ ์์ค๋ ๊ฒ์ด๋ค.

๊ทผ๋ฐ ์ฌ์ฉ์ ์์์ ์์งํด์ผํ ๊ฒ์, ์ฒดํฌ์ฌ ์์ฒด๊ฐ 100% ์ ํํ์ง ์๋ค๋ ๊ฒ์ด๋ค.
๋ฐ์ดํฐ๊ฐ ๊ธฐ๊ฐ ๋งํ๊ฒ ๊ผฌ์ด๋ฉด, ๋งค์ฐ ๋ฎ์ ํ๋ฅ ๋ก ์ฒดํฌ์ฌ ๊ฒ์ฆ์ ์คํจํ ์ ์๋ค. ๊ทธ๋ฌ๋๊น ๋ฐ์ดํฐ๊ฐ ์์ค๋์๋๋ฐ๋ ์์ค ์ฌ๋ถ๋ฅผ ๊ฐ์งํ์ง ๋ชปํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์ด ํ์์ ์ถฉ๋(collision)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด๋ฐ ๋ถ์์ ํ ๋ถ๋ถ์ Hash์ ๋น์ทํ๋ค.
๊ทธ๋์ ์ฒดํฌ์ฌ๋ง์ ์์ ํ๊ฒ ๋งน์ ํด์๋ ์ ๋์ง๋ง, ์ค์ฉ์ ์ธ ๊ตฌํ๋ค์์๋ ์คํจ์จ์ด ๋งค์ฐ ๋ฎ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ๋ฌด์ํ๋ ๊ฒฝ์ฐ๋ ๋ง๋ค.
์ค์ ๋ก TCP, Ethernet ๋ฑ์ ๋คํธ์ํฌ ๋ ์ด์ด๋ ์ฒดํฌ์ฌ ์ฒดํฌ๋ฅผ ํ์ง๋ง, ์ฒดํฌ์ฌ ์ถฉ๋์ ๋ฌด์ํ๋ค. ๊ทธ๋์ ๋งค์ฐ ๋ฎ์ ํ๋ฅ ๋ก ์์ค๋ ๋ฐ์ดํฐ๊ฐ ํต๊ณผ๋ ์ ์์ง๋ง, ๋๋ผ๊ธฐ๋ ์ด๋ ต๋ค.
์ฒดํฌ์ฌ์ ๊ตฌํ ๋ฐฉ์๋ค
๊ทธ๋ฆฌ๊ณ ์ฒดํฌ์ฌ์ ๊ตฌํ ๋ฐฉ์์ ํ๊ฐ์ง๊ฐ ์๋๋ค.
์ฌ๋ฌ๊ฐ์ง ๊ตฌํ ๋ฐฉ์์ด ์๊ณ , ์ํฉ์ ๊ณ ๋ คํด์ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ ํํด์ผ ํ๋ค.
์ฒดํฌ์ฌ์ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์ผ๋ง๋ ํฌ๊ฒ ์ก์์ง, ์ฒดํฌ์ฌ์ ์์ฑ ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ป๊ฒ ํ ์ง๋ถํฐ ์ ๋ถ ์ ํด์ง ๊ฒ์ด ์๋ค.
์ฌ๊ธฐ์๋ ๊ฐ์ฅ ๋ํ์ ์ธ ๊ตฌํ ๋ฐฉ์ ๋ช๊ฐ์ง๋ง ๊ฐ๋จํ ๋ค๋ค๋ณธ๋ค.
๋จ์ ํฉ์ฐ ๊ณ์ด
๊ฐ์ฅ ๋จ์ํ ๊ตฌํ ๋ฐฉ์์, ๊ทธ๋ฅ ๋ชจ๋ ๋ฐ์ดํฐ์ ๋ฐ์ดํธ๋ฅผ ๋ํ๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์๋ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ดํธ๋ก ๋ํด์ ๊ทธ ์๋ซ๋จ์๊ฐ ์๋ฆฌ๋๋ก ํ๋ค.
๋งค์ฐ ๊ฐ๋ณ๊ณ ๋น ๋ฅด์ง๋ง, ์ถฉ๋ ์ ํญ์ฑ์ด ๋งค์ฐ ๋ฎ๋ค๋ ๋จ์ ์ด ์๋ค. ์ด์ฒ๋ผ 1๋ฐ์ดํธ์ธ ๊ฒฝ์ฐ์๋ ๋ฎ์ง ์์ ํ๋ฅ ๋ก ์ถฉ๋์ด ๋ฐ์ํ ์ ์๋ค. ์ฒดํฌ์ฌ์ ๋ฐ์ดํธ ํฌ๊ธฐ๋ฅผ ํค์ธ์๋ก ์ถฉ๋ ์ ํญ์ฑ์ด ๋๊ธด ํ๊ฒ ์ง๋ง, ์์ ํ์ง ์๋ค.
์ค๋ฌด์์๋ ๊ฑฐ์ ์ฐ์ด์ง ์๋๋ค.
๊ผญ ๋ง์
์ด ์๋์ด๋ ๋๋ค. XOR ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ ์๋ ์๋ค.
๋จ์ ๋ง์
๊ณผ ๋น๊ตํด์ ํฌ๊ฒ ๋ฌ๋ผ์ง ๊ฒ์ ์์ง๋ง, ์ถฉ๋ ์ ํญ์ฑ์ด ์์ฃผ ์ฝ๊ฐ ๋ ๋ซ๊ธด ํ๋ค.
๊ทธ๋๋ ์ค๋ฌด์์๋ ๊ฑฐ์ ์ฐ์ด์ง ์๋๋ค.
ํน์, ๋ง์
๊ธฐ๋ฐ์ ๋๋จธ์ง์
์ ์ฌ์ฉํด์ ์ฒดํฌ์ฌ์ ๋ง๋ค๊ธฐ๋ ํ๋ค.
์ด ๋ฐฉ๋ฒ์ ์ค์ ๋ก UDP, IP ํค๋ ๊ณ์ธต์์ ์ฌ์ฉํ๋ ์ฒดํฌ์ฌ ๊ธฐ๋ฒ์ด๋ค. ์ถฉ๋ ์ ํญ์ฑ์ด ๋์ง ์์ง๋ง, ๊ฐ๋ณ๊ณ ์ฑ๋ฅ์ด ์ข๊ธฐ ๋๋ฌธ์ ์ด๋ค.
CRC (Cyclic Redundancy Check)
CRC๋ ๋ฑ ์ฒดํฌ์ฌ ์ฉ๋๋ก ๊ณ ์๋, ๊ฐ๋ณ๊ณ ๋น ๋ฅธ ์ฒดํฌ์ฌ ํด์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
์ฒดํฌ์ฌ์ ์ต์ข
๋นํธ ํฌ๊ธฐ๋ณ๋ก CRC-8, CRC-16, CRC-32, CRC-64 ๋ฑ์ ๊ตฌํ์ฒด๊ฐ ์กด์ฌํ๋ค.
๋น์ฐํ์ง๋ง ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์ถฉ๋ ์ ํญ์ฑ์ด ์ปค์ง๋ค.
๋์ฒด๋ก๋ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ๊ท ํ์ด ๊ด์ฐฎ์ 32๋นํธ๋ฅผ ๊ถ์ฅํ๋ค.
๋งค์ฐ ๋ง์ I/O ๊ด๋ จ ๊ตฌํ์ฒด์์ CRC ๊ธฐ๋ฐ์ ์ฒดํฌ์ฌ์ ํ์ฉํ๋ค. ๊ผฝ์๋ฉด ๋๋ ์์ง๋ง ๋๋ณด์๋ฉด
-
gzip์ ์์ถํ ๋ ํ์ผ ๊ธฐ๋ฐ์ผ๋ก CRC-32 ์ฒดํฌ์ฌ์ ๋ง๋ค์ด์ ํจ๊ป ์ ์ฅํ๋ค.
-
์์ดํ์ด๋ ํจํท ์ ์ก์ CRC-32 ์ฒดํฌ์ฌ์ ์ด๋ค.
-
์ด๋๋ท๋ ํจํท ์ ์ก์ CRC-32 ์ฒดํฌ์ฌ์ ์ด๋ค.
-
๋ธ๋ฃจํฌ์ค๋ ํจํท ์ ์ก์ CRC-16 ์ฒดํฌ์ฌ์ ์ด๋ค.
-
๋ฆฌ๋ ์ค ํ์ผ์์คํ (ext4)์ ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ์ CRC-32C๋ฅผ ์ด๋ค.
-
PNG ์ด๋ฏธ์ง ํฌ๋งท์ ์ฒญํฌ๋ง๋ค CRC-32 ์ฒดํฌ์ฌ์ ๋ฐ์๋๋๋ค.
-
PostgreSQL์ WAL ์์ค์์ CRC-32C ์ฒดํฌ์ฌ์ ๋ฐ์์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ฒดํฌํ๋ค.
๋ฒ์ฉ ํด์ ํจ์ ์ฌ์ฉ
์ ๋ง ๊ฐ๋ ฅํ ์ถฉ๋ ์ ํญ์ฑ์ด ํ์ํ๋ค๋ฉด, ๋งค์ฐ ํฐ ํฌ๊ธฐ์ ํด์๊ฐ์ด ๋์ค๋ ๋ฒ์ฉ ํด์๋ฅผ ์ฐ๋ ๊ฒ๋ ๋ฐฉ๋ฒ์ด๋ค.
MD5, SHA256 ๊ฐ์ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๋งค์ฐ ๊ธด ๊ธธ์ด์ ์ฒดํฌ์ฌ์ ๊ฐ๋จํ๊ฒ ์ป์ ์ ์๋ค.

๋งค์ฐ ํฌ๊ณ ์์ฑ๋ ๋๋ฆฌ์ง๋ง, ํฌ๊ธฐ๊ฐ ํฐ๋งํผ ์ถฉ๋ ํ๋ฅ ์ด ๋งค์ฐ ๋ฎ๋ค๋ ์ฅ์ ์ด ์๋ค.
์ค์ ๋ก๋, ์ฑ๋ฅ๋ณด๋ค ๋ฌด๊ฒฐ์ฑ์ด ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์
๋ ๋ฒจ์์๋ SHA-256 ํด์๋ก ์ต์ข
๊ฒ์ฆ์ ํ๊ณค ํ๋ค.
์ด๊ฑฐ ๋ง๊ณ ๋ ๋ช๊ฐ์ง ๋ณ์ข /๋ณํ ์๊ณ ๋ฆฌ์ฆ๋ค์ด ์์ง๋ง, ๋์ ๋ฐฉ์์ด๋ ๊ฐ๋ ์ด ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค.