네트워크를 알아야하는 이유?
개발자는 컴퓨터 네트워크를 사용하는 프로그램을 만들고 유지보수(오류 진단 등)하기 위해 네트워크 지식을 활용해야 한다.
네트워크 : 노드와 링크가 서로 연결되어있으며 리소스를 공유하는 집합체
= 여러개의 장치가 마치 그물처럼 서로 연결되어 정보를 주고받을 수 있는 통신망
인터넷: 전 세계의 여러 네트워크가 상호 연결된 네트워크의 네트워크
노드 Node : 서버, 라우터, 스위치 등 네트워크 장치. 링크를 통해 연결된 컴퓨터들을 노드 라고 한다.
- 호스트 : 네트워크 가장자리에 위치한 노드 (클라이언트, 서버)
- 네트워크 장비 : 데이터가 안정적으로 전달되도록 함 (중간 노드)
- 서로 배타적인 개념이 아님. 호스트도 네트워크 장비 역할을 할수 있음.. 등등
링크 Link : 유선 또는 무선 등의 연결 매체 (ex. 동축 케이블, 광섬유, Wifi, LAN 등)
[2.1.1] 처리량과 지연 시간
좋은 네트워크를 구축하는 것이 중요하다.
1) 많은 처리량을 처리 2) 짧은 지연 시간 3) 장애 빈도가 적음 4) 좋은 보안을 갖춤
▶ 처리량 Throughput (단위 : bps, bits per second = 초당 전송 또는 수신되는 비트 수)
: 링크 내에서 성공적으로 전달된 데이터의 양 = 얼만큼의 트래픽을 처리했는지
처리량에 영향을 주는 요소들 : 트래픽(접속한 사용자가 많아지면 증가) , 네트워크 장치간의 대역폭, 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙
처리량과 트래픽은 다르다.
트래픽 (단위 : KBytes, MegaBytes, GigaBytes ...)
: 특정 시점에 링크 내에 흐르는(네트워크를 타고 이동하는) 데이터의 양을 말한다.
트래픽 = 용량 * 사용자 수 * 개수
예) 서버에 저장된 파일 (문서, 이미지 동영상 등)을 클라이언트 (사용자)가 다운로드 할때 발생되는 데이터의 누적량
traffic 사전적 의미와 크게 다르지 않음 : 특정 시간의 도로상의 차량들, 교통량
트래픽이 많아졌다 = 흐르는 데이터가 많아졌다.
처리량이 많아졌다 = 처리되는 트래픽이 많아졌다.
대역폭 bandwidth (단위 : bps, Mbps, Gbps)
: 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수 = 초당 bit 단위의 데이터 처리량 = '용량'
네트워크에서 잠재적으로 가지고 있는, 동시에 전송될수 있는 데이터의 최대치
즉 네트워크의 실질적인 성능을 나타내는 것은 아님.
예) 1차선 도로보다 4차선 도로에서 더 많은 차가 다닐 수 있다. / 수도관이 클수록 한번에 더 많은 물이 흐를 수 있다.
'속도'와는 다른 개념이므로 주의
▶ 지연 시간 latency
: 요청이 처리되는 시간. 어떤 메시지가 두 장치 사이를 '왕복'하는데 걸린 시간
→ 데이터가 처리되는 '속도'에 영향을 주는 요소
지연 시간에 영향을 주는 요소: 매체 타입(유.무선), 패킷 크기, 라우터의 패킷 처리 시간
지연 시간이 길면 네트워크 용량에 더 많은 비용을 지출하는 이점이 줄어들어 기업이 값비싼 네트워크 회로를 구현하더라도 사용자 경험과 고객 만족도에 모두 영향이 있다.
네트워크 지연 시간이 짧아야하는 애플리케이션의 종류는?
- 실시간 데이터 관리 (실시간 경매, 온라인 베팅, 데이터베이스나 센서와 같은 다양한 소스의 데이터 병합 등)
- 비디오 지원 원격 작업 (내시경 카메라, 수색/구조용 드론 등)
- API 을 사용한 통신 시 (티켓 예매 사이트 등)
Package + bucket 의 합성어, 우체국에서 화물을 적당한 덩어리로 나누어 행선지를 표시하는 꼬리표를 붙이는 방식을 접목한 것
네트워크를 통해 전송되는 데이터는 패킷으로 나뉘고, 수신하는 컴퓨터 (또는 장치)에서 재결합된다.
예) 큰 사진 파일을 친구에게 보낼때 큰 사진을 작은 패킷들로 분할하고, 각 패킷에 번호를 붙여서 전달한다. 패킷을 전달받아서 번호 순서대로 나열하여 재결합하면 사진을 볼 수 있다.
[2.1.2] 네트워크 토폴로지와 병목 현상
네트워크 토폴로지topology : 노드와 링크가 배치된 방식, 연결 형태 = 네트워크 구성 방식
왜 중요한지? 병목현상bottle neck의 원인을 찾을 때 중요한 기준이 된다.
네트워크가 어떤 토폴로지를 갖는지, 어떤 경로로 이루어져있는지를 알아야 병목 현상을 올바르게 해결할 수 있다.
즉 어떠한 부분에 어떠한 회선 또는 어떠한 서버의 용량을 증가시켜야하는지 알 수 있다.
성능, 비용, 확장성, 유지보수 용이성 등의 영향을 미친다
병목 현상: 병의 목 부분 처럼 넓은 길이 갑자기 좁아지는 구간에서 흐름이 정체되는 현상
병이 아무리 커도 물이 나오는 속도는 병 입구 지름에 의해 제한된다.

