네트워크 개념 정리
EP 7
네트워크 장비: 허브, 스위치
네트워크 장비의 대표적인 예시인 허브와 스위치에 대해 알아보자.
네트워크 장비: 허브(Hub)
전엔 호스트 하나에 국한되어 설명했다면, 이젠 다른 네트워크 장비를 설명할거임.
이런 장비를 잘 다뤄야 정보기기운용기능사(사실상 이 긴 글의 작성 이유..)를 딸 수 있음.
허브(Hub)는 물리 계층에 있는 장비로, 정말 간단한 장비임.
일단 물리 계층은 주소 따윈 없음. 데이터 링크에서야 MAC 주소라도 있지만, 아무것도 없는 물리 계층에선 뭘 한다는걸까?
일단 당연하겠지만 허브는 이러한 데이터를 조작하지도 않음. 못함….
일단 장비에서 등장하는 포트는 IP의 포트가 아니라, 물리적인 장비에서 사용되는 커넥터를 포트라 부름. USB 포트 할 때 그 포트가 맞음.
허브는 여러대의 호스트를 연결하는 장치임. 하나의 인풋을 여러개의 아웃풋으로 내보내는 장비.
들어온 신호를 자신을 제외한 모든 포트(출력)로 다시 내보냄.
참고로 리피터의 기능도 포함하는데, 리피터는 단순히 길어진 케이블로 인한 신호 손실을 보완해주는 장치임. 허브는 이 리피터의 기능을 포함하는 경우가 대부분임.
또 하나의 특징은 기본적으로 반이중(Half Duplex) 모드로 동작한다는 것.
데이터가 이동하는 통로는 하나밖에 없는 송신/수신을 모두 해야함. 그럼 양방향으로 오고 가려면? 한쪽이 올땐 가는 쪽은 못감. 즉 동시에 송수신이 불가능하다는 치명적인 단점이 있음.
이와 반대되는 개념이 전이중(Full Duplex) 모드임.
그래서 반이중으로 통신하다 보면 한 포트에 연결된 호스트는 송신을 하는데, 다른 포트에 연결된 호스트는 수신을 하는, 즉 동시에 송수신을 하는 상황이 발생할 수 있음.
그럼 처리를 못하니 충돌(콜리전, 유니티 개발 하다보면 지겹게 듣는 개념)이 발생함.
당연히 포트에 연결된 장치가 많다면 이러한 콜리전도 발생할 확률이 높겠지?
이렇게 콜리전(충돌)이 발생할 수 있는 영역을 콜리전 도메인이라 부름.
그럼 어쪄냐.. ⇒ CSMA/CD 프로토콜을 씀
CSMA/CD 프로토콜
Carrier Sense Multiple Access (with) Collision Detection
복잡한데 나눠보면 간단한 개념임.
Carrier Sense(CS) : 캐리어 감지
반이중 통신에서 현재 네트워크 상에서 전송중인 것이 있는지 확인하는 확인하는데, 이렇게 사용 가능 여부를 확인하는걸 캐리어 감지(Carrier Sense)라고 함.
Multiple Access(MA) : 다중 접근
말 그대로 두 개 이상의 호스트가 동시에 접근(사용)하려고 할 때 콜리전이 발생하는 것.
이걸 방지한다는거
Collision Detection(CD) : 충돌 검출
콜리전(충돌)이 발생하여 이를 감지하면 전송하려는데 중단되고, 다른 호스트들에게 중단하라는 신호를 보냄. 이후 이미 있던 신호가 보내질 때 까지 기다린 후 다시 전송함.
즉 CSMA/CD는 먼저 전송이 가능한 상태인지 확인하고, 부득이하게 충돌이 발생하면 대기 탄 후 다시 보낸다는 개념임. 즉 충돌(콜리전)을 방지하는 프로토콜.
스위치
그런데.. 애초에 반이중이 아니라 전이중으로 통신하면 되는거 아닌가..??
⇒ 정답. 그래서 허브는 요즘엔 잘 안쓰고 그 기능을 스위치가 대신 해줌.
얘는 물리 계층이 아니라 데이터 링크 계층의 장비인데, 허브의 기능도 할 수 있음.
얘는 뭘 하는 애냐.. 쉽게 말해 허브와 달리 MAC 주소를 사용하고 무려 이러한 MAC 주소를 학습하여 특정 포트나 호스트에만 데이터를 보낼 수 있음. (스위칭)
또한 전이중 모드를 지원하고, 포트별로 콜리전 도메인이 나눠지고 가상 LAN(VLAN)을 구현할 수 있는 장비임.
그럼 당연히 CSMA/CD 같은 구닥따리 프로토콜은 필요가 없고, 대기 시간도 없어 성능에 유리함.
MAC 주소 학습
허브와 스위치의 가장 큰 차이점을 고르라 하면 바로 스위치는 MAC 주소를 알고, 그걸 기억하고 그걸 바탕으로 특정 호스트를 선택할 수 있다는 것임.
이렇게 MAC 주소를 학습하는 것을 MAC 주소 학습(MAC Address Learning), 이렇게 학습된 MAC 주소들이 있는 곳을 MAC 주소 테이블(MAC Address Table)이라고 함.
즉 각각의 포트별로 맥 주소가 있고 그걸 바탕으로 특정한 호스트를 특정할 수 있다는 의미.
그럼 어떻게 학습을 하나요?
스위치의 MAC 주소 학습엔 크게 플러딩, 포워딩, 필터링, 에이징이라는 개념이 있음.
사실 스위치는 처임엔 아무것도 모름.. 직접 설정을 해줄 순 있겠지만 그럼 비효율적이니..
일단 어떠한 포트 하나가 송신을 하면, 그 송신 정보엔 MAC 주소가 포함되어 있을테니 그걸 바탕으로 포트에 MAC 주소를 대입함.
다음으로 처음엔 허브처럼 모든 포트로 전송을 함. 그런데 수신지 입장에선 내께 아닌데 왔네? 그럼 폐기함.
이렇게 폐기되고 잘 도착한 곳이 하나 있겠지? OK, 이걸 바탕으로 MAC 주소를 가져오고 포트에 도장찍어둠. 이렇게 자신의 포트를 제외한 나머지 모든 포트로 전송해 확인하는걸 플러딩(flooding)이라고 함.
그럼 다음에 서로 통신할 땐 그 포트로만 통신하면 됨. 이렇게 어디로 보낼지, 보내지 말지 걸러내는걸 필터링(filtering)이라고 함.
반대로 내보내는건 포워딩(forwarding)이라고 하고. 이 포워딩은 포트 포워딩에서도 등장하는 용어임.
아무튼 그런데 만약 일정 시간동안 오고가는 프레임이 없다면? 즉 바뀌었다고 판단이 된다면 해당 항목을 삭제하는데, 이걸 에이징(Aging)이라고 함.
VLAN(Virtual LAN, 가상 LAN)
스위치의 주요 기능 중 하나. 이름 그대로 스위치로 가상의 LAN을 만드는 기술인데, 허브의 내용을 잠시 떠올려보자.
모든 포트로 신호를 보낸다면 비효율적이라 했지? ⇒ 이건 스위치도 마찬가지임.
구역(포트)(예: 학급/교무실 등등)이 있는데 교사 전용 자료를 보낸다면 원래라면 모든 포트에 보내야 했음. 그런데 학급에선 필요가 없겠지?
그래서 학급/교무실 별로 가상의 LAN을 만들어서 둘을 논리적으로 분리시켜둠.
이렇게 되면 두 개는 별도의 LAN으로 인식하고 그렇게 작동함.
VLAN을 설정하는건 크게 2가지가 있는데..
- 포트 기반 VLAN : 스위치의 포트(물리적은 커넥터) 별로 VLAN을 설정해둠. 참고로 이런건 해당 장비에 접속하여 명령어로 설정할 수 있음.
- 그런데 만약 포트 수가 부족하다면? ⇒ 확장 할 수 있게 트렁크 포트(Trunk Port, 또는 Tagged Port) 라는게 있음. 여기다가 서로 연결하면 확장이 가능함.
- MAC 주소 기반 VLAN : 이름 그대로 MAC 주소 기반으로 VLAN을 설정하는 방식임. MAC 주소가 바뀔 일이 거의 없는 경우 이게 유용할 수 있음.