Skip to Content
독학사독학사 3단계컴퓨터네트워크02. 이진수와 주소 표기의 기초

이번 문서의 목표: 이 파일을 다 읽으면 192.168.1.10/24 같은 표기를 보고 각 숫자가 이진수로 무엇을 뜻하는지, 슬래시 뒤의 숫자가 무엇을 세는 것인지 손으로 풀어 쓸 수 있다.

왜 이진수부터 다시 보는가

컴퓨터네트워크의 주소 체계(12·13편의 IPv4, 16편의 IPv6)와 서브네팅 계산은 전부 2진수 위에서 돌아갑니다. 시험 문제는 십진수로 된 IP 주소를 보여 주고 “이 주소가 속한 네트워크는?”, “호스트는 몇 개까지 쓸 수 있는가?”를 묻는데, 이 질문에 답하려면 머릿속에서 십진수를 이진수로, 다시 이진수를 십진수로 빠르게 왕복할 수 있어야 합니다. 2단계에서 컴퓨터 구조를 배웠다면 이진수 자체는 낯설지 않겠지만, 네트워크에서는 8자리씩 끊어 읽는 습관이 특히 중요하므로 이 편에서 그 감각을 다시 잡습니다.

쉽게 말하면: 이 편은 계산기가 아니라 “8자리 이진수 한 토막을 보면 바로 십진수가 떠오르는” 반사 신경을 만드는 훈련입니다.

1. 2진수(binary number) 기초

2진수는 0과 1, 두 가지 숫자만으로 값을 표현하는 방식입니다. 우리가 일상에서 쓰는 10진수(decimal number)는 자리마다 10의 거듭제곱(1, 10, 100, …)의 가중치를 가지는데, 2진수는 자리마다 2의 거듭제곱(1, 2, 4, 8, …)의 가중치를 가집니다.

예를 들어 2진수 1011은 다음과 같이 풉니다.

10112=(1×23)+(0×22)+(1×21)+(1×20)1011_2 = (1 \times 2^3) + (0 \times 2^2) + (1 \times 2^1) + (1 \times 2^0)
  • 23=82^3 = 8, 22=42^2 = 4, 21=22^1 = 2, 20=12^0 = 1 (지수 0인 자리는 항상 1)
10112=8+0+2+1=11101011_2 = 8 + 0 + 2 + 1 = 11_{10}

즉 2진수 1011은 10진수 11입니다. 반대로 10진수를 2진수로 바꿀 때는 2로 계속 나누어 나머지를 거꾸로 읽는 방법을 씁니다. 10진수 13을 예로 들면:

나누는 값나머지
13 ÷ 261
6 ÷ 230
3 ÷ 211
1 ÷ 201

나머지를 아래에서 위로 읽으면 1101이 됩니다. 즉 1310=1101213_{10} = 1101_2입니다.

작은 예시 — 0부터 15까지의 대응을 표로 익혀 두면 뒤에 나올 계산이 훨씬 빨라집니다.

10진수2진수(4자리)10진수2진수(4자리)
0000081000
1000191001
20010101010
30011111011
40100121100
50101131101
60110141110
70111151111

자주 틀리는 점: 2진수 자릿수를 셀 때 맨 오른쪽 자리를 212^1로 착각하는 경우가 있습니다. 맨 오른쪽 자리는 항상 20=12^0 = 1부터 시작합니다.

2. 옥텟 — 8비트씩 끊어 읽기

비트(bit)는 0 또는 1 하나를 가리키는 가장 작은 단위입니다. 옥텟(octet)은 비트 8개를 묶은 단위로, “8”을 뜻하는 접두어 옥트(oct-)에서 온 이름입니다. IPv4 주소 전체는 32비트인데, 이를 사람이 읽기 쉽게 8비트씩 네 옥텟으로 잘라서 표기합니다.

옥텟 하나가 표현할 수 있는 값의 범위는 8비트가 모두 0일 때(00000000)부터 모두 1일 때(11111111)까지입니다.

