Jake Seo
제이크서 개발 블로그
Jake Seo
전체 방문자
오늘
어제
  • 분류 전체보기 (719)
    • AI 서비스 개발 일기 (3)
    • LLM 개발 일기 (1)
    • ------레거시 (2025.08.23 이전)--.. (0)
    • 백준 문제풀이 (1)
    • 릿코드 문제풀이 (2)
    • 알고리즘 이론 (10)
      • 기본 이론 (2)
      • 배열과 문자열 (8)
    • 데이터베이스 (15)
      • Planet Scale (1)
      • MSSQL (9)
      • 디비 기본 개념 (1)
      • SQLite 직접 만들어보기 (4)
    • 보안 (7)
    • 설계 (1)
    • 네트워크 (17)
      • HTTP (9)
      • OSI Layers (5)
    • 회고 (31)
      • 연간 회고 (2)
      • 주간 회고 (29)
    • 인프라 (52)
      • 도커 (12)
      • AWS (9)
      • 용어 (21)
      • 웹 성능 (1)
      • 대규모 서비스를 지탱하는 기술 (9)
    • 깃 (7)
    • 빌드 도구 (7)
      • 메이븐 (6)
      • 그레이들 (0)
    • Java (135)
      • 이펙티브 자바 (73)
      • 자바 API (4)
      • 자바 잡지식 (30)
      • 자바 디자인 패턴 (21)
      • 톰캣 (Tomcat) (7)
    • 프레임워크 (64)
      • next.js (14)
      • 스프링 프레임워크 (28)
      • 토비의 스프링 (6)
      • 스프링 부트 (3)
      • JPA (Java Persistence API) (5)
      • Nest.js (8)
    • 프론트엔드 (48)
      • 다크모드 (1)
      • 노드 패키지 관리 매니저 (3)
      • CSS (19)
      • Web API (11)
      • tailwind-css (1)
      • React (5)
      • React 새 공식문서 요약 (1)
      • HTML (Markup Language) (5)
    • 자바스크립트 (108)
      • 모던 자바스크립트 (31)
      • 개념 (31)
      • 정규표현식 (5)
      • 코드 스니펫 (1)
      • 라이브러리 (6)
      • 인터뷰 (24)
      • 웹개발자를 위한 자바스크립트의 모든 것 (6)
      • 팁 (2)
    • Typescript (49)
    • 리눅스와 유닉스 (10)
    • Computer Science (1)
      • Compiler (1)
    • IDE (3)
      • VSCODE (1)
      • IntelliJ (2)
    • 세미나 & 컨퍼런스 (1)
    • 용어 (개발용어) (16)
      • 함수형 프로그래밍 용어들 (1)
    • ORM (2)
      • Prisma (2)
    • NODEJS (2)
    • cypress (1)
    • 리액트 네이티브 (React Native) (31)
    • 러스트 (Rust) (15)
    • 코틀린 (Kotlin) (4)
      • 자바에서 코틀린으로 (4)
    • 정규표현식 (3)
    • 구글 애널리틱스 (GA) (1)
    • SEO (2)
    • UML (2)
    • 맛탐험 (2)
    • 리팩토링 (1)
    • 서평 (2)
    • 소프트웨어 공학 (18)
      • 테스팅 (16)
      • 개발 프로세스 (1)
    • 교육학 (1)
    • 삶의 지혜, 통찰 (1)
    • Chat GPT (2)
    • 쉘스크립트 (1)
    • 컴파일 (2)
    • Dart (12)
    • 코드팩토리의 플러터 프로그래밍 (4)
    • 플러터 (17)
    • 안드로이드 스튜디오 (1)
    • 윈도우즈 (1)
    • 잡다한 백엔드 지식 (1)
    • 디자인 패턴 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 느린 쿼리
  • Next.js
  • MSSQL
  • pnpm
  • 서버리스 컴퓨팅
  • rust
  • NEXT JS
  • item8
  • serverless computing
  • 메이븐 라이프사이클
  • 이펙티브 자바 item9
  • 자바 검증
  • 자바스크립트
  • 슬로우 쿼리
  • 작업기억공간
  • item9
  • 자바
  • next js app
  • item7
  • Javadoc 자바독 자바주석 주석 Comment
  • 알고리즘
  • try-with-resources
  • 도커공식문서
  • 싱글톤
  • 스프링 검증
  • 추상 팩터리 패턴
  • 메이븐 골
  • 객체복사
  • Java
  • 자바스크립트 면접
  • 싱글톤 패턴
  • bean Validation
  • 자바 디자인패턴
  • 토비의 스프링
  • 러스트
  • 자료구조
  • Pre-rendering
  • prerendering
  • 이펙티브자바
  • 외래키 제약조건
  • 이펙티브 자바
  • 참조 해제
  • 싱글턴
  • 팩터리 메서드 패턴
  • 메이븐 페이즈
  • 프로그래머의 뇌
  • 디자인패턴
  • 플라이웨이트패턴
  • 자바스크립트 인터뷰
  • 빈 검증

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Jake Seo

제이크서 개발 블로그

OSI 5, 6, 7 (세션, 표현, 응용) 계층과 Updated TCP/IP Model
네트워크/OSI Layers

OSI 5, 6, 7 (세션, 표현, 응용) 계층과 Updated TCP/IP Model

