42/42cursus

[NetPractice] 1. ip와 서브넷, 서브넷 마스크

jaemjung 2022. 4. 2. 16:54

 

별거 아닌 과제인줄 알고 만만히 접근했다가 뭔소린지 이해가 하나도 안가는 고로,

일단 알게 된 사실을 정리 해보자.

 

1) IP(Internet Protocol)

 

IP는 Internet Protocol의 약자로, 네트워크를 이용해 컴퓨터 간 통신을 위해 지켜야 할 규약 중 하나이다. 

그런데 보통 IP는 인터넷 프로토콜에서 각각의 컴퓨터를 식별하기 위해 사용하는 주소인 IP주소(ip address)를 일컫는 말로 사용되곤 한다.

 

IP주소는 총 32개의 비트를 이용하여 이진수로 결정이 되는데, 인간이 이를 보다 편하게 식별하기 위해 4개의 옥텟으로 나눈 후 이를 10진수로 변환하여 표기하고는 한다.

즉, 192.168.0.1 과 같은 IP주소는 사실 1100 0000  1010 1000  0000 0000  0000 0001 과 같은 이진수 인 것.

 

암튼

이렇게 32개의 비트를 이용한다면, 각 기기를 식별하기 위해 기기마다 부여할 수 있는 번호의 갯수는 2의 32승, 4,294,967,295개 이다.

이렇게 옥텟 4개를 사용하는 주소 부여 방식을 IPv4라고 칭한다.

 

네트워크를 통해 컴퓨터가 통신하기 위해서 각 컴퓨터는 반드시 네트워크 내에 단 하나뿐인 IP주소를 가지고 있어야 한다. 즉 IP주소는 네트워크 내에서 중복될 수 없는 것이다.

 

2) 네트워크 ID와 호스트 ID

 

요렇게 생겨난 IP는 크게 두 부분으로 나뉘어서 사용이 되니 바로 네트워크 ID와 호스트 ID이다.

예를들어 182.14.227.6 이라는 IP가 있다면,

182.14.227 -> 여기는 네트워크 ID

6 -> 여기는 호스트 ID가 되는 것이다.

 

왜 이렇게 쓰느냐?

 

오늘날의 네트워크는 하나의 중앙 서버에 모든 단말이 연결 되어 있는 것이 아니라, 단말 여러개가 라우터에 연결되어 있고, 라우터가 더 큰 라우터에 연결되어있고... 말그대로 여러 네트워크가 거미줄(Net)처럼 계층적으로 서로 얽혀있는 상태이다.

대충 이런느낌

이 때 각 pc간 통신을 하기 위해서는 통신을 하고싶은 pc의 ip 주소를 알아야 한다. 

그런데 여기서,

'어 잠깐, 그러면 이 네트워크에 42억 대의 단말이 연결되어 있다면,,, 무작위의 어떤 컴퓨터와 통신하기 위해서는 내 컴퓨터가 42억개의 ip주소를 알고있어야 한단 이야기...?'

와 같은 상황을 피하기 위해 주소를 분리한 후, 각 네트워크 ID에 호스트 ID를 종속시킨 후 다음 라우터의 네트워크 ID만을 저장해 두는 기법을 어떤 천재가 발명해냈다.

 

일단 네트워크 ID만 이용해서 해당 네트워크 ID를 지닌 라우터를 찾아가고, 호스트를 찾아가는 거는 냅다 그냥 라우터에게 던져버리는 방식으로 작동을 하면, 내 컴퓨터가 네트워크와 통신하기 위해서는 다음 라우터의 주소만 알면 된다. 왜? 나머지를 찾아가는건 다음 라우터가 알아서 해줄테니까. 이런식으로 책임을 분리한다고 한다.

 

그런데 이런식으로 가다보면 문제가 생기게 되는데,

예를들어 내가 4개의 컴퓨터가 연결된 10개의 네트워크를 만들고 싶다는 상황을 가정해보자.

이를 위해선 총 10개의 네트워크 id가 필요한데, 3번째 옥텟까지를 네트워크 영역으로 사용한다 치면 하나의 네트워크를 만들기 위해 256 - 4 = 252 개의 ip 주소가 낭비되는 일이 발생한다. 왜? 마지막 옥텟으로 구분할 수 있는 ip가 255개니까.

 

안그래도 43억개라는, 턱없이 부족한 ip를 절약해서 써야하는 마당에 이런 엄청난 낭비를 막기 위해 만든 테크닉이 바로바로 서브넷이다(정확히는 CIDR라고 하는데 잘 모르겟당 엣큥 ㅋㅎ).

 

3) 서브넷과 서브넷 마스크

서브넷은 IP의 호스트 부분을 다시 잘게 쪼개서 여러개의 네트워크를 구성할 수 있게 해주는 테크닉이라고 한다. 이를 위해서는 서브넷 마스크라는 기법을 이용하는데, 글로 장황하게 쓰면 뭔소린지 당췌 이해가 안가니 예를 들어보도록 하자.

 

193.172.32.1 이라는 ip주소를 가지고 있다고 치면 여기서 193.172.32는 네트워크 영역, 1은 호스트 영역이다.

원래대로라면 호스트 영역에는 0 ~ 255까지 총 256대를 연결 할 수 있겠지만, 이걸 반으로 쪼개서 별도의 네트워크를 구성할 수는 없을까? 잘 하면 될거같은데에?

193.172.32는 그대로 유지하고, 호스트 영역을 한 번 더 0~127, 128~255로 쪼갠다면?

흐음 이걸 비트마스킹마냥 AND연산을 쳐버린다면?

예를들어 193.172.32.1을 255.255.255.128로 AND 연산을 해버리는거임

 

1100 0001 . 1010 1100 . 0010 0000 . 0000 0001

1111 1111 . 1111 1111 . 1111 1111 . 1000 0000

 

그러면 네트워크 부분은 전부 원래 비트가 유지 되고, 호스트 부분은 127까지는 계속 0으로, 128부터는 계속 128로 치환이 되겠네?

그러면 이렇게 호스트 부분의 주소를 특정 비트와 AND 연산을 하면 호스트 영역에서도 네트워크 주소를 쪼갤 수 있는 것?

헐 대박 ㅋ

 

인 것인데... 써놓고 보니 무슨 소리인지 이해가 안가는구나 ㅎㅎ;

아래의 링크에 보다 자세하고 친절한 설명이 나와있다.

https://better-together.tistory.com/118

 

쉽게 이해하는 네트워크 13. IP 주소 의미와 체계 및 서브넷 마스크

IPv4 IP주소의 의미와 서브넷 마스크의 이해 IP 주소 인터넷 계층의 IP 프로토콜은 IP 주소를 사용하여 호스트나 네트워크 장비를 식별합니다. 인터넷에 접속한 컴퓨터와 라우터에 고유한 IP 주소를

better-together.tistory.com

 

그래서 과제에서 보는 ip 주소는 192.172.31.1과 서브넷 마스크 255.255.255.128 혹은 /25 와 같은 형태로 나타나게 되는데, 여기서 /25 <- 이건 서브넷 마스크에서 1의 갯수를 표시하는 거라고.

 

 

아 이제 ip와 서브넷마스크에 대해서 조금은 알겠다. 그런데 라우터가 대체 뭔데?

그건 다음 글에서 알아보는 걸로...