우선 장비를 언급하기 전에, OSI 7계층에 대한 이해가 필요하다. 블로그에 간단한 요약글이 있으니 참고하면 좋을 것 같다.


2계층 장비

Layer 2 장비 (L2 장비)에는 허브(Hub), 브리지(Bridge), 스위치(Switch)가 있는데, 스위치는 Layer 3에서 동작하는 경우도 있다. 이 경우엔 L3 스위치라고 하는데 여기서는 L2 스위치만을 언급할 것이다.

 

1. 허브(Hub)

[ 시스코(Cisco)에서 판매하는 허브(Hub) ]


위 그림처럼 허브는 포트에 케이블을 연결해서 컴퓨터 간의 통신을 수행한다. 근데 허브에서는 어떤 두 컴퓨터끼리 통신 중일 때 다른 컴퓨터는 포트를 사용할 수 없다. (즉 통신할 수 없는 것이다.) 그 이유는 CSMA/CD 프로토콜이라고 통신 중일 때 충돌이 날 수 있어서 한 번에 한 통신만 허용하기 때문이다. 이렇게 충돌이 날 수 있어 한 통신만 허용되는 영역을 콜리전 도메인(Collision Domain)이라고 한다. 허브에 연결된 컴퓨터들은 모두 하나의 콜리전 도메인에 속하는 것이다.





아래 그림처럼 하나의 컴퓨터에서 데이터를 전송해서 허브에 들어오면 모든 포트로 데이터를 뿌린다. 이렇게 전송 외에 할 일이 없기 때문에 허브는 속도가 빠른 편이며, 가격이 저렴하다. (단순 전송 장비)


각 컴퓨터는 자신의 네트워크 인터페이스 카드(이하 NIC)에 들어온 데이터의 맥주소를 보고 자신의 맥주소와 일치하면 CPU로 보내서 데이터를 처리하게 한다. 그러나 맥주소가 다르다면 그냥 버린다.



2. 브리지(Bridge)

요즘은 브리지 대신 스위치가 사용되고 있어서 잘 사용되지 않는다. 그러나 근본적으로 스위치와 같은 기능을 제공하기 때문에 기능을 살펴볼 필요는 있다.


브리지는 스위치보다 먼저 나온 장비로, 허브와는 달리 콜리전 도메인을 나눈다. 즉 한 번에 한 통신이 아니라 여러 통신이 발생할 수 있는 것이다.


이렇게 하나의 콜리전 도메인을 형성하는 공간을 세그먼트라고 부르기도 한다. 서로 다른 세그먼트에서는 통신이 동시에 발생할 수있다. 그리고 서로 다른 세그먼트를 다리를 놔서 연결한다 하여 브리지(Bridge)라고 부르는 것이다. 대신 세그먼트 A에 있는 어떤 컴퓨터가 세그먼트 B에 있는 어떤 컴퓨터에게 데이터를 전송하고 응답을 받는다면 두 세그먼트에서 모두 통신이 일어난 것이기 때문에 다른 컴퓨터들은 모두 통신할 수 없다.


브리지 내에는 맥 주소(MAC Address) 테이블이 존재하는데, 이 테이블에 통신하는 컴퓨터의 맥주소가 저장된다. 항상 저장하지 않고, 통신 할 때만 저장을 한다. 


브리지는 Learning, Flooding, Fowarding, Filtering, Aging 이라는 기능들도 제공한다. 하나씩 살펴보자.

  • Learning : 데이터가 도착하면, 브리지는 먼저 맥주소를 확인한다. 만약 처음 보는 맥주소라면 어떤 컴퓨터가 주인인지 알기 위해 모든 포트로 누구거냐~~~라고 물어보고 매칭 되는 컴퓨터의 맥주소를 알아내서 맥주소 테이블에 저장한다.

  • Flooding : 모든 포트로 데이터를 전송하는 기능인데, 처음 보는 맥 주소의 데이터가 올 때, 브로드캐스트나 멀티캐스트 방식의 데이터가 올 때 사용된다.

  • Fowarding : 데이터가 도착하면 브리지는 먼저 맥주소를 확인한다고 했었다. 만약 이미 맥주소 테이블에 기록된 데이터일 경우 특정 포트로 데이터를 보낸다.

  • Filtering : 콜리전 도메인을 나누는 궁극의(?) 기능으로, 세그먼트 사이의 다리를 건너지 않게 한다. 만약 같은 세그먼트에서 통신이 일어난 거면 궂이 다리를 건널 필요가 없기 때문에 이때는 필터링 기능을 사용한다. (위에서 언급했듯 서로 다른 세그먼트에서 개별적으로 발생한 통신은 서로 영향을 주지 않으므로 동시에 통신할 수 있다.)

  • Aging : 브리지도 나이를 먹는다. 이 때 나이는 장비의 나이가 아니라 맥주소 테이블에 저장된 맥주소의(?) 나이이다. 실제로 설정을 통해 맥주소 테이블에 얼마동안 맥주소를 보관할지 정할 수 있다. 300초를 정했으면 한번 도착한 데이터의 맥주소는 300초동안 맥주소 테이블에 저장되고, 300초가 지나면 제거된다. 대신 남은 시간이 있는데 한 번더 도착했으면 유효시간이 갱신된다.


