프로그래밍 농장

TCP / IP 프로토콜 [ ARP (Address Resolution Protocol) ] 본문

TCP-IP 프로토콜

TCP / IP 프로토콜 [ ARP (Address Resolution Protocol) ]

Tennessee201 2021. 6. 14.
728x90

- ARP 

 IP-to-MACaddress mapping을 사용: IP-toMAC :내가 알고싶은 IP를 사용하는 device의 MAC주소를 알고자할떄 사용 

-> IP 와 MAC주소에 대한 address mapping을 담당하는 프로토콜이다. 

= 타겟의 ip주소를 알고있을떄, 타겟ip에 mapping 되는 mac주소를 알고자할떄

 

- ARP 계층상위치가 2.5 ( Network layer)인 이유 : ip datagram생성-> frame으로 incapsulation하기전에 arp 프로토콜을 호출 ->  layer3작업 후 layer2작업전에 arp가 돌아가기떄문이다. 

 

- ARP Protocol이 사용되는 4가지 환경 

1 -> sender와 target(타겟)이 동일 네트워크에 존재할떄  (sender -> target)

2 -> sender가 호스트이고, 다른 네트워크로 타겟을 잡을때 (sender -> router1)

3 -> sender가 router(라우터) 일떄   (router1 -> router2) -> Next router(2)를 만들어서 포워딩 진행 

4 -> sender가 router(라우터)이며, target(타겟)과 동일 네트워크에 존재할떄 (router2 -> target)

--> 최종 : target Node의 MAC주소를 정확하게 gathering . 

 

자신의 네트워크와 동일하지 않은 타겟을 위해 라우터정보가 기록됨 (mapping table안에 기록) 

-> 내가 다른 네트워크에 통신을 하려하면 현재 나의 mac주소가 시스템에 기록됨 

 

- sender와 target(타겟) node가 동일 네트워크에 존재하는지 알수있는 방법

  본인의 Network prefix값 = ip packet의 목적지 Network prefix   -> 동일 네트워크. 

  본인의 Network prefix값 != ip packet의 목적지 Network prefix   -> 동일x 네트워크. 

 

 

- ARP 프로토콜 진행 순서

패킷생성->  패킷헤더를 보면 수신자의 목적지ip주소와 소스ip주소 획득 -> 연관된 physical주소를 mapping 테이블에 lookup을 하여 mac주소를 획득 -> address mapping 테이블을 업데이트 -> 그 정보를 datalink로 전달 

ARP Packet 구조

ARP Packet 

- Hardware type(하드웨어 타입) : Ethernet : 1

- Protocol type(프로토콜 타입) : IPv4 : 0800 16 

- Hardware length(하드웨어 길이) : physical length의 주소

- Protocol length(프로토콜 길이) : IP주소의 길이

- Operation : request(1) . reply(2)

 

ARP Packet  -> 'IP datagram에 캡슐화'

 

 

ARP Operation 의 과정

1. sender가 목적의 ip주소를 알아야함 

2. arp 를 호출 (request ) 

3. arp request를 만들기위해 목적의 ip주소를 가져옴 -> data link layer로 넘김 

4. source(자신) , destination(수신자) 의 주소 

5. arp request를 broadcast -> 모든 노드가 수신 -> arp request니까 arp 프로토콜 호출 , 실행 

-> 정보x(응답x)시 폐기 , 자신의 mac주소에 대응(동일)하는 목적지 주소에 arp request 를 처리 ->arp reply 메세지 생성

-> unicast로 return  -> ~~ -> 프레임이 encapsulation이 되도록 해줌 

 

<두가지 mapping 방식이 존재>

- Static mapping (정적 매핑)

-> 정적으로 저장, 각각의 device에서 전부 저장 : 사용자의 ip주소(네트워크상의 identifier)를 알게됨 

   단점 : 인구가 많은경우에는 오버헤드가 매우 심하다. 

 

- Dynamic mapping (동적 매핑)

-> 동적으로 저장, (실시간으로) : 위의 동적 ,오버헤드에 대한 해결책 -> 필요할떄만 사용 

-> 마찬가지로 통신하고자 하는 상대방의 ip주소를 알게됨 / ARP 프로토콜 사용 / RARP 프로토콜 (현재사용 x)

RARP 프로토콜을 안쓰는이유 : ip주소가 글로벌 스탠다드가 됐기때문에, 기본으로 mac주소를 쓰지않아서.  

ARP프로토콜이 필요한 이유 : 해당하는 device에 보낼떄마다 필수적이다. ip에 대한 mac주소에 대한 mapping을 알아야함. -> packet을만들고 destination , source 주소가 들어가는데 frame header밖에 못만든다. -> arp 프로토콜 필요 

-> arp를 통해서 목적지의 mac주소를 획득할수있기때문이다. (기능적으로 심플) 

 

 [ ARP프로토콜의 시작 : 전송하려는 IP datagram의 packet , 수신자의 ip주소를 알고있을떄 시작 ]

frame으로 만드려면 반드시 사용자의 source MAC 과 수신자의 MAC주소( Physical address)를 알아야한다. 

 

- Logical address ( == IP address )

-> 라우팅과 포워딩을 위해 사용 / globally 사용 / 32bit의 주소길이 / 식별자로서의 역할 / 네트워크 디바이스들이 ㅅ로의 식별자가 되는 역할을 하게해줌.  

- Physical address ( ==MAC address )

-> one hop  / device -device / hardware에 implement / 48 bits


Example 8.1 

sender와 target이 동일 네트워크에 있다는것을 아는 방법 : 32bit의 IPv4 프로토콜 / ethernet / ~ 등 네트워ㅓ크 환경 이 동일 

 

Proxy ARP 

-> 장점 : 내가  request를 보냈을떄  reply가 빠름 

-> 자신의 arp address mapping table을 보고 관련된 정보가 있는 node가 대신해서 보내주는것

--> 잘안쓰임 

728x90