[OSI 모델 Layer 3] - IP 주소(IP Address)

Jin Hur·2022년 6월 4일

네트워크(Network)

목록 보기
16/24

논리 주소(IP 주소)의 특징

1) 계층형 주소

IP 주소 같은 논리 주소의 특징으로는 '계층형'이 있다. 계층형 주소란 "서울시 / 금천구 / 가산디지털 2로 / 123"과 같이 계층적으로 나눌 수 있다는 것이다.

2) 네트워크 관리자가 컴퓨터에 할당

MAC 주소는 IEEE가 붙인 벤더코드와 벤더가 붙인 할당코드로 이루어져 있기에 사용하는 쪽에서는 변경이 불가능하다.
반면 논리 주소인 IP 주소는 그 네트워크의 관리자가 필요에 따라 자유롭게 붙일 수 있다. 그리고 MAC 주소 같은 물리 주소와는 다르게 네트워크에 접속할 때마다 붙이는 것이다. 달리 말해 고정 주소가 아니라는 것이다.

논리 주소를 해석하면 '어디에 있는', '어느 컴퓨터'라는 계층적 의미이기에 소속된 네트워크가 바뀐 경우 논리 주소도 바뀌게 된다. 반면 MAC 주소는 인터페이스에 포함되어 있으니 어디에 있어도 같은 주소이다.

3) 2계층과 마찬가지로 논리 주소에도 유니캐스트, 멀티캐스트, 브로드캐스트의 3종류의 주소가 있다.

3계층에는 유니캐스트 논리 주소, 멀티캐스트 논리 주소, 브로드캐스트 논리 주소가 있다. 그리고 유니캐스트의 주소의 논리 주소 중 네트워크를 표시하는 번호는 접속되어 있는 모든 네트워크에서 유일할 필요가 있다.

reference: https://m.blog.naver.com/wnrjsxo/221250742423


IP 주소

8비트씩 십진수 표현, 옥텟(Octet)

MAC 주소는 16진수 12자리, 48bit이다. IP 주소는 IPv4에서는 32bit이다.
그리고 IP 주소는 8비트마다 10진수로 표기하고, 8비트 사이에 점을 찍는다. 이때 8비트마다의 단락을 옥텟(Octet)이라고 한다. 따라서 IPv4는 4개의 옥텟, 다시 말해 32비트로 '네트워크 번호'의 '컴퓨터 번호'를 나타낸다.

source: https://hyoje420.tistory.com/10

클래스, 클래스풀 어드레싱

어디까지 '네트워크 번호'이고, 어디까지 '컴퓨터 번호'인지는 클래스라는 것에 의해 정해진다.
ICANN이라는 조직에서 IP 주소를 실제로 사용하는 인터넷 사업자나 기업 등에 할당하는데, 그 할당된 조직의 규모에 따라 IP 주소의 범위를 변경한다. 이것이 클래스이다.

클래스는 A~E의 5개로 나뉘어있다.

  • 클래스 A: 최초의 8비트, 즉 최초의 옥텟이 네트워크 번호, 나머지는 컴퓨터 번호
  • 클래스 B: 최초의 16비트가 네트워크 번호, 나머지 컴퓨터 번호
  • 클래스 C: 최초의 24비트가 네트워크 번호, 나머지 컴퓨터 번호
  • 클래스 D(멀티캐스트용)와 E(연구용)는 특별한 주소라 보통 할당하지 않음

source: https://blog.daum.net/hellstar/22

네트워크 번호 부분의 비트수가 적으면 그만큼 컴퓨터 번호 부분의 비트수가 많아지게 된다. 비트수가 많다는 것은 그만큼 사용할 수 있는 번호가 많아진다는 의미인 것이고, 즉, 그만큼 많은 컴퓨터를 소유하는 네트워크가 될 수 있다는 것이다.

클래스A

  • 규모: 정부, 연구기관, 대기업
  • 네트워크 수: 128개
  • 1개의 네트워크가 가지는 IP 주소의 수: 16,777,216개

클래스B

  • 규모: 대~중규모 기업
  • 네트워크 수: 16,384RO
  • 1개의 네트워크가 가지는 IP 주소의 수: 66,536개

이처럼 클래스로 나누어 IP 주소를 할당하는 방식을 클래스풀 어드레싱(Classfull Addressing)이라 한다. 이 클래스풀이 IP 어드레싱의 전제가 된다.

예약 완료 주소

ICANN이 할당하는 것은 이 네트워크 번호까지이다. 네트워크 번호를 할당하면 컴퓨터 번호, 이것을 호스트 번호라 하는데, 이는 그 네트워크 관리자가 정하는 것이다.

단, 이 호스트 번호중에는 특별한 의미를 가지기 때문에 실제의 컴퓨터에 할당해서는 안되는 주소가 존재한다. 바로 호스트 번호의 비트가 모두 0이 되는 주소와 모두 1인 주소이다.

