🌐 네트워크(Network) 정리
네트워크(Network)란 전송 매체를 통해 서로 연결된 장치들이 데이터를 교환하는 시스템의 모음이다.
각 장치는 동일한 프로토콜(Protocol) 을 사용해 데이터를 주고받는다.
- L2 스위치로 연결된 소규모 네트워크(LAN)들이 모여 더 큰 네트워크를 구성할 수 있다.
- 서로 다른 네트워크를 연결하기 위해 라우터(Router, L3 장비) 같은 중개 장비가 필요하다.
왜 프로토콜이 필요한가?
컴퓨터 내부에서만 처리되는 경우에는 데이터 전달 방식이나 해석 방식에 대한 약속이 필요 없다.
하지만 현실의 통신 대상은 대부분 물리적으로 분리된 다른 장치이고, 각 장치는 서로 다른 하드웨어/OS/소프트웨어를 사용할 수 있다.
그래서 두 장치가 정확히 데이터를 주고받고 해석하려면
“우리는 이렇게 통신하자”
라는 형식과 절차에 대한 공통된 약속, 즉 프로토콜(Protocol) 이 필요하다.
서로 다른 네트워크 연결: 라우터의 역할
서로 다른 네트워크(LAN ↔ LAN, LAN ↔ WAN)를 연결할 때는 라우터(L3 장비) 를 사용한다.
라우터는:
- 네트워크 간 데이터 경로를 설정하고
- 목적지 주소(IP)에 따라 패킷을 전달한다.
라우터는 흔히 게이트웨이(Gateway) 라고도 불리며,
내부 네트워크와 외부 네트워크를 연결하는 “출입구” 역할을 한다.
1. 네트워크 핵심 용어
1) 인터페이스(Interface)
시스템과 전송 매체의 연결 지점에 대한 규격
- 데이터 단말 장치(DTE) ↔ 데이터 통신 장치(DCE) 접속 규격
- 대표 예: NIC(Network Interface Card)
2) 프로토콜(Protocol)
시스템 간 데이터를 교환할 때 사용하는 통신 규약
- 무엇을 / 어떻게 / 언제 / 어떤 방식으로 통신할지 정의
- 대표 전송계층 프로토콜: TCP, UDP
3) 주소(Address)
두 단말이 통신하기 위한 조건
통신이 성립하려면:
- 두 단말이 네트워크에 연결되어 있어야 하고
- 공통 프로토콜을 사용하며
- 상대방의 주소를 알고 있어야 하고
- 방화벽 등 접근이 허용되어야 한다.
통신 흐름 예시:
DNS 요청 → IP 확인 → 패킷 전송 → 라우터 → 서버 도달
주소의 종류
- IP 주소: 장치를 구분하는 논리적 주소 (변할 수 있음)
- MAC 주소: NIC에 할당된 물리적 고유 주소 (보통 고정)
- 포트 번호: 한 머신 안에서 서비스를 구분하는 식별자 (ex. 80, 443, 22)
2. IP 주소(IP Address)
IP 주소는 네트워크 계층(L3)의 IP 프로토콜이 호스트를 구분하기 위해 사용하는 숫자 주소다.
- 인터넷 연결을 위해서는 반드시 IP가 필요
- IPv4는 32비트
- 표기 방식: 8비트씩 끊어 0~255 10진수로 표현
예) 192.168.0.1
또한 IP의 유일성 관리를 위해 국제 표준 기관이 주소를 관리/할당한다.
공인 IP vs 사설 IP
공인 IP(Public IP)
- 전 세계적으로 유일
- 한국에서는 공인 IP 관리에 KISA(인터넷진흥원)가 관여
- IPv4는 32비트라 주소가 부족함
사설 IP(Private IP)
- IP 부족 문제 해결을 위해 특정 대역을 사설로 지정
- 공유기(라우터)에 공인 IP 1개 할당
- 내부 여러 장치에는 DHCP로 사설 IP 자동 할당
사설 IP는 내부에서만 의미가 있으므로
다른 네트워크에서는 동일한 주소가 중복될 수 있음 (고유하지 않음)
RFC 1918 사설 IP 범위:
- 10.0.0.0 ~ 10.255.255.255 (10/8)
- 172.16.0.0 ~ 172.31.255.255 (172.16/12)
- 192.168.0.0 ~ 192.168.255.255 (192.168/16)