아래는 3개의 콜리전 도메인으로 나눈 모습이다.



위 그림에서는 Computer1 (in Collision Domain A)과 Computer6 (in Collision Domain C)이 통신할 때,

 Computer3 (in Collision Domain B)Computer4 (in Collision Domain B) 통신할 수 있다.


3. 스위치(Switch)

브리지와 같은 기능을 제공하는데, 몇 가지 기능이 추가되었다. 브리지를 멸종시킨(?) 장비이다. 아무래도 기능이 많다 보니 허브보다 속도가 느리다. (기능이 훠얼씬 많은 라우터는 스위치보다 속도가 더 느리다!) 근데 요즘은 네트워크가 작은 규모일 경우 허브나 스위치나 속도 면에서 큰 차이를 보이진 않는다. (허브는 그냥 전송만하는 바보) 스위치는 해야할 일이 많아서 가격면에서 허브보다 비싼데, 요즘은 단점이라 하기도 뭐한 것이 장비 가격이 떨어져서 거기서 거기다. (스위칭 허브라고 하는 장비도 있는데 허브가 아니라 스위치라고 봐야한다.)



그럼 이제 스위치에는 어떤 기능이 추가되었는지 살펴보자. (브리지와 스위치의 차이점)


스위치는 브리지 + 추가 기능 이기 때문에 가격이 더 비싸다. 그럼에도 불구하고... 속도는 더 빠르다. 

가장 중요한 것은 브리지는 포트에 연결된 PC들은 모두 같은 속도로 통신을 해야 하는데, 스위치는 포트별로 다른 속도를 제공할 수 있다. 포트 A가 100Mbps라면, 포트 B는 10Mbps로 통신할 수 있는 것이다. 게다가 브리지보다 제공하는 포트 수도 많다. 아주 많다.


그 외에도 데이터를 처리하는 방식에서도 차이를 보이는데, 브리지는 store-and-foward 방식을 사용하고, 스위치는 store-and-forward + cut-through 방식을 제공한다.


 store-and-forward 방식은 이름에서 알 수 있듯이 데이터가 올 때마다 보내는 것이 아니라 일단 챙겨놓는 방식이다. 전체 데이터가 도착할 때까지 챙겨놓고, 오류도 검사하고, 다왔는지 덜왔는지 살펴보고... 그렇게 해서 덜왔으면 재전송 요청하고, 보내도 괜찮으면 다른 포트로 보내는 방식이다.


cut-through 방식은 반대로 오는 데이터마다 다 보내버린다. 챙겨둠(?)따위는 없다. 처음 48-bit만 보고 바로바로 넘겨버린다. 그래서 데이터 처리 능력은 좋으나, 오류 감지 능력은 store-and-forward보다 뒤떨어진다.


언급한 두 방식을 합친 fragment-free 방식도 있다. 전체 데이터가 올 때까지 챙겨놓지는 않지만 오는 데이터마다 512-bit를 보기 때문에 오류 감지 능력이 cut-through 보다는 좋다.


실제로 브리지는 데이터를 소프트웨어적으로 처리를 한다. 그런데 스위치는 하드웨어적으로 데이터를 처리하기 때문에 (즉 코드가 스위치 내부 칩에 박혀있는 것이다.) 스위치가 브리지보다 훠얼씬 빠르게 데이터를 처리할 수 있는 것이다.


[ 위 그림처럼 여러 스위치를 쌓아 놓고 하나처럼 사용할 수도 있다. ]


추가적으로, 허브와 스위치를 각각 어떤 상황에서 사용해야 하는지 알아보자.


허브는 스위치보다 속도가 빠르지만 전송하는 기능만 있어서 단순하고 규모가 적은 네트워크에서 사용될 수 있다. 예를 들어, 메일이나 파일 전송처럼 네트워크 트래픽이 많지 않다면 허브를 사용하는 것이 더 좋다. 반대로, 많은 컴퓨터가 통신을 해야 하는 경우 스위치를 사용해야 한다.  또는 허브를 스위치에 연결해서 사용할 수도 있다. 이 방법은 더 많은 컴퓨터를 스위치에 연결할 수 있게 해주는 대신, 허브에 연결된 컴퓨터들은 모두 동일한 콜리전 도메인에 속한다.



