Home IP주소체계 (+MAC, ARP, RAPP)
Post
Cancel

IP주소체계 (+MAC, ARP, RAPP)

IP주소

Internet Protocol address.

논리적 주소(변할 수 있다.)이며 컴퓨터 네트워크에서 장치들이 서로 인식하고 통신하기 위해 사용하는 특수한 번호이다.

IP 기반으로 통신한다고 하는데 사실상은 그 밑의 물리적 주소인 MAC 주소를 통해 통신한다.

MAC 주소

Media Access Control Address.

물리적 주소이자 네트워크 인터페이스에 할당된 고유 식별자이며 보통 장치의 NIC(랜카드)에 할당된다.

48비트로 이루어져 있으며 24비트의 OUI와 24비트의 UAA로 이루어져 있다.

  • OUI : IEEE(네트워크 관련 단체)에서 할당한 제조사 코드
  • UAA : 제조사에서 구별되는 코드

ex) 04-42-1A-0E-17-85

앞의 6자리는 OUI, 뒤의 6자리는 UAA.

** MAC주소는 보통은 유일하지만 유일하지 않을 수 있다. 실수 또는 의도적으로 UAA를 중복되게 만들 수 있다. 이 때 동일 네트워크에서만 중복되지 않으면 문제는 없다.

ARP & RARP

IP를 가지고 있을 때 MAC주소를 어떻게 찾느냐.

이 과정에 사용되는 것이 ARP 프로토콜이다.

ARP를 통해 논리적 주소인 IP주소를 물리적 주소인 MAC주소로 변환한다.

RARP를 통해 물리적 주소인 MAC 주소를 논리적 주소인 IP주소로 변환한다.

ARP의 과정

  1. 해당 IP주소에 맞는 MAC주소를 찾기 위해 해당 데이터를 브로드캐스팅을 통해 연결된 네트워크에 있는 장치에게 모두 보낸다.
  2. 맞는 장치가 있다면 해당 장치는 보낸 장치에게 유니캐스트로 데이터를 전달해 주소를 찾게 된다.

이진수에 대한 이해

위와 같이 이진수를 나타낼 수 있다. 위의 수는 128 + 64 + 8 + 2 = 202이다.

IPv4 & IPv6

IP주소는 IPv4, IPv6으로 나눠진다.

IPv4

IPv4는 32비트로 표현되는 주소체계이며 (2^32개의 주소 표현) 8비트 단위로 점을 찍어 4개로 구분한다. 8비트를 10진수로 표현한다.

2^32 = 41억 9천만 정도의 주소가 부족하기 때문에 NAT, 서브네팅 등 여러개의 부수적인 기술이 필요하다.

** 8비트의 단위를 옥텟이라고도 한다.

IPv6

IPv6는 128비트로 표현되는 주소체계이다. 2^128개의 주소표현이 가능하다. 따라서 NAT, 서브네팅이 필요하지 않다. 16비트씩 8개로 구분하고 16비트는 16진수로 변환되어 콜론(:)으로 구분하여 표시한다. 앞의 연속되는 0은 생략될 수 있다.

앞의 64비트는 네트워크 주소이며 뒤의 64비트는 인터페이스 주소(Host)이다.

특징

  • IPv6은 IPSec이 내장되어 있다. - 데이터 패킷을 암호화하는 보안 네트워크 프로토콜 제품군.
  • 단순해진 헤더 포멧 - IPv4 헤더의 불필요한 필드를 제거하여 보다 빠른 처리가 가능하다.

IPv4, IPv6 헤더 비교

  • IPv4는 체크섬이 있지만 IPv6은 체크섬이 없다. 헤더의 효율화를 위해 IPv6은 CRC를 제외한다. 상위 프로토콜(TCP, UDP)에서 이미 체크섬이 있기 때문에 이를 제거할 수 있다.

** CRC - 순환중복검사로 네트워크 상에서 데이터에 오류가 있는지 확인하기 위한 체크값을 결정하는 방식.

** UDP를 사용할 때 체크섬 필드는 선택사항이지만 UDP + IPv6을 사용할 때는 체크섬 필드를 무조건 사용해야 한다.

  • IPv4의 헤더는 가변길이이지만 IPv6은 고정길이(40바이트)이다. 따라서 헤더길이에 대한 정보, 식별, 플래그 등이 삭제되어 있다.

  • IPv4의 TTL은 IPv6에서 HOP limit으로 대체되었다.

** TTL - 패킷이 네트워크에서 무한 순환하지 않도록 하는 변수. 패킷이 네트워크에서 라우터를 거칠때마다 TTL값이 1씩 감소하고 값이 0이되면 폐기한다.

Q. 그래서 누가 더 빠른가?

보통은 IPv6이 빠르지만 IPv6이 사용하는 더 큰 패킷 크기로 인해 일부 사례에서는 속도가 느려질 수 있다.

클래스풀(Classful IP Addressing)

IP주소는 인터넷 주소로 네트워크 주소, 호스트 주소 두 부분으로 나뉜다.

네트워크 주소는 호스트들을 모은 네트워크를 지칭한다. 네트워크 주소가 동일하다면 로컬네트워크인 것이다.

