본문 바로가기
study/network

[Network] OSI 7계층 : 웹 요청 하나가 패킷이 되기까지

by 림나 2026. 3. 26.

 

1) OSI 7 계층

 OSI 7계층이란?

  • OSI(Open Systems Interconnection) 모델 : 네트워크 통신 과정을 7단계 계층으로 나누어 설명하는 국제 표준 모델
  • 서로 다른 시스템, 장비, 프로토콜이 표준화된 방식으로 통신할 수 있도록 하기 위한 설계 기준!
  • 즉, 전 세계에 흩어져 있는 다양한 하드웨어, 소프트웨어 등이 서로 다른 회사/국가/환경에서도 같은 언어(프로토콜)로 소통할 수 있도록 해주는 설계 기준

 

 OSI 7계층이 왜 필요할까?

  1. 복잡한 시스템을 계층적으로 쪼개기 위해
    • 네트워크는 전기 신호부터 웹 API 까지 범위가 너무 넓음
    • 이걸 하나의 거대한 단일 스택으로 두면 설계 어려움 + 문제 원인 추적 불가능!
    • 그래서 OSI는 역할 단위로 기능을 분해하여  각 층을 독립된 책임 단위로 나눠서 생각 -> 각 계층은 하나의 기능 집합만 책임!
    • 이로 인해 문제 발생 시 계층 단위로 분리하여 정확히 진단할 수 있음
      • 예시 : 웹 접속이 안될 때
        • L7 문제 -> HTTP 오류
        • L4 문제 -> 포트/Handshake 문제
        • L3 문제 -> 라우팅/게이트웨이 문제
        • L2 문제 -> ARP/MAC 충돌
        • L1 문제 -> 케이블/신호 문제
  2. 계층간 독립성 확보
    • 각 계층은 자기 역할만 담당하고, 바로 아래 계층이 제공하는 기능만 사용
      -> 서로의 내부 구조나 동작 방식을 알 필요 없음
    • 특정 계층에 문제가 생겨도 나머지 계층은 그대로 동작함
      • 예시 : 물리 계층(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
    1. 클라이언트가 서버로 SYN 패킷 전송
    2. 서버가 SYN + ACK 응답
    3. 클라잉언트가 ACK 보내고 나면 연결 수립 완료
  • 이 3개의 단계도 모두 패킷이긴 하지만, 아직은 웹 요청 내용이 아니라 TCP 연결을 준비하는 단계라고 생각하면 됨

 

4. HTTP 메시지를 TCP 세그먼트로 쪼개고 헤더 추가 (L4 전송 계층)

  • 이제 L7에서 만들어 놓은 HTTP 요청 메시지를 L4에서 TCP가 받아서 처리함!
  • 처리 과정
    1. 애플리케이션은 OS에게 send() 같은 호출로 데이터 덩어리 전달
    2. OS의 TCP 스택은 이 데이터를 세그먼트 단위로 자름
    3. 각 세그먼트 앞에 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