1. 컴퓨터 네트워크를 알아야 하는 이유
네트워크의 네트워크, 인터넷
네트워크
여러 장치가 서로 연결되어 정보를 주고받을 수 있는 통신망
인터넷
네트워크들끼리 연결한 것 (네트워크를 연결하는 네트워크)
개발자가 컴퓨터 네트워크를 알아야 하는 이유
우리가 사용하는 대부분의 프로그램은 네트워크를 통해 다른 장치와 상호 작용하며 동작한다. 개발자는 프로그램을 개발하는 사람이다. 이 말은 즉, 다른 장치와 상호작용하여 동작하는 프로그램을 개발하는 경우가 많다는 의미이다.
네트워크를 잘 알면, 개발자의 업무인 프로그램을 만드는 업무와 유지 보수하는 업무 모두에 유리하다.
프로그램을 만드는 업무
네트워크의 기본인 TCP/UDP에 대한 지식이 없으면 위와 같은 Spring Framework의 기능을 제대로 이해하고 활용하는데에 어려움을 겪을 것이다.
이처럼 프로그래밍 언어 or 웹 프레임워크 or 라이브러리를 사용할 때, 네트워크에 대한 배경지식이 있어야만 활용할 수 있는 기능들이 있다.
웹서비스를 개발하여 배포할 때도, DNS, HTTP/HTTPS, 포트번호 등 다양한 네트워크 배경지식들이 필요하다.
프로그램의 안정성과 안정성을 높이고 싶을 때도 유용하게 활용된다.
예를 들어, 안정성을 위해 암호와 인증서를 활용하거나, 안정성을 높이기 위해 부하를 분산할 수 있다.
프로그램을 유지 보수하는 업무
갑자기 인터넷 연결이 끊기거나, 웹 서버가 동작하지 않을 때 등등 네트워크 지식은 문제가 발생했을 때 해결하는데에 큰 실마리가 되어준다.
또한 프로그램을 유지 보수할 때 자주 사용하는 도구나 명령어 중에는 네트워크 지식이 있어야만 이해할 수 있는 것들이 많다.
2. 네트워크 거시적으로 살펴보기
네트워크는 그래프의 형태를 띈다. 그래프는 노드
와 노드를 연결하는 간선
으로 이루어진 자료구조이다.
네트워크의 기본 구조
모든 네트워크는 노드
, 노드를 서로 연결하는 간선
, 노드 간 주고 받는 데이터인 메시지
로 구성된다.
- 노드 : 정보를 주고받을 수 있는 장치
- 간선 : 유무선의 통신 매체
호스트 - End System
가장자리에 위치한 노드이다. 네트워크를 통해 흐르는 정보를 최초로 생성 및 송신하고, 최종적으로 수신한다. 서버 컴퓨터, 개인 데스크톱, 노트북, 스마트폰 등이 호스트이고, 스마트홈이 발달한 요즘은 시계, 자동차, 냉장고, TV등이 모두 이에 해당한다.
서버
어떠한 서비스를 제공하는 호스트
클라이언트
서버에게 어떠한 서비스를 요청하고, 서버의 응답을 제공받는 호스트
클라이언트는 고객, 서버는 종업원에 비유할 수 있다.
클라이언트가 서버에 정보를 요청하고, 서버는 받은 요청에 해당하는 정보를 클라이언트에게 제공한다.
노트북에서 웹 브라우저를 열고 네이버에 접속을 시도했다면, 네이버 서버는 해당 요청을 받고, 그 요청에 맞는 웹 페이지를 나의 웹 브라우저에 전달한다. 이때 나의 노트북은 클라이언트로서 네이버 서버에 웹 페이지를 요청하고, 그에 대한 응답을 제공받은 셈이다.
네트워크 장비
중간 노드이다. 호스트간 주고받을 정보가 중간에 거치는 노드이다.
이더넷 허브, 스위치, 라우터, 공유기 등이 있다.
호스트 간 주고받는 정보가 원하는 수신지까지 안정적이고 안전하게 전송될 수 있도록 한다.
❓ 호스트, 네트워크 장비, 서버, 클라이언트는 완전히 배타적인 개념일까?
→ 아니다.
- 클라이언트이면서 서버일 수 있고, 호스트이면서 네트워크 장비 역할을 수행할 수 있다.
- 어디까지나 일반적인 관점으로 기억하자!
통신 매체
각 노드를 연결하는 간선이다. 유선매체, 무선매체가 있다.
메시지
노드들이 주고받는 정보이다. 웹 페이지, 파일, 메일 등이 있다.
범위에 따른 네트워크 분류
LAN
가까운 지역을 연결한 근거리 통신망. 한정된 공간에서의 네트워크이다.
WAN
LAN들 끼리 연결할 수 있는 넓은 범위의 네트워크
메시지 교환 방식에 따른 네트워크 분류
회선 교환 방식
통신을 시작하기 전에 회선을 통해 장치들의 연결이 필요하다.
회선의 이용 효율이 낮아질 수 있다. 메시지를 주고받지 않으면서 회선을 점유하는 것은 낭비!
패킷 교환 방식
메시지를 패킷단위로 쪼개어 송수신한다. 회선을 점유하고 있는 것이 아니기 때문에 네트워크 이용 효율이 상대적으로 높다.
패킷은 헤더와 페이로드로 이루어져 있고, 때에 따라 트레일러도 붙는다.
주소와 송수신지 유형에 따른 전송 방식
주소
송수신지를 특정할 수 있는 정보
전송 방식
**유니캐스트**
: 하나의 수신지에 메시지를 전송하는 방식**브로드캐스트**
: 네트워크상의 모든 호스트(자기 자신은 제외)에게 전송하는 방식
3. 네트워크 미시적으로 살펴보기
네트워크에 연결된 두 대의 컴퓨터가 어떻게 메시지를 교환하는가?
프로토콜
통신을 주고받는 노드 간에 정보를 올바르게 주고받기 위해 합의된 규칙이나 방법
서로 다른 통신 장치들이 정보를 주고받기 위해서는 프로토콜이 통해야 한다. 즉, 상대 호스트와 동일한 프로토콜을 사용해야 한다.
이때, 통신 과정에서 하나의 프로토콜만을 사용하는 것이 아니라 여러 프로토콜을 함께 사용한다.
모든 프로토콜은 각각의 목적과 특징이 있다. 따라서 프로토콜마다 주고받는 패킷의 헤더 내용이 달라질 수 있다.
네트워크 참조 모델
네트워크로 메시지를 송수신하는 것은 택배를 주고받는 것과 유사하다. 택배를 주고받는 과정에 정형화된 순서가 있는 것처럼, 네트워크도 마찬가지이다.
네트워크를 통해 노드 간에 정보를 주고받을 때, 정형화된 여러 단계를 거쳐야 한다. 따라서, 통신이 일어나는 과정을 계층으로 나눈 구조를 네트워크 참조 모델(네트워크 계층 모델)이라고 한다.
네트워크 참조 모델 : 네트워크의 전송 단계를 계층으로 표현한 것
❓ 통신 과정을 계층으로 나눈 이유
- 네트워크 구성 및 설계에 있어 좋은 가이드라인이 된다.
- 각 계층이 수행해야 할 역할이 정해져 있어, 계층의 목적에 맞게 프로토콜과 네트워크 장비를 계층별로 구성할 수 있다.
- 문제 진단과 해결이 수월해진다.
- 문제의 원인을 계층 별로 진단할 수 있다.
- 하위 계층부터 상위 계층으로 올라가면서 어떤 계층에 문제가 있는지 진단한다.
- 문제의 원인을 계층 별로 진단할 수 있다.
OSI 모델
OSI 7계층
물리 계층
- 가장 근원적인 통신이 이루어지는 계층
- 비트 신호를 주고 받음
- 1과 0으로 표현된 비트 데이터는 통신 매체에 따라 각기 다른 신호로 운반된다.
- 비트 데이터의 변환, 통신 매체를 통한 송수신이 이루어진다.
- 가장 근원적인 통신이 이루어지는 계층
데이터링크 계층
- 네트워크 내에서 주변 장치 간의 정보를 올바르게 주고받기 위한 계층
- MAC 주소 체계를 통해 네트워크 내의 송수신지를 특정한다.
- 물리 계층을 통해 주고받는 정보에 오류 존재 여부를 확인하고, 전송 과정에서 발생할 수 있는 충돌 문제를 해결한다.
네트워크 계층
- 메시지를 다른 네트워크에 속한 수신지에 전달하는 계층
- 서로 다른 네트워크 간의 통신이 이루어진다.
- 인터넷을 가능하게 하는 계층
- IP 주소 체계를 통해
**수신지 호스트**
와**네트워크**
를 식별하고, 수신지에 도달하기 위한 최적의 경로를 결정한다.
- 메시지를 다른 네트워크에 속한 수신지에 전달하는 계층
전송 계층
- 신뢰성과 안정성이 있는 전송을 해야할 때 필요한 계층
- 패킷의 흐름을 제어하거나 전송 오류를 점검한다.
세션 계층
- 세션을 관리하는 계층
**세션
:** 통신을 주고받는 호스트의 응용 프로그램 간 연결 상태- 연결 상태를 생성하거나 유지하고, 끊어주는 역할을 한다.
표현 계층
- 문자를 코드로 변환하거나, 압축, 암호화 등의 작업을 하는 계층
응용 계층
- 실질적인 네트워크 서비스를 제공하는 계층
- 사용자가 이용할 응용 프로그램에 다양한 네트워크 서비스를 제공
- 응용 프로그램에 다양한 서비스가 제공되는 만큼, 타 계층에 비해 여러 프로토콜이 속해있다.
- 실질적인 네트워크 서비스를 제공하는 계층
목적
네트워크를 이론적으로 기술하고 이해할 때 사용한다. 즉, 이상적 설계가 목적이다.
TCP/IP 모델
TCP/IP 4계층
목적 : 실용적 구현을 위한 것
- 네트워크 액세스 계층(링크 계층, 네트워크 인터페이스 계층)
- 네트워크 계층
- 전송 계층
- 응용 계층
목적
구현에 중점을 둔 모델로, 실용적 구현이 목적이다.
캡슐화와 역캡슐화
실제로 네트워크에서 패킷이 송수신되는 방법에 관한 내용이다.
캡슐화 - Encapsulation
상위 계층으로부터 내려받은 패킷을 페이로드로 삼고, 프로토콜에 걸맞은 헤더(or 트레일러)를 덧붙여서 하위 계층으로 전달한다.
역캡슐화 - Decapsulation
캡슐화 과정에서 붙였던 헤더(or 트레일러)를 각 계층에서 제거한다.
데이터에서 헤더를 제거함
(페이로드) == (택배 안에 담긴 물품)이라고 비유하면,
- 캡슐화는 상위 계층의 택배 상자를 하위 계층의 택배 상자에 담는 것과 같다.
- 역캡슐화는 택배 상자에 붙인 송장을 떼어내고, 상자 속의 상자를 꺼내는 것과 같다.
PDU (Protocol Data Unit)
각 계층에서 송수신되는 메시지의 단위이다.
- 현재 계층의 PDU == 상위 계층에서 전달 받은 데이터에 현재 계층의 프로토콜 헤더(or 트레일러)를 추가한 것
- 전송 계층 이하의 메시지를 구분하기 위해 사용한다. 전송 계층의 상위 계층에서는 데이터 or 메시지로 지칭한다.
‘패킷’ 용어의 쓰임
- 패킷 교환 네트워크에서 쪼개어져 전송되는 단위
- 네트워크 계층에서의 송수신 단위
+) 추가적인 내용
OSI 7계층, TCP/IP 4계층은 그저 가이드라인일 뿐이다.
네트워크 참조 모델이나 특정 계층은 네트워크를 작동시키는 주체가 아니다.
반드시 지켜야 하는 엄격한 규칙이 아니며, 통신이 일어나는 단계를 역할별로 구현한 큰 그림이라고 이해하면 된다.
프로토콜 or 네트워크 장비와 같이 참조 모델에 속한 대상이 네트워크를 작동시키는 주체이다.
트래픽
네트워크 내의 정보량을 의미한다.
통신 매체가 도로이고, 통신 매체에 흐르는 정보를 자동차라고 비유한다면, 자동차 수가 트래픽의 양인 것이다.
트래픽이 몰려 특정 노드에 과부하가 생기면 네트워크의 성능이 저하될 수 있다.
네트워크의 성능을 평가하는 지표
처리율 - throughput
- 단위 시간당, 네트워크를 통해 실제로 전송되는 정보량
- 실시간성이 강조된 지표
- 특정 노드가 얼마 만큼의 트래픽을 처리하는 중인지 판단하기 위해 사용됨
대역폭 - bandwith
단위 시간 동안 통신 매체를 통해 송수신할 수 있는 최대 정보량
통신 매체가 높은 대역폭을 가지고 있다면, 많은 정보를 송수신할 능력이 있다는 의미
도로의 너비가 넓으면 오갈 수 있는 자동차가 많은 상황에 비유할 수 있다.
패킷 손실 - packet loss
- 송수신되는 패킷이 손실된 상황
'네트워크' 카테고리의 다른 글
[네트워크 용어 정리] 1. LAN과 WAN (0) | 2024.02.08 |
---|