😀 인트로
네트워크 (Network)
- 연결된 장치 또는 다른 주변 장치와 그물처럼 (유무선으로) 연결되어 정보를 주고 받을 수 있는 통신망
인터넷 (Internet)
- 여러 네트워크를 연결한 '네트워크의 네트워크'
- inter + net(work) 정도가 아닐까 싶음
- 네트워크를 통해 연결된 주변 장치로만 정보를 주고받기를 넘어서 네트워크와 연결된 지구 반대편에 있는 장치와 주고 받기 위한 기술
✅ 개발자의 시선
프로그램은 네트워크를 통해서 다른 장치와 상호 작용하는 경우가 많음
➡️ 개발자는 네트워크를 이해해야함
개발자의 업무는 크게 프로그램 만들기, 프로그램 유지 / 보수하기라는 두 가지 종류의 일을 한다.
그래서 채용공고에도 필수적으로 네트워크 기본 지식을 요구하고 면접에서도 체크하고 있다.
프로그램 만들기
프로그래밍 언어, 웹 프레임워크, 라이브러리를 사용할 때 네트워크의 배경지식 필요
➡️ HTTP, 쿠키, DNS, 포트 등 다양한 네트워크 배경지식 필요
프로그램 유지 / 보수하기
인터넷 연결이 안되거나 웹 서버가 동작하지 않는 등 여러 문제의 해결 실마리를 네트워크 배경 지식을 통해 얻을 수 있음
🛜 네트워크의 구조
모든 네트워크는 '노드 (정점)', 노드를 연결하는 '간선 (링크)', 노드간 주고 받는 '메시지 (정보)'로 구성
네트워크 가장자리에 위치한 노드(호스트)는 네트워크를 통해 정보를 최초로 생성, 송신 그리고 수신.
✅ 호스트(host)
가장자리 노드. 때때로 호스트가 특정한 역할을 수행하는데, 대표적인 역할로는 서버
와 클라이언트
가 있다.
- 서버 : 서비스를 제공하는 호스트
- 클라이언트 : 서버에게 어떠한 서비스를 요청(
request
)하고 서버의 응답(response
)을 제공받는 호스트
✅ 네트워크 장비
네트워크의 노드는 호스트만 있지 않음.
중간 노드 : 호스트간 주고받을 정보가 중간에 거치는 노드. 대표적으로는 이더넷 허브, 스위치, 라우터, 공유기 등이 있음 ➡️ 이러한 노드를 네트워크 장비라고 통칭
✅ 통신 매체
각 노드를 연결하는 간선을 의미
연결하는 방식에 따라 유선 매체, 무선 매체로 나눔
✅ 메시지
통신 매체로 연결된 노드가 주고 받는 정보
📋 네트워크 분류 : 범위에 따른 네트워크 분류
호스트가 메시지를 주고 받는 범위에 따라서 네트워크를 분류할 수 있음
✅ LAN (Local Area Network)
근거리 통신망 (가까운 지역)
➡️ 가정이나 기업처럼 비교적 근거리를 연결하는 한정된 공간의 네트워크
✅ WAN (Wide Area Network)
먼 지역을 연결하는 광역 통신망
➡️ 멀리 떨어진 LAN을 연결할 수 있는 네트워크
인터넷은 WAN으로 구분. ISP 회선을 통해 LAN을 연결한다.
⚙️ ISP(Internet Service Provider) : WAN을 구축한 인터넷 서비스 업체 (KT, SK, LG같은 업체)
⁉️ 범위를 더 세밀하게 나누는 경우 LAN ➡️ CAN ➡️ MAN ➡️ WAN 순으로 나눔
⚙️ CAN : Campus Area Network, MAN : Metropolitan Area Network
📋 네트워크 분류 : 메시지 교환 방식에 따른 네트워크 분류
✅ 회선 교환 (Circuit Switching) 방식
회선 교환 네트워크, 메시지 전송로 (회선 Circuit)
를 설정하고 이를 통해 메시지를 주고 받는 방식. 메시지를 주고 받기 전에 두 호스트를 연결하고 연결된 경로를 따라서 메시지를 주고 받음 (대표적인 사례로는 전통적인 전화망)
➡️ 회선을 설정한다 : 두 호스트가 연결되었다, 전송로를 확보하였다 와 같은 말
️️장점 : 연결이 확보되어 있기 때문에 전송되는 정보의 양이 비교적 일정함
단점 : 회선의 이용 효율이 낮아질 수 있음. 가능한 모든 회선에 끊임없이 메시지가 흐르고 있어야 이용 효율이 높아짐. 반대로는 회선을 사용하지 않는다면 낭비가 됨. 회선을 물고 있다(점유하고 있다)는 말은 다른 호스트는 해당 회선을 쓸 수 없다는 의미도 됨
⚙️ 회선 스위치 : 호스트 사이에 일대일 전송로를 확보하는 네트워크 장비
✅ 패킷 교환(Packet Switching) 방식
패킷 교환 네트워크, 회선 교환 방식의 문제점을 해결한 방식으로, 메시지를 패킷이라는 단위로 쪼개어 전송 (패킷(Packet) : 메시지의 단위). 현대의 인터넷은 대부분 패킷 교환 방식을 이용
➡️ 데이터를 전송한 경우 패킷의 크기만큼 분할되어 전송하고, 수신자의 컴퓨터에서 재조립한다.
⚙️ 패킷 스위치
정해진 경로만으로 메시지를 송수신하지 않기 때문에 다양한 중간 노드를 거칠 수 있음.
이 때 중간 노드인 패킷 스위치는 패킷의 수신이 올바르게 도달할 수 있도록 최적의 경로를 결정하거나 패킷의 송수신지를 식별함
- 대표적인 패킷 스위치 네트워크 장비 : 라우터 (router) 와 스위치 (switch)
⁉️ 개념
패킷은 본래 소포, 꾸러미 라는 뜻.
택배를 보내기 위해서는 상자에 물건을 담고 송장에 보는 사람, 보내는 주소, 받는 사람, 받는 주소를 기록하는데, 패킷도 마찬가지
페이로드 (Payload)
: 패킷을 통해 전송하고자 하는 데이터. 택배의 내용물.헤더 (Header)
,트레일러 (Trailer)
: 부가 정보, 제어 정보. 택배의 송장.
✅ 주소 (address)유니캐스트(Unicast)
: 일반적인 송수신 방식. 하나의 수신지에 메시지를 전송하는 방식. 1:1로 메시지를 주고 받음브로드캐스트(Broadcast)
: 자신을 제외한 네트워크상의 모든 호스트에게 전송하는 방식
브로드캐스트 도메인(Domain)
: 브로드캐스트가 전송되는 범위
🛜 프로토콜 (Protocol)
노드 간에 정보를 올바르게 주고 받기 위해 합의된 규칙이나 방법. 서로 다른 통신 장치들이 정보를 주고 받으려면 프로토콜을 통해야 함.
프로토콜의 종류는 다양하며 저마다 목적과 특징이 있다. 그리고 여러 프로토콜을 함께 사용하게 된다.
✅ 네트워크 참조 모델
계층으로 표현한다는 점에서 네트워크 계층 모델이라고도 함
- 4계층 : 응용 프로그램에서 송수신하려는 정보를 전달받는 과정
- 3계층 : 안정적인 송수신을 위해 정보를 더하고 빼는 과정
- 2계층 : 송수신하려는 정보의 송신지와 수신지를 결정하는 과정
- 1계층 : 송수신하려는 정보를 유무선 매체를 통해 주고 받는 과정
➡️ 송신자는 4계층에서 1계층으로, 수신자는 1계층에서 4계층으로 정보의 흐름을 보임
⁉️ 계층을 나누는 이유
네트워크 구성과 설계가 용이
: 계층을 통해 구성과 설계에 가이드라인이 생김네트워크 문제 진단과 해결이 용이
: 통신 과정에서 문제가 생긴 경우 원인을 계층별로 진단할 수 있음
✅ OSI 모델
국제 표준화 기구(ISO)에서 만든 네트워크 참조 모델. 7개의 계층으로 나눔 (OSI 7계층이라고 부름)
물리 계층 (Pysical Layer)
: OSI 모델의 최하단 계층. 1과 0으로 비트 신호를 주고 받음. 통신 매체에 맞는 신호로 운반되도록 비트 데이터의 변환이 이뤄지고 통신 매체를 통한 송수신이 이뤄지는 계층.데이터 링크 계층 (Data Link Layer)
: 네트워크 내 주변 장치 간의 정보를 올바르게 주고받기 위한 계층. 이더넷을 비롯한 많은 LAN 기술이 이 계층에 녹아 있음. 물리 계층을 통해 주고 받은 정보의 오류를 확인하고, MAC 주소라는 주소 체계를 통해 네트워크 내 송수신지를 특정함. (때때로 전송 과정에서 발생하는 충돌 문제를 해결하는 계층)네트워크 계층 (Network Layer)
: 메시지를 (다른 네트워크에 속한) 수신지까지 전달하는 계층. 데이터 링크 계층에서는 네트워크 내의 통신이었다면, 여기에서는 네트워크 간의 통신 (인터넷을 가능하게 하는 계층). 네트워크 계층에는 IP 주소라는 주소 체계를 통해 통신하고자 하는 수신지 호스트와 네트워크를 식별하고, 최적의 경로를 결정전송 계층 (Tranport Layer)
: 신뢰성, 안정성 있는 전송을 해야할 때 필요한 계층. 패킷이 유실 없이, 순서 뒤바뀌지 않고 정상적으로 보내졌는지를 확인할 때 중요. 패킷의 흐름을 제어하거나 전송 오류를 점검해 신뢰성 있고 안정적인 전송을 이루도록 함. Port를 통해 실행 중ㅇ니 응용 프로그램의 식별이 이뤄지기도 함.세션 계층 (Session Layer)
: 세션은 일반적으로 통신을 주고받는 호스트의 응용 프로그램 간의 연결 상태를 의미. 세션 계층은 연결 상태를 생성, 유지, 종료를 관리하는 역할.표현 계층 (Presentation Layer)
: 사람의 언어를 코드로 변환하거나, 압축, 암호화같은 작업을 하는 계층.응용 계층 (Application Layer)
: 모델 최상단에 있는 계층으로 사용자 및 응용 프로그램과 가장 맞닿아 있는 계층. 응용 프로그램에 다양한 네트워크 서비스를 제공.
✅ TCP/IP 모델
TCP/IP 4계층, 인터넷 프로토콜 스위트(Internet Protocol Suite), TCP/IP 프로토콜 스택(Stack)이라고도 부름. (묶음 판매되는 세트 의류같은 느낌으로 보아도 됨)
️️⚙️ IP : 인터넷 프로토콜의 약자
네트워크 액세스 계층 (Network Access Layer)
: 링크 계층, 네트워크 인터페이스 계층이라고도 부르며, OSI 모델의 데이터 링크 계층과 유사인터넷 계층 (Internet Layer)
: OSI 모델의 네트워크 계층과 유사전송 계층 (Transport Layer)
: OSI 모델에서 전송 계층과 유사응용 계층 (Application Layer)
: OSI 모델의 세션 계층, 표현 계층, 응용 계층을 합친 것과 유사
패킷은 헤더와 페이로드, 때로는 트레일러를 포함해서 구성된다. 프로토콜의 목적과 특징에 따라 헤더의 내용은 달라질 수 있다.
✅ 캡슐화 (Encapsulation) : 패킷의 송신 과정
어떤 정보를 송신할 때는 상위 계층으로부터 내려받은 패킷을 페이로드 삼아, 프로토콜에 맞는 헤더를 덧붙인 후 하위 계층으로 전달한다.
응용계층의 페이로드에 헤더를 추가해서 전송계층으로 보내고, 전송계층이 받은 정보에 헤더를 더해서 네트워크를 보내는 마치 러시아 장난감인 마트료시카와 비슷하게 계속 캡슐화를 한다.
✅ 역캡슐화 (Decapsulation) : 패킷의 수신 과정
캡슐화된 정보를 수신하게 되면 트레일러, 헤더를 조금씩 열어보면서 응용계층에서 쓸 수 있는 페이로드를 남기는 과정을 한다. 택배의 송장을 떼고 상자에서 상자를 꺼내는 느낌.
✉️ PDU (Protocol Data Unit)
각 계층에서 송수신되는 메시지의 단위
상위 계층에서 전달받은 데이터에 현재 계층의 프로토콜 헤더(및 트레일러)를 추가하면 현재 계층의 PDU가 된다.
✅ OSI 계층에 따른 PDU
- 응용 계층, 표현계층, 세션계층 : 데이터(data) 또는 메시지(message)
- 전송 계층 : 세그먼트(segment), 데이터그램(datagram)
- 네트워크 계층 : 패킷(packet, IP 패킷 IP Packet이라고도 지칭) 또는 IP 데이터그램(IP datagram)
- 데이터 링크 계층 : 프레임(frame)
- 물리 계층 : 비트(bit) 또는 심볼(symbol)
🫠 트래픽과 네트워크 성능 지표
트래픽(Traffic) 은 네트워크 내의 정보량을 의미한다. 보통 트래픽이 몰린다는 얘기는 해당 노드가 처리해야할 정보가 많음을 뜻하게 되고 이 경우 과부하(Overhead)가 생길 수 있다. 과부하는 성능 저하를 낳고 성능 저하는 탄소 중립에서 멀어지게 하고 지구 온난화를 가속화하고
따라서 네트워크의 성능을 평가할 지표가 필요하다.
✅ 처리율 (throughput, 쓰루풋)
단위 시간당 네트워크를 통해 전송되는 정보량. bps(bit/s), Mbps(Mbit/s), Gbps(Gbit/s)같은 단위가 있다.
초당 패킷 수를 표현하는 pps(p/s)도 있다.
실시간으로 처리하는 능력, 처리하는 규모를 측정할 수 있다.
✅ 대역폭 (bandwidth)
네트워크에서 대역폭은 단위 시간 동안 통신 매체를 통해 송수신할 수 있는 최대 정보량. 처리율과 같이 bps, Mbps, Gbps를 단위로 사용한다.
✅ 패킷 손실 (packet loss)
송수신 중 패킷이 손실된 상황을 의미하는데, 보통 높은 트래픽으로 인해 노드가 순간적으로 처리해야할 패킷이 많아지거나 네트워크상의 장애로 처리하지 못하면 발생한다. 유실된 패킷을 백분위 단위로 표현할 수 있다.
📋 과제
기본 숙제(필수): OSI 모델 및 TCP/IP 모델 차이점을 정리하고, 이를 바탕으로 네트워크 계층 구조를 작성해 보기
OSI 모델은 주로 네트워크 이론적으로 기술하고 이해할 때 사용한다면 TCP/IP 모델은 이론보다는 구현에 중점을 둔 네트워크 참조 모델. TCP/IP는 실제 사용되는 프로토콜에 중점을 두고 계층을 통합하여 구체적으로 정의.
OSI는 이상적인 설계, TCP/IP는 실용적 구현에 가까움.
OSI는 7개 계층, TCP/IP는 4개 계층.
추가 숙제(선택)
(01-1) 확인 문제 2번(p.35) 네트워크에 대한 설명으로 옳지 않은 것을 골라 보세요.
① 네트워크에 대한 이해는 프로그램을 만드는 과정에 도움을 주지 않습니다. ❌
② 네트워크에 대한 이해는 프로그램을 유지 보수하는 과정에 도움을 줄 수 있습니다.
③ 많은 프로그램이 네트워크를 통해 다른 장비와 상호 작용하며 실행됩니다.
④ 채용 시 네트워크에 대한 지식을 강조하거나 검증하는 기업이 존재합니다.
➡️ ①. 프로그램을 만드는 과정에서도 네트워크의 배경지식이 꼭 필요하다.
(01-3) 확인 문제 2번(p.73) 네트워크 참조 모델에 대한 설명으로 옳지 않은 것을 골라 보세요.
① OSI 모델은 7개의 계층으로 통신 과정을 구분합니다.
② TCP/IP 모델은 3개의 계층으로 통신 과정을 구분합니다. ❌
③ 네트워크 참조 모델은 네트워크 구성과 설계를 용이하게 합니다.
④ 네트워크 참조 모델은 네트워크 문제 진단과 해결을 용이하게 합니다.
➡️ ②. 4개의 계층으로 표현한다.