ARP 프로토콜
- Address Resolution Protocol
IP주소로 MAC Address를 알아내는 프로토콜
컴퓨터들이 서로 통신할 때는 특별한 주소가 필요하다.
이 주소 중에는 IP 주소와 맥 주소라는 두 가지 주소가 있다.
IP 주소는 컴퓨터의 집 주소 같은 것이고, 맥 주소는 컴퓨터의 고유 번호 같은 것이다.
그런데 컴퓨터가 서로 통신하려면 IP 주소를 통해 어떤 컴퓨터인지 알아야 하고, 그 다음에 맥 주소를 통해 직접 메시지를 전송한다.
ARP는 이 두 주소를 서로 연결해주는 역할을 하는데, IP 주소를 알고 있을 때 그 IP 주소에 해당하는 맥 주소를 알아내는 도구라고 할 수 있다.
"너는 친구들과 편지를 주고받을 때, 친구의 집 주소를 알아야 편지를 보낼 수 있잖아? 컴퓨터들도 서로 '편지'를 주고받을 때, 주소를 알아야 해. 이 주소를 IP 주소라고 해. 근데, 컴퓨터들은 또 다른 특별한 주소도 가지고 있어. 그걸 맥 주소라고 해.
그런데, 컴퓨터가 IP 주소만 알고 맥 주소를 모를 때는 어떻게 할까? 여기서 ARP가 등장해! ARP는 컴퓨터가 다른 컴퓨터의 맥 주소를 알아낼 수 있게 도와주는 마법 같은 도구야. 컴퓨터가 '이 IP 주소를 가진 친구의 맥 주소가 뭐야?' 하고 물으면, ARP가 '이 친구의 맥 주소는 이거야!'라고 알려줘."
- L2 구간은 MAC이 우선
- IP주소는 상관 X
- 단자 8개 = 8 port = 인터페이스가 8개 있는 스위치 허브
- 스위치는 각 포트마다 MAC을 기억시킨다(=저장)
- 스위치 전원을 키면 학습모드(Learning mode)로 들어간다
- A와 B가 통신을 할 때 L2 Ethernet Frame이 왔다갔다
- L2 스위치가 스위칭함
- 지나갈 때 Port에서 읽음
- 1번 port에 A라는 컴퓨터(Host)가 있고, 그것의 MAC address가 ~구나하고 기억
- 각 통신마다 외움
- C가 A에게 정보를 보낼 때는
- 스위치 허브가 1번에 보낼지 2번에 보낼지 스위칭을 해야하는데 이미 1번에 A가 있다고 학습해서 알고 있음
- 2번에 보내지 않고 바로 1번으로 보냄 (L2 스위칭을 한 것)
- 더미허브라고 안 하는 것도 있긴 함
- Port 단자마다 MAC address를 몇개까지 저장할 수 있지? = L2스위치의 H/W 성능 결정 spec
- Port 하나에 Host MAC address N개 기억
→ 주로 용량으로 이야기함
- uplink로 L2 스위치가 또 있고, 또 다른 L2스위치로 이어져 D, E가 있다
- 10번 port 입장에서 Mapping될 수 있는 MAC address가 A, B, C가 있음
- 만약 D와 E의 랜선을 뽑아 서로 교차해서 연결한다면?
- L2 스위치가 확인하고 있던 port 번호가 바뀜, 그에 따른 대응 필요
- 스위치 설정을 잘 하던가 다시 학습을 시키던가... 해야함
ARP
- L2 Access(방마다), L2 Distribution(층마다)
- 3번 PC 전원을 껏다 킴 (사실상 선을 분리했다 다시 연결시킨거나 마찬가지)
- PC들 전부 다 192.168.0.X 대역
- Gateway가 192.168.0.1
- 3번 PC가 NAVER로 접속하려면 Packet(정확히는 L2 Frame)이 gateway까지 가야해
- 문제는 자신의 Gateway인 192.168.0.1번의 MAC 주소를 몰라
- 알아야 Frame Header를 붙일 수 있음
- 네트워크 전체에다 대고 Broadcast를 함
- Query를 날림
- "얘들아 너희들 중에 IP주소가 192.168.0.1인 애가 있니?"
- 해당하지 않으면 응답을 하지 않음
- 해당하는 애가 응답을 보냄
- Reply는 Unicast (콕 찝어서)
- 전원을 처음 켜서 MAC address를 모를 때는 ARP Request가 나감
- 그에 따르는 Reply가 도착
- MAC address 파악 가능
- 한번이라도 query를 보내서 알아냈으면 reply를 메모리에 저장(caching) = ARP Cache
- LAN = Broadcast가 도달하는 범위
- Broadcast는 잘못하면 네트워크 효율을을 떨어트림
- 하지만 ARP등이 Broadcast방식으로 작동
- 이럴 때 중대한 역할을 하니 없어서는 안된다
ARP Spoofing
컴퓨터들이 서로 통신할 때는 특별한 주소가 필요하다.
이 주소를 통해 어떤 컴퓨터가 어떤 컴퓨터에게 메시지를 보내는지 알 수 있다.
ARP 스푸핑은 이 주소를 속여서, 원래의 메시지를 받아야 할 컴퓨터 대신 다른 컴퓨터가 메시지를 받게 만드는 기법이다.
이렇게 되면, 메시지를 가로채거나 바꿀 수 있어서 네트워크의 안전이 위협받게 된다.
"너가 친구와 서로 편지를 주고받을 때, 편지를 전달해주는 친구가 있어. 이 친구가 편지를 올바르게 전달해주면 문제가 없지만, 나쁜 친구가 중간에서 편지를 가로채서 다른 내용으로 바꿀 수 있어. 이렇게 중간에서 편지를 가로채서 바꾸는 것을 'ARP 스푸핑'이라고 해. 그래서, 중요한 편지를 보낼 때는 이런 나쁜 친구들을 조심해야 해.”
- 이걸 응용하면 해킹, 인터넷 차단 등 제약을 가할 수있다 (정상적인 방법X, 속임수)
- MITM attack
MITM이란 "Man-In-The-Middle"의 줄임말이다. 이는 중간에서 무언가를 방해하는 공격 방식이다.
이렇게 상상해보자. 두 친구가 서로 편지를 주고받는다.
그런데 두 친구 사이에서 편지를 가로채는 사람이 있다. 이 사람은 두 친구 사이에 '중간'에 끼어들어 편지 내용을 보거나 바꾼다.
이런 행위를 'Man-In-The-Middle' 공격 또는 줄여서 MITM 공격이라고 부른다.
출처: https://youtu.be/lN4ZBrtb-fs?si=gMo-Qsn4807oSrQ1
'백엔드 > 네트워크' 카테고리의 다른 글
[네트워크기초이론]#36. 퇴근시간을 결정하는 TCP 장애유형 5가지 (0) | 2023.10.24 |
---|---|
[네트워크기초이론]#33. 길 잃은 Packet의 소멸과 TTL (0) | 2023.10.24 |
[네트워크기초이론]#31. TCP/IP통신과 MAC주소의 변화 (0) | 2023.10.20 |
[네트워크기초이론]#27. TCP 연결, LAN선 뽑기 그리고 게임해킹! (0) | 2023.10.19 |
[네트워크기초이론]#26. TCP 연결이라는 착각에 대해 (0) | 2023.10.18 |