본문 바로가기
source-code/network

네트워크 기초 정리 (IP 주소, IPv4, Subnet-mask)

by mattew4483 2024. 1. 10.
728x90
반응형

IP 주소

IP 주소는 Host에 대한 식별자를 의미합니다.

이때 Host는, 인터넷에 연결될 컴퓨터를 의미합니다.

 

IP 주소는 IPv4와 IPv6라는 두 버전이 존재합니다.

두 버전의 가장 큰 차이는 → 주소 길이! (IPv4 : 32bit 주소 체계, IPv6 : 128bit 주소 체계)

 

IPv4

현재 가장 보편적으로 사용되고 있는 IP 버전입니다.

터미널창에 윈도우 기준 ipconfig, 맥 기준 ifconfig 명령어를 통해 자신의 IP주소를 확인할 수 있습니다.

IP 주소는 . 을 기준으로 8bit씩 끊어서 표현합니다.

(즉 각 자릿수에는 0에서 255까지의 숫자가 가능합니다)

 

Subnet-mask (Net-mask)

Subnet-mask는 IPv4에서 network ID의 길이를 의미합니다.

 

그렇다면 network ID란 무엇일까요?

→ IPv4 주소를 임의로 두 부분으로 나누었을 때, 그 앞부분을 의미합니다.

따라서 Subnet-mask가 24bit라면,

Host ID는 IP주소 32bit - 24bit = 8bit가 되겠죠!

 

IP 주소와 Subnet-mask로 Network ID 구하기

따라서 IP 주소와 Subnet-mask를 통해, 해당 IPv4의 networkID와 HostID를 알 수 있습니다.

그 방법은 → 두 값을 AND bit 연산해 구할 수 있습니다!

 

만약 IPv4 = 192.168.60.14, Subnet-mask = 255.255.255.0이라면...

// 첫 앞 8bit 연산 => 192와 255를 AND bit 연산
// 1) 192를 2진수로 변환 = 0000/0000/1100/0000
// 2) 255를 2진수로 변환 = 1111/1111/1111/1111
// 3) 두 값을 AND 연산 = 0000/0000/1100/0000 
// => 192

// 두번째 8bit 연산 => 168와 255를 AND bit 연산
// (생략...)
// => 168

// 세번째 8bit 연산 => 60와 255를 AND bit 연산
// (생략...)
// => 60

// 네번째 8bit 연산 => 14와 0을 AND bit 연산
// 1) 14를 2진수로 변환 = 0000/0000/0000/1110
// 2) 0를 2진수로 변환 = 0000/0000/0000/0000
// 3) 두 값을 AND 연산 = 0000/0000/0000/0000 
// => 0

연산의 결과는 192.168.60.0 → 해당 값이 해당 IPv4주소의 Network ID가 되는 것이죠!

물론 이를 통해 Host ID가 14임도 확인할 수 있습니다.

 

CIDR 표기법

만약 Subnet-mask가 255.255.255.0인 경우, 해당 값은 8bit x 3 = 24bit입니다.

이때 IPv4주소를 Subnet-mask와 함께 표기할 경우

192.168.219.104/24와 같이 표기할 수도 있습니다. → 이것이 CIDR 표기법!

 

즉 만약 192.168.60.14/24로 표기된 IPv4 주소가 있다면

1) Subnet-mask가 24bit구나!

2) 24bit = 8bit x 3 → 앞 3자리가 NetworkID 의미하는구나!

3) HostID는 남은 뒤 1자리를 의미하는구나!

를 알 수 있게 되는 것이죠.

 

예제

정보처리기사 2022년 2회차 실기 문제입니다.

 

9번 IP주소가 139.127.19.132이고 서브넷마스크 255.255.255.192일 때 아래의 답을 작성하시오

(1) 괄호안에 들어갈 네트워크 주소 (139.127.19. ( ))
(2) 해당 네트워크 주소와 브로드캐스트 주소를 제외한 호스트 개수

 

네트워크 주소는 → IPv4주소와 Subnet-mask를 AND bit연산해 구할 수 있습니다.

앞 3자리는, 서브넷마스크가 1111/11111/1111 이므로 139.127.19가 될 테고...

 

마지막 자리는 132와 192를 AND bit 연산하면 구할 수 있습니다.

1) 132 2진수로 변환 -> 0000/0000/1000/0100
2) 192 2진수로 변환 -> 0000/0000/1100/0000
3) AND 연산 -> 0000/0000/1000/0000
=> 128!

참고

https://www.youtube.com/watch?v=gOMljj6K2V0&t=3s

728x90
반응형