IP 주소는 어떻게 MAC 주소에 매핑됩니까?


14

MAC 주소와 IP 주소의 차이점과 두 주소가 모두 필요한 이유에 대해 읽었습니다.

요약하면, MAC 주소는 모든 단일 장치에 대해 물리적으로 변경할 수없는 고유 ID이며 IP 주소는 변경 가능하고 가상으로 할당됩니다. 유사하게 MAC 주소는 영구적 인 이름을 가진 사람과 같으며 IP 주소는 현재 거주하는 곳입니다.

실제로 전화 번호부의 도움으로 주소와 이름을 연결합니다. IP 주소를 MAC 주소에 연결하는 메커니즘은 무엇이며이 메커니즘은 네트워크에서 어디에 있습니까?


5
귀하의 질문을 검토 한 결과, 좋은 책이 도움이 될 것입니다. 의 라인을 따라 뭔가 공부를 고려 TCP / IP 일러스트, 권입니다. 1 : 스티븐스 의 의정서 (1993 년 판은 IPv4 심층 만 다루지 만 1993 년 판은 2011 년의 재 발표보다 일반적으로 더 나은 것으로 간주됩니다).
Mike Pennington 2016 년

"일러스트 네트워크 : 최신 네트워크에서 TCP / IP 작동 방식"및 / 또는 "TCP / IP 안내서 : 포괄적 인 일러스트 인터넷 프로토콜 참조"도 살펴볼 가치가 있습니다.
Jens Link

4
@MikePennington 감사합니다. "RTFM"및 -1과 반대로 단어를 표현하는 좋은 방법입니다. 나는 지금 온라인으로 그것을 읽고있다 :)
CodyBugstein


1
MAC 주소는 실제적이거나 물리적이거나 변경 불가능하거나 고유하지 않습니다. 재부팅 할 때마다 MAC을 무작위로 추출하는 장치를 보았습니다. 거의 모든 인터페이스의 MAC을 임시 또는 영구적으로 변경할 수있는 거의 모든 플랫폼에 대한 유틸리티가 있습니다. iOS 8은 네트워크 스캔을 위해 wifi MAC을 무작위 화합니다.
MacLemon

답변:


19

이 메커니즘을 ARP (Address Resolution Protocol )라고 합니다. 모든 이더넷 IPv4 장치 ARP는 대상 IP의 이더넷 Mac 주소를 확인합니다. IP 대 Mac 매핑은 각 장치의 ARP 테이블 (비유의 전화 번호부)에 저장됩니다.

단순화 : 대부분의 경우 IP 주소와 관련된 MAC 주소를 확인하려면 브로드 캐스트 ARP 패킷을 네트워크의 모든 장치로 보내 누가 해당 IP 주소를 가지고 있는지 묻습니다. 해당 IP 주소를 가진 장치는 MAC 주소를 사용하여 ARP에 응답합니다.


대부분의 경우 로컬 arp 테이블에서 조회한다고 생각합니다. 방송을 처음해야 할 때
Cruncher

^ 물론, 장치 MAC을 알아 낸 후 ARP 테이블에 일정 시간 (분) 동안 저장되므로 각 패킷에 대해 ARP 쿼리 프로세스를 반복 할 필요가 없습니다.
mulaz

오, 몇 분 후에 테이블이 떨어 졌다는 것을 몰랐습니다. 나는 그것이 잠시 동안 개최되었다고 생각했다. 이것이 ARP 독에 해당됩니까? ARP 응답을 유사하게 보내야합니까?
Cruncher

예, "실제"호스트는 패킷을 감염된 시스템으로 보내지 않아야합니다. 그렇지 않으면 시스템이 '실제'MAC을 저장합니다.
mulaz 2016 년

1
당신이 달성하려는 것에 따라.
mulaz 2016 년

13

질문에 IPv6 태그가 지정되었으므로 IPv6이 IPv4와 매우 다르기 때문에 이에 대한 답변을 드리겠습니다.

