네트워크
네트워크는 두 대 이상의 장치들을 연결해 서로 리소스를 공유할 수 있는 집합을 지칭하는 용어다. 네트워크 장치들을 노드라고 하며, 유선 또는 무선 연결을 링크라고 한다. 좋은 네트워크의 기준은 많은 처리량을 처리할 수 있고, 지연시간이 짧고, 장애 빈도가 적으며, 좋은 보안을 갖추어야 한다.
기본 용어 정리
처리량
처리량(throughput)은 링크 내에서 전달된 데이터의 양을 말한다. 단위는 시간당으로 계산해 bps(bits per second)를 사용한다. 처리량은 대역폭, 에러, 하드웨어 스펙, 트래픽 크기 등에 영향을 받는다.
트래픽
트래픽(traffic)이란 네트워크 장치에서 일정 시간 내에 흐르는 데이터의 양을 말한다. 웹사이트에 트래픽이 많다는 것은 사용자 접속이 많아서 전송하는 데이터의 양이 많다는 것을 뜻한다.
대역폭
대역폭(bandwidth)는 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트의 수를 말한다. 즉, 속도 보다는 용량과 관계되어 있다고 할 수 있다.
지연 시간
지연 시간(latency)이란 요청이 처리되는 시간, 즉 어떤 메시지가 두 장치 사이를 왕복하는 데 걸린 시간을 말한다. 매체 타입(무선, 유선), 패킷 크기, 라우터의 패킷 처리 시간에 영향을 받는다.
네트워크 토폴로지
네트워크 토폴로지란, 네트워크를 이루는 노드와 링크가 배치 되어있는 형태를 의미한다. 종류로는 트리, 버스, 스타, 링, 메시 등이 있다.
종류
- 트리 토폴로지
트리 형태로 배치한 네트워크 구성을 말한다.
장점: 노드의 추가, 삭제가 쉬워 관리와 확장이 용이하다. 단점: 한 노드에서 다른 한 노드로 연결되는 길이 하나라서, 그 가운데 한 노드라도 트래픽이 집중되거나 고장 나는 등 문제가 발생하면 통신에 영향을 받는다.
- 버스 토폴로지
중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성이다.
장점: 노드의 추가와 삭제가 쉬우며, 노드의 고장이 통신망에 영향을 주지 않는다. 단점: 패킷을 악의적으로 다른 노드로 전달하는 공격인 스푸핑이 가능해진다.
- 스타 토폴로지
중앙에 있는 노드(허브)에 다른 모든 노드가 연결된 네트워크 구성이다.
장점: 중앙 집중 제어로 노드의 추가 삭제 및 에러 탐지가 쉽다. 허브를 제외한 노드의 고장이 통신에 영향을 주지 않는다. 단점: 허브가 고장나면 모든 통신이 마비된다. 설치 비용이 높다.
- 링형 토폴로지
각각의 노드가 양 옆의 두 노드와 연결되어 하나의 연속된 길을 통해 통신하는 네트워크 구성이다.
장점: 노드 수가 증가해도 네트워크상의 손실이 거의 없고, 충돌 발생 가능성도 적다. 단점: 네트워크 구성 변경이 어렵고, 장애 발생시 전체 네트워크에 영향을 크게 끼친다.
- 메시 토폴로지
그물망처럼 연결된 네트워크 구성이다.
장점: 노드로 통하는 경로가 여러가지 존재해서, 한 노드에 장애가 발생해도 전체 네트워크가 받는 영향은 상대적으로 적다. 트래픽도 분산 처리할 수 있다. 단점: 노드의 추가가 어렵고, 구축과 운용 비용이 높다.
병목현상
병목 현상은 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상을 말한다. 서비스에서 이벤트를 열었을 때 트래픽이 많이 생기고 그 트래픽을 잘 관리하지 못하면 병목 현상이 일어난다. 사용자는 늘어진 지연 시간을 겪거나, 심하면 서비스에 접근하지 못하게 된다.
네트워크 토폴로지는 이 병목 현상을 찾을 때 중요한 기준이 된다. 특정 노드에 트래픽이 몰려 병목 현상이 발생했을 때, 어떤 노드 사이에 회선을 추가해야 병목 현상을 해결할 수 있는지 판별할 수 있기 때문이다.
네트워크 토폴로지 외에도, 네트워크 대역폭, 서버 CPU 및 메모리 사용량, 비효율적 네트워크 구성 등이 병목 현상의 주된 원인이다.
네트워크 분류
네트워크는 규모를 기준으로 LAN, MAN, WAN 으로 나눌 수 있다.
- LAN (Local Area Network)은 근거리 영역 네트워크를 의미한다. 건물이나 캠퍼스 등의 좁은 공간에서 운영되어 전송 속도가 빠르고 혼잡하지 않다.
- MAN (Metropolitan Area Network)은 대도시 영역 네트워크를 의미한다. 전송 속도는 평균이며, LAN보다는 더 혼잡하다.
- WAN (Wide Ares Network)은 광대역 네트워크를 의미한다. 국가 또는 대륙 같은 넓은 지역에서 운영되어 전송 속도는 낮으며, MAN보다 더 혼잡하다.
네트워크 성능 분석 명령어
애플리케이션 코드 상에는 전혀 문제가 없는데 사용자가 서비스로부터 데이터를 가져오지 못하는 상황이 발생한다면, 이는 네트워크 병목현상일 가능성이 있다. 그런 상황에서 네트워크 성능 분석에 도움이 되는 명령어들로 다음과 같은 명령어가 있다.
ping
ping(Packet INternet Groper)은 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어이다. 해당 노드까지 네트워크가 잘 연결 되어 있는지, 또 패킷 수신 상태와 소요 시간 등을 알 수 있다.
ping은 TCP/IP 프로토콜 중 ICMP 프로토콜을 통해 동작하기 때문에, 다음 두 경우에는 ping 테스트가 불가능하다:
- ICMP 프로토콜을 지원하지 않는 기기를 대상으로 테스트할 경우
- 네트워크 정책상 ICMP나 traceroute를 차단하는 대상의 경우
ping 테스트는 ping [IP 혹은 도메인 주소]
를 입력해 실행할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ ping www.google.com -n 12
Ping www.google.com [142.250.207.100] 32바이트 데이터 사용:
142.250.207.100의 응답: 바이트=32 시간=30ms TTL=55
142.250.207.100의 응답: 바이트=32 시간=30ms TTL=55
142.250.207.100의 응답: 바이트=32 시간=29ms TTL=55
142.250.207.100의 응답: 바이트=32 시간=29ms TTL=55
142.250.207.100의 응답: 바이트=32 시간=29ms TTL=55
142.250.207.100의 응답: 바이트=32 시간=30ms TTL=55
142.250.207.100의 응답: 바이트=32 시간=30ms TTL=55
142.250.207.100의 응답: 바이트=32 시간=30ms TTL=55
142.250.207.100의 응답: 바이트=32 시간=30ms TTL=55
142.250.207.100의 응답: 바이트=32 시간=30ms TTL=55
142.250.207.100의 응답: 바이트=32 시간=29ms TTL=55
142.250.207.100의 응답: 바이트=32 시간=30ms TTL=55
142.250.207.100에 대한 Ping 통계:
패킷: 보냄 = 12, 받음 = 12, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
최소 = 29ms, 최대 = 30ms, 평균 = 29ms
위 코드 블럭은 구글에 대해 12번의 ping 테스트를 진행하는 ping www.google.com -n 12
명령어에 대한 결과이다.
TTL(Time To Live)은 패킷의 남은 수명을 의미한다. 설정값이 64고, 받은 패킷의 TTL이 55라면, 9개의 노드를 거쳐 도달했다는 의미이다.
netstat
netstat 명령어는 접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용된다. 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트를 보여준다.
1
2
3
4
5
6
7
8
9
10
$ netstat
활성 연결
프로토콜 로컬 주소 외부 주소 상태
TCP 127.0.0.1:1024 kubernetes:1025 ESTABLISHED
TCP 192.168.45.###:2769 20.198.119.###:https ESTABLISHED
TCP 192.168.45.###:9564 211.115.106.###:http CLOSE_WAIT
TCP 192.168.45.###:9566 20.198.2.###:https TIME_WAIT
...
위 코드 블럭은 netstat 입력했을 때 보여주는 네트워크 상태 리스트 중 일부이다.
nslookup
nslookup 명령어는 DNS에 관련된 내용을 확인할 때 사용하는 명령어다. 특정 도메인에 매핑된 IP를 확인할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
$ nslookup
기본 서버: bns1.hananet.net
Address: 210.220.163.82
> google.com
서버: bns1.hananet.net
Address: 210.220.163.82
권한 없는 응답:
이름: google.com
Addresses: 2404:6800:400a:805::200e
142.250.206.206
tracert
tracert(리눅스에선 traceroute)는 지정된 호스트에 도달할 때까지 통과하는 경로의 정보와 각 경로에서의 지연 시간을 추적하는 네트워크 명령어이다. 목적지 노드까지 네트워크 경로를 확인하거나, 그 구간 중 어디에서 지연이 발생하는지 확인할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ tracert www.google.com
최대 30홉 이상의
www.google.com [172.217.161.228](으)로 가는 경로 추적:
1 <1 ms <1 ms <1 ms 192.168.45.1
2 * * * 요청 시간이 만료되었습니다.
3 5 ms 5 ms 5 ms 1.229.241.65
4 5 ms 2 ms 3 ms 100.79.121.93
5 2 ms 1 ms 2 ms 100.79.220.85
6 2 ms 1 ms 2 ms 10.45.253.64
7 2 ms 2 ms 2 ms 10.222.25.64
8 2 ms 2 ms 2 ms 10.222.20.143
9 34 ms 33 ms 33 ms 142.250.162.182
10 33 ms 34 ms 33 ms 108.170.242.193
...
위 코드 블럭은 구글 사이트에 도달하기 까지의 경로를 추적한 모습 중 일부이다.
네트워크 프로토콜 표준화
네트워크 프로토콜이란, 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스를 말한다. 해당 표준은 IEEE(전기 전자 기술자 협회)와 같은 표준화 단체가 결정한다.
프로토콜의 대표적인 예로는 다음과 같은 것들이 있다:
- HTTP: 하이퍼텍스트(HTML)를 통해 전송하는 규약
- FTP: 파일을 주고 받기 위한 규약
- SSL: 인증, 암호화 등의 규약
- TCP: 정보 전달을 안전하게 할 수 있도록 하는 규약
- UDP: 빠르게 데이터를 주고 받을 수 있도록 하는 규약
- IP: 호스트의 주소 지정과 패킷을 분할하고 조립하는 규약
예상 질문
- 네트워크에 대해 설명해 주세요.