[Data Communication] 링크 계층에서의 프로토콜 : ARP, PPP
링크 계층에서 데이터의 전송은 인접 노드로의 전송만이 가능합니다. 즉, 데이터 프레임은 같은 LAN 내에 존재하는 컴퓨터 - 컴퓨터, 컴퓨터 - 공유기 사이에서 전송됩니다.
이렇게 링크 계층에서 데이터 프레임을 송수신하기 위해서는 Destination 의 MAC 주소를 알아야합니다. 예를 들어, www.tistory.com 으로 접속하고자 한다면, DNS 가 www.tistory.com 의 IP 주소를 알려줄 수 있지만, MAC 주소는 알려주지 않습니다. 그렇다면 www.tistory.com 으로 어떻게 링크 계층 데이터를 보낼 수 있을까요?
위 그림을 보면 A,B,C 컴퓨터가 같은 네트워크 (LAN) 에 연결되어 있고, A 컴퓨터에서 외부 네트워크에 존재하는 컴퓨터 P 로 데이터를 전송하고자 합니다. 처음에 destination MAC 주소를 라우터(공유기)의 MAC 주소인 d 로 설정합니다. 그리고 공유기에서는 이 패킷의 destination MAC 주소를 p 로 변환합니다.
이 과정이 수행되기 위해서는 다음과 같은 조건이 필요합니다.
라우터는 A,B,C,P 의 IP 주소와 MAC 주소를 알고 있어야 한다.
그러면 이 라우터는 어떻게 연결된 컴퓨터들의 MAC 주소를 알 수 있을까요? 일일히 수동으로 등록해주는 방법도 있지만, Address Resolution Protocol 을 통해 MAC 주소를 알 수 있습니다.
Address Resoultion Protocol (ARP)
ARP 란 IP 주소를 받아 MAC 주소를 반환하는 프로토콜이라 생각할 수 있습니다. 예를 들어 A,B,C 컴퓨터가 라우터로 묶여있는 간단한 LAN 을 생각해봅시다.
이 때, A 컴퓨터에서 C 컴퓨터로 데이터를 보내고 싶은데, C 의 IP 주소는 알지만 MAC 주소를 모른다고합시다. 그렇다면 어떻게 A 에서 C 로 데이터를 보낼 수 있을까요?
ARP 는 Request 와 Reply 로 구성됩니다.
먼저, IP Header 에 C 의 IP 주소를 Destination IP 로 적고, Destination MAC 주소에는 FF:FF:FF:FF:FF:FF 를 사용합니다. FF:FF:FF:FF:FF:FF 는 브로드캐스트 MAC 주소로, 이 MAC 주소를 Destination 으로 설정하면 해당 라우터에서 연결된 모든 노드들에게 데이터가 전달이 됩니다. 이것이 ARP Request 가 됩니다.
그러면 위 상황에서 A,B,C 는 ARP Request 를 받게 됩니다. 이 중 Destination IP 를 갖고 있는 노드가 ARP Reply 를 Source IP 에 보냅니다. 즉, C 가 A 에게 자신의 MAC 주소에 대한 정보를 담은 ARP Reply 를 전송합니다.
이런 방식을 통해 A 는 C 의 MAC Address 를 알 수 있게 되고 이를 ARP Cache 로 저장합니다.
정리
- ARP 는 IP 주소를 가지고 MAC 주소를 찾는 프로토콜이다.
- 질문은 브로드캐스트로 날리지만, 답변은 일대일로 이루어진다.
- Reverse ARP 도 존재한다. Reverse ARP 는 MAC 주소를 가지고 IP 주소를 찾는 프로토콜이다.
- Gratuitous ARP 도 존재한다. Gratuituos ARP 는 자기 자신의 IP 에 대해 ARP 를 수행하는 방법이다. 보통, 자기 자신의 MAC 어드레스를 LAN 내의 모든 노드들에게 알리기 위해 사용한다. (충돌 확인 혹은 업데이트 시 수행)
ARP 를 이용하여 LAN 내에서 MAC 주소를 알아내고, ARP Table 에 Cache 로 저장한다. 따라서 ARP Spoofing 과 같은 해킹도 가능하다.
Point -to-Point Protocol (PPP)
PPP 의 정의는 다음과 같습니다.
시리얼 케이블, 전화선, DSL, 이동통신망, 광통신망의 매체를 컴퓨터/라우터간 직접 연결하는 경우 필요한 데이터 링크(L2) 프로토콜
PPP 프로토콜의 특징은 두 개의 노드를 연결하는 방법입니다. 이전에 배웠던 Ethernet Protocol 은 LAN 내의 여러 노드들간 통신하는 프로토콜이었습니다. 즉, Point to Point 라는 점이 PPP 의 가장 큰 특징입니다.
PPP 는 인증, 전송, 암호화, 데이터 압축의 기능도 제공합니다.
PAP(Password Authentication Protocol) 또는 CHAP(Challenge Handshake Authentication Protocol)와 같은 인증 프로토콜을 사용할 수 있습니다. 또한, 링크 제어 프로토콜(LCP)과 네트워크 제어 프로토콜(NCP)을 사용하여 연결 옵션과 네트워크 프로토콜을 협상합니다. NCP 를 이용하여 연결된 두 노드가 서로 다른 네트워크 프로토콜(예: IP, IPX, AppleTalk)을 사용할 수 있도록 돕는 역할을 합니다. 이를 통해 다양한 네트워크 프로토콜을 지원할 수 있습니다.
PPTP (Point-to-Point Tunneling Protocol)
PPTP 의 정의는 다음과 같습니다.
PPP를 이용한 VPN(Virtual Private Network) 구현 프로토콜
공유기의 기능 중 하나로 구현되어 있으며, 다음과 같은 상황을 예시로 들 수 있습니다.
교내 인터넷 망에서 논문 검색 사이트를 무료로 이용할 수 있습니다. 하지만 밖에서 논문 검색 사이트를 이용하려면 유료로 이용해야 합니다. 하지만, VPN 을 통해 교내 인터넷 망과 Local Computer 를 연결한다면, Local Computer 가 교내 인터넷 망에 있는 것처럼 동작합니다.
이 때 Local Computer (Client) 와 VPN Server 간에 연결을 할 때 PPTP나, L2TP 등의 프로토콜로 Tunneling 을 수행합니다. Tunneling 이란, VPN 서버에 Local Computer 에 대한 정보를 등록하고, 전송되는 데이터를 암호화하는 방식으로 감싸는 것으로 이해하면 됩니다. 암호화 되었기 때문에 패킷으로 전송되는 동안, VPN Server 가 아닌 다른 Router 들은 어떤 정보가 들었는지 확인할 수 없습니다.
이를 통해, 원격지에서도 Private Network 에 접속할 수 있습니다. 원격지에서 Source 에 대한 정보를 달리해 데이터를 주고 받을 수 있다는 점은 Proxy 와 같지만, 암호화를 수행한다는 점에서 VPN 과 Proxy 는 다릅니다.