스위치를 사용할 때 발생할 수 있는 문제점?

간혹 두 컴퓨터간의 경로가 둘 이상일 때가 있다. 그 이유는 하나의 스위치가 고장날 경우 다른 스위치를 통해 데이터를 전송하기 위해서인데, 이렇게 경로가 두 개인 경우 루핑(Looping)이 발생할 수 있다. 루핑은 하나의 PC에서 브로드캐스트를 하면 경로 상의 스우치가 들어오는 포트를 제외하고 모든 포트에 브로드캐스트를 전달하므로 다른 스위치도 브로드캐스트를 받게 될 것이고 또 들어오는 포트를 제외하고 모든 포트에 브로드캐스트를 전달한다. 두 스위치가 연결되는 경로가 두 개라면 이러한 브로드캐스트 패킷은 무한히 돌아다닐 것이다. 따라서 네트워크 트래픽이 커져서 다른 PC들이 통신을 못하게 된다.


물론 루핑을 막기 위해 스위치에서 제공하는 '스패닝 트리 알고리즘'이라는 것이 있는데, 단순히 두 경로 중 하나를 끊어버리는 거라고 생각하면 된다. 내부적인 구현을 어렵지만 추상적이게 본다면 둘 이상인 경로를 탐지하여 하나를 끊어버리고 하나가 고장나면 다른 경로를 사용할 수 있게 해주는 것이다. 이 알고리즘을 통해 하나의 경로에서만 통신을 하므로 둘 이상의 스위치라 하더라도 루핑이 생기지 않게 되는 것이다. 최근 대부분의 스위치는 스패닝 트리 알고리즘이 내장되어 있다. (이것이 바로 하드웨어적으로 처리한다는 것이다....)




3계층 장비

1. 라우터(Router)

라우터가 등장한 이유는 스위치의 단점인 브로드캐스트 처리때문이다. 스위치는 브로드캐스트로 들어온 패킷을 들어온 포트를 제외한 나머지 모든 포트로 뿌린다고 앞서 설명했었다. 이 문제는 저 머얼리 있는 아프리카에서(?) 컴퓨터 한번 껐다 키면 한국에까지 패킷이 전달될 수 있다는 의미이다. (컴퓨터가 켜지면서 인터넷에 연결될 때 ARP를 수행한다.) 이러한 브로드캐스트는 CPU 성능을 저하시키기 때문에 반드시 구분해줄 필요가 있다.


라우터의 핵심 역할은 브로드캐스트 영역을 나누는 것이라 봐도 무방하다. 그 외에도 많은 기능을 제공하는데, 먼저 라우터의 각 포트(인터페이스라고 한다.)는 네트워크 주소가 다르기 때문에 라우터가 다른 네트워크로 연결해주는 역할을 한다. 즉, 네트워크를 구분한다. 또한, 데이터 처리 및 흐름 제어 등 스위치보다 많은 기능을 제공하므로 당연히 스위치보다 비싸다. 대신 내부적으로 처리 할 일이 많아서 스위치보다 속도가 느리다.


네트워크를 구분하는 라우터...라는 말은 라우터를 넘어가지 않는 통신의 경우 같은 네트워크에서의 통신으로 볼 수 있다. MAC에 대하여에서 설명했듯이 라우터를 넘어가지 않는 통신의 경우 맥주소만으로도 통신이 가능하다. 여기서 언급하는 통신은 모두 다른 네트워크로 넘어가는 통신에 대한 것이다. IP주소를 보고 ARP 프로토콜을 사용하여 브로드캐스트를 통해 해당 IP주소의 맥주소를 찾아서 라우팅한다.


라우터의 또 다른 기능은 프로토콜이나 데이터의 크기, 중요도 등 여러 상황에 따라 트래픽의 전송 순서를 조정해주는 서비스 품질(QoS, Quality of Service) 기능도 제공한다. 게다가.. 로드 분배도 제공한다.. 즉 여러 개의 경로를 가지고 있기 때문에 데이터가 여러 경로를 타고 날아갈 수 있다. 한쪽에 문제가 생겨도 다른쪽으로 날아갈 수 있다. (스위치에서도 제공할 수 있는데 굉장히 제한적이다.)


스위치보다 좋은 기능도 많지만, 한편으로는 구성하기가 어렵다는 단점이 있다. 스위치는 대부분 전원만 공급해주면 사용이 가능하다. 소프트웨어적으로 처리하는 것이 아니라 장치에 내장된 칩에 모든 것이 있어서 하드웨어적으로 처리한다. 라우터는 라우팅 프로토콜도 정해주어야 하고(일반적으로 TCP/IP) 네트워크도 설정해주어야 한다. 필터링이니 보안이니 구성해 주어야 할 것이 많다.


