리눅스 Tips, 리눅스 C/C++ 프로그래밍, 모바일 클라우드 동향 및 테스트 등

2013년 4월 10일 수요일

네트워크 기본이론 : 05 IP 주소로의 여행

1. 라우터와 IP 주소

 - 라우터에서
  1) 이더넷 인터페이스 : 내부 네트워크에 연결되는 라우터의 포트로 내부에서 사용하기 위해 부여 받은 IP 주소 중 하나를 배정해야 한다. 이러한 IP 주소는 보통 맨 앞의 번호를 쓰게 되는데, 예를 들어 내부 PC용으로 부여 받은 주소가 203.120.150.1~203.120.150.255까지라면 라우터는 203.120.150.1을 사용하는 것이 보편적이다.
  2) 시리얼 인터페이스 : 외부 네트워크(인터넷)에 연결되는 라우터의 포트로 DSU 또는 CSU라는 전용선 모뎀에 연결된다. 시리얼 인터페이스도 이더넷 인터페이스 처럼 IP 주소를 부여해야 하는데 이는 마음대로 정하는 것이 아니라 라우터가 접속하는 상대편(ISP) 라우터의 시리얼 인터페이스와 IP 주소를 서로 맞추어 부여해야 한다.

 - 라우터에서 인터페이스가 달라진다는 것은 네트워크가 달라진다는 것을 의미한다.
 - IP 주소는 TCP/IP 프로토콜을 사용하는 모든 장비들을 구분하기 위해 만들어진 32자리의 2진수이다.
 - 32자리의 2진수로 이루어진 IP 주소는 네트워크 부분과 호스트 부분으로 나뉘고, 어떻게 나누었는지에 따라 5종류의 Class 중 하나가 된다.
  1) 네트워크 부분 : 하나의 브로드캐스트 영역으로 하나의 PC가 데이터를 뿌렸을 때 그 데이터를 라우터를 거치지 않고 바로 받을 수 있는 영역이다.
  2) 호스트 부분 : 각각의 PC 또는 장비를 뜻하며, 다른 장비가 같은 주소를 부여 받아서는 안된다. 예를 들어 내부 PC용으로 부여 받은 주소가 203.120.150.1~203.120.150.255까지라면 203.120.150 부분이 네트워크 부분, 나머지 부분이 호스트 부분이 된다.

 - 참고로 IP 주소 중에 네트워크 부분만이 라우터가 라우팅 할 때 참고하는 부분이다.
 - 다음은 IP주소의 Class를 나타낸다. 이와 같은 Class는 IP 주소를 효율적으로 배분하기 위해 사용된다.
  1) Class A : 다음과 같이 32개의 이진수 중에서 맨 앞쪽 하나가 항상 0으로 시작되는 것들
                              0xxx xxxx . xxxx xxxx . xxxx xxxx . xxxx xxxx
                      클래스 A의 경우 앞의 8비트가 네트워크 부분을 나타내고 나머지 24비트가 호스트 부분을 나타낸다.  또한 네트워크 부분의 경우 가장 작은 네트워크(0.0.0.0)와 가장 큰 네트워크(127.0.0.0)는 네트워크에서 제외 되므로 1.0.0.0~126.0.0.0을 네트워크 부분으로 가지며, 호스트 부분의 경우 모두 0인 경우(네트워크 자체를 나타내므로)와 모두 1인 경우(브로트캐스트 주소이므로)는 제외 되므로 (2^24-2)가 호스트의 수가 된다.
  2) Class B : 다음과 같이 32개의 이진수 중에서 맨 앞이 반드시 10(2진수)으로 시작되는 것들
                              10xx xxxx . xxxx xxxx . xxxx xxxx . xxxx xxxx
                      클래스 B의 경우 앞의 16비트가 네트워크 부분을 나타내고 나머지 16비트가 호스트 부분을 나타낸다.  또한 네트워크 부분의 경우 가장 작은 네트워크(128.0.0.0)와 가장 큰 네트워크(191.255.0.0)는 네트워크에서 제외 되므로 128.1.0.0~191.254.0.0을 네트워크 부분으로 가지며, 호스트 부분의 경우 모두 0인 경우(네트워크 자체를 나타내므로)와 모두 1인 경우(브로트캐스트 주소이므로)는 제외 되므로 (2^16-2)가 호스트의 수가 된다.
  3) Class C : 다음과 같이 32개의 이진수 중에서 맨 앞이 항상 110(2진수)으로 시작되는 것들
                              110x xxxx . xxxx xxxx . xxxx xxxx . xxxx xxxx
                      클래스 C의 경우 앞의 24비트가 네트워크 부분을 나타내고 나머지 8비트가 호스트 부분을 나타낸다.  또한 네트워크 부분의 경우 가장 작은 네트워크(192.0.0.0)와 가장 큰 네트워크(223.255.255.0)는 네트워크에서 제외 되므로 192.0.1.0~223.255.254.0을 네트워크 부분으로 가지며, 호스트 부분의 경우 모두 0인 경우(네트워크 자체를 나타내므로)와 모두 1인 경우(브로트캐스트 주소이므로)는 제외 되므로 (2^8-2)가 호스트의 수가 된다.
  4) Class D 와 Class E : 멀티캐스트용, 연구 개발용

 - 네트워크가 서로 다른 두 장비 간의 통신은 라우터를 통해서만 가능하다. 앞서 언급하였듯이 라우터의 각 인터페이스에는 해당 인터페이스가 속한 네트워크의 IP 주소를 부여해야 하며(사실 스위치나 허브에 IP 주소를 배정하지 않아도 통신에는 지장이 없지만 관리를 위해서 부여하는 것이 좋다),  IP 주소를 배정할 때는 접속 가능한 호스트의 수 등을 파악해야 한다.
 - 기본 게이트 웨이란 내부 네트워크에서 없는 녀석을 찾을 때 밖으로 통하는 문이 되는 것으로 라우터의 이더넷 인터페이스가 된다.

