▶ LAN/WAN 영역 이해 - 2
이젠 스위치의 동작을 알아본다. 스위치에는 스위칭 테이블이 있다. 스위칭 테이블 구조는 다음 표와 같이 포트와 맥 주소라는 2개의 항목으로 이뤄졌다. 이제 4개의 포트가 달린 스위치가 있고 각 포트에 호스트가 물린 상태라고 가정하자. 각 포트에 물린 호스트에서 사용하는 맥 주소는 다음과 같다.
구분 | 맥 주소 | 비고 |
1번 호스트 | 00-00-00-00-00-01 | 출발지 |
2번 호스트 | 00-00-00-00-00-02 | |
3번 호스트 | 00-00-00-00-00-03 | |
4번 호스트 | 00-00-00-00-00-04 | 목적지 |
또한 스위칭 테이블 상태는 다음과 같다.
포트 번호 | 맥 주소 |
참고로 여기서 언급한 포트 번호는 전송 계층에서 사용하는 포트 번호와 달리 물리적인 접속 부위를 뜻한다.
이제 1번 포트에 물린 1번 호스트에서 4번 호스트로 ICMP 요청을 전송하기 위해 ARP 캐시 테이블을 참조한 뒤 비트를 전송한다. 비트는 회선을 타고 스위치 1번 포트로 들어온다. 스위치 운영체제는 들어온 비트를 프레임으로 변환한 뒤 프레임 헤더에서 출발지 맥 주소 항목으로부터 00-00-00-00-00-01 맥 주소를 추출해 다음과 같이 스위칭 테이블에 반영한다.
포트 번호 | 맥 주소 |
1 | 00-00-00-00-00-01 |
위와 같이 출발지 맥 주소를 스위칭 테이블에 반영하는 동작을 러닝(learning)이라고 한다.
러닝 과정을 마친 뒤 이번에는 목적지에 해당하는 00-00-00-00-00-04 맥 주소를 스위칭 테이블에서 검색한다. 위와 같이 목적지에 해당하는 맥 주소가 없다. 그럼 스위치 운영체제는 1번 포트를 제외한 남은 포트 중 어딘가에 00-00-00-00-00-04 맥 주소가 있다고 판단하고 허브가 동작하는 것처럼 플러딩(flooding)을 수행한다. 플러딩 방식에 따라 1번 호스트를 제외한 모든 호스트는 스위치가 전송한 비트를 수신한다. 2번과 3번 호스트는 들어온 비트를 자신의 LAN 카드에서 프레임으로 전환한 뒤 목적지 맥 주소와 자신의 맥 주소를 비교해 보면 서로 상이하기 때문에 폐기하지만, 4번 호스트는 목적지 맥 주소와 자신의 맥 주소를 비교해 보면 서로 동일하기 때문에 수신해 상위 계층으로 넘긴다.
이제 4번 호스트는 1번 호스트에게 ICMP 응답을 전송한다. 스위치 4번 포트에서 비트가 들어오면 스위치 운영체제는 러닝 과정을 통해 다음과 같이 출발지 맥 주소 00-00-00-00-00-04를 스위칭 테이블에 반영한다.
포트 번호 | 맥 주소 |
1 | 00-00-00-00-00-01 |
4 | 00-00-00-00-00-04 |
이제 목적지 맥 주소 00-00-00-00-00-01을 스위칭 테이블에서 검색한다. 위 그림과 같이 목적지 맥 주소가 1번 포트에 있다. 스위치 운영체제는 2번과 3번 포트를 블로킹(Blocking)한 뒤 프레임을 비트로 변환해 1번 포트로 포워딩(Forwarding)한다. 이렇게 스위칭 테이블에 올라간 맥 주소는 1번과 4번 포트 사이에서 일정 시간 동안 통신이 없으면 해당 맥 주소를 삭제한다. 이것을 에이징(aging)이라고 한다. 에이징으로 모든 맥 주소가 없어졌다면 스위치에서는 또 플러딩이 일어날 수 밖에 없다. 에이징은 스위칭 테이블 뿐 아니라 ARP 캐시 테이블에서도 일어난다. 참고로 스위칭 테이블에서 에이징이 일어나면 플러딩이 일어나지만, ARP 캐시 테이블에서 에이징이 일어나면 브로드캐스팅이 일어난다(용어만 다를 뿐 본질적으로 동일한 동작).
이것이 바로 내부 통신을 구현하는 스위치 장비의 완전한 스위칭 동작.
비트 단위를 플러딩으로 처리하는 허브와 프레임 단위를 포워딩으로 처리하는 스위치는 외관상 비슷해보여도 동작 방식은 지금까지 설명한 바와 전혀 다르다. 허브와 스위치를 서로 연동하는 방식은 과거부터 부적절한 구성이었다. 5개의 포트로 이뤄진 허브가 있는데 1번부터 4번 포트까지는 호스트에 물렸고 5번 포트는 스위치 1번 포트에 물린 상황이라고 하자. 허브에 물린 1번부터 4번 호스트는 플러딩에 따라 통신한다. 문제는 스위치에 물린 5번 포트로도 플러딩이 전해진다는 데 있다. 허브에서 통신이 일어나면 위 그림과 같은 스위칭 테이블의 상태는 금방 아래와 같이 변한다.
포트 번호 | 맥 주소 |
포트 번호 | 맥 주소 |
1 | 00-00-00-00-00-0a |
1 | 00-00-00-00-00-0b |
1 | 00-00-00-00-00-0c |
1 | 00-00-00-00-00-0d |
위와 같이 스위칭 테이블이 주어진 용량을 모두 채운 상태에서 스위치 2번 포트와 3번 포트에 물린 호스트 사이에 ICMP 요청과 응답이 일어나면 스위치는 어떻게 동작하겠는가?
2번 포트로부터 들어온 프레임 헤더를 통해 목적지 맥 주소 00-00-00-00-00-03을 스위칭 테이블에서 검색해봤자 해당 맥 주소가 없다. 이러면 스위치는 플러딩 방식으로 해당 프레임을 전송한다. 3번 호스트가 ICMP 응답을 전송하면 스위치 운영체제는 3번 포트로부터 들어온 프레임 헤더를 통해 목적지 맥 주소 00-00-00-00-00-02 를 스위칭 테이블에서 검색한다. 이 역시도 해당 맥 주소가 없기 때문에 플러딩 방식으로 전송할 수 밖에 없다. 포워딩으로 동작하던 스위치가 플러딩으로 동작하는 허브로 전락한 경우다. 이러한 상황을 인위적으로 유발케 하는 공격을 맥 플러딩(MAC Flooding) 공격이라고 한다.
스위치 장비의 또 다른 기능은 VLAN 기법의 구현이다. VLAN(Virtual LAN) 란 1개의 물리적인 LAN 영역을 여러 개의 논리적인 LAN 영역으로 분할하는 기법이다. 다시 말해, 1개의 LAN 영역을 대상으로 이뤄진 1개의 ARP 영역을 여러 개의 ARP 영역으로 분할하는 기법을 VLAN이라고 한다.
임의의 LAN 영역에서 A 등급에 해당하는 10.0.0.0 255.0.0.0 대역을 ISP 업체로부터 할당받았다고 하자. 네트워크 ID는 10번이고 남은 0.0.0 번이 호스트 ID를 이룬다. 호스트 ID 개수는 10지수 한자리가 2진수 8비트에 해당하기 때문에 이것을 산술적으로 계산하면 무려 16,777,216(2^24)개가 나온다. 이 중에서 호스트 ID가 모두 0인 경우에 해당하는 네트워크 IP 주소와 호스트 ID가 모두 1인 경우에 해당하는 브로드캐스트 IP 주소 2개를 제외하더라도 사용 가능한 호스트 ID는 16,777,214개에 이른다.
B 등급에 해당하는 172.16.0.0 255.255.0.0 대역을 할당 받았다면 네트워크 ID는 172.16번이고 남은 0.0 번이 호스트 ID를 이룬다. 호스트 ID 개수는 A 등급보다는 적지만 그래도 65,636(2^16)개나 나온다. 네트워크 IP 주소와 브로드캐스트 IP 주소, 이 2개를 제외하면 실제 사용 가능한 호스트 ID 개수는 65,634개다. 이 정도 규모면 한 대의 라우터에서 감당할 수 있는 호스트 개수가 아니다. 라우터 처리 능력뿐만 아니라 해당 LAN 영역에서 발생하는 ARP 요청과 응답도 중요하게 고려해야 한다.
A 등급으로 이뤄진 LAN 영역에서 호스트 ID 개수는 16,777,214개이기 때문에 각 호스트가 라우터로 향한다면 무려 16,777,214번의 ARP 요청과 응답이 일어난다. B 등급으로 이뤄진 LAN 영역이라면 65,523번의 ARP 요청과 응답이 일어난다(모두 이론상 그렇단 얘기).
ARP 요청과 응답의 본질은 운영체제로 하여금 맥 주소를 확인하고 해당 맥 주소를 적재하는 작업이다. 라우팅에 전념해야 할 라우터가 16,777,214번, 아니 65,534번의 ARP 요청과 응답을 수행하애 한다면 과연 정상적인 라우팅 기능을 수행할 수 있을까? 아마 무수한 ARP 요청과 응답에 따른 과부하 때문에 라우팅이 불가능할 수도 있다. 이러한 내용을 기반으로 A 등급의 ARP 영역을 숫자로 표현하면 16,777,214이고, B 등급의 ARP 영역을 숫자로 표현하면 65,634고, C 등급은 254라 할 수 있다.
VLAN 기법은 이처럼 대규모의 ARP 영역을 여러 개의 ARP 영역으로 분할해 각 ARP 영역의 크기를 줄이는 기능이다.
스위치 장비에서 VLAN 기능을 구성하는 순서는 먼저 단일 IP 주소 대역을 서브넷 대역으로 분리하고 스위치 장비의 포트에 기반해 각각의 서브넷 대역을 설정한다. 서브넷 대역에 대한 내용부터 보자.
192.168.10.0 255.255.255.0 대역을 사용하는 임의의 LAN 영역이 있다고 가정한다. 해당 대역을 그대로 사용하면 네트워크 IP 주소와 브로드캐스트 IP 주소를 포함한 호스트 ID 개수는 256(2^8)개가 나온다.
호스트 ID 범위 | 프리픽스 | 서브넷 마스크 | 네트워크 IP | 브로드캐스트 IP |
0~255 | /24 | 255.255.255.0 | 192.168.10.0 | 192.168.10.255 |
그런데 해당 LAN 영역은 클라이언트 집단과 서버 집단으로 이뤄졌다. 클라이언트 집단에서 발생하는 ARP 요청은 동일한 네트워크 ID를 공유하는 서버 집단으로도 넘어간다. 이처럼 단일한 ARP 영역에 클라이언트 집단과 서버 집단을 구성한다면 서버로서는 상당한 부담이 아닐 수 없다. 그렇지만 클라이언트 집단만을 위한 ARP 영역과 서버 집단만을 위한 ARP 영역으로 구분한다면 이전과 달리 분명 ARP 요청과 응답의 횟수를 줄일 수 있다.
이제 클라이언트 집단의 ARP 영역과 서버 집단의 ARP 영역을 각각 구성하기 위해 해당 IP 대역을 2개의 대역으로 구분하면 다음과 같다.
호스트 ID 범위 | 프리픽스 | 서브넷 마스크 | 네트워크 IP | 브로드캐스트 IP |
0~127 | /25 | 255.255.255.128 | 192.168.10.0 | 192.168.10.127 |
129~255 | /25 | 255.255.255.128 | 192.168.10.128 | 192.168.10.255 |
해당 대역을 2개로 구분하면서 프리픽스 부분과 서브넷 마스크 부분, 네트워크 IP 주소와 브로드캐스트 IP 주소에 변화가 생겼다.
이제 서브넷(subnet)이란 위 표와 같이 1개의 IP 주소 대역을 2의 배수 단위로 나누는 기법이라고 해도 이해할 수 있을 것이다.
만약 누군가가 "제 IP주소는 192.168.10.10번입니다." 라고 했을 때, 해당 IP 주소만으로 알 수 있는 사실은 무엇인가? 첫 번째 자리가 192번이니 C등급에 해당하고, 192.168이니 사설 IP 주소임을 알 수가 있다. 하지만, 해당 IP 주소가 위 표처럼 사용하는 경우인지는 알 수가 없다. 저쪽 위에 있는 표에 따르면 네트워크 IP 주소가 192.168.10.0번이고 브로드캐스트 IP 주소가 192.168.10.255번이지만, 바로 위의 표에 따르면 네트워크 IP 주소가 192.168.10.128번이고 브로드캐스트 IP주소가 192.168.10.255번에 해당한다. 하지만, 서브넷 마스크가 255.255.255.128이라고 할 때, 해당 정보를 바탕으로 바로 위의 표와 같이 192.168.10.0번부터 192.168.10.127번 사이에 있는 IP 주소임을 알 수 있다.
192.168.10.0/24 대역을 아래 표와 같이 4개의 서브넷 대역으로 분할하면 아래 표와 같다.
호스트 ID 범위 | 프리픽스 | 서브넷 마스크 | 네트워크 IP | 브로드캐스트 IP |
0~63 | /26 | 255.255.255.192 | 192.168.10.0 | 192.168.10.63 |
64~127 | /26 | 255.255.255.192 | 192.168.10.64 | 192.168.10.127 |
128~191 | /26 | 255.255.255.192 | 192.168.10.128 | 192.168.10.191 |
192~255 | /26 | 255.255.255.192 | 192.168.10.192 | 192.168.10.255 |
위와 같이 1로 표기한 비트의 개수를 이용해 서브넷 상태를 제공하는 표기를 프리픽스(prefix) 표기법이라고 한다.
이상 서브넷, 서브넷 마스크 표기법, 프리픽스 표기법에 대해서 이해했을 것이다. 참고로 IPv6 주소에서는 서브넷 마스크 표기법은 없고 프리픽스 표기법만 사용한다.
출처 : 해킹 입문자를 위한 TCP/IP 이론과 보안 2/e - 오동진 지음
'네트워크' 카테고리의 다른 글
라우팅 프로토콜 요약 (0) | 2023.02.09 |
---|---|
LAN/WAN 영역 이해 - 3 (0) | 2023.02.09 |
LAN/WAN 영역 이해 - 1 (0) | 2023.02.07 |
TCP/IP 방식 전송과정 정리 (2) | 2023.02.05 |
TCP/IP 방식의 물리 계층 (0) | 2023.02.03 |
댓글