one line of code at a time
혼자 공부하는 네트워크 저자 50분 특강 정리 본문
1. 네트워크를 알아야 하는 이유
네트워크란? 두 대 이상의 장치가 연결되서 서로 정보를 주고받을 수 있는 통신망을 의미한다.
대부분의 프로그램은 네트워크를 이용한다.
개발자는 프로그램을 만든다.
따라서 프로그램을 만드는 개발자는 네트워크를 알아야 한다.
개발자 업무에 있어 네트워크 지식은 구체적으로 언제 사용하게 될까?
개발자 업무는 크게 프로그램을 만드는 업무와 프로그램을 유지 보수하는 업무로 나뉜다.
두 가지 업무 모두에서 도움이 된다.
채용 공고에서도 네트워크에 관련한 기초 지식을 보유하신 분이라고 쓰여져 있는 경우가 많다.
2. 네트워크 거시적으로 살펴보기
네트워크의 기본 구조
네트워크의 분류
네트워크의 기본 구조
네트워크의 기본 구조는 그래프 형태이다. 그래프는 노드(정점)와 간선(링크)의 연결로 표현되는 데이터 형태를 말한다.
우리가 사용하고 있는 컴퓨터 또는 스마트폰은 가장자리에 위치해 있다.
'네트워크'라고 불리는 그래프에서 가장자리에 위치해 있으면서 네트워크에서 주고받을 정보를 최초로 만들어서 보내거나 최종적으로 수신하는 가장자리 노드를 호스트라고 부른다.
스마트 워치, 냉장고, TV 등 최종적으로 정보를 수신하거나 최초로 어떤 정보를 송신한다면 다 호스트에 해당된다.
호스트: 가장자리 노드, 네트워크 정보 최초 송신 및 최종 수신
중간에 위치한 중간 노드들에는 어떤 것이 있는지 살펴보자.
중간 노드에는 대부분 네트워크 장비들이 위치해 있다. 라우터, 공유기, 스위치 등.
이러한 네트워크 장비들은 호스트들끼리 주고받는 정보가 목적지까지 안전하게 송수신될 수 있도록 돕는 역할을 한다.
노드들을 연결해주는 링크를 통신 매체라고 한다.
유선인 것도 있고, 무선인 것도 있다.
유선에는 케이블이 있고, 무선의 대표적인 예시로는 전파를 기반으로 통신하는 와이파이가 있다.
통신 매체: 유/무선의 연결 매체
정리하면, 네트워크의 기본 구조는 호스트, 네트워크 장비, 통신 매체, 그리고 이들끼리 주고받는 메시지로 이루어져 있다.
네트워크 기본 구조: 호스트, 네트워크 장비, 통신 매체, 메시지
네트워크의 분류
범위에 따른 분류와 메세지 교환 방식에 따른 분류를 살펴보자.
범위에 따라서 분류해보자면, 크게 LAN과 WAN으로 나뉠 수가 있다.
메세지 교환 방식에 따라 분류해보자면, 크게 회선 교환과 패킷 교환으로 나뉠 수가 있다.
범위에 따른 분류: LAN과 WAN
LAN
- 가까운 지역을 연결한 근거리 통신망을 의미한다.
- 가정, 학교 등 한정된 공간에서의 네트워크
LAN 안에서도 정보를 주고받을 수 있지만, LAN 바깥에 있는 호스트하고도 통신을 주고받아야 하는 상황이 온다.
이럴 때 WAN을 사용한다.
WAN
- 먼 거리를 연결하는 광역 통신망을 의미한다. (aka 원거리 통신망)
- WAN을 통해서 LAN끼리 통신이 가능하다.
- WAN은 대부분 ISP라고 하는 특별한 업체에서 구축하고 관리한다. 국내 대표적인 ISP로는 KT, LG 유플러스, SK 브로드밴드 등의 회사가 있다.
메세지 교환 방식에 따른 분류: 회선 교환과 패킷 교환
회선 교환
- 회선 교환 네트워크는 회선 교환 방식으로 통신하는 네트워크를 말한다.
- 회선 교환 방식은 호스트 간에 메세지를 주고받기 전 메세지 전송로(회선)을 설정한 뒤, 해당 전송로를 통해서만 메세지를 주고받는 네트워크이다.
- 전통적인 예시는 전통적인 전화망.
- 오늘 인터넷 상에서는 많이 사용되지 않는다. 회선의 이용 효율이 낮아질 수 있기 때문이다. 회선에서 메세지가 끊임없이 흐르고 있어야 이용 효율이 높다고 볼 수 있는데 전송로를 예약만 해놓고 메세지를 주고받지 않는다면 회선이 낭비된 것이다.
패킷 교환
- 패킷 교환 네트워크는 메세지를 '패킷' 단위로 쪼개어 송수신하는 네트워크다.
- 오늘날 인터넷 환경에서 패킷 교환 방식을 이용한다.
- 패킷 교환 네트워크는 회선 교환 방식보다 전송로의 이용 효율이 높다.
패킷 = 헤더 + 페이로드 + (트레일러)
패킷을 택배라고 보내면 이해하기가 쉽다.
택배를 보낼 때 그 친구에게 보낼 물품을 넣는다. 네트워크로 따지면 패킷을 통해서 실질적으로 주고받고자 하는 데이터를 페이로드라고 부른다.
페이로드: 패킷을 통해서 주고받고자 하는 실질적인 데이터
그리고 택배를 보낼 때 받는 사람, 주소 등등 택배 송장을 붙인다. 네트워크에서도 이 페이로드가 어디에서 비롯된 데이터인지, 누구에게 보내고자 하는 데이터인지 등이 적혀 있는 헤더가 있다.
헤더: 패킷에 대한 부가정보 / 제어정보
때로는 트레일러라고 하는 정보가 추가적으로 붙기도 한다.
3. 네트워크 미시적으로 살펴보기
네트워크를 미시적으로 살펴본다는 말은 두 대의 네트워크 기기가 서로 정보를 주고받는 상황에서 어떤 일이 일어나는지 알아보는 것이다.
프로토콜
네트워크 참조 모델
캡슐화와 역캡슐화
프로토콜
친구한테 택배를 보내려고 하는데 친구가 택배 안에 있는 물건/내용을 이해하려면 친구와 언어가 통해야 한다. 뿐만 아니라 택배를 보내는 택배 기사 (중간 노드인 네트워크 장비)도 이해할 수 있어야 한다. 다시 말해 호스트 사이에도 언어가 통해야 하고, 호스트와 네트워크 장비끼리의 언어도 통해야 한다. 네트워크 세상의 언어를 '프로토콜'이라고 한다.
* 일상 속 언어와는 달리 통신 과저에서 일반적으로 여러 프로토콜을 함께 사용한다.
프로토콜: 노드 간에 (네트워크 상에서) 정보를 올바르게 주고받기 위해 합의된 규칙이나 방법
- IP는 패킷을 수신지까지 전달하기 위해 사용되는 프로토콜이다.
- HTTPS는 HTTP에 비해 보안상 더 안전한 프로토콜이다.
- TCP는 UDP에 비해 일반적으로 느리지만 신뢰성이 높은 프로토콜이다.
프로토콜마다 목적과 특징이 다르다.
프로토콜마다 목적과 특징에 맞는 정보(헤더)를 포함한다.
따라서 프로토콜마다 포함된 정보(헤더)는 다를 수 있다!
프로토콜마다 목적과 특징이 다르기 때문에 그 목적을 달성하기 위해 포함되어 있는 정보(패킷 헤더 내용)도 달라질 수 있다. 예를 들어, IP 프로토콜로 정보를 주고받으면, IP 프로토콜의 목적과 특징을 이루기 위한 정보로 구성된 패킷을 주고받게 된다.
네트워크 참조 모델
택배를 받을 때는 택배를 보낼 때의 행동과 정확히 반대로 하면 된다. (송신의 과정과 수신의 과정은 반대이다.)
이렇듯 네트워크에서 패킷을 주고받는 데에는 어떤 정형화된 순서가 있다.
그 단계를 계층으로 표현할 수가 있다. 이렇게 표현된 계층적인 모델을 네트워크 참조 모델이라고 한다.
가장 대표적으로는 OSI 모델(OSI 7 계층)과 TCP/IP 모델 (4계층)이 있다.
OSI 7 계층
응용 계층
표현 계층
세션 계층
전송 계층
네트워크 계층
데이터 링크 계층
물리 계층
* 위로 올라갈수록 일상생활에서 사용하는 응용프로그램(웹 브라우저, 게임 등)과 밀접하게 연관되어 있다. 아래 계층으로 내려갈수록 네트워크 하드웨어와 가까워진다.
* 어떤 프로토콜은 특정 계층에 속해있다. 응용 계층의 목적에 부합하는 프로토콜 (ex. HTTP)이 응용 계층에 포함되어 있다. 전송 계층에는 TCP, UDP 프로토콜이 포함되어 있고, 네트워크 계층에는 IP 프로토콜이 포함되어 있다.
TCP/IP 4계층
응용 계층
전송 계층
인터넷 계층
네트워크 액세스 계층
캡슐화와 역캡슐화
송신 과정에서 헤더 및 트레일러를 추가해 나가는 과정을 캡슐화 (encapsulation)이라고 한다.
내가 친구에게 보내고자 하는 데이터 (페이로드)가 있으면, 이 페이로드가 응용 계층을 지나면서 응용 계층의 헤더가 추가되고, 전송 계층을 지나면서 전송 계층 헤더가 추가되고, 네트워크 계층을 지나면서 헤더가 추가되고, 데이터 링크 계층을 지나면서 헤더나 트레일러가 추가된다. 물리 계층은 전기적인 신호를 주고받는 계층이다.
한 단계 아래 계층은 위에서 내려받은 데이터를 페이로드로 삼는다.
정리하면, 한 단계 아래 계층은 위에 계층으로부터 내려받은 패킷을 페이로드로 삼아서 그 페이로드에 해더, 때로는 트레일러까지 추가해 나가면서 캡슐화가 이루어진다.
송신의 과정에서는 캡슐화가, 수신의 과정에서는 역캡슐화가 일어난다.
4. 트래픽과 네트워크 성능 지표
트래픽이란 네트워크 내의 정보량을 의미한다.
정보량의 측정은 보통 노드에서 측정을 하므로 특정 노드를 경유하는 정보량이라고도 볼 수 있다.
한 노드가 처리 가능한 트래픽의 양은 노드마다 정해져 있는 경우가 많다.
한 노드가 처리하기 어려울만큼 과도한 트래픽을 받게되면, 과부하로 인한 성능 저하가 발생할 수 있다.
성능은 어떻게 측정할 수 있을까?
성능 지표에는 처리율, 대역폭, 패킷 손실 등이 있다.
처리율 (throughput)
- 단위 시간당 네트워크를 통해 실제로 전송되는 정보량을 의미한다.
대역폭
- 통신 매체를 통해 송수신할 수 있는 최대 정보량
- 통신 매체의 역량을 측정하기 위한 지표로 많이 사용된다
'개발공부' 카테고리의 다른 글
| Microservices with Spring Boot (Gateway, Discovery, Config server) (0) | 2024.08.11 |
|---|---|
| Docker Tutorial for Beginners 정리 (0) | 2024.08.09 |
| 컴퓨터 구조와 운영체제 50분만에 핵심 개념 정복하기 영상 정리 (0) | 2024.08.08 |