OSI 7계층, TCP/UDP, HTTPS

허정석·2025년 12월 3일

TIL

목록 보기
13/19
post-thumbnail

네트워크 기초 - OSI 7계층, TCP/UDP, HTTPS

학습 일자: 2024-12-03
학습 목표: 네트워크 통신의 기본 구조와 프로토콜 이해


OSI 7계층

개요

네트워크 통신을 7개의 계층으로 나눈 표준 모델입니다. 각 계층은 독립적인 역할을 수행하며, 하위 계층의 서비스를 이용해 상위 계층에 서비스를 제공합니다. 이를 통해 복잡한 네트워크 통신을 체계적으로 관리하고 문제를 효과적으로 해결할 수 있습니다.

계층별 구조

1계층 - 물리 계층 (Physical Layer)

0과 1의 비트를 전기 신호, 빛, 전파로 변환하여 전송합니다.

주요 장비

  • 랜선(이더넷 케이블): 구리선으로 전기 신호를 전송합니다. Cat5e, Cat6, Cat7 등 카테고리별로 전송 속도가 다릅니다.
  • 허브: 받은 신호를 모든 포트에 복사하여 전송합니다. 비효율적이어서 현재는 거의 사용하지 않습니다.
  • 리피터: 신호가 약화되면 증폭합니다.

데이터 단위: 비트(Bit)


같은 네트워크 내에서 MAC 주소를 이용한 기기 간 직접 통신을 담당합니다.

핵심 개념

  • 스위치: MAC 주소 테이블을 사용하여 정확한 포트에만 데이터를 전달하는 네트워크 장비입니다.
  • MAC 주소: AA:BB:CC:DD:EE:FF 형식의 네트워크 카드 고유 주소입니다.
  • 이더넷 프레임: 출발지/목적지 MAC 주소, 데이터, CRC(오류 검사) 정보를 포함합니다.
  • ARP: IP 주소를 MAC 주소로 변환하는 프로토콜입니다.

데이터 단위: 프레임(Frame)


3계층 - 네트워크 계층 (Network Layer)

서로 다른 네트워크 간 경로를 탐색하고 데이터를 전달합니다(라우팅).

핵심 개념

  • 라우터: 네트워크 간 연결 장비로 최적 경로를 선택합니다.
  • IP 주소: 192.168.0.1 형식의 논리적 주소입니다.
  • IP 패킷: 출발지/목적지 IP 주소, TTL, 데이터를 포함합니다.

실무 예시
서울에서 부산 서버로 데이터를 전송할 때 여러 라우터를 거쳐 최적 경로를 선택합니다.

데이터 단위: 패킷(Packet)


4계층 - 전송 계층 (Transport Layer)

신뢰성 있는 데이터 전송을 보장합니다(오류 검사, 재전송, 순서 보장).

핵심 프로토콜

  • TCP: 연결 지향, 신뢰성 보장, 순서 보장
  • UDP: 비연결, 빠른 전송, 순서/신뢰성 보장 없음
  • 포트 번호: 80(HTTP), 443(HTTPS), 3000(개발 서버), 5432(PostgreSQL)

데이터 단위: 세그먼트(Segment)


5계층 - 세션 계층 (Session Layer)

두 기기 간 연결(세션)을 시작, 유지, 종료합니다.

핵심 개념

  • 로그인 세션 관리
  • API 세션 토큰 (JWT 등)
  • 세션 타임아웃 설정

4계층과의 차이

  • 4계층(TCP): 데이터 전달 연결 관리 (짧은 시간)
  • 5계층: 사용자 인증 상태 유지 (긴 시간)

6계층 - 표현 계층 (Presentation Layer)

데이터를 애플리케이션이 이해할 수 있는 형태로 변환합니다.

주요 기능

  • 암호화/복호화: SSL/TLS
  • 압축: JPEG, PNG
  • 인코딩: UTF-8, ASCII

7계층 - 애플리케이션 계층 (Application Layer)

사용자가 직접 사용하는 네트워크 서비스를 제공합니다.

주요 프로토콜

  • HTTP/HTTPS (웹)
  • SMTP (이메일)
  • FTP (파일 전송)
  • DNS (도메인 조회)

계층 분리의 이점

관심사의 분리

각 계층은 자신의 역할에만 집중합니다. 하위 계층의 세부 구현을 알 필요가 없습니다.

택배 시스템 비유

  • 고객: 물건 포장 (7계층)
  • 택배사: 송장 작성 (4계층)
  • 배송기사: 경로 탐색 (3계층)
  • 트럭: 실제 운송 (1계층)

독립적인 개선 가능

한 계층의 수정이 다른 계층에 영향을 주지 않습니다.

  • 랜선을 광케이블로 교체해도 웹사이트 코드는 변경하지 않습니다.
  • HTTP를 HTTP/2로 업그레이드해도 라우터 설정을 변경하지 않습니다.

표준화와 호환성

