Reference: [책] IT 엔지니어를 위한 네트워크 입문
- Network의 가장 핵심장비인 Switch는 2계층 주소인
MAC 주소
를 기반으로 동작한다 - Switch는 network 중간에서
packet
을 받아 필요한 곳에만 보내주는 network의 중재자 역할을 한다- Switch는 아무 설정 없이 network에 연결해도
MAC 주소
를 기반으로 packet을 전달하는 기본 동작을 수행할 수 있다
- Switch는 아무 설정 없이 network에 연결해도
- Switch는
MAC 주소
를 인식하고 packet을 전달하는 switch의 기본 동작 외에도- 한 대의 장비에서 논리적으로 network를 분리할 수 있는
VLAN 기능
, - Network Loop를 방지하는
STP (Spanning Tree Protocol)
과 같은 기능을 기본적으로 가지고 있다
- 한 대의 장비에서 논리적으로 network를 분리할 수 있는
- Switch는 network에서 통신을 중재하는 장비이다
- Switch가 없던 오래된
Ethernet Network
에서는 packet을 전송할 때 서로 경합해 그로 인한 network 성능 저하가 컸다- 이런 경쟁을 없애고 packet을 동시에 여러 장비가 서로 간섭 없이 통신할 수 있도록 도와주는 장비가
Switch
이다- Switch를 사용하면 여러 단말이 한번에 통신할 수 있어 통신하기 위해 기다리거나 충돌 때문에 대기 하는 문제가 해결되고 network 전체의 통신 효율성이 향상된다
- 이런 경쟁을 없애고 packet을 동시에 여러 장비가 서로 간섭 없이 통신할 수 있도록 도와주는 장비가
- Switch의 핵심 역할은 누가 어느 위치에 있는지 파악하고 실제 통신이 시작되면 자신이 알고 있는 위치로 packet을 정확히 전송하는 것이다
- 이런 동작은 Swith가 2계층 주소를 이해하고,
- 단말의 주소인
MAC 주소
와 단말이 위치하는Interface 정보
를 mapping한 MAC Address Table을 갖고 있어서 가능하다
- 단말의 주소인
- 이런 동작은 Swith가 2계층 주소를 이해하고,
- Switch는 전송하려는 packet의 header 안에 있는 2계층 목적지 주소를 확인하고, MAC Address Table에서 해당 주소가 어느 port에 있는지 확인해 해당 packet을 그 port로만 전송 한다
- 이런 역할을 수행하기 위해 Switch는
MAC 주소
와port
가 mapping 된 MAC Address Table이 필요하다- 만약 Table이 없는 도착지 주소를 가진 packet이 switch로 들어오면,
- Switch는 전체 port로 packet을 전송한다
- Packet의 도착지 주소가 Table에 있으면,
- 해당 주소가 mapping 된 port로만 packet을 전송하고, 다른 port로는 전송하지 않는다
- 만약 Table이 없는 도착지 주소를 가진 packet이 switch로 들어오면,
- Switch의 위와 같은 동작 방식은 아래의 3가지로 정리할 수 있다
- Flooding
- Address Learning
- Fowarding/Filtering
- 이런 역할을 수행하기 위해 Switch는
- Switch는 부팅하면 network 관련 정보가 아무것도 없다
- 이때 switch는 network 통신을 중재하는 자신의 역할을 다하지 못하고 마치 hub처럼 동작한다
Hub
는 들어온 port를 제외하고 모든 port로 packet을 전달한다- Switch가 hub와 같이 모든 port로 packet을 흘리는 동작 방식을
Flooding
이라고 한다
- Switch가 hub와 같이 모든 port로 packet을 흘리는 동작 방식을
- 이때 switch는 network 통신을 중재하는 자신의 역할을 다하지 못하고 마치 hub처럼 동작한다
- Switch는 packet이 들어오면 도착지 MAC 주소를 확인하고, 자신이 갖고 있는 MAC Address Table에서 해당 MAC 주소가 있는지 확인한다
- MAC Address Table에 matching되는 목적지 MAC 주소 정보가 없으면 모든 port에 같은 내용의 packet을 전송한다
- Switch는
LAN
에서 동작하므로, 자신이 정보를 갖고 있지 않아도 어딘가에 장비가 있을 수 있다는 가정 하에 위와 같은 작업을 수행한다
- Switch는
- MAC Address Table에 matching되는 목적지 MAC 주소 정보가 없으면 모든 port에 같은 내용의 packet을 전송한다
- Flooding 동작은 Switch의 정상적인 동작이지만, 이런 동작이 많아지면 Switch가 제 역할을 못하게 된다
- Packet이 switch에 들어오면 해당 packet 정보의 MAC 주소를 보고 이를 학습해 MAC Address Table을 만든 후 이를 통해 packet을 전송한다
- Switch가 packet을 flooding한다는 것은 switch가 제 기능을 못한다는 뜻이다
Ethernet - TCP/IP
network에서는 ARP Broadcast를 미리 주고받은 후 data가 전달되므로 실제로 data를 보내고 받을 때는 switch가 packet을 flooding 하지 않는다
- Switch를 사용하면 필요한 곳에만 packet을 forwarding하므로 주변 통신을 악의적으로 가로채기 힘들어 모든 packet을 flooding하는
hub
에 비해 보안에 도움이 된다- 이런 switch의 기능을 무력화해 주변 통신을 모니터링하는 공격 기법이 사용된다
- ex)
- Switch에게 엉뚱한 MAC address를 습득시키거나
- Switch의 MAC Address Table을 꽉 차게 해 switch flooding 동작을 유도할 수 있다
- ex)
- 만약 switch가 아무 이유없이 packet을 flooding 한다면,
- Switch가 정상적으로 동작하지 않거나
- 주변에서 공격이 수행되는 상황일 수 있다
- 이런 switch의 기능을 무력화해 주변 통신을 모니터링하는 공격 기법이 사용된다
- 이외에도
ARP poisoning
기법을 이용해 모니터링해야 할 IP의 MAC 주소가 공격자 자신인 것처럼 속여 원하는 통신을 받는 방법을 사용하기도 하므로 유의해야 한다
- Switch가 packet의 도착지 MAC 주소를 확인하여 원하는 port로 forwarding하는 switch의 동작을 정상적으로 수행하려면 MAC Address Table을 만들고 유지해야 한다
MAC Address Table
은 어느 위치 (port)에 어떤 장비 (MAC 주소)가 연결되었는지에 대한 정보가 저장되어 있는 임시 table이다- 이런 MAC Address Table을 만들고 유지하는 과정을
Address Learning
이라고 한다
- 이런 MAC Address Table을 만들고 유지하는 과정을
Address Learning
은 packet의 출발지 MAC 주소 정보를 이용한다- Packet이 특정 port에 들어오면 switch에는 해당 packet의 출발지 MAC 주소와 port 번호를 MAC Addrss Table에 기록한다
- 1번 port에서 들어온 packet의 출발지 MAC 주소가 AAAA라면, 1번 port에 AAAA MAC 주소를 가진 장비가 연결되어 있따고 추론할 수 있어 이런 방법으로 정보를 습득한다
- Packet이 특정 port에 들어오면 switch에는 해당 packet의 출발지 MAC 주소와 port 번호를 MAC Addrss Table에 기록한다
Address Learning
은 MAC 주소 정보를 사용하므로 broadcast나 multicast에 대한 MAC 주소를 학습할 수 없다- 두 가지 모두 목적지 MAC 주소 field에서만 사용하기 때문이다!
- Switch는
MAC address learning
작업으로 주변 장비의 MAC 주소를 학습하는 것 외에도 사전에 미리 정의된 MAC 주소 정보를 가지고 있다- 이런 사전 정의된 주소는 packet을 처리하기 위한 주소가 아니라 대부분 switch 간 통신을 위해 사용되는 주소이다
- 이러한 종류의 주소도
MAC Address Table
에서 정보를 확인할 수 있는데 switch에서 자체 처리되는 주소는 특정 port로 내보내는 것이 아니라 switch에서 자체 처리하므로- 인접 port 정보가 없거나
- CPU 혹은 관리 module을 지정하는 요어로 표기된다
-
Switch의 동작은 매우 간단한데, Packet이 switch에 들어온 경우
- 도착지 MAC 주소를 확인하고
- 자신이 가진 MAC Address Table과 비교해 맞는 정보가 있으면 match되는 해당 port로 packet을 forwarding한다
- 이때, 다른 port로는 해당 packet을 보내지 않으므로 이 동작을
filtering
이라고 한다
- 이때, 다른 port로는 해당 packet을 보내지 않으므로 이 동작을
-
Switch는
fowarding
과filtering
을 통해 목적지로만 packet이 전달되도록 동작한다 -
Switch에서는
forwarding
과filtering
작업이 여러 port에서 동시에 수행될 수 있다- 통신이 다른 port에 영향을 미치지 않으므로, 다른 port에서 기존 통신 작업으로부터 독립적으로 동작할 수 있다
-
Switch는 일반적인 Unicast에 대해서만
forwarding
과filtering
작업을 수행한다- BUM Traffic이라고 부르는 Broadcast, Unknown Unicast, Multicast는 조금 다르게 동작한다
- 출발지 MAC 주소로 broadcast나 multicast 모두 출발지가 사용되지 않으므로, 해당 traffic은 전달이나 filtering 작업을 하지 않고 모두 flooding한다
- Unkonw Unicast도 MAC Table에 없는 주소이므로 broadcast와 동일하게 flooding 한다
- BUM Traffic이라고 부르는 Broadcast, Unknown Unicast, Multicast는 조금 다르게 동작한다
.
Ethernet - TCP/IP
network에서는 switch가 unicast를 flooding하는 경우가 거의 없다- Packet을 만들기 전에 통신해야 하는 단말의 MAC 주소를 알아내기 위해
ARP Broadcast
가 먼저 수행되어야 하므로 Unicast보다 ARP Broadcast가 먼저 network에 전달된다- 이 ARP를 이용한 MAC 주소 습득 과정에서 이미 switch는 통신하는 출발지와 목적지의 MAC 주소를 습득할 수 있고, 실제 unicast 통신이 시작되면 이미 만들어진 MAC Address Table로 packet을
forwarding
,filtering
한다
- 이 ARP를 이용한 MAC 주소 습득 과정에서 이미 switch는 통신하는 출발지와 목적지의 MAC 주소를 습득할 수 있고, 실제 unicast 통신이 시작되면 이미 만들어진 MAC Address Table로 packet을
- Packet을 만들기 전에 통신해야 하는 단말의 MAC 주소를 알아내기 위해
- ARP와 MAC Table은 일정 시간 동안 지워지지 않는데, 이 시간을 aging time이라고 한다
- 일반적으로 MAC Table의 aging time이 단말의 ARP aging time보다 길어서 Ethernet network를 flooding없이 효율적으로 운영할 수 있다