IP Address

IP(Internet Protocol)주소란 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호이다. 이 번호를 이용하여 발신자를 대신하여 메시지가 전송되고 수신자를 향하여 예정된 목적지로 전달된다.

쉽게 인터넷에서 사용되는 전화번호부라고 생각하면 된다. 하지만 IP주소는 32비트의 숫자로, 사람이 이 번호를 외우기는 어렵기 때문에 숫자가 아닌 naver.com과 같은 도메인으로 변환하여 사용하고 있다. 이렇게 IP주소와 도메인을 매핑하고 변환시켜주는 역할은 DNS(Domain Name System)가 한다.

 

IPv4, IPv6

IPv4는 오늘날 일반적으로 사용하는 IP주소이다. IP는 Internet Protocol의 약자이며, v4는 version4라는 뜻을 갖고 있다. 이 주소의 범위는 32비트로 0~255사이의 십진수 넷을 쓰고 '.'으로 구분하여 쓰인다. 즉 0.0.0.0 부터 255.255.255.255까지의 주소가 있다. 총 42억9496만7296개이다. 이러한 주소의 일부 번호는 특별한 용도를 위해 예약이 되어 있다. 예를 들어 127.0.0.1과 같이 127로 시작하는 IPv4 주소는 localhost로, 자기 자신을 가리킨다.

IPv6는 IP version6 주소로, IPv4 32비트를 사용하여 모든 단말에 주소를 부여하기가 부족해짐에 따라 128비트로 늘린 새로운 버전이다. IPv6는 두 자리 16진수 여덟 개를 쓰고 ':'을 통해 구분한다.

 

 

MAC Address

MAC(Media Access Control)주소는 TCP/IP 4계층에서 Link Layer에서 사용되는 디바이스마다 할당된 고유 주소이다. 물리 주소, 이더넷 하드웨어 주소라고도 불린다. 00-C0-4F-48-47-93과 같이 48비트로 구성되어 있으며 이 MAC주소는 이더넷 상에서 통신을 할 때 필요하다. 같은 네트워크 안에서 통신을 할 때에는 MAC주소만으로도 통신이 가능하다. 하지만 다른 네트워크에 있는 호스트와 통신을 하기 위해서는 IP주소가 필요하다.

통신

그렇다면 IP주소MAC주소는 각각 어떻게 쓰이고 있고 왜 필요한지 알아보자. 다음은 이더넷 상에서의 통신을 그림으로 나타낸 사진이다.

 

 

위의 사진에서 왼쪽부터 차례대로 호스트 a, 호스트 b, 호스트 c 이다. 이때 a가 c에게 통신을 위해 IP패킷을 보낸다고하자. IP패킷은 다음과 같은 모양일 것 이다.

 

 

payload가 있고 그 앞에 destination address, Source address가 차례로 있다. 이때 destination address에는 c의 IP주소인 192.168.0.3이 채워지게 된다. 그리고 이 IP패킷 앞에 MAC주소가 붙어 패킷을 보내게 되는데, a는 c의 MAC주소를 모르기 때문에 패킷을 보낼 수 없다. 즉 Ip주소는 알고 있다고 해도 MAC주소를 알아야 패킷을 보낼 수 있는데 모르기 때문에 보낼 수 없는 상태인 것이다. 그렇다면 이럴 때에는 어떻게 해결할까. 주소 결정 프로토콜인 ARP을 사용한다.

 

ARP

ARP(Address Resolution Protocol)는 네트워크 상에서 Ip주소MAC주소로 변환시킬 때 사용한다. 첫 번째 사진에서 a가 From에는 a의 ip주소와 MAC주소, To에는 c의 ip주소가 담긴 ARP Request를 보내는 것을 볼 수 있다. 그리고 패킷에서 To의 MAC주소에는 브로드캐스팅 물리적 네트워크 주소인 FF:FF:FF:FF:FF:FF를 가지는 것을 볼 수 있는데 이는 모든 호스트에 Broadcast한다는 것이다.

그리고 호스트 중에 브로드캐스팅된 ARP Request패킷을 보고 자신의 Ip주소와 대칭이 된다면 ARP Reply패킷을 보낸다. 위의 사진에서 ARP Reply패킷을 보내는 호스트는 c일 것이다. a는 ARP Reply에 담긴 목적지의 MAC주소를 보고, 패킷을 보낼 수 있게 된다.

ARP정보는 누가 보냈는지를 검증할 수 있는 수단이 없기 때문에, 만약 같은 네트워크 상에 있는 사용자가 변조된 정보를 보낼 경우 그 정보를 받은 사용자는 잘못된 맥 주소로 패킷을 보내게 된다는 보안적인 문제가 있다. 

 

 

 

'Network' 카테고리의 다른 글

[네트워크] DNS란?  (0) 2021.02.18
[네트워크] HTTP vs HTTPS  (2) 2020.09.02
[네트워크] OSI 7계층 모델  (0) 2020.08.28

생강강

,