분류
- 물리적 토폴로지
- 신호 토폴로지
- 논리적 토폴로지
1) 트리tree 토폴로지 (계층형 토폴로지)
장점 : 노드의 추가, 삭제가 쉽다.
단점 : 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있다.
2) 버스bus 토폴로지 : 중앙 통신 회선 하나에 여러개의 노드가 연결되어 공유하는 네트워크 구성을 말하며 근거리 통신망(LAN)에서 사용한다.
장점 : 설치 비용이 적고 신뢰성이 우수하다. 중앙 통신 회선에 노드를 추가하거나 삭제하기가 쉽다.
단점 : 스푸핑이 가능하다
스푸핑(spoofing)의 사전적 의미는 '속이다'이다. 네트워크에서 스푸핑 대상은 MAC 주소, IP주소, 포트 등 네트워크 통신과 관련된 모든 것이 될 수 있고, 스푸핑은 속임을 이용한 공격을 총칭한다.
송신부의 패킷을 송신과 관련 없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비 시키거나 속여서 특정 노드에 해당 패킷이 오도록 처리
- 목표 대상의 IP 주소를 위조하고 이를 이용해 통신 패킷을 조작한다.
- 위조된 패킷을 네트워크 상에 전송한다. → 다른사람으로 가장
통신 상대방과의 통신을 가로채거나 조작하여 정보를 훔치거나 악용한다