2. 서브넷 마스크

 - 서브넷 마스크란 메인이 아닌 어떤 가공을 통한 네트워크를 만들기 위해서 씌우는 마스크로 주어진 IP 주소를 네트워크 환경에 맞게 나누어 주기 위해서 씌워주는 2진수 조합이다.
 - 라우터를 통해서 큰 네트워크에 서브넷 마스크를 씌워 네트워크를 나누어 줄 수 있으며, 이는 네트워크(브로드캐스트 도메인)가 너무 커서 발생하는 통신 문제를 해결할 수 있도록 한다.
 - 서브넷 마스크는 네트워크를 나누었는지 여부를 판단하기 위하여, 네트워크를 나누지 않더라도 항상 사용된다. 이때 사용되는 서브넷 마스크를 디폴트 서브넷 마스크라 하며 클래스에 따라 다음과 같이 나타낸다.
  1) Default Subnet Mask_Class A : 255 . 0 . 0 . 0
  2) Default Subnet Mask_Class B : 255 . 255 . 0 . 0
  3) Default Subnet Mask_Class C : 255 . 255 . 255 . 0

 - 서브넷 마스크는 이진수로 썼을 때 반드시 '1'이 연속적으로 나와야 한다.
 - 서브넷 마스크는 서브넷의 IP 주소에서 네트워크 부분과 호스트 부분을 판단할 수 있도록 해주며, 여기에서 서브넷은 서브넷 마스크를 통해서 나뉘어진 각각의 네트워크를 말한다. 각각의 서브넷 끼리의 통신은 라우터를 통해서만 가능하다. 추가적으로 라우터 없이 네트워크를 나누기 위해 서브넷 마스크를 만들어서 쓴다는 말은 틀린 말이다.
 * 콜리전 도메인을 나누는 것이 스위치,
    브로드캐스트 도메인을 나누는 것이 라우터이다.
 - 예를 들어 150.100.0.0이란 클래스 B 네트워크를 255.255.255.0이란 서브넷 마스크를 사용해서 서브네팅을 했을 경우. 150.100.100.1과 150.100.200.1은 서로 다른 네트워크에 속한 호스트가 된다. 즉 서로 다른 브로드캐스트 도메인에 존재하고 있기 때문에 라우터를 통해서만 통신이 가능하다.
 - 서브넷을 실제로 나누는 예를 살펴보자. 210.100.1.0란 클래스 C 네트워크를 받았을 때, PC 30대인 네트워크를 최소 4개 이상 만든다고 하자. 여기서 주의할 점은 서브넷을 통해서 네트워크를 나누었을 때 각 네트워크에서 호스트 부분이 전부 0인 경우(네트워크 자체)와 전부 1인 경우(브로드캐스트 주소)는 사용할 수 없으며, 이에 따라 사용 가능한 호스트 수는 '2^(호스트 비트 수) - 2' 라는 것이다. 따라서 호스트 수 30개가 되기 위해서는 호스트 자리 수가 이진수 5개가 되며, 서브넷 마스크는 255.255.255.224가 되는 것이다.

댓글 1개:

  1. 출처 : 후니의 쉽게 쓴 시스코 네트워킹(사이버출판사)

    답글삭제