교재 p104 Wireshark 패킷 분석
IP_A(fe80::a00:27ff:fed4:10bb)에서 다음 홉 IP 주소 IP_B(fe80::a00:27ff:fefe:8f95)의 MAC 주소 요청
Destination MAC | 33-33-ff-fe-8f-95 | MAC_multi_B |
---|---|---|
Source MAC | 08-00-27-d4-10-bb | MAC_A |
Source IP | fe80::a00:27ff:fed4:10bb | IP_A |
Destination IP | (SNM) ff02::1:fffe:8f95 | IP_SNM_B |
ICMP Target IP | fe80::a00:27ff:fefe:8f95 | IP_B |
ICMP Option | (Sender MAC) 08-00-27-d4-10-bb | MAC_A |
IP_B(fe80::a00:27ff:fefe:8f95)에서 IP_A(fe80::a00:27ff:fed4:10bb)로 자신의 MAC 주소 응답
Destination MAC | 08-00-27-d4-10-bb | MAC_A |
---|---|---|
Source MAC | 08-00-27-fe-8f-95 | MAC_B |
Source IP | fe80::a00:27ff:fefe:8f95 | IP_B |
Destination IP | fe80::a00:27ff:fed4:10bb | IP_A |
ICMP Target IP | fe80::a00:27ff:fefe:8f95 | IP_B |
ICMP Option | (Target MAC) 08-00-27-fe-8f-95 | MAC_B |
요청 호스트에서 다음 홉 IP주소에 대응하는 MAC주소가 없다. ICMPv6에 Sender MAC주소, Target IPv6 unicast 주소를 담는다. 다음 홉 IP주소를 이용해 SNM 주소를 만든다. IP 헤더의 Dest IPv6주소에 담는다. 이더넷 헤더의 Dest MAC주소에는 SNM주소로부터 만든 MAC multicast 주소를 넣는다. 전송한다.
응답 호스트에서 MAC주소가 본인이 가입한 그룹임을 확인하여 프레임을 받고 IP로 올려보낸다. (확인 기준은 MAC주소 마지막 4바이트가 “ff + 본인 인터페이스 IPv6주소의 마지막 3바이트”와 일치하는지이다.) IP에서는 목적지 IP주소로 적힌 SNM주소의 멀티캐스트 그룹에 본인이 포함되어 있는지 검사한다. (모든 인터페이스는 IPv6주소의 마지막 3바이트가 자신과 일치하는 SNM주소의 멀티캐스트 그룹에 자동으로 가입되어 있다.) 검사를 통과한 IP데이터그램의 데이터는 커널의 ICMPv6 모듈로 배달된다. ICMPv6에서는 Target IP주소가 본인과 일치함을 확인하고(사실 당연하다), 응답한다.
응답 ICMPv6 패킷에는 응답 호스트의 IPv6 unicast 주소가 Target Address에 그대로 담기고, Option에 응답 호스트의 MAC unicast 주소가 담긴다. IP 헤더의 Dest IPv6주소에는 요청 호스트의 IPv6 unicast 주소가 담긴다. 이더넷 헤더의 Dest IPv6는 NS(요청)에서 ICMPv6 Option에 담겼던 요청 호스트의 MAC unicast 주소가 담긴다.
요청 호스트는 응답 ICMPv6 패킷 Option에 담긴 다음 인터페이스의 MAC주소와, 다음 홉 IP주소를 얻게 된다.
Target IP주소에 자신의 IP주소를 담은 NS를 multicast로 전송 → reply가 없으면 링크 내 중복 X
(예시) host B의 IP주소(fe80::a00:27ff:fefe:8f95)에 대한 NS