계층별 표준 프로토콜을 사용하여 서로 다른 제조사의 장비가 호환됩니다.


데이터 전송 과정

캡슐화 (송신 측: 7계층 → 1계층)

각 계층을 거칠 때마다 헤더를 추가합니다.

7계층: [HTTP 요청]
6계층: [암호화 정보][HTTP 요청]
5계층: [세션 정보][암호화 정보][HTTP 요청]
4계층: [TCP 헤더][세션 정보][...]
3계층: [IP 헤더][TCP 헤더][...]
2계층: [이더넷 헤더][IP 헤더][...][트레일러]
1계층: 0101010101... (전기 신호)

역캡슐화 (수신 측: 1계층 → 7계층)

각 계층에서 해당 계층의 헤더를 제거하고 상위 계층으로 전달합니다.


계층별 장애 대응

증상: "웹사이트가 열리지 않습니다"

진단 방법
1. ping 테스트 실패 → 3계층(네트워크) 문제
2. ping 성공, 웹 실패 → 4계층(방화벽/포트) 또는 7계층(애플리케이션) 문제
3. 특정 사이트만 접속 불가 → DNS(7계층) 문제


TCP와 UDP

핵심 차이점

구분TCPUDP
연결 방식연결 지향 (3-way handshake)비연결
신뢰성보장 (재전송, 순서 보장)보장하지 않음
속도상대적으로 느림빠름
헤더 크기20바이트 이상8바이트
사용 사례웹, 이메일, 파일 전송스트리밍, 게임, DNS

TCP: 신뢰성 있는 연결

3-Way Handshake (연결 수립)

1. 클라이언트 → 서버: SYN (연결을 시작합니다)
2. 서버 → 클라이언트: SYN-ACK (준비되었습니다)
3. 클라이언트 → 서버: ACK (확인했습니다, 데이터를 전송합니다)

4-Way Handshake (연결 종료)

1. 클라이언트 → 서버: FIN (전송을 종료합니다)
2. 서버 → 클라이언트: ACK (확인했습니다)
3. 서버 → 클라이언트: FIN (저도 종료합니다)
4. 클라이언트 → 서버: ACK (확인했습니다)

신뢰성 보장 메커니즘

  1. 순서 번호(Sequence Number): 각 패킷에 순서를 부여합니다.
  2. 확인 응답(ACK): 패킷을 받았음을 알립니다.
  3. 재전송: ACK가 오지 않으면 타임아웃 후 재전송합니다.
  4. 재정렬: 순서가 뒤바뀌면 정렬하여 전달합니다.

TCP 헤더 구조

  • 출발지/목적지 포트
  • Sequence Number
  • ACK Number
  • 플래그 (SYN, ACK, FIN 등)
  • 윈도우 크기 (흐름제어)
  • 체크섬 (오류 검사)

UDP: 빠른 전송

특징

  • 연결 설정 없이 바로 전송합니다.
  • 순서를 보장하지 않습니다.
  • 재전송하지 않습니다.
  • 헤더가 단순합니다 (8바이트).

UDP 헤더 구조

  • 출발지 포트
  • 목적지 포트
  • 길이
  • 체크섬

사용 사례 비교

TCP 사용 사례

웹 (HTTP, HTTPS)
파일이 누락되면 안 됩니다.

이메일 (SMTP)
메일 일부가 손실되면 안 됩니다.

파일 전송 (FTP, SFTP)
파일이 손상되면 안 됩니다.

데이터베이스
정확한 데이터가 필수입니다.

선택 이유: 데이터 손실 시 재전송으로 신뢰성을 보장합니다.

UDP 사용 사례

실시간 스트리밍 (YouTube Live, Twitch)
과거 데이터보다 실시간이 중요합니다.

온라인 게임 (LOL, 배그)
지연 시간이 치명적입니다.

DNS
빠른 응답이 필요하며, 실패 시 재요청합니다.

VoIP (인터넷 전화)
실시간 음성 전달이 중요합니다.

선택 이유: 0.1초 전 데이터는 이미 무의미하므로 속도를 우선합니다.


속도와 안정성의 트레이드오프

TCP가 느린 이유

  • 3-way handshake 시간
  • ACK 대기 시간
  • 재전송 대기
  • 흐름제어/혼잡제어 오버헤드

UDP가 빠른 이유

  • 연결 설정이 없습니다.
  • 확인 절차가 없습니다.
  • 단순한 헤더를 사용합니다.
  • 네트워크 상태를 체크하지 않습니다.

HTTP, HTTPS, TLS

HTTP와 HTTPS 비교

구분HTTPHTTPS
보안없음 (평문 전송)암호화
포트80443
속도빠름약간 느림 (암호화 오버헤드)
인증서불필요SSL/TLS 인증서 필요
URLhttp://https:// (자물쇠 🔒 표시)

HTTPS = HTTP + TLS

TLS(Transport Layer Security)는 다음 세 가지를 보장합니다.