3) 스타star 토폴로지 : 중앙에 있는 노드에 모두 연결된 네트워크 구성
장점 : 노드를 추가기 쉽다. 패킷의 충돌 발생 가능성이 적다. 어떤 노드에 장애가 발생해도 쉽게 에러를 발견할 수 있다. 장애 노드가 중앙 노드가 아닌 경우 다른 노드에 끼치는 영향이 적다.
단점 : 중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없다. 설치 비용이 고가이다.
4) 링형ring 토폴로지 : 각각의 노드가 양 옆의 두 노드와 연결하여 하나의 연속된 길을 통해 통신을 하는 망 구성 방식
데이터는 노드에서 노드로 이동을 하게 되며, 각각의 노드는 고리 모양의 길을 통해 패킷을 처리한다.
장점 : 노드 수가 증가되어도 네트워크 상의 손실이 거의 없다. 충돌이 발생할 가능성이 적다. 노드의 고장 발견이 쉽다.
단점 : 네트워크 구성 변경이 어렵고 회선에 장애가 발생하면 전체 네트워크에 영향을 크게 끼친다.
메시mesh 토폴로지 (망형 토폴로지) : 그물망 처럼 연결되어 있는 구조
장점: 한 단말 장치에 장애가 발생해도 여러 개의 경로가 존재하므로 네트워크를 계속 사용할 수 있다. 네트워크 분산 처리가 가능하다.
단점 : 노드 추가가 어렵다. 구축, 운용 비용이 고가이다.
[2.1.3] 네트워크 분류
1. 규모에 따른 분류
- LAN : Local Area Network
- MAN : Metropolitan Area Network
- WAN : Wide Area Network
1) LAN : 근거리 통신망 (같은 건물이나 캠퍼스 같은 좁은 공간)
전송 속도가 빠름. 혼잡하지 않다.
2) MAN : 대도시 지역 네트워크 (도시같이 넓은 공간)
전송 속도는 평균. LAN보다는 혼잡하다
3) WAN : 광역 네트워크 (국가, 대륙같은 더 넓은 공간)
전송 속도 낮음. MAN보다 혼잡하다.
다른 LAN에 속한 호스트와 데이터를 주고 받을때 필요
ex. 인터넷
ISP(Internet Service Provider) : KT, LGU+, SK브로드밴드 등
WAN과 관련된 다양한 서비스를 제공
2. 메시지 교환 방식에 따른 분류
1) 회선 교환 네트워크 : 회선 연결을 확보하고 메시지를 주고받는다
2) 패킷 교환 네트워크 : 현재 많이 쓰이는 방식
[2.1.4] 네트워크 성능 분석 명령어
코드 상에 문제가 없는데 사용자가 서비스로부터 데이터를 가져오지 못하는 상황이 발생했다면
이는 네트워크 병목 현상일 가능성이 있다.
- 병목현상의 주된 원인 : 네트워크 대역폭, 네트워크 토폴로지, 서버 CPU, 메모리 사용량
- 해결 방법 :
네트워크 관련 / 무관 테스트 → 네트워크로부터 발생한 문제인지 확인
네트워크의 성능 분석
▼ 이때 사용하는 명령어
1) ping (Packet INternet Groper)
: 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어
→ 네트워크 연결이 잘 되어있는지 확인 & 패킷 수신 상태와 도달하기까지의 시간 등을 알 수 있음
2) netstat
: 접속되어있는 서비스들의 네트워크 상태를 표시하는데 사용하는 명령어
→ 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등의 리스트를 보여준다.
3) nslookup
: DNS에 관련된 내용을 확인하기 위해 쓰는 명령어
→ 특정 도메인에 매핑된 IP를 확인하기 위해 사용
4) tracert (window) & traceroute (renux)
: 목적지 노드까지 네트워크 경로를 확인할 때 쓰는 명령어
→ 목적지 노드까지 구간 중 어느 구간에서 응답 시간이 느려지는지 확인
[2.1.5] 네트워크 프로토콜 표준화
네트워크 프로토콜 : 다른 장치들끼리 데이터를 주고받기 위한 규칙과 절차 체계
= 서로 약속된 인터페이스를 통해 노드들은 웹서비스를 기반으로 데이터를 주고받을 수 있다.
→ 데이터를 보내고 받는 장치간의 효율적이고 안정적인 통신을 가능하게 함
네트워크 내의 컴퓨터는 아주 상이한 소프트웨어와 하드웨어를 사용할 수 있다.
그렇지만 프로토콜을 사용하면 서로 통신할 수 있다.
프로토콜마다 목적과 특징이 다르다
예) HTTP( Hypertext Transfer Protocol ) : 웹 브라우저가 서버와 통신하는 규칙
: HTML과 같은 HyperText문서를 주고 받기 위해 만들어졌고, 최근에는 HTML뿐 아니라 모든 웹 관련 API통신에 이용하고 있는 통신 프로토콜
프로토콜의 기본 요소
1) 구문 Syntax : 데이터 구조나 형식 등의 규정
2) 의미 Semantic : 제어 정보 → 조정과 에러 처리를 위한 규정
3) 시간 Timing : 시스템간 정보 전송을 위한 속도 조절과 순서 관리 규정
네트워크 프로토콜 표준화가 중요한 이유?
1) 다양한 제조사나 개발자들 간의 호환성을 유지, 상호 연결성을 확보한다
2) 사용자 - 여러 제품이나 서비스를 선택하기 편리하게 함
3) 네트워크 안전성과 신뢰성을 높인다
IEEE(Institute of Electrical and Electronics Engineers) : 미국전지전자기술자협회
IETF(Internet Engineering Task Force) : 국제 인터넷 표준화 기구
'개발 공부 일지 > CS' 카테고리의 다른 글
Q. HTTP 와 HTTPS 차이 / HTTP 메소드 (0) | 2024.08.02 |
---|---|
[3.1] 운영체제와 컴퓨터 - [3.2] 메모리 (0) | 2024.08.02 |
프로그래밍 패러다임 (0) | 2024.07.23 |
디자인 패턴 (0) | 2024.07.18 |
도서 / 면접을 위한 CS 전공지식 노트 (0) | 2024.07.18 |