Network Basics

네트워크 기초
네트워크란 Node와 Link가 서로 연결되어 있으며 resource를 공유하는 집합을 의미한다. 여기서 Node는 컴퓨터, 서버, 라우터 등과 같은 장치를 의미하고, Link는 이들 장치 간의 유선 또는 무선 연결을 의미한다.
목차
처리량과 지연 시간
네트워크의 성능을 평가하는 두 가지 주요 지표는 처리량과 지연 시간이다.
처리량(Throughput)
처리량은 네트워크가 단위 시간당 전송할 수 있는 데이터의 양을 나타낸다. 보통 얼만큼의 트래픽을 처리했는지를 나타낸다. 일반적으로 초당 비트(bit per second, bps)로 측정된다. 높은 처리량은 네트워크가 많은 데이터를 빠르게 전송할 수 있음을 의미한다.
- 트래픽이 많아졌다: 데이터 송수신량이 많아졌다.
- 처리량이 많아졌다: 처리되는 트래픽이 많아졌다.
지연 시간(Latency)
요청이 처리되는 시간을 의미하며 어떤 메시지가 두 장치 사이를 왕복하는 데 걸리는 시간을 나타낸다. 지연 시간은 Media 타입(유선, 무선 등), packet 크기, 처리 시간에 영향을 받는다.
네트워크 토폴로지와 병목 현상
네트워크 토폴로지(Network topology)
네트워크 토폴로지는 Node와 Link가 어떻게 배치되어 있는 지에 대한 방식이자 연결 형태를 의미한다.
-
트리 토폴로지(Tree Topology)
트리 토폴로지는 계층형 토폴로지라고 하며 트리 형태로 배치한 네트워크 구성을 말한다.
-
버스 토폴로지(Bus Topology)
버스 토폴로지는 중앙 통신 회선 하나에 여러 개의 Node가 연결되어 공유하는 네트워크 구성을 말하며 근거리 통신망(LAN)에서 많이 사용된다. 설치 비용이 적고 신뢰성이 우수하며 중앙 통신 회선에 노드를 추가하거나 삭제하기 쉽다. 그러나 스푸핑(Spoofing) 공격에 취약하고, 중앙 통신 회선에 문제가 생기면 전체 네트워크가 마비될 수 있다.
-
스푸핑(Spoofing)
LAN 상에서 송신부의 packet을 송신과 관련 없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시키거나 속여서 특정 Node에 해당 packet이 오도록 처리하는 공격이다.
-
스푸핑(Spoofing)
-
성형 토폴로지(Star Topology)
스타 토폴로지는 중앙에 있는 Node에 모든 Node가 연결되어 있는 형태의 네트워크 구성을 말한다. Node를 추가하거나 오류를 탐지하기 쉽고 packet의 충돌 발생 가능성이 적다. 또한, 어떠한 Node에 장애가 발생해도 쉽게 오류를 발견할 수 있으며 장애 노드가 중앙 노드가 아닐 경우 다른 Node에 영향을 끼치는 것이 적다. 하지만, 중앙 Node에 장애가 발생하면 전체 네트워크를 사용할 수 없고 설치 비용이 많이 든다.
-
링형 토폴로지(Ring Topology)
링형 토폴로지는 각 Node가 양 옆의 두 Node와 연결되어 전체적으로 고리처럼 하나의 연속된 길을 통해 통신을 하는 망 구성 방식이다. 데이터는 Node에서 Node로 이동하며, 각 Node는 고리 모양의 길을 통해 packet을 전달한다. Node 수가 증가되어도 네트워크 상의 손과 충돌 발생 가능성이 적고 Node의 장애를 쉽게 탐지할 수 있다. 하지만, 네트워크 구성 변경이 어렵고 회선에 장애가 발생하면 전체 네트워크의 영향을 크게 끼친는 단점이 있다.
-
메시 토폴로지(Mesh Topology)
메시 토폴로지는 망향 토폴로지라고도 하며 그물망처럼 연결되어 있는 구조이다. 한 Node에 장애가 발생해도 여러 개의 Link가 존재하므로 네트워크를 계속 사용할 수 있고 트래픽도 분산 처리할 수 있다. 하지만, Node의 추가가 어렵고 구축 비용과 운영 비용이 고가인 단점이 있다.
병목 현상(Bottleneck)
병목 현상은 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상을 말한다. 네트워크의 구조라고도 일컫는 토폴로지가 중요한 이유는 병목 현상을 찾을 때 중요한 기준이 되기 때문이다. 가령, 트리 토폴로지에서는 중앙 Node가 병목 현상이 발생하는 원인이 될 수 있고, 버스 토폴로지에서는 중앙 통신 회선이 병목 현상의 원인이 될 수 있다.
네트워크 분류
네트워크는 규모를 기반으로 분류할 수 있다. 사무실과 개인적으로 소유 가능한 규모인 LAN(Local Area Network)부터 서울시 등 시 정도의 규모인 MAN(Metropolitan Area Network), 그리고 세계 단위의 규모인 WAN(Wide Area Network)으로 분류할 수 있다.
LAN(Local Area Network)
LAN은 근거리 통신망으로, 일반적으로 사무실, 학교, 가정 등과 같은 좁은 공간에서 운영되는 네트워크를 의미한다. 전송 속도가 빠르고 혼잡하지 않다.
MAN(Metropolitan Area Network)
MAN은 대도시 지역 네트워크를 나타내며 도시 같은 넓은 지역에서 운영된다. 전송 속도는 평균이며 LAN보다 더 혼잡하다.
WAN(Wide Area Network)
WAN은 광역 네트워크를 의미하며 국가 또는 대륙 같은 더 넓은 지역에서 운영된다. 전송 속도는 낮으며 MAN보다 더 혼잡하다.
네트워크 성능 분석 명령어
Application 코드 상에는 전혀 문제가 없는데 사용자가 서비스로부터 데이터를 가져오지 못하는 상황이 발생되기도 하며, 이는 네트워크 병목 현상일 가능성이 있다. 네트워크 병목 현상의 주된 원인은 아래와 같다.
- 네트워크 대역 폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
이 때는 네트워크 관련 테스트와 네트워크와 무관한 테스트를 통해 '네트워크로부터 발생한 문제점'인 것을 확인한 후 네트워크 성능 분석을 해야한다. 이 때 사용되는 명령어들은 아래와 같다.
ping
ping(Packet INternet Groper)은 네트워크 상태를 확인하려는 대상 Node를 향해 일정 크기의 packet을 전송하는 명령어이다. 이를 통해 대상 Node의 packet 수신 상태와 응답 시간을 확인할 수 있으며 해당 Node가 네트워크 상에서 접근 가능한지 여부를 판단할 수 있다. ping 명령어는 ICMP(Internet Control Message Protocol)를 사용하여 동작하며, 네트워크 연결 상태를 확인하는 데 유용하다.
ping [옵션] [대상 IP 주소 또는 도메인]
예를 들어, ping -n 12 google.com 명령어를 실행하면 Google 서버에 ping을 보내고 12번의 응답에 대한 통계를 출력한다.
netstat
netstat(Network Statistics)는 접속되어 있는 서비스들의 네트워크 연결 상태를 확인하는 명령어이다. 이 명령어를 사용하면 현재 시스템에서 활성화된 네트워크 연결, 라우팅 테이블, 네트워크 프로토콜 등 네트워크 관련 정보를 확인할 수 있다. netstat 명령어는 주로 서비스의 포트가 열려 있는지 확인할 때 사용된다.
netstat [옵션]
예를 들어, netstat -an 명령어를 실행하면 현재 시스템에서 활성화된 모든 네트워크 연결과 포트 상태를 표시한다.
nslookup
nslookup(Name Server Lookup)은 도메인 이름을 IP 주소로 변환하거나 IP 주소를 도메인 이름으로 변환하는 명령어이다. 이 명령어를 사용하면 DNS(Domain Name System) 서버에 질의하여 도메인 이름과 IP 주소 간의 매핑 정보를 확인할 수 있다.
nslookup [옵션] [도메인 이름 또는 IP 주소]
예를 들어, nslookup google.com 명령어를 실행하면 Google의 도메인 이름에 대한 IP 주소를 반환한다.
traceroute
traceroute(또는 tracert)는 네트워크 경로를 추적하는 명령어로, 특정 목적지까지의 경로를 확인할 수 있다. 이 명령어를 사용하면 패킷이 목적지에 도달하기까지 거치는 중간 라우터들의 IP 주소와 응답 시간을 확인할 수 있다.
traceroute [옵션] [목적지 IP 주소 또는 도메인]
예를 들어, traceroute google.com 명령어를 실행하면 Google 서버까지의 경로를 추적하고 각 중간 라우터의 IP 주소와 응답 시간을 표시한다.
네트워크 프로토콜 표준화
네트워크 프로토콜이란 다른 장치들끼리 데이터를 주고 받기 위해 설정된 공통된 인터페이스를 의미한다. 이러한 프로토콜은 IEEE또는 IETF와 같은 표준화 기구에 의해 정의되고 관리된다. IEEE802.3은 LAN의 표준 프로토콜을 정의하고 있으며, IETF는 TCP/IP 프로토콜 스택을 정의한다.