이더넷을 공부하면서 알게 된 건, 같은 LAN 안에서 데이터를 주고받으려면 결국 프레임이라는 형식이 필요하다는 점이었다.
그런데 여기서 질문이 하나 생긴다.
프레임을 만들었다고 해서 끝일까?
아니다.
프레임은 결국 실제 네트워크 장비를 지나 목적지까지 이동해야 한다. 이때 같은 네트워크 안의 장비들을 연결해주는 대표적인 장비가 있었다.
바로 허브와 스위치다.
지금은 대부분 스위치를 사용하지만, 예전에는 허브도 많이 사용되었다고 한다. 그래서 이번에는 “허브는 왜 사라지고 스위치가 남았을까?”라는 흐름으로 정리해보려고 한다.
허브는 물리 계층 장비다.
물리 계층 장비라는 말은, 데이터를 프레임 단위로 해석해서 판단한다기보다는 들어온 신호를 그대로 전달하는 장비에 가깝다는 뜻이다.
예를 들어 컴퓨터 A, B, C, D가 하나의 허브에 연결되어 있다고 해보자.
A가 B에게 데이터를 보내고 싶다.
그러면 A는 허브로 신호를 보낸다.
허브는 그 신호를 보고 이렇게 판단하지 않는다.
“목적지가 B구나. 그러면 B가 연결된 포트로만 보내야겠다.”
허브는 그런 판단을 하지 못한다.
대신 이렇게 동작한다.
“어? 1번 포트로 신호가 들어왔네? 그럼 나머지 포트로 다 뿌려야겠다.”
그래서 A가 B에게 보낸 데이터는 B뿐만 아니라 C와 D에게도 전달된다.
물론 C와 D는 자신에게 온 데이터가 아니라고 판단하고 버릴 수 있다. 하지만 어쨌든 허브 입장에서는 일단 모두에게 보내는 방식이다.
비유하면 허브는 단톡방에 가깝다.
A가 B에게만 말하고 싶어도, 허브 환경에서는 일단 방 안에 있는 모두에게 말이 들린다.
B만 그 말을 받아들이고, 나머지는 “내 얘기 아니네” 하고 무시하는 구조다.
허브 방식의 가장 큰 문제는 충돌이다.
허브는 들어온 신호를 모든 포트로 뿌린다. 그런데 여러 장비가 동시에 데이터를 보내면 어떻게 될까?
예를 들어 A도 데이터를 보내고, C도 거의 동시에 데이터를 보낸다고 해보자.
허브는 신호를 구분해서 똑똑하게 처리하지 못한다.
결국 같은 통신 공간 안에서 신호들이 서로 부딪힐 수 있다.
이런 충돌을 콜리전이라고 한다.
여기서 중요한 건, 허브에 연결된 장비들이 하나의 충돌 가능 영역을 공유한다는 점이다.
이 영역을 콜리전 도메인이라고 한다.
콜리전 도메인은 말 그대로 충돌이 발생할 수 있는 범위다.
허브에 연결된 장비들이 많아질수록 누군가 동시에 말할 가능성도 커진다. 그러면 충돌도 더 자주 발생한다.
교실에서 모두가 동시에 말하면 아무 말도 제대로 들리지 않는 것과 비슷하다.
한 명이 말할 때는 괜찮다.
두세 명이 동시에 말하기 시작하면 내용이 섞인다.
사람이 많아질수록 “잠깐, 한 명씩 말해!”라는 규칙이 필요해진다.
허브 환경에서도 비슷한 문제가 생긴다.
허브 환경에서는 기본적으로 반이중 통신이 사용된다.
반이중 통신은 송신과 수신을 모두 할 수는 있지만, 동시에 하지는 못하는 방식이다.
무전기를 생각하면 쉽다.
무전기는 말할 수도 있고 들을 수도 있다.
하지만 내가 말하는 동안에는 상대방 말을 동시에 듣기 어렵다. 그래서 보통 한 사람이 말하고, 끝나면 다른 사람이 말한다.
허브 환경도 이와 비슷하다.
한 장비가 데이터를 보내는 동안 다른 장비가 동시에 데이터를 보내면 충돌이 발생할 수 있다. 그래서 “지금 누가 말하고 있는지”를 신경 써야 한다.
이 구조에서는 네트워크가 커질수록 비효율이 커진다.
장비가 적을 때는 그럭저럭 괜찮을 수 있다.
하지만 장비가 많아지면 기다려야 하는 시간도 늘고, 충돌 가능성도 커지고, 다시 보내야 하는 일도 많아진다.
허브 환경에서는 충돌을 줄이기 위한 규칙이 필요했다.
그중 하나가 CSMA/CD다.
이름은 길지만, 흐름만 보면 생각보다 단순하다.
CSMA/CD는 대략 이런 느낌이다.
먼저 장비는 데이터를 보내기 전에 네트워크 상태를 들어본다.
“지금 누가 말하고 있나?”
아무도 말하고 있지 않으면 데이터를 보낸다.
“조용하네. 그럼 내가 보낼게.”
그런데 동시에 다른 장비도 같은 판단을 할 수 있다.
A도 조용하다고 생각해서 보내고, C도 조용하다고 생각해서 보낸다.
그러면 충돌이 발생한다.
충돌을 감지하면 장비들은 전송을 멈추고, 잠깐 기다린 뒤 다시 시도한다.
즉 CSMA/CD는 이런 규칙이다.
“말하기 전에 먼저 들어보고, 아무도 말하지 않으면 말한다. 만약 말이 겹쳐서 충돌이 나면 멈췄다가 나중에 다시 말한다.”
여기서 중요한 건 CSMA/CD가 충돌을 없애는 기술이라기보다는, 충돌이 발생할 수 있는 환경에서 그 충돌을 처리하기 위한 규칙이라는 점이다.
애초에 충돌이 자주 나는 구조라면, 충돌 후 다시 보내는 과정 자체가 낭비가 된다.
허브의 한계는 명확하다.
허브는 목적지를 판단하지 못한다.
들어온 신호를 모든 포트로 뿌린다.
같은 허브에 연결된 장비들이 하나의 콜리전 도메인을 공유한다.
그래서 동시에 데이터를 보내면 충돌이 발생할 수 있다.
이 문제를 해결하기 위해 스위치가 사용된다.
스위치는 허브보다 똑똑하게 동작한다.
허브가 “들어온 건 일단 모두에게 뿌린다”에 가깝다면, 스위치는 “이 프레임을 어느 포트로 보내야 하지?”를 판단하려고 한다.
물론 스위치가 처음부터 모든 목적지를 아는 것은 아니다.
하지만 스위치는 MAC 주소를 기반으로 학습하고, 목적지에 맞는 포트로 프레임을 전달할 수 있다.
이 덕분에 허브처럼 모든 장비에게 무조건 뿌리는 방식보다 훨씬 효율적으로 통신할 수 있다.
비유하면 허브는 전체 방송이고, 스위치는 안내 데스크에 가깝다.
허브는 누군가를 찾을 때 건물 전체에 방송한다.
“B님 계신가요? B님 계신가요?”
반면 스위치는 점점 정보를 기억한다.
“B는 2번 방에 있구나. 다음부터 B에게 가는 건 2번 방으로 보내면 되겠다.”
이 차이가 커진다.
장비가 많아질수록, 통신량이 많아질수록, 모두에게 뿌리는 방식은 부담이 된다.
반대로 목적지를 보고 필요한 곳으로만 보내는 방식은 훨씬 효율적이다.
결국 허브가 사라지고 스위치가 남은 이유는 단순히 “스위치가 더 최신 장비라서”가 아니다.
네트워크에서 데이터가 많아지고, 연결되는 장비가 많아지면서 허브 방식의 한계가 분명해졌기 때문이다.
허브는 물리 계층에서 신호를 단순히 전달한다.
이 구조에서는 충돌이 발생할 수 있고, 충돌을 처리하기 위해 CSMA/CD 같은 방식이 필요했다.
하지만 스위치는 프레임을 더 효율적으로 전달할 수 있다.
모든 포트로 무작정 뿌리는 것이 아니라, 목적지를 기준으로 어디로 보낼지 판단할 수 있다.
여기서 중요한 건 허브와 스위치의 차이를 단순히 장비 이름으로 외우는 것이 아니라, 네트워크 장비가 데이터를 얼마나 이해하고 판단할 수 있는지의 차이로 보는 것이다.
허브는 신호를 본다.
스위치는 프레임을 보고 판단하려고 한다.
이 관점으로 보면 왜 허브보다 스위치가 현대 LAN에서 더 적합한지 자연스럽게 이해된다.
LAN 안에서 프레임을 더 효율적으로 전달하려면, 단순히 모두에게 뿌리는 장비보다 목적지를 보고 전달하는 장비가 필요하기 때문이다.