만약 특정 계층에 문제가 발생하더라도 해당 계층만 수정하면 되기 때문에 다른 계층의 장비나 소프트웨어에 영향을 주지 않고도 신속하게 문제를 해결할 수 있다.
1계층 - 물리 계층 (Physical Layer)
전기적·기계적·기능적 특성을 이용해 통신 케이블로 데이터를 전송한다.
전송 단위: bit (0, 1) — 전기적인 on/off 상태를 나타낸다.
데이터만 전송하며, 데이터의 의미나 에러 여부는 고려하지 않는다.
전송 매체: 유선(트위스트 페어, 동축, 광케이블 등), 무선(전파·적외선 등).
대표 장비: 통신 케이블, 리피터, 허브
2계층 - 데이터 링크 계층 (Data Link Layer)
물리 계층을 통해 송수신되는 정보의 오류와 흐름을 관리한다.
포인트 투 포인트 간 신뢰성 있는 전송을 보장한다.
CRC 기반 오류 제어 — CRC는 알고리즘, FCS는 프레임 트레일러에 들어가는 필드(CRC로 계산한 검사값을 넣음). 수신 측에서 같은 CRC를 계산해 비교해 오류를 검출한다.
흐름 제어: 수신 쪽이 처리할 수 없을 때 송신을 잠시 멈춘다.
MAC 주소(물리 주소)로 같은 LAN 안에서 목적지를 찾아 전달한다. 프레임 헤더에 목적지/출발지 MAC이 들어 있다.
대표 프로토콜: 이더넷(Ethernet). 대표 장비: 스위치(L2) — MAC 주소 테이블을 보고 해당 포트로만 프레임을 보냄.
전송 단위: 프레임
3계층 - 네트워크 계층 (Network Layer)
서로 다른 네트워크(서브넷) 간에 패킷을 전달하는 계층.
IP 주소(논리 주소)를 사용해 출발지 → 목적지까지의 경로를 결정한다.
여러 개의 라우터를 거치며, 최적(또는 가능한) 경로로 패킷을 전달한다.
전송 단위: 패킷
특정 IP로 전송 방법
각 라우터·호스트는 라우팅 테이블을 갖는다. (목적지 네트워크/서브넷 → 넥스트 홉 또는 출구 인터페이스)
패킷이 들어오면 목적지 IP와 테이블을 비교해, Longest Prefix Match에 해당하는 경로를 선택한다.
같은 서브넷이면 해당 링크로 직접 전달(같은 LAN이면 ARP로 MAC 구해서 2계층으로), 다른 네트워크면 넥스트 홉 또는 기본 게이트웨이로 넘긴다.
이 과정이 홉마다 반복되어 최종 목적지까지 전달된다.
IPv4 헤더 구조
TTL(Time To Live): 패킷이 라우터를 지날 때마다 감소, 0이 되면 폐기 (루프 방지).
브로드캐스트 주소는 네트워크에 있는 장비 모두에게 한 번에 데이터를 전송하는 데 사용되는 IP 주소이다(UDP).
4계층 - 전송 계층 (Transport Layer)
양끝단 사용자 간 신뢰성 있는 데이터 전달을 담당한다.
오류 검출·복구, 흐름 제어, 중복 검사.
흐름제어 : 수신보다 송신이 빠르면 버퍼 오버플로우 발생 -> 송신 속도 조절한다 (방식 : Sliding Window)
혼잡제어 : 네트워크 자체가 막히는 상황을 제어한다.
TCP가 전송 속도를 조절하는 과정 cwnd (congestion window)
Slow Start : 초기 네트워크 대역폭을 빠르게 탐색, 대역폭이 지수로 증가
Congestion Avoidance : 혼잡이 발생하지 않도록 천천히 증가(선형적). AIMD(Additive Increase Multiplicative Decrease): 정상 시 cwnd를 일정량씩 더하고(+1), 손실 시 절반으로 줄임(×1/2).
Fast Retransmit : 패킷 손실을 빠르게 감지하고 재전송 (ACK로 도착 확인)
Fast Recovery : 속도 절반으로 줄이고 복구 cwnd / 2 로 반토막 냄
데이터 전송을 위해 포트가 사용된다.
전송 단위: 세그먼트
TCP는 라우터(3계층) 버퍼 overflow로 인한 패킷 손실을 네트워크 혼잡의 신호로 간주한다.
네트워크 내부 상태를 확인 할수 없음
3-way handshake (연결 생성)
Client Server
| ---- SYN -------> | # 연결 요청
| <--- SYN+ACK ---- | # 요청 수락
| ---- ACK -------> | # 서버 SYN 확인
SYN는 TCP 헤더의 플래그(flag)이며 연결을 요청 하는 비트 이다
SYN 패킷에는 Sequence Number가 항상 포함된다.
4-way handshaking (연결 종료)
Client Server
| ---- FIN -------> |
| <---- ACK ------- |
| <---- FIN ------- |
| ---- ACK -------> |
소켓
네트워크에서 프로세스가 통신하기 위한 식별자이자, 애플리케이션이 네트워크에 접근하는 끝단(인터페이스) 이다.
IP 주소 + Port의 조합이다.
한 컴퓨터(동일 IP)에서 여러 프로그램이 동시에 통신하므로
즉, 하나의 TCP 연결은 “내 IP:내 포트 ↔ 서버 IP:서버 포트” 의 조합으로 구분된다.
구분
IP
Port
클라이언트 (나)
192.168.0.10
52341 (랜덤, Ephemeral Port)
서버 (웹사이트)
142.250.207.14
443 (HTTPS)
5계층 - 세션 계층 (Session Layer)
세션은 통신을 하나의 논리적 작업 단위로 묶는 개념이다
응용 프로그램 간의 연결, 유지, 종료를 관리한다
에러가 발생하면 **동기화 지점(체크포인트)**부터 이어받아 재개할 수 있다 (처음부터 재전송하지 않아도 됨)
4계층은 전송(연결/신뢰성)(연결 통로), 5계층은 그 위에서 세션(논리적 대화 단위)을 운영한다
실무에서는 다른 계층으로 기능이 분산됨(연결 유지 → 4계층(TCP), 세션 상태/복구 → 7계층(애플리케이션))
대화 제어 (Dialogue Control)
데이터가 전송되는 형태를 결정한다.
단방향(Simplex): 한쪽에서만 전송 가능 (예: TV 방송)
반이중(Half-Duplex): 양방향 가능하지만 한 번에 한쪽씩만 (예: 무전기)
전이중(Full-Duplex): 양방향 동시 전송 가능 (예: 전화, TCP)
6계층 - 표현 계층 (Presentation Layer)
정보를 넘겨주는 역할, 데이터를 표현 하는 부분이다.
송신자와 수신자가 같은 데이터를 같은 형식으로 이해 하도록 맞추는 역할을 한다.
주요 역할
인코딩/디코딩: 문자 집합 변환 (UTF-8, ASCII 등)
직렬화/역직렬화: 데이터를 전송 가능한 형태로 변환 (JSON, XML, Protobuf 등)
압축/해제: 전송 효율을 위해 데이터를 압축 (gzip 등)
암호화/복호화: 데이터 기밀성을 위한 변환 (개념상 6계층 역할)
예시
TLS (암호화 프로토콜)
UTF-8, ASCII (문자 인코딩)
JPEG, PNG (데이터 포맷)
7계층 - 응용 계층 (Application Layer)
사용자가 사용하는 애플리케이션이 네트워크 서비스에 접근하도록 해주는 통신 규약(Protocol)들의 집합
핵심 역할: 사용자 인터페이스 제공(예: 주소창에 URL 입력), 서비스 식별(웹/메일/파일 전송 등), 응용 프로세스 간 규칙 정의(요청/응답, 데이터 형식 등)