우선 ARPv6과 같은 것은 없습니다. 계층 2와 IPv6 주소 간의 매핑은 ICMPv6을 통해 전송되는 NDP (Neighbor Discovery Protocol)에 의해 수행됩니다. 따라서 레거시 IP의 사용자 지정과 마찬가지로 ICMPv6을 무시하고 필터링 하지 않아야합니다 . NDP는 Neighbor Solicitation과 Neighbor Advertisement의 두 가지 메시지 유형을 제공합니다. 특정 IP 주소에 대한 링크 계층 주소를 배우려는 노드는 Neighbor Solicitation을 해당 링크 로컬 요청 노드 멀티 캐스트 주소로 보냅니다 . 더 이상 IPv6에 대한 브로드 캐스트가 없습니다.

예를 들어, 해당 주소가 2001:db8::0011:2233:4455:6677이면 요청 된 노드 멀티 캐스트 주소는 ff02::1:ff55:6677이고, 이더넷 멀티 캐스트 주소는 33:33:ff:55:66:77입니다. 주소가 끝나는 모든 노드는 *55:6677해당 멀티 캐스트 그룹 에 속하며이를들을 것입니다. 대상 시스템 자체 일 가능성이 높습니다. 네트워크 환경 요청에는 요청 시스템의 유니 캐스트 IPv6 주소 및 MAC 주소도 포함됩니다.

수신시 대상 노드는 네트워크 환경 알림으로 응답하여 요청 노드의 유니 캐스트 주소 (링크 계층 및 IPv6)로 전송됩니다. 따라서 요청 노드는 대상 노드의 MAC 주소를 학습합니다.

네, NDP 스푸핑은 ARP 스푸핑과 매우 유사합니다. 그리고 IPsec은 답이 아닙니다.


" ARP 자체는 4 바이트 네트워크 계층 주소 (예 : IPv4) 용으로 만들어 졌기 때문에 사용할 수 없습니다. "이것은 사실이 아닙니다. ARP는 주소 길이 필드를 사용하여 레이어 2 및 레이어 3 주소 모두에 대한 주소 길이 (최대 255 옥텟)를 지정합니다 (RFC 826 참조). IPv6에 ARP를 사용할 수없는 이유는 IPv6에 브로드 캐스트가 없기 때문입니다.
Ron Maupin

1
v6에는 브로드 캐스트가 없기 때문에가 아니라 보안상의 이유로 ARP가 v6에서 NDP로 대체되었습니다 (그리고 모든 v6-adjacent 프로토콜과 마찬가지로 중요한 기능 크립이 발생했습니다). v6 주소.
Nick Bastin

2
보안상의 이유로 ARP가 처음에 대체되었는지는 모르겠습니다. 내가 아는 한 ICMPv6에 의해 모든 제어 프로토콜을 다루고 자하는 바람이있었습니다. 부작용으로 그렇습니다. IPsec로 ICMPv6을 보호 할 수 있습니다. 그러나 IPsec에는 키 교환이 필요하고 IKE는 UDP를 통해 실행되며 IP 주소가 필요합니다. NDP의 한 가지 작업은 IP 주소를 협상하는 것이며 수동 키 교환은 확장되지 않으므로 NDP + IPsec = 안전한 NDP라는 아이디어는 이런 식으로 작동하지 않습니다. SeND와 같은 대안은 해제되지 않았으며 앞으로도 계속되지 않을 것입니다. 결국 NDP와 ARP의 보안 이점은 보이지 않습니다.
카운터 모드

4

가장 좋은 답변 입니다. 도움이되는 경우, 전화 번호부 비유에 대한 설명이 있습니다. 괄호 안의 실제 네트워킹 용어.

자신의 이름 (IP 주소)을 기준으로 이웃에 거주한다는 것을 알 수 있습니다 (브로드 캐스트 도메인). 먼저 전화 번호부 (ARP 캐시)에서 해당 주소 (MAC 주소)를 이미 알고 있는지 확인하십시오. 그들이 전화 번호부에 없다면, "스티브는 어디에 살고 있습니까?" 모두가들을 수있을만큼 큰 소리로 들립니다 (ARP 요청). Steve가 실제로 거기에 살고 있고 깨어 있다고 가정하면, "내 주소는 여기에 있습니다"(ARP 회신)입니다. 나중에 참조 할 수 있도록 전화 번호부에 기록하십시오 (ARP 캐싱).


