네트워크 2편. IPv4의 고갈과 대처

Xonic·2021년 10월 29일
2

네트워크

목록 보기
2/3
post-thumbnail

해당 글은 네트워크를 아예 모르는 분들이 보시기엔 어려울 수 있습니다..

최대한 어려운 (많이 내포되어진) 지식은 조금 풀어서 설명할 수 있도록 노력하였지만
1편을 보시고 이 글을 보시는게 조금은 더 도움이 될 거에요.

네트워크...

  • 네트워크란 1편에서 말했듯이 2개 이상의 Host가 전송매체를 통해 서로 연결된 상태를 말한다.
  • 결국엔 흔히 말하는 Computer를 연결한 구조를 네트워크라 말하는데,,
  • 서로를 구별하게 하기 위한 전 세계에서 유일한 주소여야 하는 IP를 만들게 된다.
  • IP address는 0.0.0.0 ~ 255.255.255.255 로 표현되는 인터넷 주소이다.
  • 각 자리는 0부터 255까지 즉 2^8 (8bit, 1byte, 1옥텟), 총 2^32이며, 총 만들어 낼 수 있는 주소는 4,294,967,296개 이다. (부족한 이유는 당연히 43억개도 채되지 않기 때문이다)
  • 주소가 고갈되자 IPv6를 만들어냈고, IPv6는 0000.0000.0000.0000.0000.0000.0000.0000 ~ FFFF.FFFF.FFFF.FFFF.FFFF.FFFF.FFFF.FFFF, 각 자리당 16진수 4개로 표현해 0000부터 FFFF까지 즉 16^4, 총 2^128이며 약 340,282,366,920,938,463,463,374,607,431,768,211,456개이다...
  • 여튼 아직도 IPv4를 많이 쓰고 있으며, 더 이상 새로운 주소가 할당되지 않는 IPv4는 더 이상 새로운 주소가 할당되지 않음에도 여전히 많이 쓰이고 있기 때문에, IPv4를 이용하고 있는 방법을 알아보도록 하자.

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)을 기준으로 네트워크 부와 호스트 부가 나뉜다.
클래스네트워크 비트호스트부 비트범위비고
A8 비트24 비트0.0.0.0 ~ 127.255.255.255여기서 127.0.0.1은 루프백 어드레스로 보통 자기 자신을 가리킴
B16 비트16 비트128.0.0.0 ~ 191.255.255.255
C24 비트8 비트192.0.0.0 ~ 223.255.255.255
D32 비트X224.0.0.0 ~ 239.255.255.255멀티캐스트로 사용됨

어드레스 클래스의 낭비

  • 클래스 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)로 바꿔준다.

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

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

참고 : 패킷이란?

  • 패킷은 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다

프라이빗 IP 어드레스로 사용 가능한 범위

클래스범위
클래스 A 중에서10.0.0.0 ~ 10.255.255.255
클래스 B 중에서172.16.0.0 ~ 172.31.255.255
클래스 C 중에서192.168.0.0 ~ 192.168.255.255

요약해보면

  • 예를 들어서 내 IP가 192.168.1.170이라면, 192.168.1.0의 네트워크 주소를 부여받고, 내 노트북의 호스트 부는 192.168.1.170이라는 말이다.
  • 공유기(라우터), 즉 NAT 네트워크 환경에서 내부 네트워크를 이용하고 있는 것이다.
  • 공유기가 공인 아이피를 들고 있을텐데, https://www.whatismyip.com/ 여기서 본인의 공인 아이피를 확인할 수 있다!

이 글을 마치며

  • 너무 지식들이 산재돼 있어 글을 정리하기가 어렵다..
  • 혹시 더 궁금한 점이 있으시면 댓글로 남겨주시면 성실히 답변 드리겠습니다.
profile
공부 한 것을 공유하는 블로그입니다.

0개의 댓글