토폴리지란?
컴퓨터 네트워크의 토폴리지는 네트워크상의 장치들이 어떻게 연결되어 있는지를 나타내는 구조이다.
각각의 토폴리지는 성능과 보안 측면에서 독특한 특성과 장단점을 가지고 있습니다. 이번 글에서는 각 토폴리지의 대해 알아보자.
트리 포폴리지
트리 토폴로지는 계층적 구조를 가지며, 스타 토폴로지가 계층적으로 연결된 형태이다. 중앙 노드가 하위 노드를 연결하고, 이 하위 노드들이 다시 다른 노드를 연결하는 구조이다.
- 성능:
- 확장성: 계층적 구조이기 때문에 트리와 마찬가지로 노드의 추가와 삭제가 쉽다.
- 병목현상: 중앙노드나 상위 레벨의 노드에 문제가 생기면 하위 노드 즉 하위 네트워크까지 영향을 미칠 수 있다.
- 보안:
- 관리 용이성: 계층적 구조로 인해 보안 정책을 적용하고 관리하기 쉽다.
- 취약점: 상위 노드의 보안이 손상되면 하위 네트워크 전체가 위험에 노출될 수 있다.
버스 토폴리지
모든 장치들이 하나의 공유된 통신선에 연결되어 있다.
- 성능:
- 간단한 설치: 네트워크를 구성하기 위해 필요한 케이블의 양이 적고, 설치가 간단하다.
- 병목현상: 모든 데이터가 하나의 채널을 통해 전송되므로 많은 장치가 연결될 때 성능 저하가 발생한다.
- 보안:
- 취약성: 공유된 채널을 사용하기 때문에 네트워크 스니핑(sniffing) 등의 공격에 취약합니다.
스타 토폴리지
중앙의 허브 또는 스위치에 모든 장치가 연결되어 있는 구조
- 성능:
- 고장 감지 용이성: 중앙 장치를 통해 네트워크의 상태를 쉽게 모니터링하고 문제를 진단 가능하다.
- 병목현상: 중앙 장치에 과부하가 걸리거나 고장이 나면 전체 네트워크에 영향을 줄 수 있다.
- 보안:
- 중앙 관리: 보안 설정과 정책을 중앙에서 관리할 수 있어 효율적이다.
- 중앙 장치의 취약성: 중앙 장치가 공격의 대상이 될 수 있다.
링형 토폴리지
각 장치가 두 개의 인접 장치와 직접 연결되는 순환 구조
- 성능:
- 토큰 패싱: 데이터 전송은 토큰 패싱 방식을 통해 이루어지며, 이는 네트워크의 충돌을 방지.
- 병목현상: 하나의 장치가 실패하면 전체 네트워크가 중단될 수 있다.
- 보안:
- 데이터 전송의 안정성: 토큰을 가진 장치만 데이터를 전송할 수 있어 안전하다.
- 단일 실패 지점: 한 장치의 실패가 전체 네트워크에 영향을 줄 수 있다.
메시 토폴리지
장치들이 서로 직접적으로, 또는 간접적으로 연결되어 있다. 완전 메시는 모든 노드가 서로 연결된 반면, 부분 메시는 일부만 연결되는 구조
- 성능:
- 신뢰성과 장애 허용: 여러 경로를 통한 데이터 전송이 가능하므로 장치 중 하나가 실패해도 네트워크는 계속 작동할 수 있다.
- 확장성: 추가적인 장치 연결이 용이하다.
- 보안:
- 데이터 경로의 다양성: 데이터 경로가 다양하여 하나의 경로가 공격을 받더라도 다른 경로를 통해 데이터 전송이 가능하다.
- 관리의 복잡성: 많은 연결들로 인해 보안 설정과 관리가 복잡해질 수 있고 많은 케이블이 필요해 비용이 증가한다.
그렇다면 서버 개발자는 왜 토폴리지에 대해 알아야 할까?
서버 아키텍쳐를 설계할 때 병목 현상이 발생할 부분을 파악하고 고려해 설계하는 것은 매우 중요한 개발자의 소양이라고 생각한다.
이 토폴리지를 알고 있다면 서버의 병목현상이 어디서 발생하는 지 예측하고 더 효율적인 설계를 할 수 있을거라고 생각한다.
아래 그림을 보자
위에서 보던 구조와 똑같진 않지만 중앙 게이트웨이에 다수의 서버가 연결된 모습을 보여준다. 이는 스타 토폴리지와 비슷하다고 볼 수 있고
즉 모든 네트워크 트래픽을 중앙 게이트웨이가 처리한다는 소리이다. 특히 이 구조에서는 모든 데이터 트래픽이 두개의 회선을 통해서만 흐른다. 이 지점이 병목현상이 일어날 가능성이 매우 높은 병목지점이라고 생각된다. 이 구조에서는 추가적인 서버나, 대역폭을 늘린다고 해도 두개의 회선이 처리할 수 있는 데이터 처리량이 한계에 다다르면 성능 개선에 한계가 있다고 판단된다.
이러한 구조를 개선 시키기 위해선 여러개의 추가 회선을 설치해 병목지점을 개선시킨 모습이다.
이처럼 토폴리지 구조를 정확히 이해하고 적절한 개선점을 찾는다면 시스템 전반의 성능을 개선하는데 중요한 역할을 할 수 있을 것이다.
그렇다면 우리는 실제 어떻게 네트워크 병목현상을 진단하고 파악할까?
각종 네트워크 관련 명령어로 진단하고 판단할 수 있다.
Ping
네트워크상 다른 시스템까지의 연결성 및 응답 시간(latency)을 테스트하는 명령어다.
네트워크 지연(time)이나 패킷 손실(packet loss)을 확인할 수 있는데 일관되게 높은 지연 시간이나 패킷 손실이 관찰되면 네트워크 경로상에 문제가 있을 수 있음을 나타낸다.
Netstat
네트워크 연결, 라우팅 테이블, 인터페이스 통계, 마스커레이드 연결, 멀티캐스트 멤버십 등 다양한 네트워크 관련 통계를 보여준다.
어떤 포트가 많은 트래픽을 처리하고 있는지, 혹은 시스템에 네트워크 트래픽이 어떻게 분포되어 있는지 파악할 수 있으며 네트워크 연결 상태를 모니터링하여 포트나 프로토콜 별 병목 현상을 발견할 수 있다.
nslookup
DNS 조회를 통해 도메인 이름을 IP 주소로 해석하거나 그 반대의 작업을 수행한다.
Tracert (Trace Route)
데이터 패킷이 소스에서 목적지까지 도달하는 데 거치는 경로를 표시한다.
각 네트워크 홉(hop)에서 걸리는 시간을 측정하여 네트워크 내 특정 구간에서 발생하는 지연을 식별할 수 있고 이를 통해 데이터 패스상의 병목 지점을 찾아낼 수 있다.
이처럼 여러 명령어들을 사용해 네트워크 병목현상을 진단하고 파악할 수 있다.
'CS > 컴퓨터 네트워크' 카테고리의 다른 글
L4와 L7 로드벨런서 (0) | 2024.05.13 |
---|---|
3-Way HandSwake (0) | 2024.05.13 |
TCP/IP 5계층 모델 (0) | 2024.05.13 |