일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 백준 #직각삼각형
- 다익스트라 #파티 #백준
- react #useCallback #react Hook
- 노마드 코더 #타입스크립트 #typescript #class
- React #리액트 이벤트 주기 #리액트 이벤트
- donwstream #upstream #origin
- React-Query
- React #effect hook #useEffect
- 플로이드 #c++
- 이친수
- RateLimit
- html entities
- raect typescript #react #typescript #styled-component
- 버블링 #갭쳐링 #이벤트 #JS
- React #Hook rules #Hook 규칙
- useState #Hooks
- DP #c++
- 얕은 복사 #깊은 복사 #shallow copy #deep copy
- React #controlled component #비제어 컴포넌트 #제어 컴포넌트
- 백준 #적록색약
- 코드스테이츠 #알고리즘 #그리디
- JWT #토큰 #refreshToken #accessToken #Token #token #localStorage #sessionStorage
- rate limit
- axios
- #useRef #언제 쓰는데?
- react fragment
- react
- interceptors
- 빡킹독
- npm #not being able to find a file #npm install Error
- Today
- Total
꿈꾸는 개발자
면접을 위한 CS 전공 지식 노트-[2.1 네트워크 기초] 본문
2.1 네트워크 기초
네트워크: 노드(node)와 링크(link)가 서로 연결되어 있거나 연결되어 있으며 리소스를 공유하는 집합을 의미한다.
- 노드: 서버, 라우터 등 네트워크 장치
- 링크: 유선/무선
2.1.1 처리량과 지연 시간
좋은 네트워크: 많은 처리량 처리 + 짧은 지연 시간 + 적은 장애 빈도 + 좋은 보안
처리량
링크를 통해 전달되는 단위 시간 당 데이터 양을 의미한다.
단위로는 bps(bits per second)을 사용한다. 초당 전송 또는 수신되는 비트 수를 의미
처리량은 사용자들이 많이 접속할 때마다 커지는 트래픽 , 네트워크 장치 간의 대역폭, 네트워크 중간에 발생하는 에러 장치의 하드웨어 스팩에 영향을 받는다.
대역폭: 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수
지연시간
요청이 처리되는 시간을 말하며 어떤 메세지가 두 장치 사이를 왕복하는 데 걸린 시간을 말한다.
지연 시간은 매체 타입(무선,유선) 패킷 크기, 라우터의 패킷 처리 사긴에 영향을 받는다.
2.1.2 네트워크 토폴로지와 병목 현상
네트워크 토폴로지
네트워크 토폴로지(network topology)는 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태를 의미한다.
트리 토폴로지
트리(tree) 토폴리지는 계층형 토폴로지, 트리 형태로 배치한 네트워크 구성을 말한다.
- 노드의 추가, 삭제가 쉽다.
- 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있다.
버스 토폴로지
버스(bus) 토폴로지는 중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성을 말하며 근거리 통신망(LAN)에서 사용한다.
- 설치 비용이 적고 신뢰성이 우수, 중앙 통신 회선에 노드를 추가하거나 삭제하기 쉽다.
- 스푸핑이 가능한 문제가 있다.
- 스푸핑: 임의로 IP 주소를 숨기고 타인의 IP로 위장, 시스템을 공격하는 행위
스타 토폴로지
스타(start, 성형) 토폴로지는 중앙에 있는 노드에 모두 연결된 네트워크 구성을 말한다.
장점
- 노드를 추가하거나 에러를 탐지하기 쉽고 패킷의 충돌 발생 가능성이 적다.
- 에라가 발생한 노드를 쉡게 발견 가능 중앙 노드 장애가 아니면 다른 노드에 영향이 적다.
단점
- 중앙 노드에 장애 발생 시 전체 네트워크 사용 불가
링형 토폴로지
링형(ring) 토폴로지는 각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신을 하는 망 구성 방식이다.
데이터는 노드로 이동, 각 노드는 고리 모양의 길을 통해 패킷 처리
장점
- 노드 수 증가에도 네트워크 손실이 적고, 충돌 발생되는 가능성이 낮다.
- 노드의 고장을 쉽게 발견할 수 있다.
단점
- 네트워크 구성 변경이 어렵다
- 회선에 문제가 생기면 전체 네트워크가 영향을 받는다.
메시 토폴로지
메시(mesh) 토폴로지는 망형 토폴로지라고도 하며 그물망처럼 연결되어 있는 구조이다.
장점
- 한 단말 장치에 장애가 발생해도 여러 개의 경로가 존재하므로 네트워크 지속 사용이 가능하며 트래픽 분산 처리 가능
단점
- 노드 추가가 어렵고 구축 비용과 운용 비용이 고가인 단점이 있다.
병목 현상
토폴로지가 중요한 이뉴는 병목 현상을 찾을 때의 기준이 되기 때문이다.
병목 현상은 전체 시스템의 성능/용량이 하나의 구성 요소로 인해 제한을 받는 현상을 말한다.
예를 들어서, 서비스 이벤트를 열었을 때 트래픽이 많이 생기고 그 트래픽을 잘 관리하지 못하면 병목 현상이 생겨 사용자는 웹 사이트로 들어가지 못한다.
위 사진에 대역폭을 크게 설정해도 성능 개선이 되지 않는다면, 회선을 추가해(토폴로지 개선) 성능 문제를 해결할 수도 있다.
2.1.3 네트워크 분류
네트워크는 규모를 기반으로 분류할 수 있다.
LAN (사무실과 개인적으로 소유 가능한 규모)
근거리 통신망을 의미한다. 같은 건물, 캠퍼스, 좁은 공간에서 운영된다. 전송 속도가 빠르고 혼잡하지 않다.
MAN (서울시 등 시 정도의 규모)
대도시 지역 네트워크를 나타내며 도시 같은 넓은 지역에서 운영된다. 전송 속도는 평균 조금 더 혼잡한 편이다.
WAN (세계 규모)
광역 네트워크를 의미한다. 국가/대륙 같은 더 넓은 지역에서 운영된다. 전송 속도는 낮음 MAN보다 더 혼잡하다.
2.1.4 네트워크 성능 분석 명령어
코드 상의 문제가 없음에도 사용자가 서비스 데이터를 가져오지 못 할 경우 네트워크 병목 현상일 가능성이 있다.
네트워크 병목 현상의 원인
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
네트워크 관련 테스트 + 네트워크와 무관한 데스트를 통해 네트워크로 야기된 문제를 확인한 다음 성능 분석을 해봐야 한다.
이때 사용되는 명령어들
Ping (Packet Internet Groper)
네트워크 사앹를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어
목적
테스트하고자 하는 노드의 패킷 수신 상태, 도달 시간 등 네트워크 연결 상태와 성능을 확인할 수 있다.
작동원리
- TCP/IP 프로토콜 중 ICMP 프로토콜을 통해 동작한다.
- IP 주소 또는 도메인 주소로 실행한다.
단점
- ICMP를 지원하지 않는 기기 대상으로는 테스트 불가
- 네트워크 정책상 ICMP나 treaceroute를 차단하는 대상의 경우 ping 테스팅이 불가능하다.
netstat
목적
- 접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용된다. 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트를 보여준다.
- 주로 서비스 포트가 열려 있는지 확인할 때 사용한다.
nslookup
목적
DNS 관련된 내용을 확인하기 위해 쓰는 명령어. 특정 도메인에 매핑된 IP를 확인하기 위해 사용한다.
tracert
윈도우(tracert)/리눅스(traceroute)로 구동된다.
목적
- 목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어이다.
- 목적지 노드까지 구간들 중 어느 구간에서 응답 시간이 느려지는지 확인 가능하다.
2.1.5 네트워크 프로토콜 표준화
다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스를 의미한다.
IEEE 또는 IETF라는 표준화된 단체가 정한다.
IEEE802.3은 유선 LAN 프로토콜로 유선으로 LAN을 구축할 때 쓰이는 프로토콜이다. (이를 통해 만들면 다른 장치더라도 서로 데이터 수신 가능)
ex) 웹을 접속할 때 HTTP를 통해 노드들은 웹 서비스에서 데이터를 주고 받을 수 있다.