스위치란 무엇이고 어떻게 사용할까?
스위치 (Switch)
--
스위치는
데이터 링크 계층의 네트워크 장비로
허브와 동일하게 여러 대의 호스트를 연결해 주는 장비다.
스위치는 허브의 단점을 보완하여 나온 네트워크 장비로
요즘 허브 대신 스위치를 많이 사용한다.
스위치는 허브와 다르게 데이터 링크 계층에서 사용하는 네트워크 장비로
허브와 다르게 MAC 주소를 사용해 특정 MAC 주소의 호스트로 프레임을 전달할 수 있으며,
"반이중 모드" 통신이 아니라 "전이중 모드" 통신을 사용하므로 CSMA/CD 프로토콜이 필요 없다.
스위치는
데이터 링크 계층의 기능을 주로 수행하지만
내부적으로 물리 계층의 기능도 같이 처리해 준다.
스위치의 특징
1. MAC 주소 학습 (MAC Address Learning) 기능
특정 포트와 해당 포트에 연결된 호스트의 MAC 주소와의 관계를 기억하여
원하는 호스트에만 프레임을 전달할 수 있도록 한다.
2. MAC 주소 테이블 (MAC Address Table) 정보
"MAC 주소 학습"을 위해서 포트와 연결된 호스트의 MAC 주소 간의 연관 관계를
메모리에 표 형태로 기억한다.
해당 특징들을 간단하게 설명하면
스위치의 포트로 연결할 때마다 해당 포트와 연결된 모드의 MAC 주소를 메모리에 표 형태로 기억하고 있다가
해당 메모리를 참고하여 원하는 MAC 주소를 사용하고 있는 포트를 찾아 데이터를 전달해 준다.
--
MAC 주소 학습 과정 (+ MAC 주소 테이블)
--
위 그림은 4개의 호스트가 스위치의 각 포트에 연결되어 있는 상태다.
아직은 연결만 한 상태로 스위치는 각 호스트의 MAC 주소와 연결된 포트의 연관 관계를 알지 못한다.
즉, 어떤 포트에 어떤 MAC 주소를 가진 호스트가 연결되어 있는지 학습하지 못한 상태다.
그래서 스위치의 MAC 주소 테이블도 비어있다.
스위치의 MAC 주소 학습은 호스트가 프레임을 수신하면 해당 프레임 정보를 바탕으로 MAC 주소 테이블에 저장한다.
호스트 A -> 호스트 C 프레임 전달 과정
호스트 A로부터 스위치 1번 포트로 프레임을 수신하면
스위치는 해당 프레임 정보를 바탕으로 스위치 1번 포트와 연결된 MAC 주소를 MAC 주소 테이블에 저장한다.
MAC 주소 테이블에는 출발지(송신지)의 MAC 주소만 저장한다.
만약 호스트 A에서 호스트 C로 프레임을 정상적으로 전달했다고 가정하면
결론적으로 호스트 A의 MAC 주소만 저장되고 호스트 C의 MAC 주소는 아직 모른다.
호스트 A로부터 받은 프레임을 호스트 C(MAC 주소)로 전달해야 하지만
아직 MAC 주소 테이블에 호스트 C가 어느 포트와 연결되어 있는지 저장되어 있지 않기에
정확한 위치를 모르면 "허브"처럼 나머지 모든 포트로 전달한다.
MAC 주소 테이블에 목적지의 정확한 위치를 모르면 "허브"처럼 나머지 모든 포트로 전달하는 동작을
스위치에서는 "플러딩(Flooding)"이라고 부른다.
호스트 B, C, D는 해당 프레임을 검사하여 자신에게 온 프레임인지 확인 후
호스트 B, D는 잘 못 온 것이라 판단하고 해당 프레임을 처분하고
호스트 C는 정상적으로 온 프레임으로 확인하고 쭉 응용 계층까지 전달한 후, 해당 요청을 정상적으로 처리한다.
(응용 프로그램이 해당 데이터를 정상적으로 처리)
이제 호스트 C는 해당 요청을 잘 받았다고 다시 응답을 해주게 된다.
이 과정에서 다시 호스트 C는 호스트 A로 전달하게 되는데
여기서 스위치로 호스트 C의 프레임을 전달하여 스위치는 해당 MAC 주소를 MAC 주소 테이블에 저장하게 된다.
프레임을 수신한 뒤에 다시 응답 프레임을 보내는 시점과 방식은
해당 프로토콜과 통신 내용에 따라 달라지지만
일반적으로 응용 계층까지 정상적으로 요청을 전달한 뒤에 모든 요청 과정이 끝나면
응답 메시지(데이터)를 전달한다.
목적지의 MAC 주소가 MAC 주소 테이블에 저장되어 있다면
위 그림처럼 다른 포트는 "필터링"을 하고 곧장 호스트 A로 전달하게 된다.
만약 일정 시간 동안 프레임을 전송받지 못한 포트(호스트)는
MAC 주소 테이블에서 해당 항목이 삭제된다. 이를 "에이징(aging)"이라고 부른다.
--
VLAN (Virtual LAN)
--
VLAN는
스위치의 또 다른 중요한 기능으로
가상의 LAN을 만들어서 사용하는 기능이다.
이는 스위치에서 물리적으로 같은 네트워크 내의 장비들을 논리적으로 분리하는 기술로
네트워크 효율성과 보안을 개선하는데 중요한 역할을 한다.
"허브"는 송신지를 제외한 모든 모드로 프레임을 전달하기 때문에
불필요한 트래픽이 늘어나게 되고, 이는 성능 저하로 이어진다.
하지만 스위치를 사용해도 MAC 주소 테이블에 저장된 상태가 아니라면 허브처럼 모든 포트로 프레임을 전송하게 된다.
스위치에 연결된 호스트 중에서도 서로 메시지를 주고받을 일이 적거나,
브로드캐스트 메시지를 받을 필요가 없어서 굳이 같은 네트워크(LAN)에 속할 필요가 없는 호스트가 있는 경우
다른 호스트들 간에 매번 프레임 전달할 때마다 사용하지 않는 해당 호스트들에게도 전달되기 때문에 효율이 떨어진다.
이를 해결하기 위해서는 자주 사용하지 않는 호스트들을 새로운 스위치 장비에 따로 연결해서 분리하면 되지만
매번 새로운 스위치 장비를 구비하여 사용하는 것은 낭비기 때문에
이를 가상으로 구성하는 VLAN 기능을 사용한다.
위 그림처럼 AAA관련 호스트와 BBB관련 호스트는 서로 프레임을 주고받을 일이 없거나 드문 상황이라면
쓸데없이 "플러딩" 하는 것을 방지하기 위해 서로 다른 스위치를 사용하는 것이 좋지만,
조금 더 효율적으로 구성하기 위해 VLAN을 사용하면 된다.
VLAN을 구성하면 한 대의 물리적 스위치라 해도
여러 대의 스위치가 있는 것처럼 논리적인 단위로 LAN을 구축할 수 있다.
즉, 하나의 스위치에 AAA관련 호스트와 BBB관련 호스트가 동시에 연결되어 있지만 나눠진 것처럼 구현할 수 있게 된다.
VLAN을 사용하면 호스트 A, B, C, D는 서로 동일한 LAN에 있는 것으로 인식하고,
호스트 E, F, G, H는 다른 LAN에 있는 것으로 인식하여 서로 별개인 것처럼 동작한다.
만약 VLAN을 통해 논리적으로 분리된 호스트끼리 통신을 해야 한다면?
스위치를 사용하는 "데이터 링크 계층"의 장비가 아니라
"네트워크 계층"처럼 상위 계층의 장비가 추가적으로 필요하다.
VLAN을 구성하는 방법 종류
- 포트 기반 VLAN
- MAC 기반 VLAN
포트 기반 VLAN
가장 단순하지만 대중적인 VLAN 방식으로,
스위치의 포트를 기준으로 네트워크를 분리(VLAN)하는 방식이다.
즉, 사전에 특정 포트를 VLAN에 할당하고, 해당 포트에 호스트를 연결함으로써 VLAN에 포함시킬 수 있다.
(미리 스위치의 포트를 가지로 VLAN 영역을 나누는 것이다.)
MAC 기반 VLAN
MAC 주소를 기준으로 네트워크를 분리하는 방식으로
미리 수신받을 것 같은 프레임(호스트)의 MAC 주소를 어느 VLAN에 매핑할지 설정해 놓고
호스트로부터 프레임을 수신받으면 스위치는 해당 MAC 주소는 어느 VLAN에 속하는지 판단하여 진행한다.
어떤 MAC주소로부터 프레임을 전달받을지 어떻게 알고
사전에 MAC 주소를 등록하고 VLAN을 분리할 수 있는 것일까?
사내 네트워크에서는 프린터, NAS, 컴퓨터 등 사용하는 MAC 주소가 고정된 장비가 대부분이기 때문에
각 장비의 MAC 주소를 미리 파악해서 사전에 분리를 하는 것이다.
(사람이 직접 장비의 MAC 주소를 파악해서 스위치 설정에 입력)
--
'CS > 네트워크' 카테고리의 다른 글
[네트워크 계층] ARP (Address Resolution Protocol) (0) | 2024.11.17 |
---|---|
[네트워크 계층] IP (0) | 2024.11.16 |
[OSI 물리 계층, 데이터 링크 계층] 허브 (+ 반이중/전이중, CSMA/CD) (1) | 2024.11.11 |
[물리 계층, 데이터 링크 계층] 이더넷 (+ IP주소와 MAC주소의 차이) (0) | 2024.11.10 |
OSI 7계층 모델 (+ TCP/IP 4계층 모델) (6) | 2024.11.09 |