이렇게 많은 라우터의 기능을 구현하는 스위치도 있는데 이를 L3 스위치라고 한다.

2. 라우터에서의 IP주소 이해하기

라우터의 포트(=인터페이스)는 이더넷 인터페이스와 시리얼 인터페이스로 나뉜다. 이더넷 인터페이스는 내부 네트워크에 연결되는 부분이고, 시리얼 인터페이스는 외부 네트워크로 연결되는 부분이다. (인터넷쪽으로 연결되는 인터페이스로, 전용선 모뎀에 연결된다.)


이와 같은 전제 조건에서 라우터가 받는 IP주소는 두 개라는 것을 알 수 있다. (네트워크가 다르잖아요?) 하나는 이더넷 인터페이스에 부여할 것이고, 다른 하나는 시리얼 인터페이스에 부여할 것이다. 이더넷용 IP주소는 내부에서 사용하기 위해 부여받은 IP주소 중 하나를 배정해야 한다. 예를 들어 내부 PC용으로 받은 주소가 203.120.150.1 ~ 203.120.150.255 까지라면 그 중 하나가 될 것이다. 보통 맨 앞의 숫자인 1을 쓴다. 이 예시에서는 203.120.150.1이 라우터 이더넷용 IP주소가 될 것이다. 주의할 것은 라우터에 부여한 주소는 다시 PC에 부여하면 안된다. 시리얼에 부여할 IP주소는 우리가 결정할 수 없다. 왜냐 라우터가 접속하는 상대편(ISP 업체) 라우터의 시리얼 인터페이스와 IP주소를 맞추어야 하기 때문이다. (이더넷용 IP주소와는 다른 네트워크다) 이런 이유로 라우터에서 포트가 다르면 다른 네트워크 주소를 갖기 때문에 네트워크를 구분하는 역할을 하는 것이다. 아무튼 상대편 라우터의 시리얼과 같은 네트워크가 되어야 하므로, IP주소의 네트워크 부분이 ISP업체의 라우터 시리얼 인터페이스와 같게 된다.


예를 들어, 상대편 라우터의 시리얼이 203.150.150.5에 서브넷 마스크가 255.255.255.252 (여기서 서브넷마스크 설명은 생략한다.) 라면 우리 라우터의 시리얼은 203.150.150.6에 서브넷 마스크는 255.255.255.252가 되는 것이다. 일단 서브넷 마스크는 서로 같아야 한다.



추가적으로, 몇 가지 용어를 살펴보고 가자.


폴트 톨러런트(Fault tolerant) : 네트워크 상에 어떤 문제가 발생할 수 있는데, 이를 미리 대비하는 방법을 말한다. 대부분 이중 구조를 의미한다. 예를 들어 라우터를 두 대 연결하면, 하나가 고장나면 다른 라우터가 기존의 라우터 역할을 수행하는 것이다. 이 예시에서는 교체를 의미하는 게 아니다. 라우터의 장비를 바꾸는 건 다른 해결책이고, 여기서는 미리 둘 이상의 라우터로 네트워크를 구성하여 하나가 고장났을 때 자동으로 다른 라우터가 기존의 역할을 수행하여 마치 오류가 없는 것처럼 보이게 하는 것이다.


로드 밸런싱(Load balancing) : 부하 분산이라는 의미인데, 네트워크에서는 로드를 분산하는 것을 뜻한다. 예를 들어, 인터넷 회선 하나를 이용하여 인터넷 접속을 하는 것보다 인터넷 회선 두 개를 사용하여 인터넷 접속을 하면 데이터들이 두 라인 중 하나를 선택하여 이용하므로 속도가 2배가 된다. 이렇게 분산되는 효과는 네트워크 뿐만 아니라 컴퓨터 자원에서도 많이 볼 수 있다. 로드 밸런싱은 폴트 톨러런트가 가능한데 그 이유는 회선 하나가 끊어지면 다른 회선으로 이전이 가능하기 때문이다. 반면 폴트 톨러런트는 로드 밸런싱이 안되는 경우가 있다.




정리하자면,

우리가 보통 쓰는 라우터에 배정해야 하는 IP주소는 이더넷용과 시리얼용이 있으며, 두 주소는 다르다. 이더넷용 IP주소는 부여받은 번호 중 하나를 쓰는 것이고(어떻게 배정받는지는 다음에!) 시리얼용 IP주소는 접속하는 ISP 업체에 따라 다르므로 ISP 업체에 문의해서 써야 된다.



'Network > Summary' 카테고리의 다른 글

MAC 에 대하여  (1) 2018.06.26

+ Recent posts