OSI 7계층 (Open Systems Interconnection 7 Layers)
네트워크 통신이 일어나는 과정을 7단계로 나눈 국제 표준 모델로, ISO(국제 표준화기구)에서 정의
각 계층은 네트워크에서 데이터가 어떻게 생성, 전송, 수신 되는지 단계별로 역할을 나눔
계층 | 대표 장비/ 프로토콜 |
물리 계층 | 허브, 리피터, 케이블 |
데이터 링크 계층 | 스위치, 브리지, 랜카드 |
네트워크 계층 | 라우터, IP, ICMP |
전송 계층 | TCP, UDP |
세션 계층 | NetBIOS, SAP |
표현 계층 | JPEG, MPEG, ASCII |
응용 계층 | HTTP, FTP, SMPTP |
계층을 나눈 이유 ❓
흐름을 한 눈에 알아보기 쉽고,
특정한 곳에 이상이 생기면 다른 단계의 장비 & 소프트웨어를 건들지 않고 이상이 생간 단계만 고칠 수 있기 때문에
1) 물리 계층 (Physical Layer)
데이터를 0과 1의 비트로 해석해서, 이를 전기적 신호, 광 신호, 전파 등으로 바꿔 전달하는 계층
실제 데이터를 어떻게 전송할 것인가 에 집중 (무슨 내용인지 신경X)
주요 특징
- 전송 매체: 유선(랜선, 광케이블), 무선(Wi-Fi, Bluetooth 등)
- 장비 예시: 허브, 리피터, 케이블, 모뎀, 네트워크 카드(NIC)의 하드웨어 부분
- 데이터 단위: `비트(bit)`
- 오류 제어 X, 주소 X, 내용 이해 X
- 그냥 0과 1을 물리적으로 주고받기만 함
2) 데이터 링크 계층 (Data Link Layer)
물리 계층에서 받은 비트 데이터를 프레임 단위로 변환하여 처리.
이 과정에서 CRC 기반 오류 검출과 흐름 제어를 통해 안전한 데이터 전달을 지원
`MAC 주소`를 기반으로 통신
같은 네트워크 내(Point to Point) 장치 간 정확한 전송을 담당하며, 스위치(Switch) 가 이 계층에서 동작하는 대표 장비
MAC 주소 (Media Access Control 주소)
물리적 장비에 할당하는, 네트워크에서 각 장치를 고유하게 식별하는 주소
네트워크 카드나 라우터 등 네트워크 장비에 내장된 하드웨어에 설정
물리적 네트워크 장치에 대한 주소이므로 전 세계 어디서나 고유함
CRC 오류 검출 (Cycle Redundancy Check)
데이터를 보낼 때 계산한 `검사값`을 함께 보내고,
받는 쪽에서 다시 계산하면서 데이터에 오류가 있는지 확인하는 방식
택배 상자 비유
📤 송신
- 예시 : 친구한테 택배를 보낼 때, 안에 물건을 넣고 "이 상자의 무게는 3.4kg이야!" 라고 써둠
- 실제 : 보낼 데이터에 데해 나눗셈을 해서 CRC 검사값 생성 (본 데이터 + 검사값)
📥 수신
- 예시 : 친구가 상자를 실제로 재봤을 때 무게가 3.4kg이 아니면 뭔가 빠졌거나 이상이 있다는 것
- 실제 : 받은 데이터에 전체에 대해 다시 나눗셈 연산 → 나머지가 0이 아니면 데이터 변형 有 (오류!)
→ CRC는 데이터에 '검사값'이라는 무게표 같은 걸 붙여서, 받는 쪽이 다시 계산해보고 문제가 생겼는지 파악
나눗셈 방식 예시 👇🏻
용어 | 설명 |
데이터 | 실제 보내려는 이진수 데이터 |
생성 다항식 (Generator) | 나눗셈에 쓰이는 이진수 값 (약속된 값, 송/수신자가 모두 알아야 함) |
CRC | 데이터에 덧붙이는 나머지 값 (오류 검사용) |
- 보낼 데이터: `11010011101100`
- 생성 다항식 : `1011` (4비트 = 3자리 CRC 생성)
실제로는 훨씬 더 긴 이진수들이 사용됨
1) 데이터 뒤에 0을 덧붙임
생성 다항식이 4비트이므로, 데이터 뒤에 3개의 0을 덧붙임 (n-1)
11010011101100 → 11010011101100 000
2) 나눗셈 연산 (XOR)
CRC는 일반 나눗셈이 아닌, XOR 연산으로 나눗셈
1이 시작하는 곳마다 generator(1011) 와 XOR 연산을 반복해나가면서 계속 앞에 0이 나오도록 만들어 감
XOR: 두 비트가 다르면 1, 같으면 0
11010011101100000 ÷ 1011
→ 나눗셈 XOR 계산을 반복
→ 마지막 나머지 = 100 (3자리)
3) 결과
- 원래 데이터: 11010011101100
- CRC 나머지: 100
- 전송할 실제 데이터: 11010011101100 100 ✅
4) 수신측
수신자는 받은 데이터 (11010011101100100) 을 다시 1011로 나눠서 나머지가 0이면 OK
나머지가 0이 아니면 오류 발생이라고 판단함.
3) 네트워크 계층 (Network Layer)
- 경로(Route)와 주소(IP)를 정하고 `패킷`을 전달해주는 역할
- 즉, 목적지까지 가장 안전하고 빠르게 데이터를 보내는 기능, 최적의 경로를 설정해야 함
- 상대방이 제대로 받았는지 보장X, `비연결형`적 특징
주요 기능
- 📍 논리 주소 지정 : MAC 주소는 물리적이나, IP 주소는 네트워크 구조를 고려한 논리적 주소
- 🛣️ 라우팅 : 여러 네트워크 사이 최적 경로 결정 (라우터 수행)
- ✈️ 패킷 포워딩 : 목적지 IP에 따라 다음 목적지로 데이터 전송
- 🧩 단편화 : 너무 큰 패킷을 쪼개서 보냄, 수신 측에서 재조립
주요 프로토콜
IP (Internet Protocol) | 패킷에 출발지 / 목적지 IP 주소 붙임 |
ICMP ( Internet Control Message Protocol ) | 네트워크 오류, 상태 등을 알려줌 (`ping` 명령어에 사용) |
ARP ( Address Resolution Protocol ) | IP ↔ MAC 주소 변환 프로토콜 (계층 사이 위치) |
- IP는 누구에게 보낼지 정함
- ICMP는 가다가 문제 생겼는지 알려줌
- ARP는 네트워크 내부에서 "얘 IP 주소 누구 MAC이야?" 하고 물어봄
4) 전송 계층 (Transport Layer)
- 애플리케이션 계층 간의 `신뢰성` 있는 데이터 전송을 책임짐
- 네트워크 계층이 호스트 간 통신 (IP 주소 기반)을 제공한다면,
전송 계층은 호스트 내 애플리케이션 간 통신 (포트 번호 기반) 제공 - 오류검출 & 복구, 흐름제어와 중복 검사 수행
- 대표 프로토콜: TCP / UDP
주요 기능
- 프로세스 간 통신 제공
포트 번호를 사용해, 하나의 컴퓨터 내에서 여러 프로그램 간 데이터 통신 가능(80번 = 웹서버, 443번=HTTPS) - 애플리케이션 구분
포트 번호로 어떤 애플리케이션에 데이터 전달할지 식별 - 다중화 및 역다중화
여러 애플리케이션에 데이터를 전송할 수 있고, 수신 시 정확한 앱으로 전달 - 에러 검출
데이터가 중간에 손상됐는지 검출
TCP VS UDP
항목 | TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) |
연결 방식 | 연결 지향 (3-way handshake) | 비연결 지향 |
신뢰성 | 높음 (재전송, 순서 보장) | 낮음 (순서, 재전송 없음) |
전송 순서 보장 | O | X |
에러 처리 | O (재전송, 순서 체크 등) | O (오류만 검출, 처리 X) |
속도 | 느림 (신뢰성 확보 비용 있음) | 빠름 (단순한 구조) |
헤더 크기 | 큼 (20바이트 이상) | 작음 (8바이트 고정) |
용도 예시 | 웹, 이메일, 파일 전송 (HTTP, FTP, SMTP 등) | 스트리밍, 게임, VoIP, DNS 등 |
TCP
TCP 택배 기사 행동
- 출발 전에 전화해서 받을 준비됐는지 확인함 → 🧠 3-way handshake
- 부품 하나하나에 번호를 붙여서 순서를 지정함
→ "이건 1번 머리, 2번 몸통, 3번 팔, 4번 다리!" - 각각 부품을 따로 포장해서 보내되,
- 배송 완료 여부를 확인하고,
- 중간에 잃어버리면 재배송함.
- 친구가 받을 때, 순서대로 다시 조립 가능하도록 정리함.
정확하고, 순서대로 모든 부품을 받아서 조립 가능
단점: 시간이 좀 걸릴 수 있음.
UDP
UDP 기사 행동
- 그냥 아무 순서 없이 부품들을 빠르게 날려 보냄
→ “머리부터 날려! 그다음 팔! … 다리!” - 부품이 도착 순서도 불확실하고,
- 중간에 떨어져 잃어버려도 다시 보내지 않음.
- 친구는 받은 것만 가지고 대충 조립하거나, 일부 빠진 채로 사용해야 할 수도 있음.
빠르게 도착하지만, 순서가 틀릴 수 있고 부품이 빠질 수 있음
5) 세션 계층 (Session Layer)
통신을 위한 세션(연결) 설정, 유지 그리고 종료하는 계층
해당 연결 내에서 데이터의 흐름을 동기화 & 관리
주요 기능
기능 | 설명 |
🟢 세션 설정 (Session Establishment) | 통신할 두 장치 간 세션을 시작 (예: 로그인 요청) |
🟡 세션 유지 (Session Management) | 연결이 유지되는 동안 통신 흐름 관리 |
🔴 세션 종료 (Session Termination) | 통신이 끝나면 연결을 정상적으로 끊음 (예: 로그아웃) |
⏱️ 동기화(Synchronization) | 큰 데이터 전송 중간중간에 **동기점(checkpoint)**을 만들어서 오류나 중단 시 재전송 시점 파악 가능 |
🧭 순서 제어 | 누가 언제 데이터를 보낼지 제어하는 대화 순서 관리 (dialog control) |
예시
1. 영상 회의 중 연결 유지
세션 계층이 통신 세션을 유지하여 화상 회의가 끊기기 않게 도움
2. 파일 다운로드 중 끊김
중간에 네트워크가 끊긴 경우 세션 계층이 동기점 기준으로 이어서 받을 수 있게 함
3. 로그인 / 로그아웃 시스템
로그인하면 세션을 열고 로그아웃하면 세션을 닫음 → 담당: 세션 계층
6) 표현 계층 (Presentation Layer)
데이터의 표현 형식을 표준화 하는 역할
애플리케이션 계층과 세션 계층 사이에서 중간 번역자 역할
주요 기능
1. 데이터 포맷/문자 인코딩 변환
- 서로 다른 시스템 간에 문자 인코딩 방식이나 포맷이 다를 경우 통신 오류가 발생할 수 있음
- 표현 계층은 문자 인코딩 변환(예: ASCII ↔ UTF-8), 데이터 포맷 변환(예: JSON ↔ XML)을 통해 이 문제를 해결함
- 이는 이기종 플랫폼 간 통신에서 특히 중요
2. 데이터 암호화 및 복호화
- TLS/SSL 암호화는 전통적으로 표현 계층에 위치시킴 (비록 TCP/IP에서는 계층 명확하게 구분하지 않지만)
- 민감한 데이터(로그인 정보, 금융 정보 등)를 안전하게 전달하기 위해 암호화된 바이너리 포맷으로 변환
- 복호화는 수신 측에서 데이터를 원래의 의미 있는 상태로 되돌리는 과정
3. 데이터 압축 및 해제
- 전송 효율성을 위해 데이터를 압축 (예: ZIP, gzip, JPEG 등)
- 표현 계층은 압축 알고리즘을 사용하여 데이터의 크기를 줄이고, 수신 측에서는 이를 복원
7) 애플리케이션 계층 (Application Layer)
OSI 모델의 최상위 계층으로, 사용자 또는 *`애플리케이션`이 네트워크에 접근할 수 있도록 인터페이스를 제공하는 계층
📌 애플리케이션 = 네트워크 서비스를 이용하는 소프트웨어 일부분
주요 기능
기능 | 설명 |
📡 네트워크 서비스 제공 | 사용자에게 의미 있는 네트워크 기반 기능 제공 (e.g. 웹, 이메일, 파일 전송 등) |
🔌 프로토콜 기반 통신 | HTTP, FTP, SMTP, DNS, POP3 등 다양한 프로토콜 사용 |
🧾 요청/응답 처리 | 클라이언트 요청 처리, 서버 응답 송신 등 상호작용 수행 |
🌐 리소스 접근 | URL, URI, 파일 등 외부 리소스 식별 및 접근 지원 |
포함 프로토콜
FTP (File Transfer Protocol) | 장치와 장치 간의 파일을 전송하는 데 사용되는 표준 통신 프로토콜 |
SSH (Secure Shell) | 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜 |
HTTP (HyperText Transfer Protocol) | World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는데 사용되는 프로토콜 |
SMTP (Simple Mail Transfer Protocol) | 전자 메일 전송을 위한 인터넨 표준 통신 프로토콜 |
DNS (Domain Name Server) | 도메인 이름과 IP주소를 매핑해 주는 서버 |
참고
🗼 OSI 7계층 모델 - 핵심 총정리
OSI 7계층 OSI 7계층은 네트워크 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. OSI 7계층을 나눈 이유는? 흐름을 한눈에 알아보기 쉽고 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장
inpa.tistory.com