예를 들어 클래스 C에서 네트워크 번호가 192.168.10인 경우 '192.168.10.0'과 '192.168.10.255'가 있다. 각각 네트워크 주소, 브로드캐스트 주소라 한다. 브로드캐스트는 동일 네트워크 전체가 수신하는 주소이고, 네트워크 주소는 네트워크 자체를 표시할 때 사용한다.

source: https://velog.io/@minseojo/%EB%AA%A8%EB%91%90%EC%9D%98-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%A0%95%EB%A6%AC-5


서브네팅(Subnetting)

네트워크 번호 + 호스트 번호에서 호스트 번호를 다시 한번 분할 => 서브넷(네트워크)

클래스A의 호스트 번호는 24비트로 만들어지고, 무려 16,772,214대의 호스트를 소유할 수 있다는 것이다. 이렇게 커다란 네트워크 안에 작은 네트워크를 만들 수 있는데, 이렇게 분할한 작은 네트워크를 서브네트워크(Subnetwork) 또는 서브넷(Subnet)이라 한다.

이렇게 서브네트워크로 큰 네트워크를 작게 분할해서 쉽게 관리할 수 있다. 서브넷으로 분할할 때는 서브네트워크를 나타내는 서브넷 번호가 필요하다. 호스트 번호를 서브넷 번호 + 호스트 번호로 다시 분할한다. 즉 호스트 번호의 일부를 줄여서 서브넷 번호를 만드는 것이다.

서브넷 마스크

호스트 번호에서 몇 비트를 서브넷 번호로 사용할지에 대해서는 해당 네트워크 관리자가 정하는 것이다.

이 서브넷은 해당 네트워크의 내부에서만 유효하다.

자명하지만 서브넷의 숫자를 크게 하면 각 서브넷의 호스트 수는 감소한다.

source: https://slidesplayer.org/slide/14902907/

이렇게 서브넷화 하는 것을 서브네팅(Subnetting)이라고 한다.

이 서브넷팅과 관련하여 문제가 하나 있다. 컴퓨터가 어느 네트워크에 소속되어 있는가라는 문제이다. IP 주소의 어디까지가 네트워크 주소인지 모르면 그것이 자신과 동일한 네트워크인지 아니면 다른 네트워크인지 모르게 된다.

클래스풀 어드레싱이라면 최초의 1~4비트로 클래스를 구분할 수 있다.

따라서 서브넷을 사용할 경우에는 서브넷 마스크(Subnetmask)라고 불리는 비트열을 IP 주소와 동시에 표기해야 한다(IP 주소와 서브넷 마스트의 세트). 서브넷 마스크는 IP 주소 중에 어디까지가 서브넷 번호인지를 나타내는데, IP 주소와 같은 32비트이고 네트워크 번호와 서브넷 번호의 비트를 모두 1, 호스트 번호를 0으로 한다.


클래스리스 어드레싱, 슈퍼셋

클래스라는 구분을 없앤 어드레싱이 클래스리스 어드레싱이다. 클래스에 따른 고정된 할당을 하지 않고 자유롭게 할당할 수 있게 된 것이다. 현재는 클래스로 IP 주소를 할당하지 않는다.

클래스를 사용하면 클래스에 따라 네트워크 번호에 사용할 비트 수가 자동적으로 정해지는 것이고, 이를 통해 호스트 번호에 사용할 비트 수도 정해지는 것이다. 이에 반해 클래스리스의 경우 클래스를 사용하지 않고 필요에 따른 비트 수로 정한다.

예를 들어 IP 주소가 1000개가 필요한 네트워크가 있다하면, 이 네트워크를 클래스C(max: 256)에 할당하기엔 부족하고, 그렇다고 클래스B(max: 65,536)에 할당하기엔 너무 많다. 이러한 경우 클래스 기반 할당 방식은 문제가 있다.

결국 필요한 IP 주소로부터 네트워크 번호를 정하는 것이 현명해 보인다. 필요한 IP 주소를 구하고, 이보다 작은 클래스를 통합해서 1개의 네트워크로 운용하는 것이다. 예를 들어 2,000개의 주소가 필요한 네트워크이다. 그렇다면 8개의 클래스C 네트워크를 1개의 네트워크로 통합하여 운용한다(256x8 = 2,048). 이를 슈퍼넷이라 한다.

프리픽스 길이

이 클래스리스 어드레싱 방식도 서브넷 마스크를 설명했을 때와 같은 문제가 발생한다. 어디까지가 네트워크 번호인지를 나타내는 무언가가 필요하다는 것이다. 클래스풀 네트워크의 서브네팅 방식에서는 서브넷 마스크를 사용하고, 클래스리스 어드레싱 방식에서는 프리픽스 길이(Prefix-Length)라는 것을 사용한다. 이는 네트워크 번호의 길이를 나타내는 값이다. IP 주소 뒤에 슬래시를 넣고 프리픽스 길이를 표기한다.

192.168.32.0
제1옥텟: 1100 0000
제2옥텟: 1010 0000
제3옥텟: 0010 0 / 000 <- 21비트를 네트워크 번호로 사용, 11비트 호스트 번호
제4옥텟: 0000 0000

=> 192.168.32.0 / 21(프리픽스 길이)

0개의 댓글