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 |