2계층 주소인 MAC Address를 기반으로 동작하는 장비로, 네트워크 중간에서 프레임을 받아 필요한 곳에만 보내주는 네트워크의 중재자 역할을 수행한다.
스위치는 아무 설정 없이 네트워크에 연결해도 MAC 주소를 기반으로 프레임을 전달하는 기본 동작을 수행한다.
🤔 Packet과 Frame
각 계층에서 헤더와 데이터를 합친 부분을 PDU(Protocol Data Unit)이라고 하는데 각 계층에서 PDU를 부르는 이름이 다르다. 1계층 PDU는 Bits, 2계층 PDU는 Frame, 3계층 PDU는 Packet, 4계층 PDU는 Segment라고 하고 상위 3계층은 Data라고 한다.
(4→3, 3→2, 2→1 계층으로 갈때는 헤더가 붙지만 상위 계층에는 헤더가 붙는게 아니라 각 애플리케이션에 맞게 데이터를 변환한다.)
스위치는 한 대의 장비에서 네트워크를 분리할 수 있는 VLAN 기능과 네트워크의 루프를 방지하는 스패닝 트리 프로토콜(STP) 기능을 제공하며 그외에도 보안 기능과 모니터링 기능도 제공한다.
스위치가 없는 이더넷 네트워크(LAN)는 데이터를 전송할 때 서로 경합하게 되므로 네트워크 성능 저하가 크다. 이런 경쟁을 없애고 프레임을 동시에 여러 장비가 간섭없이 통신하도록 도와주는 장비가 스위치이다.
핵심 역할은 누가 어느 위치에 있는지 파악하고 실제 통신이 시작되면 자신이 알고 있는 위치로 데이터를 전송하는 것으로 2계층 주소를 이해하고 단말의 주소인 MAC 주소와 단말이 위치하는 인터페이스 정보를 매핑한 MAC 주소 테이블을 가지고 수행한다.
MAC 주소 테이블을 유지하기 위한 단계
1. Flooding : 데이터가 들어온 포트를 제외한 모든 포트에게 데이터를 전송하는 동작 방식
비정상적인 플러딩
스위치는 한 번 학습을 하게되면 Flooding을 수행하지 않기 때문에 항상 플러딩을 하는 허브보다 보안에 도움이 된다. 하지만 스위치의 기능을 무력화시켜서 엉뚱한 MAC 주소를 학습시키거나 MAC 테이블을 가득 차게 해서 스위치의 플러딩을 유도하는 경우가 있다. 이는 스위치가 정상적으로 동작하지 않거나 주변에서 공격이 수행되는 상황이다.
ex) ARP Poisoning : 모니터링 해야 할 IP의 MAC이 공격자 자신인 것처럼 하는 공격
Address Learning : 데이터를 전송한 장비의 MAC Address와 인터페이스를 학습해서 MAC 주소 테이블에 기록
Forwarding/Filtering : 학습한 데이터가 있는 경우 그 MAC Address에게 데이터를 전송할 때는 학습된 포트로만 데이터를 전송
하나의 물리 스위치에서 여러 개의 네트워크를 나누어 사용할 수 있는 기술로 다음과 같은 목적을 가진다.

VLAN vs VPN
- 스위치에서는 VLAN으로 네트워크를 분리
- 물리적인 회선에서는 VPN으로 네트워크를 분리
VLAN을 나누면 하나의 장비를 서로 다른 네트워크를 갖도록 논리적으로 분할한 것이므로 유니캐스트 뿐 아니라 브로드캐스트도 VLAN간에 통신할 수 없다.
종류와 특징
데이터센터나 캠퍼스 등에서는 포트기반 VLAN을 많이 사용했는데 사용자의 이동성을 요구하는 스마트 오피스 같은 경우에는 MAC 기반 VLAN을 사용한다.
동작 방식
여러 개의 VLAN이 설정된 경우 VLAN끼리 통신을 하려면 3계층 장비가 필요한데 여러 개의 VLAN으로 구성된 Switch끼리 연결할 때는 VLAN의 개수만큼 포트를 연결해야 한다. 한정된 포트를 효율적으로 사용하기 위해 Trunk Port(Tagged Port)를 통해 하나의 포트를 가지고 여러 개의 VLAN 통신이 가능하도록 할 수 있다.

하나의 시스템이나 구성요소에서 고장이 발생했을 때 전체 시스템이 멈추는 구성요소
네트워크에서도 이 문제를 해결하기 위해서 이중화나 다중화된 네트워크를 디자인하고 구성한다.
SPoF를 대비하여 같은 종류의 클라우드(Private면 Private, Public이면 Public)에 애플리케이션을 올려두고 장애가 발생했을 때 다른 클라우드의 회선을 사용하면 멀티 클라우드, Private Cloud에 있는 애플리케이션을 Public Cloud에도 올려두고 장애가 발생했을 때 Public Cloud로 옮겨가는 건 하이브리드 클라우드
보안이 중요한 애플리케이션(ex 서버 애플리케이션)은 프라이빗 클라우드에 두고, 그렇지 않은 것들은 퍼블릭 클라우드에 두기도 한다.
🚨 SPoF를 막기 위해 네트워크를 이중화하거나 다중화하면 네트워크 Loop가 발생할 수 있다.
네트워크 연결이 고리처럼 되돌아오는 형태로 구성된 상황
브로드캐스트 스톰
3계층에서는 TTL(Time to Live)이라는 패킷 수명을 가지고 있지만 2계층에는 TTL 같은 메커니즘이 없기 때문에 스위치 내에서 패킷이 계속 돌아다녀도 죽지 않는다. 2계층에서는 이런 문제로 인해 스위치와 네트워크에 연결된 단말 간 통신이 거의 불가능해질 수 있다.
스위치 MAC 러닝 중복
유니캐스트에서 발생하는 문제로, 스위치는 출발지 MAC 주소를 학습하는데 직접 전달되는 패킷과 스위치를 돌아 들어간 패킷 간의 포트가 달라서 MAC 주소를 정상적으로 학습할 수 없는 상황
✨ STP를 통해 Loop가 생기는 것을 예방하고 통신이 원활하게 이루어지도록 하는 것!
STP는 루프를 확인하고 적절히 포트를 사용하지 못하게 만들어서 루프를 예방하는 매커니즘으로 다음과 같이 동작한다.

