기본편: https://www.clien.net/service/board/lecture/15872844CLIEN
포트편: https://www.clien.net/service/board/lecture/15873771CLIEN
네임편: https://www.clien.net/service/board/lecture/15874590CLIEN
지난 강좌를 읽고 우리는 이제 네트워크 설정 페이지에서
- IP 주소
- 기본 게이트웨이
- 기본 설정 DNS 서버
항목이 무슨 의미인지를 이제 알 수 있게 되었습니다.
보조 DNS 서버 항목은 사실 설명할 필요도 없죠?
DNS 서버에 장애가 생기면 IP주소를 알 수 없어서 인터넷을 못 쓰게 되니까 2개 넣어둘 수 있게 되어 있는거죠.
DNS 서버에 장애가 생기면 IP주소를 알 수 없어서 인터넷을 못 쓰게 되니까 2개 넣어둘 수 있게 되어 있는거죠.
그럼 이제 1가지 항목만이 미스테리로 남게됩니다.
대체 서브넷 마스크라는 게 뭘까?
이미 여러 번 본 LAN의 그림이죠.
그냥 이것 한 덩어리가 서브넷입니다.
원래는 네트워크라는게 LAN으로 시작했는데 WAN으로 연결해서 인터넷이라는 그럴싸한 이름을 붙여놓고나니
다시 거꾸로 인터넷을 구성하는 LAN에게도 붙일 이름이 필요해지게 됐죠.
그냥 LAN이라고 하면 되는거 아니냐라고 할 수 있겠지만
인터넷이 아니라도 LAN이라는건 예전부터 있었기 때문에
구분하기 위해 인터넷의 LAN 이라는 의미로 서브넷이라는 단어를 사용하게 됩니다.
예전 내용으로 잠시 돌아가보면
기본편에서 다른 네트워크의 컴퓨터와 통신을 하는 방법을 설명하며 이런 내용을 설명한 적이 있습니다.
사실 이 내용은 뻥입니다.
실제로는 게이트웨이가 알아서 하는게 아니고 데이터를 보내려는 1번 컴퓨터가
내부망, 그러니까 같은 서브넷에 있는 컴퓨터와의 통신인지
바깥 인터넷에 있는 다른 서브넷의 컴퓨터와의 통신인지를 알아서 판단합니다.
그래서 같은 서브넷에 있는 컴퓨터라면 직접 통신을 하고
다른 서브넷에 있는 컴퓨터라면 게이트웨이에게 맡기는 거죠.
근데 문제는 IP 주소만 가지고 같은 서브넷인지 아닌 지를 알아야 하는데 주소만 가지고는 알 수가 없습니다.
(20년 전에는 IP 주소만 알아도 같은 서브넷인지 아닌 지 알 수 있었는데 지금은 그렇지가 않거든요.)
왜냐면 서브넷의 크기가 서브넷 마다 완전 제각각이기 때문이죠.
어떤 서브넷은 직원이 10명이라 컴퓨터가 10대고
어떤 서브넷은 컴퓨터 잘하는 직원이 500명이라 컴퓨터가 1000대일 수 있습니다. (응?)
그렇다고 168.126.63.0 부터 168.126.63.100 까지 A 회사가 쓰고
168.126.63.101 부터 168.126.63.150 까지 B 회사가 쓴다... 이런 식으로 다 정리하자니
전 세계 컴퓨터를 대상으로 한다면 목록의 양이 말도 안되게 길어지겠죠.
관리도 안 될 건 뻔하고요.
그래서 서브넷 마스크라는 걸 만들어서 IP 주소와 계산해 같은 서브넷인지 아닌지를 구분할 수 있는 방법을 고안합니다.
계산 방법은 간단합니다.
IP 주소도 2진수로 바꾸고 서브넷 마스크로 2진수로 바꿉니다.
2진수로 어떻게 바꾸냐고요? 우리에겐 계산기가 있죠.
예를 들어 데이터를 보낼 곳의 IP 주소는 168.126.63.3 이고 서브넷 마스크는 255.255.255.192 이라고 합시다.
그러면 IP 주소는 아래와 같이 나오고
10101000. 01111110.00111111.00000011
서브넷 마스크는
11111111.11111111.11111111.11000000
이라고 나옵니다.
이걸 '1'은 열린 칸(□), '0'을 닫힌 칸(■) 이라고 생각하면 아래처럼 되죠.
아이피 주소는 □■□■□■■■.■□□□□□□■.■■□□□□□□.■■■■■■□□
서브넷 마스크는 □□□□□□□□.□□□□□□□□.□□□□□□□□.□□■■■■■■
이렇게 만든 두 개를 겹쳐보면 아래처럼 됩니다.
IP주소에 서브넷 '마스크'를 씌우는 거죠.
뚜둥.
이제 저걸 다시 숫자로 바꾸면
10101000. 01111110.00111111.00000000
이 되고요
이걸 10진수로 바꾸면
168.126.63.0 이 됩니다.
자 이제 보내는 녀석의 IP 주소인 168.126.63.1 도 똑같이 연산을 해 봅시다.
그리고
이걸 10진수로 바꾸면
168.126.63.0 이 됩니다.
어라? 결과가 똑같네요.
이러면 같은 서브넷에 있다는 소립니다.
그럼 다른 네트워크에 있는 202.30.38.3 을 해 봅시다.
똑같은 과정을 거쳐서
11001010.00110000.00111000.00000000
나온 값을 10진수로 바꾸면
202.30.38.0 이 됩니다.
이건 다르군요.
이러면 다른 네트워크에 있다는 이야기입니다.
이걸 이용하면 IP 주소와 서브넷 마스크를 이용해
내부망인지 외부망인지 확인을 할 수 있게 됩니다.
그리고 이렇게 IP주소와 서브넷 마스크를 이용해 나온 저 IP(168.126.63.0)와 서브넷 마스크를
우리는 네트워크 주소로 사용합니다.
즉 네트워크 주소는 168.126.63.0/255.255.255.192 라는 거죠.
근데 딱 봐도 너무 정신 사납게 길죠?
그래서 서브넷 마스크를 더 짧게 표현하려고 머리를 씁니다.
아까 서브넷 마스크를 2진수로 바꾸면 아래와 같이 된다고 했죠?
11111111.11111111.11111111.11000000
이걸 앞에 1의 갯수만 셉니다. 26개죠?
그래서 이걸로 255.255.255.192 를 대체하게 됩니다.
중간에 0이 있으면 어쩌죠? 그럴 일은 없습니다.
서브넷 마스크는 앞에서부터 1을 채워서만 만들어지기 때문에
0000....0000 부터 1111....1111 까지 총 33가지의 경우 밖에 없죠.
어쨌든 저 1의 갯수를 이용해 네트워크 주소를 이런 식으로 표기하게 됩니다.
이 서브넷 마스크를 구성하는 1의 개수가 우리가 가끔씩 볼 수 있는 IP 뒤의 /숫자의 정체입니다.
저 네트워크 안에 있는 모든 컴퓨터들은 26비트의 서브넷 마스크(255.255.255.192)를 AND(&) 연산하게 되면
168.126.63.0 이 나오게 됩니다.
그리고 저 네트워크에 연결할 수 있는 최대 컴퓨터의 대수는 서브넷 마스크의 0의 갯수와 연동됩니다.
예시의 168.126.63.0/26 의 네트워크는 서브넷 마스크를 2진수로 표기하면
11111111.11111111.11111111.11000000
0이 6개입니다. 그러면 2의 6승. 26 = 64대까지 연결이 가능합니다만
실제로는 맨 앞 주소(168.126.63.0)와 맨 끝 주소(168.126.63.63)는 용도가 예약되어 있어
62대까지만 컴퓨터를 인터넷에 연결할 수 있게 됩니다.
서브넷 마스크는 내용에 2진수니 계산이니 하는 것이 들어가서 좀 복잡할 수 밖에 없네요.
여튼 서브넷 마스크는 통신할 컴퓨터가 같은 네트워크인지 아닌지 여부를 판단하기 위한 용도다 라는 걸 기억해 주시면 됩니다.
다음에는 마지막으로 사설망/공유기에 관련된 내용을 설명드리겠습니다.
공유기편: https://www.clien.net/service/board/lecture/15887017CLIEN
다시 이해한 것 같습니다!!
좋은 강좌 내용 감사합니다 ^^
서브넷을 쪼갤수록 가용아이피가 2개씩 줄어드는 겁니다.
/22에서 /23이나 /24로 나뉘는건 어차피 덩어리가 커서 괜찮은데, /27 /28 /29 /30 이러면.. 아이피 분배하다보면 뭔가 좀 아까운 느낌입니다.
그런 자투리 공간이 안 아까운 IPv6로 금방 넘어갈 줄 알았는데, 생각보다 이 부분은 혁신이 더디네요.
근데, IPv6 되면 ip주소 어떻게 외울까요? ;;
결과로 보면 AND가 맞는데 그림은 마치 0(꽉 찬 네모)이 1(빈 네모)인 것처럼 나와서 그런 거 같습니다.
저만 그랬을지 모르겠지만 합쳐지는 과정에서 OR로 보이는 착시가..
반대로 0이 빈 네모, 1이 꽉 찬 네모로 하면 덜 헷갈릴 같습니다.
강의 항상 잘보고있습니다.
오히려 그 개념이 있는 분들에겐 혼동의 여지가 있을 수 있긴합니다.
0을 빈네모, 1을 꽉찬네모로 하면 결과가 진짜 OR 연산이 되어버립니다.
□■□■
□□■■
----
□■■■
사실 서브넷 마스크는 비트연산을 빼고 설명할 도리가 없고
그러나보니 비전문가 대상의 설명에는 여러모로 무리가 따르게 되어버리네요.
어.. 0이 빈네모라면 AND 일때 아래처럼 되야 되는거 아닌가요?
□■□■
□□■■
----
□□□■
0101
0011
-------
0001
아니면 혹시 다크모드라서 뭔가 잘못 보이고 있는 걸 까요.. ㅋㅋ
지하철승객님 예시는 OR 연산을 했어요 0001이 맞는데...
좋은 자료 감사드립니다.
대한민국 설명하며 양반/상민/천민 설명하는 꼴이라고 생각되서 별로 이야기할 필요가 없다고 생각해요.
너무 옛날 개념이라 없어도 되는 그런게 아닌가 합니다.
D/E 클래스는 여전히 의미가 있긴하지만 일반인들이 접할 일이 없기도 하고요.
본문에 나온 /26으로 부연 설명을 해 보면
IP 주소 32 비트 중에서 네트워크 주소 비트수가 26이니까 호스트 주소의 비트수는
32-26 = 6비트이고,
6비트로 표현할 수 있는 가짓수 2^=64개 (0~63)의 주소를 쓸 수 있죠.
이 0~63번의 주소는 아래와 같이 사용됩니다.
/26으로 표시되는 각 네트워크들의 주소는
xxx.yyy.zzz.0, 64, 128, 192 + '0' (64씩 증가)이고,
각 네트워크 안에 있는 호스트에는
네트워크주소+('1 ~ 62')의 주소를 줄 수 있고
마지막 64번째 주소인 네트워크주소 + '63'은
그 네트워크의 브로드캐스트 주소로 사용합니다.
그리고
1이 0개면 00000000 = 0
1이 1개면 10000000 = 128
1이 2개면 11000000 = 128 + 64 =192
1이 3개면 11100000 = 192 + 32 = 224
1이 4개면 11110000 = 224 + 16 = 240
1이 5개면 11111000 = 240 + 8 = 248
1이 6개면 11111100 = 248 + 4 = 252
1이 7개면 11111110 = 252 + 2 = 254
1이 8개면 11111111 = 254 + 1 = 255
요 계산만 이해하시면 네트워크 다룰 때 2진수 계산이 필요 없어집니다..
예를 들어서 어느 주소가 어느 네트워크에 속하는지 계산을 해야할 경우가 있는데,
주소가 123.123.123.123이고 서브넷마스크가 255.255.255.224라고 하면
네트워크 주소 비트는 8+8+8+3=27이고
호스트 주소 비트는 32-27=5가 되죠.
그러면 /27인 네트워크는 2^5=32개의 주소를 가질 수 있으니까
123.123.123.123은 123.123.123.96~123.123.123.127 사이에 있는 주소라는 걸 알 수 있습니다.
즉 123.123.123.96/27 네트워크에 있는 셈입니다.
그리고 그 네트워크에서 호스트가 사용할 수 있는 주소는 123.123.123.97~126이 됩니다.
훗 이런 상식적이지만 고급적인 정리 매우 좋습니다.
감사드립니다 ㅎㅎㅎㅎ
1편부터 쭉 봤는데 너무 좋아요. 감사합니다.
읽으시는 분들이 '서브넷 마스크'가 '서브넷'의 멤버를 판정하기 위한 판별기 같은 거라고 '암기'만 해도 성공일 것 같습니다.
즉흥적으로 작성한 글들이다보니 다른 컨텐츠는 없어서 유튜브나 블로그는 따로 운영하고 있진 않습니다. 마지막 글은 조금 더 잘 이해될 수 있었으면 좋겠네요. 즐거운 하루 되세요.
다시 한번 정독해봐야겠지만 서브넷 어렵군요;;
2번에 대한 이스터에그가 있는데 아무도 언급을 안 하시네요 잘 봤습니다.