111111112=128+64+32+16+8+4+2+1=25511111111_2 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
  • 각 항은 27,26,25,24,23,22,21,202^7, 2^6, 2^5, 2^4, 2^3, 2^2, 2^1, 2^0에 대응하는 값(128, 64, 32, 16, 8, 4, 2, 1)이다.

따라서 옥텟 하나는 0부터 255까지, 총 256가지 값을 표현합니다. IP 주소에서 각 자리가 항상 0–255 범위인 이유가 바로 이것입니다.

쉽게 말하면: 옥텟은 “이진수 8자리를 한 뭉치로 묶은 상자”이고, 그 상자 안에 담을 수 있는 값은 최대 255까지입니다.

자주 틀리는 점: 옥텟의 최댓값을 256이라고 착각하는 경우가 매우 많습니다. 8비트로 표현 가능한 가짓수는 256개(282^8)이지만, 0부터 세기 시작하므로 최댓값은 255입니다.

3. 16진수(hexadecimal) — IPv6와 MAC 주소를 위한 준비

16진수는 0–9와 A–F(A=10, B=11, …, F=15) 총 16개 기호로 값을 표현하는 방식입니다. 16진수 한 자리는 정확히 2진수 4자리(비트 4개)에 대응하므로, 2진수를 16진수로 바꿀 때는 4비트씩 끊어서 각각을 16진수 한 글자로 바꾸면 됩니다.

2진수(4비트)16진수2진수(4비트)16진수
0000010008
0001110019
001021010A
001131011B
010041100C
010151101D
011061110E
011171111F

예를 들어 2진수 10110101을 16진수로 바꾸려면 4비트씩 끊어 10110101로 나눕니다. 1011은 위 표에서 B, 01015이므로 답은 B5입니다.

16진수는 이 과목에서 MAC 주소(48비트를 16진수 12자리로 표기, 예: 00-1A-2B-3C-4D-5E)와 IPv6 주소(128비트를 16진수로 표기, 16편에서 다룸)를 읽을 때 바로 필요합니다. 옥텟 단위 2진수↔10진수 변환과 함께, 4비트 단위 2진수↔16진수 변환도 반사적으로 되어야 합니다.

4. IP 주소의 점 십진 표기 읽기

IPv4 주소는 32비트 이진수이지만, 32자리 0과 1을 그대로 쓰면 사람이 읽고 쓰기 매우 어렵습니다. 그래서 8비트씩(옥텟 단위) 네 토막으로 잘라 각 토막을 10진수로 바꾸고, 토막 사이를 점(.)으로 잇는 표기법을 씁니다. 이를 점 십진 표기법(dotted decimal notation)이라고 합니다.

예를 들어 32비트 이진수 11000000.10101000.00000001.00001010(점은 읽기 편하도록 옥텟 경계에 표시)을 점 십진 표기로 바꾸면:

  • 첫 옥텟 11000000 = 128+64=192128+64 = 192
  • 둘째 옥텟 10101000 = 128+32+8=168128+32+8 = 168
  • 셋째 옥텟 00000001 = 11
  • 넷째 옥텟 00001010 = 8+2=108+2 = 10

따라서 이 32비트 값은 192.168.1.10으로 표기됩니다. 이 주소는 12편에서 다룰 사설 IP 주소 대역의 대표적인 예시이기도 합니다.

쉽게 말하면: 점 십진 표기는 “32자리 이진수를 8자리씩 잘라 각각 십진수로 옮겨 적고 점으로 이어 붙인 것”입니다. 컴퓨터는 여전히 32비트 이진수로 계산하고, 점 십진 표기는 사람을 위한 번역일 뿐입니다.

자주 틀리는 점: 점 십진 표기의 각 자리가 “그냥 임의의 숫자 네 개”라고 생각하는 경우가 있습니다. 각 자리는 반드시 8비트로 표현 가능한 0–255 범위 안에 있어야 하며, 256 이상이 적힌 IP 주소는 애초에 성립하지 않는 잘못된 주소입니다.

