네트워크란?
- 노드(서버, 라우터, 스위치 등 네트워크 장치)와 링크(유선 / 무선)가 서로 연결되어 있거나 연결되어 있지 않은 집합체
** 라우터
-> 논리적 / 물리적으로 분리된 망 사이를 지나는 패킷의 위치에 따라 최적화된 경로를 지정하는 기능을 수행하는 장비
** 스위치
-> 네트워크 회선과 서버 컴퓨터를 연결하는 네트워크 장비.
- 허브는 단순히 한 포트로 신호가 들어오면 그 신호를 다른 모든 포트로 전달하는 것에 비해, 스위치는 필요로 하는 포트로만 신호를 전달
-> 스위치에서는 허브에 비해 불필요한 트래픽이 감소
2.1.1 처리량과 지연시간
좋은 네트워크
-> 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크
** 처리량(throughput)
-> 링크를 통해 전달되는 단위 시간당 데이터양
- 단위는 bps(bits per second)
- 사용자들이 많이 접속할 때마다 커지는 트래픽, 네트워크 장치간의 대역폭, 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙에 영향을 받음

** 대역폭
-> 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수
** 지연시간(latency)
-> 요청이 처리되는 시간. 어떤 메시지가 두 장치사이를 왕복하는 데 걸린 시간

- 매체 타입(무선 / 유선), 패킷 크기, 라우터의 패킷 처리 시간에 영향을 받음
** 패킷
-> 네트워크에서 데이터를 주고받을 때 사용되는 데이터 조각
2.1.2 네트워크 토폴로지와 병목현상
** 네트워크 토폴로지(network topology)
-> 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태
- 트리 토폴로지
- 계층형 토폴로지. 트리 형태로 배치한 네트워크 구성
- 장점 : 노드의 추가, 삭제가 쉬움
- 단점 : 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 o

- 버스 토폴로지
- 중앙 통신 회선 하나에서 여러 개의 노드가 연결되어 공유하는 네트워크 구성
- 근거리 통신망(LAN)에서 사용
- 장점 : 설치 비용이 적음(케이블 사용량이 적음). 신뢰성이 우수. 중앙 통신 회선에 노드를 추가하거나 삭제하기 쉬움
- 단점 : 스푸핑이 가능

** 스푸핑
-> LAN상에서 송신부의 패킷을 송신과 관련 없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시키거나 속여서 특정 노드에 해당 패킷이 오도록 처리하는 것
- 스푸핑을 적용하면, 올바르게 수신부로 가야할 패킷이 악의적인 노드에 전달되게 됨

- 스타 토폴로지
- 중앙에 있는 노드에 모두 연결된 네트워크 구성
- 장점 : 노드 추가 쉬움. 에러 탐지 쉬움. 패킷의 충돌 발생 가능성이 낮음. 장애 노드가 중앙 노드가 아닌 경우 다른 노드에 영향이 적음
- 단점 : 장애 노드가 중앙 노드인 경우, 전체 네트워크 사용 불가. 설치 비용이 높음

- 링형 토폴로지
- 각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신을 하는 망 구성 방식
- 장점 : 노드 수가 증가되어도 네트워크 상의 손실이 거의 없음. 충돌이 발생되는 가능성이 적음. 노드의 고장을 쉽게 찾을 수 있음
- 단점 : 네트워크 구성 변경이 어려움. 회선에 장애가 발생하면 전체 네트워크에 영향을 크게 끼침

- 메시 토폴로지
- 망형 토폴로지라고도 함. 그물망처럼 연결되어 있는 구조
장점 : 한 단말 장치에 장애가 발생해도 여러 경로가 존재하여 네트워크를 계속 사용 할 수 있음. 분산 처리도 가능.
단점 : 노드의 추가가 어렵고 구축 비용과 운용 비용이 고가

