네트워크 기초
네트워크
네트워크란 노드와 링크가 서로 연결되어 있으며, 리소스를 공유하는 집합을 의미한다.
- 노드: 서버, 라우터, 스위치 등 (네트워크 장치)
- 링크: 유선/무선
네트워크를 구축할 때 ‘좋은’ 네트워크는 많은 처리량을 처리할 수 있으며, 지연 시간이 짧고, 장애 빈도가 적으며, 좋은 보안을 갖춘 네트워크를 말한다.
❓ 처리량
링크 내에서 성공적으로 전달된 데이터의 양을 말한다. 보통 얼만큼의 트래픽을 처리했는지를 나타낸다.
- 많은 트래픽을 처리한다 = 많은 처리량을 가진다
- 트래픽이 많아졌다 = 흐르는 데이터가 많아졌다
- 처리량이 많아졌다 = 처리되는 트래픽이 많아졌다.
처리량은 다음에 따라 달라질 수 있다.
- 사용자 접속량에 따라 커지는 트래픽
- 네트워크 장치 간의 대역폭
- 네트워크 중간에 발생하는 에러
- 장치의 하드웨어 스펙
트래픽
서버를 통해 최종 사용자에게 전달된 데이터의 양 (트래픽 = 용량 x 사용자 수 x 개수)
트래픽에서 시간 개념을 추가하게 되면 초당 처리할 수 있는 데이터의 양을 나타내는 대역폭이 된다.대역폭
대역폭 = (용량 x 사용자수 x 8) / 처리 시간 = bps
1차선 → 4차선 도로에서 차를 더 많이 수용할 수 있듯이 데이터를 얼마나 많이 수용할 수 있는지 판단하는 기준이 된다.
❓ 지연 시간
요청이 처리되는 시간으로, 어떤 메시지가 두 장치 사이를 왕복하는데 걸리는 시간을 말한다.
매체 타입(무선/유선), 패킷 크기, 라우터의 패킷 처리 시간에 영향을 받는다.
네트워크 토폴로지
네트워크 토폴로지(Network topology)는 노드와 링크의 배치 방식이자 연결 형태를 의미한다.
1. 트리 토폴로지
계층형 토폴로지라고 하며, 트리 형태로 배치한 네트워크 구성을 말한다.
- 노드의 추가/삭제 용이
- 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있음
2. 버스 토폴로지
중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성을 말한다.
- 설치 비용↓ 신뢰성↑
- 중앙 통신 회선에 노드 추가/삭제 용이
- 🚨 스푸핑 가능
- LAN상에서 송신부의 패킷을 송신과 관련없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시키거나 속여서, 특정 노드에 해당 패킷이 오도록 처리하는 것을 의미
- 올바르게 수신부로 가야 할 패킷이 악의적인 노드에 전달될 수 있다.
- ex) 근거리 통신망(LAN)
3. 스타 토폴로지
중앙에 있는 노드에 모두 연결된 네트워크 구성을 말한다.
- 노드 추가 용이
- 패킷 충돌 발생 가능성↓
- 어떠한 노드에 장애가 발생했는지 에러 발견하기 쉬움
- 장애 노드가 중앙 노드가 아닐 경우 다른 노드에 영향↓
- 중앙 노드에 장애 발생 시 전체 네트워크를 사용할 수 없음
- 설치비용↑
4. 링형 토폴로지
각각의 노드가 양 옆의 두 노드와 연결하여 하나의 연속된 길을 통해 통신을 하는 망 구성 방식을 말한다.
- 노드 수가 증가되어도 네트워크상의 손실이 거의 없다
- 충돌 발생 가능성↓
- 노드 고장 발견 쉬움
- 네트워크 구성 변경이 어려움
- 회선에 장애가 발생하면 전체 네트워크에 영향
5. 메시 노폴로지
망형 토폴로지라고도 하며, 그물망처럼 연결되어 있는 네트워크 구성을 말한다.
- 한 단말 장치에 장애가 발생해도 여러 개의 경로가 존재하므로 네트워크 계속 사용 가능
- 트래픽 분산 처리 가능
- 노드 추가 어려움
- 구축/운영 비용↑
병목현상
네트워크의 구조인 토폴로지가 중요한 이유는 병목 현상을 찾을 때 중요한 기준이 되기 때문이다.
네트워크 토폴로지가 어떻게 구성되어 있는지, 어떠한 경로로 이루어져 있는지 알아야 병목현상을 올바르게 해결할 수 있다.
병목현상
전체 시스템의 성능이나 용량이 하나의 구성요소로 인해 제한을 받는 현상
서비스에서 이벤트를 열었을 때 트래픽이 많이 생기고, 그 트래픽을 잘 관리하지 못하면 병목현상이 생겨 사용자는 웹사이트로 들어가지 못한다.
ex) 병의 몸통보다 병의 목 부분 내부 지름이 좁아서 물이 상대적으로 천천히 쏟아지는 것에 비유할 수 있다.
네트워크 분류
네트워크는 규모를 기반으로 분류할 수 있다.
- LAN(Local Area Network): 사무실과 개인적으로 소유 가능한 규모
- 전송속도↑ 혼잡하지 않음.
- MAN(Metropolitan Area Network): 대도시 지역 네트워크를 나타내며 시 정도의 규모. 도시 같은 넓은 지역에서 운영된다.
- 전송속도 평균, LAN보다 혼잡
- WAN(Wide Area Network): 광역 네트워크로 세계 규모. 국가 또는 대륙 같은 더 넓은 지역에서 운영된다.
- 전송속도↓ MAN보다 더 혼잡
네트워크 성능 분석 명령어
애플리케이션 코드상에는 문제가 없는데 사용자가 서비스로부터 데이터를 가져오지 못하는 상황이 발생되기도 한다. 이는 네트워크 병목 현상일 가능성이 있다.
이 때 네트워크 관련 테스트 vs 네트워크와 무관한 테스트를 통해 ‘네트워크로부터 발생한 문제점’인 지 확인한 후 네트워크 성능 분석을 해봐야 한다.
ping
ping(Packet INternet Groper)은 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어이다.
ping은 TCP/IP 프로토콜 중에 ICMP 프로토콜을 통해 동작하며, 이 때문에 ICMP 프로토콜을 지원하지 않는 기기를 대상으로는 실행할 수 다.
네트워크 정책상 ICMP나 traceroute를 차단하는 대상의 경우에도 ping 테스팅이 불가능하다.
- 해당 노드의 패킷 수신 상태 확인 가능
- 도달하기까지 시간
- 해당 노드까지 네트워크가 연결유무 확인 가능
- ICMP 프로토콜을 지원하지 않는 기기를 대상으로는 실행할 수 없음.
- 네트워크 정책상 ICMP나 traceroute를 차단하는 대상도 ping 테스팅이 불가능하다.
-n 12
옵션을 넣어서 12번의 패킷을 보내고 12번의 패킷을 받는 모습
>> ping www.google.com -n 12
Ping www.google.com [172.217.26.228] 32바이트 데이터 사용:
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228의 응답: 바이트=32 시간=56ms TTL=117
172.217.26.228에 대한 Ping 통계:
패킷: 보냄 = 12, 받음 = 12, 손실 = 0 (0% 손실)
왕복 시간 (밀리초):
최소 = 56ms, 최대 = 57ms, 평균 = 56ms
netstat
접속되어 있는 서비스들의 네트워크 상태를 표시하는데 사용된다. 주로 서비스의 포트가 열려 있는지 확인할 때 사용한다.
네트워크 상태 리스트 확인 가능
- 네트워크 접속
- 라우팅 테이블
- 네트워크 프로토콜
>> netstat
활성 연결
프로토콜 로컬주소 외부주소 상태
TCP 121.165.224.223:6881 220.118.188.195:41519 TIME_WAIT
TCP 121.165.224.223:49245 211.115.106.72:http CLOSE_WAIT
.
.
nslookup
DNS에 관련된 내용을 확인하기 위해 쓰는 명령어. 특정 도메인에 매핑괸 IP를 확인하기 위해 사용한다.
google.com의 DNS를 확인하는 모습
>> nslookup
기본 서버: kns.kornet.et
Address: 168.126.63.1
>> google.com
서버: kns.kornet.net
Address: 168.126.63.1
권한 없는 응답:
이름: google.com
Address: 2404:6800:4004:820::200e
172.217.31.174
tracert
목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어이다. 목적지 노드까지 구간들 중 어느 구간에서 응답 시간이 느려지는지 등을 확인할 수 있다.
윈도우에서는 tracert
, 리눅스에서는 traceroute
라는 명령어로 구동된다.
구글 사이트에 도달하기까지의 경로 추적하는 모습
>> tracert www.google.com
최대 30홉 이상의
www.google.com [142.250.199.100](으)로 가는 경로 추적:
1 1ms * * 121.165.224.254
2 1ms 1ms 1ms 61.78.42.172
3 2ms 2ms 1ms 112.189.31.209
.
.
네트워크 프로토콜 표준화
네트워크 프로토콜이란 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스를 말한다.
이러한 프로토콜은 IEEE 또는 IETF 라는 표준화 단체가 정한다.
- ex) HTTP: 서로 약속된 인터페이스인 HTTP라는 프로토콜을 통해 노드들은 웹서비스를 기반으로 데이터를 주고받을 수 있다.
출처