TCP/IP 방식의 데이터 링크 계층
▶ TCP/IP 방식의 데이터 링크 계층
네트워크 계층에서 넘어온 패킷을 기반으로 프레임 전송 단위를 형성하는 데이터 링크 게층은 엄밀히 말해 순수한 TCP/IP 계층은 아니다. 원래 TCP/IP 방식은 응용 계층, 전송 계층, 네트워크 계층으로 이뤄진 구조였다. 이후 LAN/WAN 기술이 발전하면서 새롭게 구성한 계층이 데이터 링크 계층이다. 따라서 데이터 링크 계층에 속하는 프로토콜은 LAN/WAN 영역에서 사용하는 프로토콜에 해당된다.
스위칭 통신을 구현하는 LAN 영역에서 사용하는 프로토콜에는 전에 언급했던 이더넷 방식을 비롯해 토큰 링(token ring) 방식과 FDDI(Fiber Distributed Data Interface) 방식 그리고 LAN/WAN 영역을 통합한 ATM(Asynchronous Transfer Mode) 방식 등이 있다. 오늘날 이더넷 방식은 LAN 영역에서 사실상 표준으로 자리를 잡았다.
라우팅 통신을 구현하는 WAN 영역에서 사용하는 프로토콜에는 HDLC(High-Level Data Linnk)방식과 PPP(Point-to-Point Protocol)방식 그리고 가상 회선에 기반해 구현한 X.25 방식과 프레임 릴레이(Frame relay)방식, ATM 방식 등이 있다. LAN 영역과 달리 WAN 영역에서는 사실상 표준 프로토콜이 없기 때문에 라우팅을 구현할 때 상대방 라우터와 연동 시 프로토콜 설정에 주의해야 한다.
LAN 영역과 WAN 영역을 세부적으로 언급해야 데이터 링크 계층을 설명할 수 있지만, 해당 글에서는 ARP 프로토콜에 초점을 두고 설명한다.
이전까지 설명한 ARP헤더를 포함한 헤더를 모두 정리하면 다음 표와 같다(가급적 암기할 것!).
헤더 구분 | 생성 계층 | 주요 정보 | 헤더 크기 | 비고 |
UDP | 전송 | 포트 번호 | 8바이트 | |
TCP | 전송 | 포트 번호 | 20바이트 | |
IP | 네트워크 | IP주소 | 20바이트 | |
ICMP | 네트워크 | 8바이트 | ||
ARP | 네트워크 | IP/맥 주소 | 28바이트 | |
이더넷 | 데이터 링크 | 맥 주소 | 14바이트 |
ARP헤더는 여타 헤더와 달리 IP주소와 맥 주소라는 이질적인 주소가 있다. 데이터 링크 계층을 생성하면서 LAN 영역에서 사용하는 맥 주소와 네트워크 계층에서 사용하는 IP 주소의 연결을 위해 설계했기 때문이다. 또한 ARP 프로토콜에는 페이로드 영역이 없다. 오직 헤더로만 이뤄진 구조임을 알 수 있다.
위 그림에서 주목해야 할 부분은 출발지 IP주소, 맥주소와 목적지 IP주소, 맥 주소 항목이다. 이 부분을 도표로 표현하면 다음과 같다.
주소 | 출발지 | 목적지 |
프로토콜 | ||
하드웨어 |
로컬 라우터로 이제 ICMP 요청을 보낸다. 그러면 같은 LAN에 있는 목적지로 데이터를 전송하기 위해 운영체제는 ARP 캐시 테이블에서 목적지 IP 주소에 대응하는 맥 주소의 존재를 검색한다. 해당 IP주소에 해당하는 맥주소가 없다면, 자신이 속한 LAN 전체를 대상으로 목적지 IP 주소에 대응하는 맥 주소를 구하기 위해 네트워크 계층에서 다음 표와 같은 ARP 헤더를 생성한다(예시).
주소 | 출발지 | 목적지 |
프로토콜 | 192.168.0.13 | 192.168.0.1 |
하드웨어 | 00-24-1D-DF-8C-47 | 00-00-00-00-00-00 |
위의 표에서와 같이 목적지 맥 주소 항목에 00-00-00-00-00-00 처럼 채워지는데, 이는 정확한 목적지 맥 주소를 모른다는 의미다. 이때 ARP 헤더의 연산 코드(opcode code) 항목은 1이다. ARP 요청이라는 의미.
이렇게 네트워크 계층에서 생성한 ARP 헤더는 데이터 링크 게층으로 넘어가고, ARP 헤더 앞에 크기가 14바이트인 이더넷 방식의 프레임 헤더가 붙는다. LAN 영역에서 프레임 헤더의 주요한 정보는 출발지/목적지 맥 주소인데, 출발지와 달리 목적지 맥 주소를 모르기 때문에 해당 헤더의 목적지 맥 주소 항목에는 ff:ff:ff:ff:ff:ff 처럼 채워진다. 정환한 목적지 맥 주소를 모르기 때문에 브로드캐스트 방식으로 전송하겠다는 의미이다.
아래와 같이 ARP 브로드캐스트 요청을 수행하기 위한 프레임을 완성하면, 자기가 속한 LAN 영역의 모든 호스트를 대상으로 ARP 브로드캐스트 질의를 수행한다.
ICMP 페이로드 | ICMP 헤더 | IP 헤더 | 이더넷 프레임 헤더 |
ARP 헤더 | 이더넷 프레임 헤더 |
TCP 방식에서 3단계 연결을 수행하기 위해 페이로드가 없이 오직 SYN 플래그를 담은 TCP 헤더만을 생성하는 것처럼 ARP 헤더에서도 위와 같이 페이로드가 없음을 확인할 수 있다.
출발지 호스트에서 발생한 ARP 브로드캐스트 요청은 동일한 네트워크 ID를 공유하는 모든 LAN 영역의 호스트에게 전해진다. ARP 브로드캐스트 요청을 받은 호스트에게는 인터럽트가 일어난다. ARP에 관한 정보를 확인해야 하기 때문이다(위의 프로토콜, 하드웨어 표에 해당). 물론 192.168.0.1번에 해당하는 라우터도 출발지 호스트로부터 전해진 ARP 브로드캐스트 요청을 확인한다. 이어 자신의 맥 주소 요청이란 사실을 알고 위의 표에 출발지와 목적지를 바꿔 자신의 맥 주소를 담는다. 이때 ARP 헤더의 연산 코드 항목은 2다. ARP 응답이라는 뜻.
주소 | 출발지 | 목적지 |
프로토콜 | 192.168.0.1 | 192.168.0.13 |
하드웨어 | 00-26-66-86-F8-0C | 00-24-1D-DF-8C-47 |
위 표는 모든 주소 항목이 채워졌다. 즉, 유니캐스트 전송이 가능한 조건을 이뤘다는 뜻이다. 목적지 호스트에서는 ARP 요청을 보낸 출발지 호스트를 향해 자신의 맥 주소를 담아 유니캐스트 방식으로 ARP 응답을 전송한다.
목적지 호스트로부터 ARP 응답을 받은 출발지 호스트 운영체제는 ARP 응답 헤더로부터 추출한 해당 목적지 맥 주소를 ARP 캐시 테이블에 등록한 뒤 ICMP 패킷을 유니캐스트 방식에 따라 목적지 호스트로 전송한다. 이후 다시 192.168.0.1번으로 ICMP 요청을 보낼 때는 기존의 ARP 캐시 테이블에 등록한 목적지 맥 주소를 참조한다. 이후 일정 시간 동안 해당 맥 주소를 참조하는 일이 없다면 ARP 캐시 테이블에서는 해당 맥 주소를 삭제한다. 이것을 에이징(aging)이라고 한다. ARP 캐시 테이블과 마찬가지로 DNS 캐시 테이블에서도 에이징이 일어난다.
출처 : 해킹 입문자를 위한 TCP/IP 이론과 보안 2/e - 오동진 지음