본문 바로가기
개발 공부 일지/CS

[2.1] 네트워크의 기초

by yelimu 2024. 7. 23.

네트워크를 알아야하는 이유?

개발자는 컴퓨터 네트워크를 사용하는 프로그램을 만들고 유지보수(오류 진단 등)하기 위해 네트워크 지식을 활용해야 한다.

 

네트워크 : 노드와 링크가 서로 연결되어있으며 리소스를 공유하는 집합체

= 여러개의 장치가 마치 그물처럼 서로 연결되어 정보를 주고받을 수 있는 통신망

 

인터넷: 전 세계의 여러 네트워크가 상호 연결된 네트워크의 네트워크

 

노드 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) : 국제 인터넷 표준화 기구