[네트워크] ipv4 와 서브넷팅

HenryHong·2022년 8월 5일
0

IPv4 설명

전 세계에 걸쳐 인터넷으로 연결된 컴퓨터를 구분하기 위한 유일한 인터넷 주소이다.
IP 주소는 Network ID(네트워크 주소부) + Host ID(호스트 주소부)로 구성된다.
네트워크에서 Host ID bit가 모두 0인 IP 주소는 네트워크 주소이다.
네트워크에서 Host ID bit가 모두 1인 IP주소는 브로드 캐스트 주소이다.
하나의 IP address 안에서 어디까지가 네트워크 부이고, 어디까지가 호스트 부인지 미리 그 길이를 고정하여 결정해 둔 것이 있는데, 이를 어드레스 클래스라 한다.!

참고

  • Host ID와 Network ID는 서브넷 마스크에 의해서 구분이 되고, 200.10.1.5/24라는 아이피가 있으면, IP address가 나타내는 각 자리는 하나의 옥텟이 8비트이므로 총 32비트이다.
  • 이진수로 200.10.1.5를 변환하게 되면,
    - 11001000.00001010.00000001.00000101 -> 200.10.1.5를 이진수 변환
    - 11111111.11111111.11111111.00000000 -> /24 이진수 표현
    - &(AND) 비트 연산 한다.
    - 11001000.00001010.00000001.00000000 -> 십진수으로 변환하면 200.10.1.0
  • 위 글에서 설명한 Host ID bit가 모두 0인 IP 주소 200.10.1.0이 Network ID이다.
    - 그럼 브로드 캐스트 주소는 200.10.1.255가 된다. (이진법으로 변환 생략)
    • 브로드캐스트는 같은 네트워크에 있는 호스트에 패킷을 보내기 위해 사용한다 (ARP, ICMP 등)

어드레스 클래스

  • 하나의 옥텟(1byte)을 기준으로 네트워크 부와 호스트 부가 나뉜다.

어드레스 클래스의 낭비

  • 클래스 A의 어드레스는 한 개의 네트워크 당 약 1677만 대의 호스트의 어드레스를 할당 할 수 있다.
  • 하지만 그렇게 많은 호스트를 하나의 네트워크에 연결하는 경우는 거의 없기 때문에 많은 어드레스가 낭비된다. 그래서 서브넷 마스크를 쓴다.

참고 : classful/classless

  • 예전엔 어드레스 클래스를 정해놓고 classful하게 IP address를 사용했다.
  • 하지만 지금은 IP 부족 사태로 서브넷 마스크를 이용해 classless하게 IP address를 사용 (CIDR) 한다.

서브넷 마스크

  • 어드레스 클래스는 네트워크 부의 길이가 미리 정해져있다.
  • 서브넷 마스크를 이용하면 이 길이를 비트 단위로 유연하게 늘려서 쓰는 것이 가능하다
  • 이 부분은 다른 포스팅 글에서 다루도록 하겠다.
  • 간단하게 소개하자면, 사이더(CIDR)라는 클래스 없는 도메인간 라우팅 기법이 있다.
  • 위의 어드레스 클래스는 classful하게 IP address를 쓰는 방식이고, 사이더는 classless하게 쓰는 방식이다.

그래서 결국 우리가 이용하는건 뭐?

    • private IP address이다.
  • 흔히 공유기(라우터)를 통해서 호스트 부를 관리하고, DHCP를 통해 자동으로 컴퓨터에 IP를 부여받는다.
  • 외부 WAN과 통신할 때는 NAT와 같은 어드레스 변환 기술을 이용해서 private IP Address를 public IP addres(공유기 IP address)로 바꿔준다.

우리가 외부와 통신할 때 벌어지는 일

  • 공유기는 private을 public로 변환했다는 정보를 변환 테이블에 기록한다.
  • public IP address로 패킷은 목적지 IP로 도달하며 목적지의 응답 패킷은 공유기로(public IP address) 도달하게 된다.
  • 공유기는 해당 패킷을 테이블을 보고 private IP address (요청한 호스트)로 응답을 주게 된다.
  • 외부에서는 전혀 우리 컴퓨터 IP 주소를 몰라도 되는 것이다! 그리고 애초에 전혀 모른다.

참고 : 패킷이란?

  • 패킷은 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다
  • 프라이빗 IP 어드레스로 사용 가능한 범위

클래스 범위

profile
주니어 백엔드 개발자

0개의 댓글