1) OSI 7 계층
▶ OSI 7계층이란?
- OSI(Open Systems Interconnection) 모델 : 네트워크 통신 과정을 7단계 계층으로 나누어 설명하는 국제 표준 모델
- 서로 다른 시스템, 장비, 프로토콜이 표준화된 방식으로 통신할 수 있도록 하기 위한 설계 기준!
- 즉, 전 세계에 흩어져 있는 다양한 하드웨어, 소프트웨어 등이 서로 다른 회사/국가/환경에서도 같은 언어(프로토콜)로 소통할 수 있도록 해주는 설계 기준
▶ OSI 7계층이 왜 필요할까?
- 복잡한 시스템을 계층적으로 쪼개기 위해
- 네트워크는 전기 신호부터 웹 API 까지 범위가 너무 넓음
- 이걸 하나의 거대한 단일 스택으로 두면 설계 어려움 + 문제 원인 추적 불가능!
- 그래서 OSI는 역할 단위로 기능을 분해하여 각 층을 독립된 책임 단위로 나눠서 생각 -> 각 계층은 하나의 기능 집합만 책임!
- 이로 인해 문제 발생 시 계층 단위로 분리하여 정확히 진단할 수 있음
- 예시 : 웹 접속이 안될 때
- L7 문제 -> HTTP 오류
- L4 문제 -> 포트/Handshake 문제
- L3 문제 -> 라우팅/게이트웨이 문제
- L2 문제 -> ARP/MAC 충돌
- L1 문제 -> 케이블/신호 문제
- 예시 : 웹 접속이 안될 때
- 계층간 독립성 확보
- 각 계층은 자기 역할만 담당하고, 바로 아래 계층이 제공하는 기능만 사용
-> 서로의 내부 구조나 동작 방식을 알 필요 없음 - 특정 계층에 문제가 생겨도 나머지 계층은 그대로 동작함
- 예시 : 물리 계층(L1)이 케이블에서 광섬유로 바뀌어도, TCP나 HTTP 같은 상위 계층은 변경 없이 그대로 사용 가능
- 즉, 부분 교체나 수정이 가능해져 전체 시스템의 유지 보수가 훨씬 쉬워진다 ~
- 각 계층은 자기 역할만 담당하고, 바로 아래 계층이 제공하는 기능만 사용
▶ OSI 7계층
| 계층 | 이름 | 기본 역할 |
| 7 | 응용 계층 (Application) | 사용자, 앱이 사용하는 네트워크 서비스 |
| 6 | 표현 계층 (Presentation) | 데이터 형식/인코딩/암호화 |
| 5 | 세션 계층 (Session) | 연결 유지 및 관리 |
| 4 | 전송 계층 (Transport) | 신뢰성, 포트 기반 통신 |
| 3 | 네트워크 계층 (Network) | IP 기반 라우팅 |
| 2 | 데이터 링크 (Data Link) | MAC 기반 통신, 프레임 생성 |
| 1 | 물리 (Physical) | 전기/광/무선 신호 |
1. 물리 계층 (Physical Layer)
- 가장 하위 계층으로, 데이터를 전기적·광학적 신호의 형태로 전송하는 역할을 담당
- 데이터는 비트(0과 1) 단위로 표현되며, 케이블이나 무선 매체를 통해 그대로 전달됨
- 이 계층은 단순히 신호를 내보내고 받는 기능만 수행하며, 데이터의 구조나 오류 여부는 신경 쓰지 않음
- 전송 단위 : 비트(bit
- 대표 장비 : 케이블, 허브, 리피터, 광 모듈(SFP/QSFP 등)
- 즉, 비트를 신호로 바꿔서 실제 매체로 전송하는 역할을 담당하는 계층
2. 데이터링크 계층 (Data Link Layer)
- 같은 네트워크(같은 LAN) 내에서 장치 간 데이터를 안정적으로 전달하는 역할
- 프레임 단위로 데이터를 주고받으며, MAC 주소를 이용해 목적지를 식별함
- 오류 검출, 흐름 제어, 매체 접근 제어를 통해 기본적인 신뢰성을 제공
- 전송 단위 : 프레임(Frame)
- 대표 프로토콜 : Ethernet, Wi-Fi, ARP
- 대표 장비 : 스위치, 브릿지, 무선 LAN 컨트롤러 등
- 즉, 같은 네트워크 안에서 프레임을 안정적으로 전달하는 계층
3. 네트워크 계층 (Network Layer)
- 서로 다른 네트워크들 간에 데이터를 전달하기 위해 IP 주소를 기반으로 라우팅하는 역할
- 최적의 경로를 선택해 목적지까지 전달함
- 전송 단위 : 패킷(Packet)
- 대표 프로토콜 : IPv4/IPv6, ICMP, NAT 등
- 대표 장비 : 라우터, L3 스위치, 방화벽(정책 기반 L3 제어)
- 즉, IP 주소를 이용해 서로 다른 네트워크 사이를 이동하도록 경로를 결정하는 계층
4. 전송 계층 (Transport Layer)
- 종단 간(End-to-End) 통신을 책임지는 계층으로, 포트 번호를 사용해 애플리케이션을 구분함
- TCP는 신뢰성(순서 보장, 재전송, 흐름 제어 등)을 제공하고, UDP는 가볍고 빠른 비연결형 전송을 제공함
- 연결 관리(3-way handshake), 혼잡 제어, 재전송 등 핵심적인 통신 안정성을 담당
- 전송 단위 : 세그먼트(TCP), 데이터그램(UDP)
- 대표 프로토콜 : TCP, UDP
- 대표 장비 : 방화벽 등
- 즉, 종단 간 연결과 신뢰성을 담당하며 TCP/UDP를 통해 데이터를 전달하는 계층
5. 세션 계층 (Session Layer)
- 두 시스템 간의 통신 세션을 설정하고 유지하고 종료하는 역할
- 데이터 교환 중 중단되었을 때 재전송 위치를 관리하거나, 대화 방식(전이중/반이중 등)을 조정함
- 현대 프로토콜에서는 별도 구현보다는 L4/L7에서 처리되지만, 개념적으로는 세션 관리 기능이 여기에 속함
- 대표 기술 : RPC, TLS handshake 등
- 즉, 통신 세션을 설정·유지·종료하는 관리적 기능을 담당하는 계층
6. 표현 계층 (Presentation Layer)
- 데이터의 형식과 구조를 정의하고 변환하는 계층
- 문자 인코딩(UTF-8 등), 압축, 암호화/복호화, 직렬화(JSON, XML, ASN.1 등)와 같은 작업을 처리함
- 서로 다른 시스템이 데이터의 의미를 동일하게 이해할 수 있도록 맞춰주는 역할
- 주요 프로토콜 : UTF-8, UTF-16, JSON, XML, Base64 인코딩 등
- 즉, 데이터의 표현 방식(인코딩·암호화·구조)을 통일하는 계층
7. 응용 계층 (Application Layer)
- 사용자가 직접 접하게 되는 서비스 영역으로, 애플리케이션이 네트워크를 이용하는 규칙이 정의된 계층
- 요청/응답 메시지 구조, 인증, 리소스 접근과 같은 애플리케이션 단의 동작을 처리함
- 전송 단위 : 메시지 (Message)
- 주요 프로토콜 : HTTP/HTTPS, DNS, FTP, SMTP 등 -> 우리가 실제로 사용하는 프로토콜들이 여기에 속함
- 주요 장비 : 웹서버, DNS 서버, 애플리케이션 서버 등
- 즉, HTTP·DNS 같은 서비스 프로토콜이 동작하며 실제 애플리케이션 기능을 담당하는 계층
2) 웹 요청 하나가 패킷이 되기까지 (HTTP 요청이 어떻게 패킷으로 구성되는가?)
예시 : 브라우저 주소창에 https://example.com/을 입력하고 엔터를 눌렀다고 가정
1. 브라우저가 "요청 메시지" 생성 (L7 응용 계층)
- 브라우저는 내부에서 HTTP(S) 요청 메시지를 구성함
GET / HTTP/1.1
Host: example.com
User-Agent: ...
Accept: ...
- 이 시점의 데이터는 그냥 문자열/바이트 배열 형태의 "메시지"일 뿐이고 아직 TCP도 IP도 패킷도 없음!!
- L7에서 할 일
- URL 파싱
- Host 헤더 지우기
- 쿠키, 인증 토큰 등 필요한 헤더 추가
- 바디가 있다면 JSON, HTML 등으로 직렬화
2. DNS로 목적지 IP 확인 (L7 + L3 개념)
- example.com의 IP 주소가 캐시에 있으면 그대로 사용
- 없으면 DNS 클라이언트가 동작 (로컬 /etc/hosts -> 로컬 DNS 서버 -> 상위 DNS 서버 순으로 질의)
- 최종적으로 example.com -> 예를 들어 93.184.216.34 같은 목적지 IP 주소를 알 수 있음
- 즉, 웹 요청이 나가기 전에 목표 IP 주소를 결정하는 과정이 한 번 끼어든다고 생각하면 됨! ㅎㅎ
3. TCP 3 way Handshake로 연결 수립 (L4 전송 계층)
- HTTP 요청을 보내려면 먼저 TCP 연결이 필요함
- 3 way Handshake
- 클라이언트가 서버로 SYN 패킷 전송
- 서버가 SYN + ACK 응답
- 클라잉언트가 ACK 보내고 나면 연결 수립 완료
- 이 3개의 단계도 모두 패킷이긴 하지만, 아직은 웹 요청 내용이 아니라 TCP 연결을 준비하는 단계라고 생각하면 됨
4. HTTP 메시지를 TCP 세그먼트로 쪼개고 헤더 추가 (L4 전송 계층)
- 이제 L7에서 만들어 놓은 HTTP 요청 메시지를 L4에서 TCP가 받아서 처리함!
- 처리 과정
- 애플리케이션은 OS에게 send() 같은 호출로 데이터 덩어리 전달
- OS의 TCP 스택은 이 데이터를 세그먼트 단위로 자름
- 각 세그먼트 앞에 TCP 헤더 붙이기
- 이 시점의 데이터 단위는 TCP 세그먼트이고, HTTP 메시지가 한 번에 담기면 세그먼트 1개, 크면 여러개로 나뉠 수 있음
5. TCP 세그먼트를에 IP 헤더 붙여 IP 패킷 생성 (L3 네트워크 계층)
- L3에서는 이 세그먼트를 IP 기반으로 어디로 보낼지 결정
- 처리 과정
- 각 TCP 세그먼트 앞에 IP 헤더를 붙어 IP 패킷(Packet) 만들기
- 패킷 크기가 링크의 MTU를 초과하면 IP 단에서 단편화를 수행할 수 있음
- 이 단계에서 라우터들이 이해할 수 있는 IP 패킷 생성 -> 라우터 입장에서는 TCP나 HTTP 내용은 안보고 IP 헤더로 경로만 정함
6. 패킷에 MAC 헤더를 붙여 Ethernet 프레임 생성 (L2 데이터링크 계층)
- 같은 네트워크 안에서 패킷을 실어 나르기!!
- 우선 목적지 IP가 같은 네트워크인지 아닌지 확인하기
- 같은 서브넷이라면 그 IP의 MAC 주소 필요
- 다른 서브넷이라면 게이트웨이(라우터)의 MAC 주소가 필요 (MAC 주소가 없으면 ARP 요청으로 MAC 주소 얻기!)
- IP 패킷 앞뒤에 Ethernet 프레임 헤더/트레일러 붙이기
7. 프레임을 비트로 인코딩 후 매체로 전송 (L1 물리 계층)
- 프레임 전체를 비트열로 변환
- 케이블/광섬유/무선 매체 등을 통해 전송
- 수신 측에서는 이 과정을 반대로 역캡슐화
비트 -> 프레임(L2) -> 패킷(L3) -> 세그먼트(L4) -> HTTP 메시지(L7) -> 웹서버 애플리케이션
'study > network' 카테고리의 다른 글
| [Network] 스위치는 어떻게 패킷을 전달하는가? (0) | 2026.04.01 |
|---|