Router는 3계층에서 동작하는 장비로, 경로를 지정해주는 역할을 수행하는데 라우터에 들어오는 패킷의 목적지 IP주소를 확인하고 자신이 가진 경로(Route) 정보를 이용하여 패킷을 최적의 경로로 포워딩 한다.
경로 정보를 모아서 라우팅 테이블을 만들고 패킷이 라우터로 들어오면 도착지 IP 주소를 확인해서 경로를 지정하고 패킷을 포워딩 한다.
스위치에서의 플러딩
스위치는 패킷의 도착지 주소를 모르면 어딘가에 존재할지 모를 장비와의 통신을 위해 패킷을 모든 포트에 전송한다. LAN 어딘가에 도착지가 있을 수 있다고 가정하고 전체 네트워크에 플러딩하는 것은 쓸모없는 패킷이 전송되어 네트워크 성능에 무리가 갈 수 있지만 LAN은 크기가 작아서 플러딩에 대한 영향이 작고 도착지 NIC에서 자신의 주소와 도착지 주소가 다르면 폐기하기 때문에 플러딩 작업이 네트워크에 큰 무리를 주지는 않는다.
라우터의 전송
반면, 라우터는 패킷을 원격지로 보내는 것을 목표로 개발이 돼서 3계층에서 동작하고 분명한 도착지 정보가 있을 때만 통신을 허락한다. 라우터가 스위치처럼 목적지가 없거나 명확하지 않은 패킷을 플러딩하게 되면 인터넷에 쓸모없는 패킷이 가득차게 된다.
초창기에는 다양한 프로토콜로 네트워크가 구성되어 있어서 라우터가 프로토콜을 변환해서 서로 간에 통신을 할 수 있도록 해주었지만, 최근에는 통신의 표준이 거의 이더넷으로 수렴되어서 이 역할은 많이 줄어었다.
라우터는 패킷을 처리할 때 경로 정보를 정리하고, 이를 이용해서 패킷을 포워딩하는 역할을 수행한다.

현재 인터넷에서는 단말부터 목적지까지의 경로를 모두 책임지는 방식이 아닌, 인접한 라우터까지만 경로를 지정하면 인접한 라우터에서 최적의 경로를 다시 파악해서 라우터로 패킷을 포워딩하는 방식으로 라우팅이 이루어진다. 네트워크를 한 단계씩 뛰어넘는다는 의미로 Hop by Hop 라우팅이라고 하고 인접한 라우터를 Next Hop이라고 한다.
Next hop을 지정하는 방법
라우팅 테이블에 저장하는 데이터
루프가 없는 라우터

경로 정보를 얻는 방법
다이렉트 커넥트 : 직접 연결하는 방식 (케이블 연결)
Static Routing : 관리자가 경로를 직접 지정하는 방식으로, 라우팅 정보를 매우 직관적으로 설정하고 관리할 수 있다. 하지만 네트워크 규모가 커지게 되면 Static Routing으로는 한계가 있다. ⇒ Dynamic Routing
Dynamic Routing : 직접 경로를 설정하지 않고 동적으로 경로를 받아서 처리하는 방식으로, 라우터끼리 자신이 알고있는 경로 정보나 링크 상태 정보를 교환해서 전체 네트워크 정보를 학습한다.
4계층 장비가 등장하게 된 이유는 IP 부족으로 NAT나 PAT 기술이 등장하고 보안용 방화벽, 프록시 같은 장비들이 등장하면서 4계층 이상에서 동작하는 장비가 필요하게 됐다.
특징
세션 장비(4계층 장비)의 이런 요소가 서비스에 영향을 미치므로 네트워크 통신 중간 위치에 방화벽, NAT, 로드 밸런서와 같은 장비가 있을 경우 네트워크 인프라 뿐만 아니라 시스템 설계와 애플리케이션 개발에도 세션 장비에 대한 고려가 필요
서버나 장비의 부하를 분산하기 위해 사용되는 장비로, 트래픽을 분배해주는 기능을 수행한다. 4계층 이상에서 동작하면서 4계층 정보, 애플리케이션 정보를 확인하고 수정하는 기능도 수행한다.
L4 로드 밸런싱
TCP, UDP(포트 넘버)를 기반으로 로드 밸런싱을 수행
L7 로드 밸런싱
HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행
일반적인 데이터센터에서는 L4와 L7을 모두 지원하는 장비를 가지고 설정에 따라 각각 역할을 수행하고, 클라우드 환경에서는 L4와 L7을 지원하는 컴포넌트를 계층별로 구분해서 사용한다.
ex) AWS의 경우 NLB가 L4 로드 밸런싱을, ALB가 L7 로드 밸런싱을 수행
L4 스위치
로드밸런서 기능이 있는 스위치로 부하 분산, 성능 최적화, 리다이렉션 기능을 제공한다.
라우터나 스위치는 새로고침 등을 해도 포워딩 방식이기 때문에 원래 경로를 찾아가는 반면, 로드밸런서는 리다이렉션 방식이기 때문에 새로고침 등을 하게 되면 다른 경로로 찾아가게 될 수도 있다.
네트워크 중간에 위치해 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용(Permit)하거나 차단(Deny)하는 장비