🔗 프로세스 스케줄링 문제 풀기 🔗 페이지 교체 알고리즘 문제 풀기
*이 글에서의 ip주소는 ipv4를 기준으로 한다
기본적으로 ip주소는 네트워크 ID + 호스트 ID로 구성된다.
ip주소의 길이는 총 32bit(= 2^32)인데, 이 길이를 네트워크 ID 와 호스트 ID가 8비트 단위로 나누어 쓰게 된다.
예를 들어 네트워크 ID가 24bit를 가진다면 호스트 ID는 32 - 24 = 8bit 만큼을 쓸 수 있다.
ip클래스는 네트워크 ID 와 호스트 ID가 8비트 단위로 나뉘는 범위에 따라 결정된다.
아래 그림은 정보처리기사 시험에서 주로 다뤄지는 클래스를 정리한 것이다.
A클래스는 8bit의 네트워크 id를 할당하고, 나머지 24bit는 호스트 id에 할당한다.
B클래스는 32bit를 각 16bit씩 나누어 네트워크 id와 호스트 id에 할당한다.
C클래스는 네트워크 id에 24bit를, 8bit를 호스트 id에 할당한다.
이런 차이가 있다고 알아두고 아래의 표를 참고하자.
서브넷팅은 네트워크 분할 작업이다. 서브넷팅은 왜 필요할까?
예를 들어 기업a에서 ip주소를 100개 요구했다고 하자.
그러면 기본적으로 C클래스에서 가용 가능한 ip주소는 2^8 = 256개 중에서 사용하지 못하는 2개의 주소를 뺀 254개인데, 254에서 100개를 줘버리고 나면 남은 154개는 사용되지 못한 채로 낭비된다. 이 낭비를 막기 위해 나온 개념이 서브넷 마스크이다.
정리하자면 서브넷 마스크는 IP 주소를 네트워크 및 호스트 주소와 분리하는 것을 말한다.
예로 192.168.10.100이라는 ip주소를 가진다고 해보자.
위의 그림처럼 각 자릿수는 8비트(=1옥탯)씩 가진다. 여기서 네트워크 ID 와 호스트 ID가 나뉘어진 것을 볼수 있는데, 위의 그림은 192.~의 대역수를 가진 C클래스(표 참고)를 나타낸다.
각 자릿수는 점(.)을 기준으로 나누며, 자릿수마다 8비트의 공간을 가진다. C클래스의 기본 서브넷 마스크는 255.255.255.0인데, 이를 CIDR(사이더) 표기법*으로 나타내면 192.168.10.100/24로 표기할 수 있다.
CIDR(사이더) 표기법*
클래스 없는 도메인간 라우팅 기법
/24는 24비트를 네트워크 id로 쓰겠다는 뜻이다. 나머지 32-24비트는 호스트 id로 사용된다.
정보처리기사 실기 프로그래밍 기출 서브넷 서브넷 마스크 요약 정리
IP 주소체계에서 192.1.2.3이 속하는 클래스는?
IP 클래스 표 참고! 192부터 시작하는 C클래스가 답이 된다.
이걸 모를 경우 192를 2진수화 시켜서 시작 부분이 위의 표와 일치하는 값을 찾을 수도 있다.
예를 들어 192는 2진수로 11000000이므로 110으로 시작하는 C클래스가 된다.
C클래스
아래 내용에 해당하는 서브넷 마스크 값은?
203.76.25.1/26
기본적으로 255.255.255.0인 서브넷 마스크 값의 255는 각 자리마다 8비트씩을 1로 하도록 더한 값이다. 128+64+32+16+8+4+2+1 = 255
따라서 8비트씩 3자리, 즉 24자리가 차있는 건데 거기에 총 26자리를 할당한다고 하면 2자리가 남는다.
다음 자리는 총 8비트를 가지지만 그 중 앞의 2자리만 가지기로 했으니까 128과 64에 해당하는 자리만 1로 바꾸게 되는 것이다.
따라서 128+64 = 192이므로 답은 아래와 같다.
255.255.255.192
IPv4 C 클래스 네트워크를 26개의 서브넷으로 나누고, 각 서브넷에는 4~5개의 호스트를 연결하려고 한다. 이러한 서브넷을 구성하기 위한 서브넷 마스크 값은?
각 클래스는 8비트이다. C클래스, 즉 8비트 짜리를 26개로 나눈다는 것은 2의 몇 제곱까지가 26개를 담을 수 있는지를 구하는 것과 같다. 26개를 담으려면 최소한 2의 5제곱, 즉 32가 되어야 한다.
따라서 총 8자리 비트 중 앞의 5자리를 1로 채우게 된다.
그러면 128 + 64 + 32 + 16 + 8 = 248
248
클래스 B주소를 가지고 서브넷 마스크 255.255.255.240으로 서브넷을 만들었을 때 나오는 서브넷의 수와 호스트의 수를 구하라.
B클래스이므로 네트워크id가 16bit로 채워진 255.255.0.0의 형태이다. 즉 B클래스 부분을 제외한 부분에서 서브넷을 구한다. 아래 볼드체 부분을 보자.
255.255.255.240
255는 이미 8개의 1비트로 채워져 있다는 뜻이다.
그러면 손을 댈 수 있는 자리는 240이다. 240은 2^8이 들어가야 채울 수 있다.
*이미지의 4094 -> 4096
2의 12제곱은 4096이 되므로 서브넷의 수는 4096이 된다.
그러면 총 16비트 중 12비트는 서브넷 주소로 사용된 거니까 나머지 4비트가 호스트로 사용될 수 있다.
2의 4제곱은 16이고, 총 16개의 주소 중에 맨 앞과 맨 뒤는 각각 network id와 broadcast id로 사용되므로 제외하여 16 - 2 = 14가 된다.
정답은 아래와 같다.
서브넷 4096
호스트 14
IP address ‘172.16.0.0’인 경우에 이를 14개의 서브넷으로 나누어 사용하고자 할 경우 서브넷 마스크 값을 쓰시오.
일단 172.16.0.0 주소를 보고 'b클래스 범위군' 해야한다.
그러면 255.255.0.0중에 255.255를 제외한 .0.0자리 즉 8비트씩 총 16비트의 자리가 있다.
00000000 00000000
이를 14개의 서브넷으로 나누고 싶다고 했으므로 14를 담을 수 있는 최소한의 2^n값을 찾는다. 그 값은 16이고, 2^4이다.
따라서 2의 4승만큼 앞에서부터 비트를 채워주면 아래와 같다.
11110000 00000000
이를 10진수로 바꾼 서브넷 마스크의 값은 아래와 같다.
255.255.240.0
IP 주소가 139.127.19.132이고 서브넷 마스크 255.255.255.192일 때 아래의 답을 작성하시오.
네트워크 주소 구하기*
IP 주소와 서브넷 마스크의 AND 연산* 수행 : 비교할 두 비트가 모두 1이면 1 아니면 0
네트워크 주소 구하기
서브넷 마스크를 보면 앞 세 클래스(255.255.255)는 모두 1로 채워져있으므로 대상에서 제외한다.
192를 2진수로 바꾸면 11000000이고, 132를 2진수로 바꾸면 10000100이다.
11000000
10000100
AND 연산을 수행하면 둘다 1인 맨 첫자리 1만 남고 나머진 0으로 채워진다.
앞서 언급했듯이 1이 네트워크 주소, 0이 호스트로 쓰이므로 1이 들어간 자리는 2^7 = 128이 된다.
호스트 개수 구하기
192를 2진수로 바꾼 값은 11000000인데, 1은 네트워크 주소로 사용, 나머지 0부분이 호스트로 사용된다.
따라서 2^6 = 64다.
그러면 총 64에서 맨 앞의 네트워크 주소, 맨 뒤의 브로드캐스트 주소 2개를 빼주면 64 - 2 = 62개이다.
정답은 아래와 같다.
(1) 128
(2) 62
🙋🏻 참고하면 좋을 사이트
🔗 [Inpa Dev 👨💻] IP 클래스 · 서브넷 마스크 · 서브넷팅 계산법 💯 총정리
🙋🏻 참고한 곳
🔗 홍달쌤 유튜브 🔗 홍달쌤의 정보처리기사 실기 책
문제 3번 이상합니다! 저는 224로 계산했는데 248로 답이 작성되어 있네요~