본문 바로가기
네트워크/ARP, ICMP

ARP 동작 과정

by 최개미의 세계 2024. 4. 12.

1. ARP 동작 과정

  • 동일 네트워크가 아닌 장비로 데이터를 송신할 때 즉, A→E로 Ping 입력 시, D-MAC이 E가 아니라 E로 가기 위한 라우팅 테이블을 확인하고 해당하는 Next-Hop IP에 해당하는 MAC Address를 알기 위해 ARP Request를 생성 후 전송
  • Link Layer에 해당하는 MAC Address는 동일 네트워크에서만 사용되도록 설계되었으므로 다른 네트워크로 데이터를 전송할 때는 해당 네트워크로 갈 수 있는 게이트웨이로 전송하여 라우팅하여 외부 네트워크로 전송
  • 스위칭할 때는 기본적으로 Broadcast Domain 내의 패킷 이동이므로 Ethernet Header의 S-MAC과 D-MAC 변동 없이 패킷이 전달되지만 라우팅할 때는 다른 Broadcast Domain으로 패킷이 전달되므로 Ethernet Header의 S-MAC과 D-MAC이 변경되어야만 통신이 가능

 

  • A→E로 Ping 입력 시, D-MAC을 모르므로 ICMP Request를 생성 불가

 

  • A는 D-MAC을 알기 위해 ARP Request를 생성하여 송신
  • B는 ARP Request를 수신 후, S-MAC Learning
  • B는 ARP Request를 수신했지만, Target IP가 본인이 아니므로 ARP Learning 불가
  • 보통 ARP Request 패킷을 수신하면 EtherType 및 Opcode 내용을 확인하여 해당 패킷이 ARP Request임을 인지하고 Target IP가 본인이 아니더라도 ARP Learning을 진행하지만, 일부 장비에서 ARP Learning을 하지 않는 경우가 있어 해당 문서에는 ARP Learning을 안 하는 내용으로 정리
    • 일부 장비 : Nokia 7750 SR, Cisco IOL 등
  • Learning을 끝낸 B는 D-MAC이 Broadcast임을 확인하고 Flooding

 

  • C는 ARP Request를 수신 후, S-MAC Learning과 ARP Learning
  • C는 ARP Request를 수신하고 Target IP가 본인이므로 ARP Learning
  • Learning을 끝낸 C는 D-MAC이 Broadcast임을 확인하고 EtherType, Opcode, Target MAC, Target IP를 확인하여 자신에게 송신된 ARP Request임을 확인하고 ARP Reply를 생성하여 회신

 

  • B는 ARP Reply를 수신하고 S-MAC Learning
  • B는 ARP Reply를 수신했지만, Target IP가 본인이 아니므로 ARP Learning 불가
  • Learning이 끝난 B는 D-MAC이 Unicast임을 확인하고 자신의 MAC이 아님을 확인하고 FDB에 D-MAC이 있으면 Forwarding 없으면 Flooding

 

  • A는 ARP Reply를 수신하고 S-MAC Learning과 ARP Learning
  • A는 ARP Reply를 수신하고 Target IP가 본인이므로 ARP Learning
  • Learning을 끝낸 A는 D-MAC이 본인임을 확인하고 EtherType, Opcode, Target MAC, Target IP를 확인하여 본인이 보낸 ARP Request에 대한 ARP Reply임을 확인
  • A는 ICMP Request 패킷을 생성할 때 몰랐던 D-MAC을 알게 되어 ICMP Request 생성 및 송신 가능

 

  • B는 ICMP Request를 수신하고 S-MAC Learning
  • B는 ICMP Request의 D-MAC이 Unicast임을 확인하고 FDB에 D-MAC이 있음을 확인
  • B는 FDB에 D-MAC이 존재하므로 Know Unicast로 인지하여 Forwarding

 

  • C는 ICMP Request를 수신하고 S-MAC Learning
  • C는 ICMP Request의 D-MAC이 본인임을 확인하고 EtherType이 IP임을 확인하고 D-IP가 본인과 다르므로 D-IP가 속해있는 라우팅 테이블이 있는지 확인하고 패킷의 D-IP가 Longest Match Rule에 따라 유효한 항목의 Next-Hop이 Local임을 확인
  • 라우팅 테이블의 Next-Hop이 Local이면 D-IP에 해당하는 MAC을 D-MAC으로 변경해야 하고 D-IP에 대한 라우팅 테이블의 Next-Hop이 다른 라우터를 의미한다면 해당 Next-Hop IP에 대한 MAC을 D-MAC으로 변경
  • C는 패킷이 송수신되는 인터페이스의 네트워크가 다르므로 D-IP의 ARP Table과 FDB를 확인하고 S-MAC과 D-MAC 정보를 변경하여 패킷을 라우팅하여 전달

 

  • C는 ARP Table에 D-MAC에 대한 정보가 없으므로 ICMP Request 패킷 생성 불가

 

  • C는 D-MAC을 알기 위해 ARP Request를 생성하여 송신
  • D는 ARP Request를 수신 후, S-MAC Learning
  • D는 ARP Request를 수신했지만, Target IP가 본인이 아니므로 ARP Learning 불가
  • Learning을 끝낸 D는 D-MAC이 Broadcast임을 확인하고 Flooding

 

  • E는 ARP Request를 수신 후, S-MAC Learning과 ARP Learning
  • E는 ARP Request를 수신하고 Target IP가 본인이므로 ARP Learning
  • Learning을 끝낸 E는 D-MAC이 Broadcast임을 확인하고 EtherType, Opcode, Target MAC, Target IP를 확인하여 자신에게 송신된 ARP Request임을 확인하고 ARP Reply를 생성하여 회신

 

  • D는 ARP Reply를 수신하고 S-MAC Learning
  • D는 ARP Reply를 수신했지만, Target IP가 본인이 아니므로 ARP Learning 불가
  • Learning이 끝난 D는 D-MAC이 Unicast임을 확인하고 자신의 MAC이 아님을 확인하고 FDB에 D-MAC이 있으면 Forwarding 없으면 Flooding

 

  • C는 ARP Reply를 수신하고 S-MAC Learning과 ARP Learning
  • C는 ARP Reply를 수신하고 Target IP가 본인이므로 ARP Learning
  • Learning을 끝낸 C는 D-MAC이 본인임을 확인하고 EtherType, Opcode, Target MAC, Target IP를 확인하여 본인이 보낸 ARP Request에 대한 ARP Reply임을 확인
  • C는 ICMP Request 패킷을 생성할 때 몰랐던 D-MAC을 알게 되어 ICMP Request 생성 및 송신 가능

 

  • A는 처음에 전송했는 ICMP Request는 Time Out
  • B는 ICMP Request를 수신하고 S-MAC Learning
  • B는 ICMP Request의 D-MAC이 Unicast임을 확인하고 FDB에 D-MAC이 있음을 확인
  • B는 FDB에 D-MAC이 존재하므로 Know Unicast로 인지하여 Forwarding
  • C는 ICMP Request를 수신하고 S-MAC Learning
  • C는 ICMP Request의 D-MAC이 본인임을 확인하고 EtherType이 IP임을 확인하고 D-IP가 본인과 다르므로 D-IP가 속해있는 라우팅 테이블이 있는지 확인하고 패킷의 D-IP가 Longest Match Rule에 따라 유효한 항목의 Next-Hop이 Local임을 확인
  • 라우팅 테이블의 Next-Hop이 Local이면 D-IP에 해당하는 MAC을 D-MAC으로 변경해야 하고 D-IP에 대한 라우팅 테이블의 Next-Hop이 다른 라우터를 의미한다면 해당 Next-Hop IP에 대한 MAC을 D-MAC으로 변경
  • C는 패킷이 송수신되는 인터페이스의 네트워크가 다르므로 D-IP의 ARP Table과 FDB를 확인하고 S-MAC과 D-MAC 정보를 변경하여 패킷을 라우팅하여 전달

 

  • D는 ICMP Request를 수신하고 S-MAC Learning
  • D는 ICMP Request의 D-MAC이 Unicast임을 확인하고 FDB에 D-MAC이 있음을 확인
  • D는 FDB에 D-MAC이 존재하므로 Know Unicast로 인지하여 Forwarding
  • E는 ICMP Request를 수신하고 S-MAC Learning
  • E는 ICMP Request의 D-MAC이 본인임을 확인하고 EtherType이 IP임을 확인하고 D-IP가 본인임을 확인하고 Protocol이 1인 ICMP임을 확인하고 ICMP Type 8, Code 0임을 확인한 후에 본인에게 송신한 ICMP Request임을 확인하여 ICMP Reply를 생성하여 회신

 

  • D는 ICMP Reply를 수신하고 S-MAC Learning
  • D는 ICMP Reply의 D-MAC이 Unicast임을 확인하고 FDB에 D-MAC이 있음을 확인
  • D는 FDB에 D-MAC이 존재하므로 Know Unicast로 인지하여 Forwarding
  • C는 ICMP Request를 수신하고 S-MAC Learning
  • C는 ICMP Request의 D-MAC이 본인임을 확인하고 EtherType이 IP임을 확인하고 D-IP가 본인과 다르므로 D-IP가 속해있는 라우팅 테이블이 있는지 확인하고 패킷의 D-IP가 Longest Match Rule에 따라 유효한 항목의 Next-Hop이 Local임을 확인
  • 라우팅 테이블의 Next-Hop이 Local이면 D-IP에 해당하는 MAC을 D-MAC으로 변경해야 하고 D-IP에 대한 라우팅 테이블의 Next-Hop이 다른 라우터를 의미한다면 해당 Next-Hop IP에 대한 MAC을 D-MAC으로 변경
  • C는 패킷이 송수신되는 인터페이스의 네트워크가 다르므로 D-IP의 ARP Table과 FDB를 확인하고 S-MAC과 D-MAC 정보를 변경하여 패킷을 라우팅하여 전달

 

  • B는 ICMP Reply를 수신하고 S-MAC Learning
  • B는 ICMP Reply의 D-MAC이 Unicast임을 확인하고 FDB에 D-MAC이 있음을 확인
  • B는 FDB에 D-MAC이 존재하므로 Know Unicast로 인지하여 Forwarding
  • A는 ICMP Reply를 수신하고 S-MAC Learning
  • A는 D-MAC이 본인임을 확인하고 EtherType이 IP임을 확인하고 D-IP가 본인임을 확인하고 Protocol이 1인 ICMP임을 확인하고
  • ICMP Type 0, Code 0임을 확인한 후에 수신한 패킷이 본인이 송신한 ICMP Request에 대한 ICMP Reply임을 확인하여 Ping 프로세스를 종료

 

'네트워크 > ARP, ICMP' 카테고리의 다른 글

Traceroute Overview 및 동작 과정  (0) 2024.04.19
ICMP Redirect  (0) 2024.04.18
ICMP Destination Unreachable  (0) 2024.04.17
ICMP Request Reply  (0) 2024.04.16
ICMP Overview 및 Header  (0) 2024.04.15
Proxy ARP 동작 과정  (0) 2024.04.14
Gratuitous ARP 동작 과정  (0) 2024.04.13
ARP Overview 및 Header  (1) 2024.04.11