기밀성 (Confidentiality)

중간에 누가 데이터를 가로채도 읽을 수 없습니다.

예시

HTTP: ID: jungseok, PW: mypassword123 (평문)
HTTPS: A$dj#ka@s!d... (암호화)

무결성 (Integrity)

데이터가 전송 중 변조되지 않았음을 보장합니다.

예시
해커가 "계좌번호: 123"을 "계좌번호: 456"으로 바꾸려 해도 감지됩니다.

인증 (Authentication)

진짜 서버와 통신하는지 확인합니다.

예시

  • 진짜: https://naver.com ✓ (인증서 검증)
  • 가짜: https://nav3r.com ✗ (인증서 불일치)

TLS의 위치

TLS는 OSI 7계층 어디에도 정확히 속하지 않습니다. 4.5계층 또는 5~6계층 사이로 표현합니다.

7계층: HTTP (애플리케이션)
------- [TLS는 여기에 위치] -------
4계층: TCP (전송)

동작 순서
1. TCP 3-way handshake (4계층)
2. TLS handshake (암호화 설정)
3. HTTP 데이터 전송 (암호화된 상태)


TLS Handshake 과정

1. 클라이언트 → 서버: "지원하는 암호화 방식 목록"
2. 서버 → 클라이언트: "이 방식을 사용합니다. 제 인증서입니다"
3. 클라이언트: 인증서 검증 (진짜 서버인지 확인)
4. 양쪽 암호화 키 교환
5. 암호화된 통신 시작

TCP 3-way handshake와의 비교

  • TCP: 연결 수립 (데이터 전송 준비)
  • TLS: 암호화 설정 (보안 준비)

방화벽과 HTTPS의 차이

방화벽

  • 특정 포트를 열거나 막습니다.
  • 네트워크 접근을 제어합니다.

HTTPS (TLS)

  • 데이터 자체를 암호화합니다.
  • 포트 차단과 무관합니다.

비유

  • 방화벽: 문을 관리합니다.
  • HTTPS: 편지를 암호화하여 보냅니다.

HTTPS 사용이 필요한 이유

  • 기밀성: 로그인 정보, 개인정보 유출을 방지합니다.

  • 무결성: 데이터 변조를 방지하고 중간자 공격을 차단합니다.

  • 인증: 피싱 사이트를 방지합니다.

  • SEO: 구글이 HTTPS 사이트를 검색 순위에서 우대합니다.

  • 브라우저 경고: HTTP 사이트는 "안전하지 않음" 경고를 표시합니다.


학습 체크리스트

OSI 7계층

  • 각 계층의 역할을 설명할 수 있습니다.
  • 계층별 장비와 프로토콜을 알고 있습니다.
  • 캡슐화/역캡슐화 과정을 이해합니다.
  • 계층별 장애 대응 방법을 알고 있습니다.

TCP와 UDP

  • 3-way handshake를 설명할 수 있습니다.
  • TCP와 UDP의 차이를 설명할 수 있습니다.
  • 각 프로토콜의 사용 사례를 알고 있습니다.
  • 속도와 안정성의 트레이드오프를 이해합니다.

HTTP/HTTPS/TLS

  • HTTPS의 3가지 보장을 설명할 수 있습니다.
  • TLS handshake 과정을 알고 있습니다.
  • 방화벽과 암호화의 차이를 알고 있습니다.
  • HTTPS를 사용해야 하는 이유를 설명할 수 있습니다.

FAQ

OSI 7계층과 TCP/IP 4계층의 차이

OSI는 이론적 모델(교육용)이고, TCP/IP는 실제 인터넷에서 사용하는 모델입니다.

  • OSI 7계층: 7개로 세분화
  • TCP/IP 4계층: 애플리케이션, 전송, 인터넷, 네트워크 인터페이스

HTTPS를 사용하면 항상 안전한가

아닙니다. HTTPS는 전송 구간만 암호화합니다. 서버가 해킹당하거나, 애플리케이션에 취약점이 있으면 소용없습니다.

DNS가 UDP를 사용하는 이유

DNS 조회는 짧은 요청/응답으로 이루어집니다. 빠른 응답이 중요하고, 실패 시 재요청하면 되므로 UDP를 사용합니다.

TCP의 혼잡제어와 흐름제어

흐름제어: 수신자가 처리할 수 있는 속도로 전송합니다(윈도우 크기 조절).
혼잡제어: 네트워크 혼잡도에 따라 전송 속도를 조절합니다(슬로우 스타트 등).


복습 포인트

면접에서 자주 나오는 질문
1. "OSI 7계층을 설명해보세요"
2. "TCP와 UDP의 차이는 무엇인가요?"
3. "3-way handshake 과정을 설명해주세요"
4. "HTTPS는 어떻게 동작하나요?"
5. "웹사이트가 열리지 않을 때 어떻게 디버깅하나요?"

0개의 댓글