5. 서브넷 마스크 표기 기초

서브넷 마스크(subnet mask)는 32비트 IP 주소 중 앞부분 몇 비트가 “네트워크를 구분하는 부분”이고 나머지가 “호스트를 구분하는 부분”인지를 나타내는 32비트 값입니다. 자세한 계산(네트워크 주소·브로드캐스트 주소·호스트 수 구하기)은 13편에서 다루지만, 여기서는 표기법 두 가지만 먼저 익힙니다.

  1. 점 십진 표기 마스크: IP 주소와 같은 형식으로, 네트워크 부분에 해당하는 비트를 전부 1로, 호스트 부분에 해당하는 비트를 전부 0으로 채운 뒤 점 십진 표기로 바꾼 것. 예를 들어 앞 24비트가 네트워크 부분이면 11111111.11111111.11111111.00000000이 되고, 이를 옥텟별로 10진수로 바꾸면 255.255.255.0입니다.
  2. CIDR 표기(슬래시 표기): IP 주소 뒤에 슬래시(/)와 숫자를 붙여, 네트워크 부분 비트가 몇 개인지를 바로 적는 방식. 위와 같은 24비트짜리 마스크는 /24로 씁니다. 192.168.1.10/24라고 쓰면 “이 주소는 앞 24비트가 네트워크를 구분하는 부분”이라는 뜻입니다.
슬래시 표기의미(네트워크 비트 수)대응하는 점 십진 마스크
/88255.0.0.0
/1616255.255.0.0
/2424255.255.255.0
/3030255.255.255.252

CIDR(Classless Inter-Domain Routing, 클래스 없는 도메인 간 라우팅)이라는 이름은 과거에 클래스(A·B·C) 단위로만 네트워크를 나누던 방식에서 벗어나, 비트 단위로 자유롭게 네트워크 크기를 정할 수 있게 되었다는 데서 왔습니다. 클래스 기반 주소 체계와 CIDR의 관계는 12편에서 다시 다룹니다.

쉽게 말하면: /24는 “32비트 중 앞 24개는 동네(네트워크) 이름, 나머지 8개는 그 동네 안에서의 집 번호(호스트)“라는 뜻입니다.

자주 틀리는 점: /24를 “IP 주소가 24개”라거나 “옥텟이 24개”라는 식으로 오해하는 경우가 있습니다. 슬래시 뒤 숫자는 비트 개수이지 주소 개수나 옥텟 개수가 아닙니다.

핵심 정리

  • 2진수는 자리마다 2의 거듭제곱 가중치를 가지며, 10진수와 서로 변환할 수 있어야 한다.
  • 옥텟은 8비트 묶음이며 0–255(256가지 값)를 표현한다. 최댓값은 255이지 256이 아니다.
  • 16진수 한 자리는 2진수 4자리에 대응하며, MAC 주소·IPv6 표기의 기초가 된다.
  • 점 십진 표기는 32비트 IP 주소를 8비트씩 잘라 십진수로 바꾸고 점으로 이은 사람을 위한 표기다.
  • 서브넷 마스크는 점 십진 표기 또는 CIDR(/n) 표기로 나타내며, /n의 n은 네트워크 부분 비트 수를 뜻한다.

마무리 복습

문제 14지선다
2진수 00010111을 10진수로 바르게 변환한 것은?
문제 24지선다
옥텟(octet) 하나가 표현할 수 있는 값의 범위로 옳은 것은?
문제 34지선다
2진수 11100101을 16진수로 바르게 변환한 것은?
문제 44지선다
IP 주소 표기 192.168.1.10/24에서 슬래시 뒤의 24가 의미하는 것으로 옳은 것은?
문제 54지선다
다음 중 옳지 않은 설명은?

참고 자료

Last updated on