[네트워크] IP주소, 서브넷 마스크, 그리고 기본 게이트웨이
1. IP 주소
- 인터넷 공간에서 나(컴퓨터, 스마트폰, 패드)를 가리키는 이름
- xxx.xxx.xxx.xxx 형태 (0 ~ 255임)
1-1. 공인IP와 사설IP 그리고 루프백 주소
나는 여러가지로 나타나진다. 주민등록번호, 부모님에게는 "아들", 친구에게는 "성호", 그리고 나에게는 "나". 누구든 주민등록번호로 나를 부르면 내가 대답할 것이다. 그러나, 부모님이 아닌 사람이 "아들" 이라고 하면 나는 대답하지 않을 것이다. 아마도 나를 부르는 게 아닐 것이기 때문이다.
위의 예시에서 주민등록번호는 공인IP, "아들", "성호"는 사설IP, 그리고 "나" 는 루프백 주소를 의미한다.
<공인IP>
- 인터넷 상에서 내 컴퓨터를 가리키는 고유한 IP 주소
- 당연히 공인IP는 인터넷 전체에서 유일하다.
<사설IP>
- 하나의 네트워크 상에서 내 컴퓨터를 가리키는 고유한 IP 주소
- 속해있는 네트워크에서는 유일하지만, 인터넷 전체로 보면 유일하지 않다. (부모님에게 "아들" 은 유일하지만, 그냥 "아들" 은 유일하지 않은 것처럼)
- 이 주소로 외부와 직접 통신할 수는 없다. (다른 사람이 아들! 해도 나한테 전달 안됨)
<루프백 주소>
- 내 컴퓨터가 내 컴퓨터를 가리키는 IP 주소
2. 서브넷 마스크
IP주소는 네트워크 ID와 호스트 ID가 이어붙여져 있는 형태이다. 예시를 생각해보자.
나는 지금 회사다. 현재 내 컴퓨터는 회사 네트워크에 연결되어 있을 것이고, 사설IP는 10.65.66.37 라고 한다. 그런데 어제 집에서 사설IP를 확인해봤을 때도 10.65.66.37었다. 같은게 말이 되는건가?
당연히 말이 된다. 사설IP는 네트워크 내에서 고유한 것이기 때문에 현재 두 개의 IP는 각각 회사와 집 네트워크에서는 고유할 것이다.
그런데 조금 더 자세히 들여다보니 집에서는 서브넷 마스크가 255.255.255.0이었고, 회사에서는 서브넷 마스크가 255.255.0.0이었다. 무슨 차이지?
서브넷 마스크는 1이 연속되다가 어느순간부터 0이 연속되는 이진수의 배열이다. 위의 예시를 보면,
집에서의 서브넷 마스크는 1111 1111 1111 1111 1111 1111 0000 0000 이고,
회사서의 서브넷 마스크는 1111 1111 1111 1111 0000 0000 0000 0000 이다.
이 마스크는 IP주소와 AND 연산해서 네트워크 ID를 구할 수 있다.
<집>
10.65.66.37 ------> 0000 1010 0100 0001 0100 0010 0010 0101
255.255.255.0 ---> 1111 1111 1111 1111 1111 1111 0000 0000
--------------------------------------------------------------------------------------------
AND 연산 결과 ----> 0000 1010 0100 0001 0100 0010 0000 0000
-----> 10.65.66.0 이 네트워크 ID, 37이 호스트 ID임.
<회사>
10.65.66.37 ------> 0000 1010 0100 0001 0100 0010 0010 0101
255.255.255.0 ---> 1111 1111 1111 1111 0000 0000 0000 0000
--------------------------------------------------------------------------------------------
AND 연산 결과 ----> 0000 1010 0100 0001 0000 0000 0000 0000
-----> 10.65.0.0 이 네트워크 ID, 66.37이 호스트 ID임.
3. 스위치, 기본 게이트웨이
새로운 예시를 하나 들어보자.
나는 지금 10.65.66.0아파트에 살고 있다. 우리 아파트의 네트워크 ID가 곧 이름인 아파트다.
여기서 우리집은 37번 문을 열면 나오고 아파트 대문은 1번문을 열면 나온단다. 내가 35번 문을 열면 나오는 곳에 사는 친구에게 빌려준 책을 돌려주러 37번 문을 나섰다. 나는 여기서 두 가지 선택지를 마주한 것이다.
1. 37번을 나왔으니 내친김에 1번문으로 나가서 아파트를 나가자. 그리고 다시 1번문으로 돌아와서 아파트에 돌아오고 35번 문을 열어서 친구를 만나자.
2. 37번 나와서 조금 걸어서 35번 문을 열어서 친구를 만나자.
첫번째 방법 고를래 두번째 방법 고를래? 하면 아마 근소한 차이로 두번째를 고를 것이다(?)
근데 이런 경우에 근소한 차이로 두번째를 고르는 건 말이 안되는 거다. 당연히 2번째를 골라야 되는거지. 그런데 네트워크는 좀 멍청해서 이걸 잘 못고르니까 어떻게 해야되는 지 알려주는 똑똑한 친구(스위치)를 하나 두어야 한다.
이제는 이렇게 하기로 한 것이다.
37번을 나와서 똑똑한 친구(스위치)에게 가서 나 35번 가야하는 데 어떻게 해? 라고 물어본 다음에 똑똑한 친구가 아파트 나가지 말고 바로 35번으로 가! 라고 얘기하는 걸 듣고 35번에 가는 것이다.
근데 나는 책을 좋아해서 우리 아파트 말고 다른 아파트 사는 친구들한테도 책을 너무 많이 빌렸다. 돌려줘야 하니 37번 문을 나서서 스위치에게 물어봤더니 돌아오는 대답은 다 똑같다. "대문으로 나가!"
다른 아파트에 사는 친구들에게 가기 위해서는 대문(게이트웨이)을 나서야 하는구나?? 라는 당연한 결론을 얻게 되는 순간이다.
위의 설명처럼, 스위치는 같은 네트워크 안에서 원하는 호스트에게 가는 방법을 알려주고, 다른 네트워크의 호스트에게 가고싶다면 대문에 가는 방법을 알려준다. 여기서 다른 네트워크에 가기 위해서는 항상 기본 게이트웨이를 통과해야된다.