** 병목(bottleneck) 현상
-> 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한 받는 현상. (ex. 병의 몸통보다 목 부분 내부 지름이 좁아서 물이 상대적으로 천천히 쏟아지는 것과 비슷)
- 서비스나 이벤트를 열었을 때 트래픽이 많이 생기고 그 트래픽을 잘 관리하지 못하면 병목 현상이 생겨 사용자는 웹 사이트로 들어가지 못함
EX)

만약, 병목 현상이 일어나서 사용자가 서비스를 이용할 때 지연 시간이 길게 발생하는 경우
- 관리자들이 지연 시간을 짧게 만들기 위해 대역폭을 크게 설정했음에도 성능 개선 X

- 관리자가 네트워크 구조 확인 후, 서버와 서버 간 그리고 게이트웨이로 이어지는 회선을 추가하여 병목 현상 해결.
-> 네트워크가 어떤 토폴로지를 갖고 어떤 경로로 이루어져있는지 알아야 병목 현상에 올바르게 대처 가능
2.1.3 네트워크 분류

- LAN (Local Area Network)
- 근거리 통신망. 사무실과 개인적으로 소유 가능한 규모
- 같은 건물이나 캠퍼스 같은 좁은 공간에서 운영
- 전송 속도가 빠르고 혼잡 x
- MAN (Metropolitan Area Network)
- 서울시 등 시 정도의 규모
- 도시 같은 넓은 지역에서 운영
- 전송 속도는 평균, LAN보다는 더 혼잡
- WAN (Wide Area Network)
- 광역 네트워크. 세계 규모
- 국가 또는 대륙 같은 넓은 지역에서 운영
- 전송 속도는 낮음, MAN보다 더 혼잡
2.1.4 네트워크 성능 분석 명령어
- 애플리케이션 코드 상에서는 문제가 없는데, 사용자가 서비스로부터 데이터를 가져오지 못하는 상황이 발생하기도 함.
- 네트워크 병목 현상일 가능성이 있다.
** 네트워크 병목 현상의 주된 원인?
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
-> 네트워크 관련 테스트와 네트워크와 무관한 테스트를 통해 '네트워크로부터 발생한 문제점'임을 확인하고 네트워크 성능 분석을 해봐야 함
이때 아래와 같은 명령어들이 사용된다.
- ping(Packet INternet Groper)
네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어.
-
해당 노드의 패킷 수신 상태와 도달하기 까지의 시간 등을 알 수 있고, 해당 노드까지 네트워크가 잘 연결 되어 있는지 알 수 o
-
TCP/IP 프로토콜 중 ICMP 프로토콜로 동작
-> 해당 프로토콜을 지원하지 않는 기기를 대상으로는 시행할 수 없거나 네트워크 정책상 ICMP나 traceroute를 차단하는 대상의 경우 ping 테스팅은 불가
-
ping [IP 주소 / 도메인 주소] 로 실행 가능

- n=12 옵션을 넣어 12번 패킷 보내고 받는 모습
- nestat
접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용.
- 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트를 보여줌
- 주로 서비스의 포트가 열려 있는지 확인할 때 사용

- nslookup
DNS에 관련된 내용을 확인하기 위해 사용

- tracert
윈도우에서는 tracert, 리눅스에서는 traceroute
- 목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어
- 목적지 노드까지 구간들 중 어느 구간에서 응답 시간이 느려지는지 등을 확인 가능

이외에도 ftp(대형 파일 전송 테스팅), tcpdump(노드로 오고 가는 패킷을 캡처) 등 명령어 존재
네트워크 분석 프로그램으로는 wireshark, netmon 이 있음
2.1.5 네트워크 프로토콜 표준화
** 네트워크 프로토콜
-> 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스,
기업이나 개인이 발표해서 정하는 것이 아니라 IEEE / IETF라는 표준화 단체가 정함
EX) 웹접속시 쓰이는 HTTP

-> 만든 기업이 다른 장치여도 서로 데이터를 수신할 수 O
** IEEE
-> 전기전자공학자협회
** IETF
-> 국제 인터넷 표준화 기구
참고
면접을 위한 CS 전공지식노트
토스페이먼츠 개발자센터