네트워크의 가장 핵심장비인 스위치는 2계층 주소인 MAC 주소를 기반으로 동작한다.
이번에는 스위치가 MAC 주소를 어떻게 이해하고 활용하는지에 대해 다뤄볼 예정
- 스위치는 네트워크 중간에서 패킷을 받아 필요한 곳에만 보내주는 네트워크의 중재자 역할
- 아무 설정 없이 네트워크에 연결해도 MAC 주소를 기반으로 패킷을 전달하는 기본 동작을 수행할 수 있다.
- 스위치의 기능
- 기본 동작 : MAC 주소를 인식하고 패킷을 전달
- VLAN 기능 : 한 대의 장비에서 논리적으로 네트워크를 분리
- 스패닝 트리 프로토콜(STP) : 네트워크의 루프를 방지
이번 포스팅에선 이 셋 중 기본 동작에 대해 알아보자
참고: 패킷? 프레임?
각 계층에서 헤더와 데이터를 합친 부분을 PDU(Protocol Data Unit)라고 부르는데, 각 계층마다 이 PDU를 부르는 이름이 다르며 1계층 PDU는 비트(Bit), 2계층 PDU는 프레임(Frame), 3계층은 패킷(Packet), 4계층은 세그먼트(Segment)라고 부르고 애플리케이션에 해당하는 3개 계층(애플리케이션, 프레젠테이션, 세션)은 데이터(Data)라고 부른다. 🔗참고: OSI 7계층
2계층 PDU의 명칭은 '프레임'이고 3계층 PDU의 명칭은 '패킷'이므로 이번 장에서 다루는 PDU의 이름은 '프레임'이 맞지만, 데이터를 쪼개 전달하는 데이터 전체를 패킷이라고 통칭하므로 이번 글에서도 편의상 패킷으로 용어를 통일해 사용할 예정이다.
스위치 장비 동작
스위치: 네트워크에서 통신을 중재하는 장비
스위치가 없을 땐 패킷을 서로 경합해 전송해 네트워크 성능 저하가 컸는데, 이런 경쟁을 없애고 패킷을 여러 장비가 서로 간섭 없이 동시에 통신하도록 도와주는 장비가 스위치이다.
스위치를 사용하면 여러 단말이 한꺼번에 통신할 수 있어 통신하기 위해 기다리거나 충돌 때문에 대기하는 문제가 해결되고 네트워크 전체의 통신 효율성이 향상된다.
- 스위치는 전송하려는 패킷의 헤더 안에 있는 2계층 목적지 주소를 확인하고, MAC 주소 테이블에서 해당 주소가 어느 포트에 있는지 확인 후 그 포트로만 패킷을 전송한다.
- 테이블에 없는 도착지 주소를 가진 패킷이 들어오면 전체 포트로 패킷 전송
- 스위치의 핵심 역할은 누가 어디에 있는지 파악하고 실제 통신이 시작되면 자신이 알고있는 위치로 패킷을 정확히 보내는 것
- MAC주소와 단말이 위치하는 인터페이스 정보를 매핑한 MAC주소 테이블을 가지고 있으므로 정확한 위치를 파악해 전송할 수 있다.
위와 같은 동작 방식들을 정리하면
- 플러딩(Flooding)
- 어드레스 러닝(Address Learning)
- 포워딩/필터링(Forwarding/Filtering)
으로 나눌 수 있다. 이제 이 세 가지에 대해 더 자세히 알아보자!
플러딩(Flooding)
- 스위치를 부팅하면 그 때에는 네트워크 관련 정보는 아무것도 없다.
- 이 때는 자신의 역할을 하지 못하고 허브처럼 동작
- 패킷이 들어온 포트를 제외하고 모든 포트로 패킷 전달
- 이처럼 스위치가 허브처럼 동작해 모든 포트로 패킷을 흘리는 것을 플러딩(Flooding)이라고 한다.
위에서 말한 대로 스위치는 패킷이 들어오면 도착지 MAC 주소를 확인하고, 자신이 갖고 있는 MAC 주소 테이블에서 해당 MAC 주소가 있는지 확인하는데,
LAN에서 동작하므로 자신이 정보를 갖고 있지 않더라도 어딘가에 장비가 있을 수 있다고 가정하고 이처럼 수행하는 것이다.
- 플러딩 동작은 스위치의 정상적인 동작
- 그러나 플러딩이 지속되면 스위치의 역할이 의미가 없어진다.
- 따라서 패킷이 들어오면 해당 패킷의 MAC 주소를 보고 이를 학습해
- MAC 주소 테이블을 만든 후 이를 통해 패킷을 전송한다.
참고: 비정상적인 플러딩(Flooding)
위에서 말한 대로 스위치가 패킷을 플러딩한다는 것은 스위치가 제 기능을 못한다는 뜻이다.
이더넷-TCP/IP 네트워크에서는 ARP 브로드캐스트를 미리 주고받은 후 데이터가 전달되므로 실제로 데이터를 보내고 받을 때는 스위치가 패킷을 플러딩하지 않는다.
즉, 스위치를 사용하면 필요한 곳에만 패킷을 포워딩하므로 주변 통신을 악의적으로 가로채기 힘들어 모든 패킷을 플러딩하는 허브에 비해 보안에 도움이 된다.
때문에 이런 스위치 기능을 무력화해 주변 통신을 모니터링하는 공격 기법이 사용되기도 한다.
스위치에게 엉뚱한 MAC 주소를 습득시키거나, 스위치의 MAC 테이블을 꽉 차게 해 스위치의 플러딩 동작을 유도하는 방식 등으로 사용된다.
아무 이유없이 스위치가 패킷을 플러딩한다면(주변 다른 통신을 모니터링할 수 있다면) 스위치가 정상적으로 동작하지 않거나 주변에서 공격이 수행되는 상황임을 알아야 한다.
이 외에도 ARP 포이즈닝(Poisoning) 기법을 이용해 모니터링해야 할 IP의 MAC 주소가 공격자 자신인 것처럼 속여 원하는 통신을 받는 방법을 사용하기도 한다.
어드레스 러닝(Address Learning)
어드레스 러닝 : MAC 주소 테이블을 만들고 유지하는 과정
스위치가 동작을 정상적으로 수행하려면 MAC 주소 테이블을 만들고 유지해야 한다.
MAC 주소 테이블은 어느 위치(포트)에 어떤 장비(MAC 주소)가 연결되었는지에 대한 정보가 저장되어 있는 임시 테이블이며, 이런 MAC 주소 테이블을 만들고 유지하는 과정을 어드레스 러닝이라고 한다.
- 어드레스 러닝은 패킷의 출발지 MAC 주소 정보를 이용
- 패킷이 특정 포트에 들어오면 스위치에는 해당 패킷의 출발지 MAC 주소와 포트 번호를 MAC 주소 테이블에 기록
- 1번 포트에서 들어온 패킷의 출발지 MAC 주소가 AAAA 라면 1번 포트에 AAAA MAC 주소를 가진 장비가 연결되어 있다고 추론 가능
- 다만 어드레스 러닝은 출발지의 MAC 주소 정보를 사용하므로, 브로드캐스트나 멀티캐스트에 대한 MAC 주소를 학습할 수 없다. (두 가지 모두 목적지 MAC 주소 필드에서만 사용하기 때문)
포워딩/필터링(Forwarding/Filtering)
위에서 계속 얘기한 대로, 도착지 MAC 주소를 확인해 자신이 가진 정보와 매치되는 포트로만 넘겨주는데, 넘겨주는 것을 포워딩이라고 하며 매치된 포트 외에는 포워딩하지 않는 것을 필터링이라고 한다.
- 포워딩(Forwarding): 패킷이 스위치에 들어왔을 때 도착지 MAC 주소를 확인 후 MAC 테이블과 비교해 맞는 정보가 있으면 해당 포트로 패킷을 넘겨주는 것.
- 필터링(Filtering): 포워딩 도중 다른 포트로는 해당 패킷을 보내지 않는 것.
- 포워딩과 필터링 작업이 여러 포트에서 동시에 수행될 수 있다.
- 통신이 다른 포트에 영향을 미치지 않으므로 다른 포트에서 기존 통신작업으로부터 독립적으로 동작
- 일반적인 유니캐스트에 대해서만 포워딩과 필터링 작업을 수행
참고
⌜IT 엔지니어를 위한 네트워크 입문⌟ 길벗, 2023
[4장] 스위치: 2계층 장비 | 4.1 스위치 장비 동작 (p.128 ~ 135)
* 책을 참고해 필요한 내용을 정리한 것이므로, 책의 내용과 다를 수 있습니다.
GitHub 댓글