🐕 스위치
스위치는 2계층에서 동작하는 네트워크 장비입니다. 2계층이기에 MAC 주소를 기반으로 동작합니다. 여기까지는 잘 알고 있는 내용이지만 스위치가 MAC 주소를 어떻게 이해하고 활용하는 지에 대해서...는 이야기하기가 힘드네요
스위치는 네트워크 중간에서 패킷을 받아 필요한 곳에만 보내주는 네트워크의 중재자 역할을 수행합니다. 아무 설정 없이 네트워크에 연결만 해도 MAC 주소를 기반으로 패킷을 전달하는 기본 동작을 스위치는 수행할 수 있어요!
또한 스위치는 MAC 주소를 인식하고 패킷을 전달하는 스위치의 기본적인 동작 이외에도 한대의 장비에서 "논리적"으로 네트워크를 분리할 수 있는 VLAN 기능과 네트워크의 루프를 방지하는 스패닝 트리 프로토콜(STP)와 같은 기능을 기본적으로 가지고 있습니다.
그 이전에 PDU(Protocol Data Unit)에 대해서 간단하게 정의를 하고 넘어가보도록 하겠습니다.
👻PDU(Protocol Data Unit)
프로토콜 데이터 유닛이란 OSI 7계층의 각 계층에서 헤더와 데이터를 합친 부분을 일컫습니다.
그리고 각 계층마다 이 PDU를 부르는 이름이 다릅니다. 다음은 계층별로 PDU를 부르는 이름을 정리한 표입니다.
1계층 | 비트(Bits) |
2계층 | 프레임(Frame) |
3계층 | 패킷(Packet) |
4계층 | 세그먼트(Segment) |
5~7계층 | 데이터(data) |
🥶 스위치의 동작
스위치는 여러장비가 서로 간섭 없이 통신하도록 도와주는 장비입니다. 스위치를 사용하면 여러 단말이 한꺼번에 통신을 할 수 있어서 통신하기 위해 기다리거나 충돌 때문에 대기하는 문제가 해결되고 네트워크 전체의 통신 효율성이 향상되는 결과를 낳습니다. 1계층에서 동작하는 장비인 허브를 떠올려보면 이해가 쉽습니다.
스위치의 핵심 역할은 누가 어느 위치에 있는지 파악하고 실제 통신이 시작되는 경우 자신이 파악한 위치로 패킷을 정확하게 전송하는 것이라고 할 수 있습니다.
그럼 스위치는 어떻게 누가 어느 위치에 있는지 정확하게 파악할 수 있는 것일까요?
스위치는 단말의 MAC 주소와 인터페이스 정보를 매핑한 MAC 주소 테이블을 통하여 이 문제를 해결합니다.
이렇게 스위치는 인터페이스 정보와 MAC 주소가 매핑되어 있는 형태의 MAC 주소테이블을 가집니다.
스위치는 전송하려는 패킷의 헤더안에 있는 2계층 목적지 주소를 확인하고
MAC 주소 테이블에서 해당 주소가 어느 포트에 있는지 확인하여 해당 패킷을 그 포트로만 전송합니다.
그런데 스위치는 처음부터 MAC 주소 테이블을 완벽하게 가지고있는 것일까요?
만약 테이블에 없는 도착지 주소를 가진 프레임이 스위치로 들어오면 스위치는 어떤 행동을 취할까요?
그런 경우 스위치는 전체 포트로 패킷을 전송합니다. 스위치의 매커니즘을 간단히 정리하면 이렇습니다.
이런 스위치의 동작 방식을 3가지로 정리할 수 있습니다.
바로 플러딩 , 어드레스 러닝, 포워딩/필터링인데요 각각 차례대로 알아보도록 합시다.
🌞플러딩
스위치는 부팅하면 네트워크 관련 정보가 아무것도 없습니다. 이런 초기 상태에서의 스위치는 마치 허브처럼 동작합니다. 허브는 비트가 들어온 포트를 제외한 모든 포트에 비트를 전달하죠!
그런데 앞서 스위치의 경우 MAC 주소 테이블에 없는 도착지 주소가 들어오면 모든 포트에 프레임을 전달한다고 했습니다. 허브랑 매우 비슷하지 않나요? 이렇게 허브처럼 모든 포트로 프레임을 흘리는 동작 방식을 바로 플러딩이라고 합니다.
이런 플러딩 동작은 버그가 아니라 정상적인 스위치의 동작이지만 만약 이런 동작이 많아진다면 비효율적일 것입니다. 1계층의 허브와 다를바가 없어지겠죠? 따라서 프레임이 스위치에 들어오면 해당 프레임의 정보의 MAC 주소를 보고 학습하여 MAC 주소 테이블을 만든 다음 이를 통해서 프레임을 전송합니다.
비정상적인 플로딩
스위치를 사용하면 필요한 곳에만 패킷을 포워딩하기때문에 주변 통신을 악의적으로 가로채기 힘듭니다.
따라서 이런 스위치의 기능을 무력화 시키기 위한 공격기법이 존재해요
스위치에게 엉뚱한 MAC 주소를 습득시키거나 , 스위치의 MAC 테이블을 꽉차게하거나. ARP 포이즈닝 기법을 사용하여 스위치를 무력화하거나 통신을 가로채는 방법들이 존재하고 이것을 비정상적인 플로딩이라고 부르기도합니다.
😋어드레스 러닝
앞서 플로딩을 하는 과정에서 스위치는 MAC 주소 테이블을 만들어가면서 플로딩을 진행한다고 했습니다.
이렇게 MAC 주소 테이블을 만들고 유지하는 과정을 통틀어 어드레스 러닝이라고 부릅니다.
어드레스 러닝은 패킷의 출발지 MAC 주소 정보를 이용하여 이루어지곤 합니다.
다만 이런 어드레스 러닝은 출발지의 MAC 주소 정보를 이용하기 때문에 브로드캐스트나 멀티캐스트에 대한 MAC 주소를 학습할 수는 없습니다. 브로드캐스트, 멀티캐스트는 목적지 MAC 주소 필드에서만 사용하기 때문이에요
그런데 스위치는 MAC 어드레스 러닝 작업으로 주변 장비의 MAC 주소를 학습하는 것 외에도 사전에 미리 정의된 MAC 주소를 가지고 있답니다. 다만 이런 사전 정의된 주소는 대부분 스위치 간의 통신을 위해 사용되는 주소입니다.
🤢포워딩/필터링
스위치는 앞서 이런 매커니즘으로 동작한다고 했었던 것 기억나시나요?
도착지 주소가 스위치의 MAC 주소 테이블에 존재하여 해당주소로만 프레임을 전송하는 것을 포워딩이라고 부릅니다.
반면 해당되지 않는 주소에는 프레임이 전송되지 않겠죠? 이것을 필터링이라고 부릅니다.
스위치는 이러한 포워딩 / 필터링을 통해 목적지로만 프레임이 전송되도록 동작합니다.
또한 스위치는 포워딩과 필터링 작업을 여러포트에서 동시에 수행할 수도 있어요 통신이 다른 포트에 영향을 미치지 않기 때문에 다른 포트에서 기존 통신작업으로부터 독립적으로 동작할 수 있답니다.
그런데 앞서 살펴보았듯이 스위치는 브로드캐스트, 멀티캐스트에서는 어드레스러닝이 불가하다고 했습니다. 이는 어드레스 러닝이 출발지 MAC 주소를 기반으로 이루어지기 때문인데요. 따라서 스위치는 일반적인 유니캐스트에 대해서만 포워딩과 필터링 작업을 수행합니다.
그런데 이더넷 - TCP/IP 네트워크에서는 스위치가 유니캐스트를 플러딩해야하는 경우는 거의 존재하지 않습니다. 왜냐하면 먼저 단말의 MAC 주소를 알아내기 위해 ARP 브로드캐스트가 수행되어야 하기 때문에 스위치가 유니캐스트를 플러딩하기 이전에 ARP 브로드캐스트가 먼저 네트워크에 브로드캐스트로 전달되며 ARP 프로토콜을 통해 이미 스위치는 출발지, 목적지 MAC 주소를 습득하게 되기 때문입니다.
추가로 알아두면 좋은 것으로 실제로 유니캐스트 통신이 시작되면 이미 만들어진 MAC 주소 테이블로 패킷을 포워딩, 필터링하는데 ARP와 MAC 테이블은 일정시간동안 지워지지 않습니다. 이렇게 테이블이 지워지지 않는 일정 시간을 에이징 타임이라고 부릅니다. 보통 MAC 테이블의 에이징 타임이 ARP 에이징 타임보다 길기 때문에 플러딩 없이 효율적으로 네트워크를 운영할 수 있어요!
🤮마치며
생소한 단어들이 많이 등장하지만 상식적으로 구성된 내용이어서 이해하는 데 크게 어려움이 있지는 않은 것 같습니다.
🐶레퍼런스
https://www.hardnara.com/board2/openedu_view.php?no=406
IT 엔지니어를 위한 네트워크 입문
'Network' 카테고리의 다른 글
proxy 서버의 개념과 react project에서 사용하는 방법 (0) | 2023.04.29 |
---|---|
ARP (Address Resolution Protocol) 프로토콜 정리 (0) | 2023.04.25 |
HTTPS (0) | 2023.04.21 |
www.google.com을 검색하면 무슨일이 생길까 (1) | 2023.04.20 |
HTTP를 찍먹 해보자. (0) | 2023.04.01 |