ARP (Address Resolution Protocol)

서버|2010. 7. 19. 00:53
스위치가 허브와 달리 특정 컴퓨터에 패킷을 어떻게 전달하는지에 대해서 그 원리를 알게 되었다.
IP 주소에서 MAC 주소로의 변환 과정을 ARP이 담당하게 됩니다.


1. A사용자가 C사용자에게 "안녕"이라는 메시지를 날립니다. (A는 C의 IP주소를 알고 있음)

2. A사용자의 컴퓨터는 C사용자에게 데이터를 전송하기 위해서 가까이에 연결된 스위치에 요청을 보내게 되고, C사용자의 컴퓨터 MAC Address가 스위치의 CAM(Content Addressable Memory)테이블에 등록되어 있지 않다면, 스위치는 연결되어 있는 모든 컴퓨터에 ARP 브로드캐스트 패킷을 보내게 됩니다.

3. 스위치에 연결되어 있는 컴퓨터들은 들어온 패킷 header 에 있는 IP가 자신의 IP가 아니므로 drop 하게 되고, C 컴퓨터만이 들어온 패킷 정보의 IP가 자신에게 들어온것임을 알고 MAC주소를 ARP reply에 실어 보냅니다.
 
4. 스위치는 reply 해서 들어온 MAC 주소를 CAM 테이블에 저장합니다.

5. reply 들어온 패킷을 A사용자에게 보냅니다.

6. ARP reply 패킷을 받게된 A호스트 역시 IP-MAC테이블을 갱신하게 되고, A사용자는 C사용자의 MAC주소를 알고 있으므로 다음부터는 MAC 주소를 이용하여 통신을 하게 됩니다.

* 여기서 C사용자의 IP-MAC은 A사용자의 MAC정보를 가지고 있지 않으며, 위와 같은 방법으로 C사용자가 A사용자로의 통신 요청 시 갱신이 됩니다.

음..여지껏 컴퓨터끼리의 통신은 IP를 이용한 패킷 통신인줄 알았는데 ARP를 공부하게 되면서 컴퓨터끼리의 통신은 MAC(Media Access Control) Address를 통해서 이루어 진다는 것을 알게 되었고, 그 원리에 대해서 이해할 수 있었습니다. ^^


[추가] 2017-09-26

실제 통신에서 IP만 알아서는 통신을 할 수 없다.

MAC 주소도 함께 알아야 한다.
ARP는 IP를 알고 있는 상태에서 MAC 주소를 알아내는 과정이다.

[다른 네트워크 망일 때]
A컴퓨터가 D컴퓨터와의 통신을 원한다.
1. A는 D가 자신의 네트워크 대역과 다르다는 것을 알았다.
2. <ARP 테이블 초기화된 경우>
 - A컴퓨터는 ARP로 내부 네트워크에 존재하는 Switch의 MAC 주소를 알아내어 Default Gateway로 지정한다.
2. <Default Gateway로 지정되어 있을 경우>
 - Default Gateway에게 D와 통신하고 싶다라고 요청한다.
3. A컴퓨터는 Default Gateway에게 패킷을 전송한다.
4. Default Gateway는 라우터를 통해 D컴퓨터가 속한 네트워크로 패킷을 전송한다.
 - 여기서 중요한점은 출발지 IP는 PC A의 IP지만, 출발지 MAC주소는 A의 Default Gateway MAC주소라는 것이다.
5. D컴퓨터가 속한 네트워크에 패킷이 도착하면​ ARP를 통해 D컴퓨터의 MAC주소를 알아낸 뒤 D컴퓨터에게 패킷을 전달한다.

[ARP 테이블 목록 확인]
arp -a



'서버' 카테고리의 다른 글

mysql 프로시저 loop를 이용하여 테스트 데이터 insert  (1) 2013.02.19
Apache + Tomcat 설치 및 연동  (0) 2012.02.24
아파치 날짜별 로그 설정 cronolog  (3) 2010.07.21
아파치 톰켓 mod_jk 설치  (0) 2010.07.20
리눅스에 아파치 설치  (0) 2010.07.16
리눅스 jdk 설치  (0) 2010.07.12
리눅스 톰켓 설치  (0) 2010.07.12
리눅스 계정 생성  (0) 2010.07.11

댓글()