IP 주소 할당 방식
- 고정 IP: 재부팅해도 IP가 유지됨 (주로 공인 IP)
- 동적 IP(DHCP): DHCP로 가용 IP를 자동 할당 (사설 IP에서 흔함)
3. SSH 접속(네트워크 구성 요소)
SSH(Secure Shell)
- 원격 컴퓨터 로그인/명령 실행/파일 복사 기능 제공
- 기본 포트: 22
- 통신 내용이 암호화되어 도청되더라도 해석이 어려움
터미널 에뮬레이터
SSH, Telnet 등을 이용해 접속하는 터미널 프로그램
4. NAT와 포트 포워딩
사설 IP 환경의 핵심 문제:
- 내부 주소가 중복 가능하므로
- 외부에서 목적지를 명확히 지정하기 어려움
이를 해결하는 대표 기법이:
- NAT(Network Address Translation)
→ 사설 IP를 공인 IP처럼 외부 통신에 활용 - 포트 포워딩(Port Forwarding)
→ 외부 요청을 내부 특정 장치/서비스로 전달
5. 네트워크 계층 모델
서로 다른 호스트가 통신하려면 통신 방식을 표준화해야 한다.
ISO는 이를 위해 OSI 7계층 모델을 제안했다.
OSI 7계층 모델(Open System Interconnection)
- 통신 기능을 7개의 계층으로 모듈화
- 데이터는 송신 측에서 상위→하위로 내려가고
- 수신 측에서 하위→상위로 올라간다.
다만 실제 인터넷 구현은 보통 더 단순한 구조를 사용한다.
TCP/IP 인터넷 계층 모델
인터넷에서는 보통 TCP/IP 4~5계층 구조를 사용한다.
6. 패킷 교환(Packet Switching)
현대 네트워크는 대부분 패킷 교환 방식 기반이다.
- 송신 데이터는 패킷으로 분할
- 각 패킷은 독립적으로 라우팅되어 전달됨
장점
- 전송 대역폭을 효율적으로 사용
- 연결 가능한 호스트 수가 사실상 무제한
단점
- 패킷마다 경로가 달라질 수 있어 지연이 가변적
- 네트워크 상황에 따라 지터(Jitter)가 커질 수 있음
7. 네트워크 규모 분류
호스트 간 거리 기준:
- LAN: 근거리
- MAN: 도시 규모
- WAN: 광역(국가/대륙)
8. 인터네트워킹과 게이트웨이
둘 이상의 서로 다른 네트워크를 연결하는 것 = 인터네트워킹
연결을 위한 장비를 넓게는 게이트웨이라고 부른다.
- L1 리피터: 신호 증폭/전달(물리 계층)
- L2 스위치: MAC 기반 프레임 전달(데이터링크)
- L3 라우터: IP 기반 라우팅 + 네트워크 연결(네트워크 계층)
9. L2 계층의 Sub-layer: LLC / MAC
L2 데이터링크 계층은 보통 두 개의 서브 레이어로 나뉜다.
LLC(Link Layer Control)
- 상위(L3)와 하위(MAC) 사이 인터페이스 역할
- 흐름제어 같은 기능이 등장하는 영역
MAC(Medium Access Control)
- MAC 주소 관리
- 매체 접근 제어(언제 전송할지 결정)
10. CSMA/CD (이더넷 접근 + 충돌 처리)
CSMA/CD: Carrier Sense Multiple Access / Collision Detection
공유 매체에서 “언제 전송할지”와 “충돌 해결”을 정의한다.
- Carrier Sensing: 매체 사용 여부 감지
- Collision Detection: 충돌 발생 시 복구 수행
※ 요즘은 스위치 기반 환경(Full-duplex)이라 충돌 자체가 거의 사라졌지만, 개념은 시험에 많이 나옴.
CSMA 접근 방식 3종
- 1-persistent: 비면 즉시 전송 → 충돌 확률 높음
- Non-persistent: 바쁘면 랜덤 대기 후 재시도 → 충돌 확률 낮음
- p-persistent: 확률 p로 전송 시도 → 조건에 따라 최적화 가능
11. LLC 계층의 흐름 제어(Flow Control)
흐름 제어는 수신 버퍼 오버플로우를 막기 위해 송신 속도를 조절하는 것이다.
핵심 메커니즘은 슬라이딩 윈도우(Sliding Window Protocol).
대표 알고리즘
- Stop-and-Wait(SW): 1개 보내고 ACK 대기 (단순하지만 비효율)
- Go-Back-N(GBN): N개 연속 전송 가능, 오류 시 뒤에 것까지 재전송
- Selective Repeat(SR): 오류 난 프레임만 재전송 (효율적)
- HARQ: FEC + ARQ 결합 (일부 오류는 수신 측에서 복구)
LLC 계층은 L2 레이어(데이터 링크 계층)의 어퍼 서브레이어(Upper Sublayer)라고 부릅니다.
여기서 수행하는 기능은, 우리가 일반적으로 "L2 계층이 이런 기능을 할 것이다"라고 알고 있던 것들을 실제로 처리하는 역할을 합니다.
대표적인 기능 중 하나가 플로우 컨트롤(Flow Control, 흐름 제어) 입니다.
흐름 제어는 나중에 배우게 될 혼잡 제어(Congestion Control) 와 약간 헷갈릴 수 있어요.
간단히 말하면, 데이터를 너무 많이 보내면 안 될 때가 있기 때문에, 그런 이벤트가 탐지되면 데이터 전송 속도를 줄이는 것이 바로 흐름 제어입니다.
그래서 혼잡 제어와 흐름 제어는 비슷하게 보일 수 있는데, 차이는 명확합니다.
흐름 제어는 송신자(Sender) 와 수신자(Receiver) 두 단말 사이의 문제입니다. 예를 들어, 송신 속도와 수신 속도가 맞지 않을 때, 수신자가 감당할 수 있는 속도를 넘어서게 되면 버퍼 오버플로우(Buffer Overflow) 가 터질 위험이 있어요. 그러면 수신자가 신호를 보내고, 송신자는 자신의 전송 속도를 낮춰야 합니다. 반면에, 혼잡 제어는 네트워크 전체를 대상으로 합니다. 예를 들어, 트리플 듀팩(Triple Duplicate ACK)이 발생하거나 RTT가 길어지는 상황에서, 네트워크 혼잡을 감지하고, 전송 윈도우 크기(Congestion Window Size) 를 절반으로 줄인 뒤, 다시 슬로우 스타트(Slow Start) 로 재조정하는 방식이죠.
흐름 제어의 핵심 기술은 슬라이딩 윈도우 프로토콜(Sliding Window Protocol) 입니다.
슬라이딩 윈도우 프로토콜은 ACK(수신 응답) 없이도 전송 가능한 최대 프레임 수를 알려줍니다. 송신자는 주어진 윈도우 크기만큼 데이터를 보내고, 모두 보냈으면 ACK가 올 때까지 기다립니다. ACK가 도착하면, 윈도우를 오른쪽으로 이동(slide)시키면서 새로운 데이터를 다시 보낼 수 있게 됩니다.
또, 오토매틱 리퀘스트(ARQ, Automatic Repeat reQuest) 라는 개념도 배웠죠.
오류 처리(Error Handling) 는 네트워크에서 대부분 재전송(retransmission) 으로 해결합니다. 오류는 크게 두 가지입니다: 데이터 손실 오류(Loss Error): 수신자가 감지할 수 없기 때문에, 송신자가 타이머를 걸어두고 타임아웃이 발생하면 재전송합니다. 데이터 변형 오류(Corruption Error): 수신자가 CRC 검사를 통해 에러를 감지할 수 있어요. 이 경우에는 NAK(부정 응답)를 보내거나, ACK를 보내지 않거나, 시퀀스 넘버 기반으로 문제를 알립니다.
따라서 ARQ는 결국 자동화된 재전송 요청 메커니즘입니다.
흐름 제어 알고리즘과 ARQ는 서로 연결되어 있습니다.
흐름 제어 기법에서 ACK는 단순히 "정상 수신" 의미뿐 아니라, "전송 허가권" 의 의미도 가집니다. 예를 들어, 윈도우 크기만큼 데이터를 모두 보냈다면, 송신자는 추가 전송을 멈추고 ACK를 기다립니다. ACK가 오면, "데이터가 잘 도착했다"는 의미와 함께, "이제 추가 전송이 허용된다"는 의미로 해석하여 윈도우를 슬라이드시키죠.
흐름 제어 방식 네 가지는 다음과 같습니다
Stop-and-Wait (SW) 구조는 간단하지만 성능이 안 좋습니다. RTT 동안 데이터 하나밖에 못 보내서 비효율적입니다. Go-Back-N (GBN) 에크 없이 연속으로 보낼 수 있는 패킷 개수가 1보다 커서, 전송량이 많아집니다. 하지만 리시버 윈도우 사이즈가 1이라, 중간에 순서가 틀리면 이후 모든 패킷을 버리고, 송신자는 거기서부터 전체 재전송해야 합니다. 그래서 Go-Back-N은 불필요한 대량 재전송(고레겐, "고생") 문제가 있습니다. Selective Repeat (SR) GBN의 단점을 해결했습니다. 수신자는 버퍼를 이용해 순서가 안 맞아도 일단 저장합니다. 중간 구멍(빠진 패킷)만 별도로 요청해서 재전송 받습니다. 효율이 매우 좋아졌죠. Hybrid ARQ (HARQ) 특히 5G 환경에서 많이 쓰입니다. ARQ에 FEC(Forward Error Correction, 전진 오류 수정) 을 결합한 방식입니다. 에러가 적을 때는 리시버가 혼자 알아서 복구하고, 너무 많으면 재전송을 요청하는 하이브리드 방식입니다.
12. L3 라우팅 / L4 TCP-UDP / TCP 혼잡제어
- L3: 라우팅(정적, 동적, 소스 라우팅 등)
- L4: TCP/UDP
- TCP 혼잡 제어: End-to-End 방식 중심
(타임아웃, 트리플 중복 ACK 등으로 혼잡 판단)
'CS' 카테고리의 다른 글
| [CS - 컴퓨터구조] 컴퓨터가 이해하는 정보 (0) | 2025.12.18 |
|---|---|
| [CS - 네트워크] API 호출로 보는 네트워크 (0) | 2025.12.17 |
| [CS - 컴퓨터구조 ] 컴퓨터 구조 공부, 첫 걸음! (0) | 2025.12.17 |
| [DATA STRUCTURES - Graph] Prim Algorithm — “정점 중심” Greedy MST (0) | 2025.12.16 |
| [DATA STRUCTURES - Graph] Kruskal’s Algorithm (크루스칼) — “간선 중심” Greedy MST (0) | 2025.12.16 |