확실한. 저에게는 재미있는 운동이었습니다. 브로드 캐스트 / 유니 캐스트와 같은 실제 요소는 비유에 완벽하게 매핑되지 않으므로 (소리 / 토킹 / 메일?) 소금 한 알을 가져 가십시오.
Jacktose

편집자에게 : 나는 나중에 MAC 주소를 유추하여 주소를 사용했습니다.
Jacktose

2
  1. MAC 주소는 변경 될 수 있습니다. Linux에서는 대부분의 Windows에서 ip 또는 ifconfig를 사용하여 네트워크 인터페이스의 드라이버 설정을 확인하십시오.

  2. 당신은 아무것도 변환하지 않습니다. MAC 주소는 OSI 모델의 Layer-2에 있고 IP는 Layer-3에 있습니다. IPv4 ARP의 경우 어떤 MAC (Layer-2) 주소가 특정 IP (Layer-3) 주소에 속하는지 알아내는 데 사용됩니다. IPv6 IC의 경우 이웃 검색 (Neighbor Discovery)이 사용됩니다.


미안 해요,하지 "변환" "번역"고 말했다 했어야
CodyBugstein

0

주소 확인 프로토콜 (ARP)

IP 주소 ---> ARP ---> MAC 주소

MAC 주소 ---> RARP ---> IP 주소

IP 주소 = 논리 주소 [32 비트]

MAC 주소 = 실제 주소 [48 비트]

네트워크 계층 (IP) ----> ARP ---> 데이터 링크 계층 (MAC)

소스 / 대상 호스트를 식별하려면 네트워크 계층에 IP 주소가 필요합니다.

소스 / 대상 호스트를 식별하려면 데이터 링크 계층에 MAC 주소가 필요합니다.


RARP에 대해 틀 렸습니다 (많은 사람들이이 잘못된 생각을 가지고 있음). 이것은 다른 호스트의 IP 주소가 아닌 호스트가 자체 IP 주소를 결정하는 데 사용했던 것입니다. 더 이상 사용되지 않습니다.
Ron Maupin

0

네트워크 스택은 먼저 라우팅 테이블에서 대상 IP를 조회합니다. 여기에서 두 가지를 결정합니다.

  1. 패킷이 전송되어야하는 인터페이스
  2. 다음 홉의 IP 주소 라우팅 테이블에 다음 홉이 지정되어 있지 않으면 대상의 IP가 다음 홉으로 사용됩니다.

다음 홉 IP 주소는 순전히 로컬 개념이며 유선으로 전송되는 패킷의 일부가되지 않습니다.

패킷이 멀티 포인트 링크 계층 (예 : 이더넷 등)으로 전송되는 경우 OS는 arp (ipv4) 또는 neighbour discovery (ipv6) 테이블에서 다음 홉을 찾습니다. 비 이야기 항목을 찾으면 필요한 MAC 주소가 있고 패킷을 보낼 수 있습니다.

사용 가능한 항목이없는 경우 해당 다음 홉으로 향하는 패킷을 보류하고 MAC 주소 찾기 요청을 보냅니다. 여기서 mechnisms는 v4와 v6에서 약간 다릅니다.

v4에서는 arp 요청이 전송됩니다. 이것은 일반적으로 브로드 캐스트되지만 호스트에 오래된 항목이 있으면 유니 캐스트 요청을 먼저 시도하고 실패하면 브로드 캐스트로 폴백 할 수 있습니다. 회신은 일반적으로 유니 캐스트입니다.

v6 neigbour 요청 요청은 다음 홉 주소에서 생성 된 멀티 캐스트 주소로 전송됩니다. 대상은 유니 캐스트 인접 광고로 응답합니다. 호스트는 또한 이웃 광고를 "모든 노드 멀티 캐스트"(일명 효과적으로 브로드 캐스트) 그룹에 보내 동료 피어 이웃 검색 캐시의 항목을 새로 고칠 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.