호스트 주소는 말 그대로 호스트를 구분하기 위한 주소이다. 호스트는 컴퓨터 네트워크에 연결된 컴퓨터나 기타 장치를 의미한다.

(IPv4 기준)

클래스풀은 네트워크 주소를 매기고 그에 따라 네트워크의 크기를 다르게 구분하여 클래스를 할당하는 주소체계이다.

구분하는 기준자 (첫번째, 두번째, 세번째 옥텟)를 서브넷 마스크라고 한다.

이진수로 바꾸었을 때 첫 주소의 첫번째 옥텟 1의 개수나 끝 주소의 첫번째 옥텟 0의 위치를 보고 클래스를 구분할 수 있다.

클래스 A

클래스 A는 0.0.0.0 ~ 127.255.255.255 까지가 포함된 것이다. 그리고 첫번째 옥텟만 네트워크 주소이고 나머지는 호스트 주소인 것이다.

ex - 1.0.0.0 과 1.255.255.255는 같은 네트워크의 다른 장치이다.

  • 2^24 - 2 = 한 네트워크당 16,777,214 개의 호스트 ID를 가진다.
  • 네트워크 주소 범위 : 1~126 으로 시작한다. (127.x 는 루프백 주소이기 때문에 포함하지 않고, 0.0.0.0도 특수 주소로 포함되지 않는다.)

** 루프백 주소 = 웹서버를 열 때 127.0.0.1 이렇게 접속하는데 이 주소는 본인 IP를 지칭하는 특수 주소이다. 이것을 루프백 주소라고 한다.

클래스 B

  • 2^16 - 2 = 한 네트워크당 65534개의 호스트 ID
  • 네트워크 주소 범위 : 128~191로 시작.

클래스 C

  • 2^8 - 2 = 한 네트워크당 254개의 호스트 ID
  • 네트워크 주소 범위 : 192~223 으로 시작.

Q. 2개를 빼는 이유?

맨 앞자리는 해당 네트워크를 상징하는 네트워크 주소로 남겨두며 마지막 주소는 브로드캐스팅 주소로 남겨둔다. ex) 클래스 C 기준 192.0.0.1 / 192.0.0.255

Q. 클래스풀의 문제점은?

네트워크의 크기가 어중간하면 낭비되는 IP가 생기거나 여러개를 확보해야 하는 문제가 있다.

클래스리스(+서브넷마스크, 서브네팅)

클래스풀의 단점을 해결하기 위해 클래스리스가 나왔다. 클래스로 나누는 것이 아닌 서브넷마스크를 중심으로 어디까지가 네트워크 주소이고 어디까지가 호스트 주소인지를 나눈다.

  • 서브네팅 : 네트워크를 나눈다는 의미
  • 서브넷 : 서브네트워크, 쪼개진 네트워크
  • 서브넷마스크 : 서브네트워크를 위한 비트마스크

** 현재 우리가 사용하는 주소체계는 클래스리스이다.

서브넷 마스크

네트워크 주소 부분만 모두 1, 호스트 주소 부분은 0으로 설정해 나눈다.

192로 시작하기 때문에 클래스C이고 클래스 C는 3번째 옥텟까지 모두 네트워크 주소이다. 따라서 서브넷마스크는 1111111.1111111.1111111.0000000 (255.255.255.0) 이 되는 것이다.

클래스리스의 세분화

IP주소에서 192.168.50.122 / 24 이렇게 표시가 되면 마지막 호스트주소를 이진수로 나타냈을 때 00000000 이어서 2^8 = 256개의 호스트가 가능한 것이고

192.168.50.122 / 25 이렇게 표시가 되면 마지막 호스트주소를 이진수로 나타냈을 때 10000000 이어서 맨 앞자리는 변하지 않고 2^7 = 128개의 호스트가 가능한 것이다.

이러한 방식으로 필요한 개수를 세분화해서 지정할 수 있는 것이다.

Q. 10개의 사무실이 있고, 사무실당 12개의 장치를 연결해야 한다면?

한 서브넷당 123.12.12.12/28로 16개의 네트워크를 확보해야 한다. 이를 통해 16-2 = 14개의 장치를 확보할 수 있다.

공인 IP와 사설 IP와 NAT

IP주소의 부족을 공인 IP와 사설 IP로 나누고 중간에 NAT라는 기술을 통해 해결한다.

NAT?

Network Address Translation.

패킷이 트래픽 라우팅 장치를 통해 전송되는 동안 패킷의 IP주소를 변경하고 IP주소를 다른 IP주소로 매핑하는 방법이다.

팀장, 대리끼리 송수신할 경우 사설IP를 이용해 통신하고 외부 인터넷과 통신할 때는 공인 IP를 사용하게 되는 것이다.

NAT를 통해 내부 네트워크 IP가 노출되지 않는다는 장점이 있다.

실생활에서 인터넷 회선 하나를 개통하고 보통 공유기를 사용해 wifi를 만드는데 이 때 여러대의 호스트가 하나의 공인 IP주소를 사용해 인터넷에 접속하는 것이다.

This post is licensed under CC BY 4.0 by the author.