2023. 3. 23. 22:55

OSI 5(세션), 6(표현), 7(응용) 계층이 하나로 뭉친 이유

사실 OSI 7 Layer 라고 표현하는 7계층짜리 모델은 이미 시장에서 도태된 네트워크 시스템이다. 현대에는 OSI 7 Layer 모델의 일부를 계승한 TCP/IP 모델을 대부분 사용한다. 또, TCP/IP 모델에서도 한번 업데이트가 이루어져 사실상 Updated TCP/IP Model 이라 불리는 모델을 사용한다.

TCP/IP 5 Layer Software Model 이라고 검색해보면 여러 정보가 나온다.

위의 그림은 3개의 모델 변천사를 정리해본 것이다. 최종 모델인 TCP/IP updated 모델을 보면, 4계층 밑으로는 OSI 7계층과 동일하며, 5, 6, 7 계층을 응용 계층(Application Layer)이라는 이름으로 통합했다.

이러한 모델로 변경된 이유는 이 모델이 시장에서 이겼기 때문이다. 비록 나는 그 시대에 개발자로 일하지 않았고 일했어도 저런 일에 관여하지 못했을 것이지만, 과거의 개발자들이 최대한 합리적인 모델을 선택했을 것이다.

응용 계층의 역할

주로 클라이언트 서버로 이루어진 애플리케이션에서 통신하기 위해 사용된다. 대표적으로 알려진 몇가지의 응용 계층 프로토콜이 존재하지만 사용자가 애플리케이션을 제작하고 자신만의 응용 계층 프로토콜을 만들 수도 있다.

대표적인 응용 계층 프로토콜

  • HTTP(80): 웹 사이트를 접속하는데 이용된다.
  • DNS(53): 도메인 이름을 해석하는데 이용된다.
  • FTP(21): 파일을 전송하는데 이용된다.
  • SMTP(25): 메일을 보내는데 이용된다.
  • POP3(110): 메일을 받는데 이용된다.

1~7계층 훑어보기

HTTP 통신

HTTP 통신은 응용계층에 구현된 대표적인 통신 프로토콜 중 하나이다. HTTP/1.0, HTTP/1.1, HTTP/2는 TCP 통신을 이용하지만, HTTP/3부터는 QUIC을 이용한 UDP 통신을 이용한다.

HTTP 통신 예시

  • 클라이언트에서 보내고 싶은 데이터에 HTTP 헤더를 씌운다
  • 80 포트를 이용하여 HTTP 헤더가 씌워진 데이터를 보낸다.
  • 서버는 데이터를 받고 응답 데이터를 HTTP 헤더를 씌워 보낸다.
  • 클라이언트는 받은 HTTP 헤더와 데이터를 확인한다.

HTTP 통신은 주로 80포트를 사용하지만, 반드시 80포트를 사용해야 하는 것은 아니다.

HTTP/1.1 - keepalive

HTTP/1.1 이전의 HTTP 통신에서는 매번 HTTP 요청을 보낼 때마다 일일이 TCP 연결을 맺고 끊고 했다.

그러나 HTTP/1.1부터는 keepalive라는 기능이 추가되어, TCP 연결을 한 번 맺었다면, 필요한 데이터를 모두 교환한 이후에 연결이 끊어진다.

HTTP/2 - 빠른 것부터 응답

HTTP/2 이전에는 각 요청에 대한 응답이 얼마나 걸리든 상관없이 요청이 들어온 순서대로 응답을 했다.

그러나 HTTP/2부터는 요청에 대한 응답이 빠른 것부터 응답하여 순서대로 응답하지 않아도 되어 조금 더 속도의 향상을 이뤘다.

응용 계층 정리

헤더의 내용은 애플리케이션 구현에 따라 다르며, 우리도 TCP/IP 소켓 프로그래밍이란 것을 통해 우리만의 애플리케이션 헤더를 구현하여 통신할 수 있다.

레퍼런스

  • [10분 테코톡] 히히의 OSI 7 Layer
  • 모두의 네트워크
저작자표시 비영리 (새창열림)

'네트워크 > OSI Layers' 카테고리의 다른 글

OSI 4계층 전송 계층 (Transport Layer) 알아보기  (1) 2023.02.21
OSI 3 계층 네트워크 계층 (Network Layer) 알아보기  (2) 2022.09.05
OSI 2계층 데이터 링크 (Data Link Layer) 계층 알아보기  (2) 2022.09.04
OSI 1계층 물리 계층 (Physical Layer) 알아보기  (1) 2022.09.04
    '네트워크/OSI Layers' 카테고리의 다른 글
    • OSI 4계층 전송 계층 (Transport Layer) 알아보기
    • OSI 3 계층 네트워크 계층 (Network Layer) 알아보기
    • OSI 2계층 데이터 링크 (Data Link Layer) 계층 알아보기
    • OSI 1계층 물리 계층 (Physical Layer) 알아보기
    Jake Seo
    Jake Seo
    ✔ 댓글로 틀린 부분을 지적해주시면 기분 나빠하지 않고 수정합니다. ✔ 많은 퇴고를 거친 글이 좋은 글이 된다고 생각합니다. ✔ 간결하고 명료하게 사람들을 이해 시키는 것을 목표로 합니다.

    티스토리툴바