Post

05 OSI - 응용계층

05 OSI - 응용계층

1 응용계층

1. 응용계층

기능설명
네트워크 서비스 제공이메일, 웹, 파일 전송 등 네트워크 기반 서비스 제공
프로토콜 기반 데이터 처리응용 프로그램끼리 통신할 수 있도록 데이터 포맷/전송 처리
데이터 표현/인코딩문자 인코딩, 파일 포맷 처리 (예: UTF-8, JPEG 등)
사용자 인증/보안로그인, 세션 관리, 인증 등
애플리케이션 인터페이스 제공OS/앱이 사용할 수 있는 API, 라이브러리 등을 통해 네트워크 접근

2. 주요프로토콜

프로토콜용도
HTTP / HTTPS웹 브라우징 (HyperText Transfer Protocol)
FTP / SFTP파일 전송 (File Transfer Protocol)
SMTP메일 송신 (Simple Mail Transfer Protocol)
POP3 / IMAP메일 수신 (Post Office Protocol / Internet Message Access Protocol)
DNS도메인 이름 → IP 주소 변환
Telnet / SSH원격 접속
SNMP네트워크 장비 관리 (Simple Network Management Protocol)
DHCPIP 주소 자동 할당 (Dynamic Host Configuration Protocol)

3. 전체흐름

  • 응용계층: URL을 분석하고, Host(IP 주소), Path 설정 → HTTP 요청 메시지 생성
  • 전송계층 (TCP): HTTP 메시지를 TCP 세그먼트로 감싸고, 포트 번호 설정
  • 네트워크계층 (IP): 목적지 IP 주소 확인 → 라우팅 → 패킷 생성
  • 데이터링크/물리계층: MAC 주소 기반으로 프레임 전송 → 전기 신호로 전달

2. DHCP

1. DHCP

  • IP 주소를 포함한 네트워크 설정 정보를 자동으로 할당해주는 프로토콜
  • 장치마다 IP를 수동으로 설정하는 불편함을 제거
  • IP, 서브넷 마스크, 게이트웨이, DNS 같은 설정을 자동으로 부여
  • 중복 없는 IP 배정, 효율적인 IP 주소 관리

2. 부여과정

| 단계 | 메시지 | 이름 | 설명 | | — |———————-|—-|————————————| | 1단계 | DHCP Discover | 탐색 | 클라이언트가 네트워크에 브로드캐스트로 DHCP 서버 찾기 요청 | | 2단계 | DHCP Offer | 제안 | DHCP 서버가 IP 주소 임대 제안 | | 3단계 | DHCP Request | 요청 | 클라이언트가 하나를 선택해 임대 요청 | | 4단계 | DHCP Acknowledgement | 승인 | 서버가 그래, 써 하고 승인 → 임대 시작 (Lease) |

  • 임대
    • “IP를 임대한다”는 건 DHCP 서버가 IP 주소를 일정 시간 동안만 해당 장치에 사용하도록 허용한다는 의미,
    • 네트워크망에서 벗어나면 서버는 IP를 회수하고 다른 장치에 재할당할수 있음.

3. 부여방식

방식영어 명칭설명
동적 할당Dynamic AllocationDHCP 서버가 IP 풀에서 자동으로 할당
자동 할당Automatic Allocation클라이언트에게 한 번 준 IP를 다음에도 재사용
고정 할당 (예약)Static Allocation / Reservation특정 MAC 주소에 특정 IP 고정 할당

3. DNS

1. DNS

  • Domain Name System
  • 도메인 이름을 IP 주소로 변환해주는 분산형 계층 구조의 네임 매핑 시스템
  • 조회 구분

    구분정방향 조회역방향 조회
    방향도메인 → IPIP → 도메인
    사용 목적웹 접속, 일반적 사용로깅, 인증, 디버깅
    레코드 종류A, AAAAPTR
    www.naver.com → 223.130.200.107223.130.200.107 → www.naver.com

2. 계층구조

| 계층 | 설명 | 예시 | 담당 서버 및 역할 | |——————————| ——————————- | ——————————————– | ————————- | | 루트 도메인 (Root) | DNS 트리 최상위, 전체 도메인 네임의 시작점 | (빈 문자열, “.”) | 루트 네임서버 (13개 그룹, 전 세계 분산) | | 최상위 도메인 (TLD) | 루트 바로 아래 계층, 도메인 카테고리 구분 | gTLD: .com, .net, .org, ccTLD: .kr, .jp, .us | TLD 네임서버 (각 TLD 관리) | | 2차 도메인 (Second-Level Domain) | TLD 아래 등록된 도메인 이름 (조직 또는 개인 소유) | google.com, naver.com, example.org | 도메인 등록자 네임서버 (권한 있는 네임서버) | | 서브도메인 (Subdomain) / 하위도메인 | 2차 도메인 아래 추가 구분, 서비스나 부서별 구분 | mail.google.com, blog.naver.com | 서브도메인 네임서버 또는 도메인 관리 네임서버 |

  • 최상위 도메인과 2차 도메인이 합쳐져야 인터넷상에서 고유한 도메인으로 등록 및 사용가능함.
  • www는 서브도메인으로 필수가 아님

3. 질의방식

| 구분 | 재귀적 질의 | 반복적 질의 | | —– | ——————— | ———————- | | 요청자 | 보통 클라이언트(로컬 DNS 서버) | 클라이언트 또는 DNS 서버 | | 답변 방식 | 최종 결과 직접 반환 | 다음 DNS 서버 정보만 제공 | | 질의 책임 | DNS 서버가 모두 수행 | 클라이언트가 여러 서버에 질의 | | 주 사용처 | 최종 사용자가 로컬 DNS 서버에 요청 | DNS 서버 간 질의 및 일부 클라이언트 |

  • 재귀적 : 클라이언트가 한 번만 요청 → DNS 서버가 다른 DNS 서버들에 직접 유니캐스트로 질의해 최종 답변 제공
  • 반복적 : 클라이언트 또는 DNS 서버가 여러 DNS 서버에 직접 순차적 유니캐스트 질의 → 각 서버는 다음에 물어볼 서버 정보만 제공

4. FTP

1. FTP

  • 컴퓨터 간에 파일을 업로드하거나 다운로드할 때 사용
  • 텍스트 기반 명령과 응답으로 동작
  • 별도의 인증 필요 (아이디/비밀번호)
  • 암호화가 기본적으로 없어 보안에 취약 → 보완된 SFTP, FTPS 등장

2. FTP 작동방식

  • 두가지 포트를 가지고 소통을 진행함.
  • 제어 연결(Control Connection)
    • 클라이언트가 서버 21번 포트로 연결해 명령과 응답 주고받음
    • 로그인, 디렉터리 이동, 파일 목록 요청 등 명령 수행
  • 데이터 연결(Data Connection)
    • 실제 파일 데이터 전송용 연결
    • 전송 모드에 따라 서버 20번 포트 사용하거나 클라이언트 임의 포트 사용

3. FTP 전송 모드

  • 액티브 모드 (Active Mode)
    • 클라이언트가 데이터 수신을 위해 자신의 포트를 열어 놓으면,
    • 서버가 그 포트로 직접 데이터 연결을 시도함
    • 하지만 클라이언트 측 방화벽이 서버의 연결을 차단할 수 있어서 문제가 발생할 수 있음
  • 패시브 모드 (Passive Mode)
    • 클라이언트가 서버에 데이터 연결을 요청할 포트를 열어달라고 요청하고,
    • 서버가 해당 포트를 열어 클라이언트가 그 포트로 데이터 연결을 직접 생성함
    • 방화벽이나 NAT 환경에서 문제 없이 동작해 현재 대부분 이 방식을 사용함

5. SMTP와 POP3

1. SMTP (Simple Mail Transfer Protocol)

  • 역할: 이메일 전송 프로토콜
  • 용도: 클라이언트 → 메일 서버, 메일 서버 → 메일 서버 간 이메일 전달
  • 주 사용 포트: 25 (기본), 587(메일 전송용 인증 포함), 465(SSL)
  • 특징
    • 메일 송신에 특화됨
    • 메일을 목적지 메일 서버로 전달하거나 중계
    • 주로 메일 발송(MUA → MTA, MTA → MTA)에 사용

      2. POP3 (Post Office Protocol version 3)

  • 역할: 이메일 수신 프로토콜
  • 용도: 메일 서버에서 클라이언트로 메일 다운로드
  • 주 사용 포트: 110 (기본), 995(SSL)
  • 특징
    • 메일을 서버에서 내려받아 로컬에 저장하는 방식
    • 기본적으로 메일을 서버에서 삭제 후 클라이언트로 이동
    • 서버에 메일을 남기지 않는 구조
    • 오프라인에서 메일 확인 가능

6.HTTP

1. HTTP(HyperText Transfer Protocol)

  • 하이퍼텍스트 전송 프로토콜
  • 웹에서 클라이언트와 서버가 서로 데이터를 주고받기 위해 사용하는 응용계층 프로토콜
  • 주로 웹 브라우저와 웹 서버 사이에서 HTML 문서, 이미지, 동영상 같은 리소스를 요청하고 전달하는 데 사용
  • 일반적으로 TCP 80번 포트를 사용해 요청 및 응답 메시지를 교환함.

2. HTML(HyperText MarkupLanguage)

  • HTML은 웹 페이지의 기본 구조를 형성하는 마크업 언어
  • HyperText : 다른 페이지나 부분으로 즉시 접근할 수 있는 링크를 텍스트에 내장하는 방식
  • Markup : 웹 문서를 구조화하는 데 사용되는 태그를 의미
  • Language : 모든 것의 결합된 시스템을 구성하는 언어임을 나타냄.

3. URL(Uniform Resource Locator)

  • 웹에서 특정 자원(웹페이지, 이미지, 파일 등)의 위치(주소)를 나타내는 표준 형식
  • 인터넷 상의 자원을 찾기 위한 고유한 주소
  • 웹 브라우저가 어떤 서버에, 어떤 자원에 접속할지 알려줌
  • URL 예시
    1
    
     프로토콜://호스트이름[:포트]/경로[?쿼리][#프래그먼트]
    
    • 프로토콜: 통신 규약 (예: http, https, ftp)
      • http : 기본 웹 통신 프로토콜 / 포트 번호 기본값: 80
      • HTTPS : HTTP에 SSL/TLS 암호화 계층이 추가된 프로토콜 / 포트 번호 기본값: 443
    • 호스트이름(도메인 또는 IP): 서버 주소 (예: www.example.com)
    • 포트(선택적): 서버 접속 포트 (기본값 생략 가능, 예: 80, 443)
    • 경로(Path): 서버 내 자원 위치 (예: /index.html, /images/pic.jpg)
    • 쿼리(Query, 선택적): 서버에 전달하는 매개변수 (예: ?id=10&sort=asc)
    • 프래그먼트(Fragment, 선택적): 페이지 내 특정 위치 (예: #section2)
    • 4. HTTP 요청

  • 요청 라인 (Request Line)
    • 요청 메서드 (Method): 서버에 어떤 작업을 할지 지정 (예: GET, POST)

      메서드역할
      GET서버에서 자원 요청 (데이터 조회)
      POST서버에 데이터 제출 (예: 폼 전송)
      PUT서버 자원 전체 수정
      DELETE서버 자원 삭제
      HEADGET과 같으나 본문 없이 헤더만 요청
      OPTIONS지원하는 메서드나 통신 옵션 조회
    • 요청 대상 (Request-URI): 자원의 경로 (예: /index.html)
    • HTTP 버전 (HTTP Version): 사용 프로토콜 버전 (예: HTTP/1.1)
  • 헤더(Headers)
    • 요청에 대한 부가 정보 전달 (클라이언트 정보, 요청 형식, 쿠키 등)
  • 빈 줄 (CRLF)
    • 헤더와 본문(body) 구분
  • 본문 (Body)
    • 주로 POST, PUT 등의 메서드에서 사용
    • 서버에 전달할 데이터 포함 (예: 폼 데이터, JSON)

5. HTTP 응답

  • 상태 라인 (Status Line)
    • HTTP 버전 (예: HTTP/1.1)
    • 상태 코드 (Status Code): 요청 처리 결과를 숫자로 표시 (예: 200, 404)

      상태 코드의미
      200성공 (OK)
      301리다이렉션 (Moved Permanently)
      400클라이언트 오류 (Bad Request)
      401인증 필요 (Unauthorized)
      404찾을 수 없음 (Not Found)
      500서버 오류 (Internal Server Error)
    • 상태 메시지 (Reason Phrase): 상태 코드에 대한 설명 (예: OK, Not Found)
  • 헤더 (Headers)
    • 응답에 대한 부가 정보 포함 (콘텐츠 유형, 길이, 서버 정보 등)
  • 빈 줄 (CRLF)
    • 헤더와 본문 구분
  • 본문 (Body)
    • 요청한 리소스의 실제 데이터 (예: HTML 문서, 이미지, JSON 등)
    • 상태 코드에 따라 없을 수도 있음 (예: 204 No Content)

7.QUIC

1. QUIC

  • 구글이 개발한 최신 전송 프로토콜
  • 기존의 TCP 대신 UDP 기반에서 빠르고 안전한 인터넷 통신을 목표
  • UDP를 기반으로 동작하며 TCP+TLS 기능을 통합한 구조
  • 웹 페이지 로딩 속도 개선과 지연 시간(latency) 감소를 위해 설계

2. QUIC 주요특징

  • 빠른 연결 수립
    • TCP의 3-way handshake와 TLS 핸드셰이크를 결합해 초기 연결 지연 시간을 크게 줄임
    • 0-RTT(Zero Round Trip Time) 연결 지원으로 재접속 시 즉시 데이터 송수신 가능
  • 멀티플렉싱 (Multiplexing)
    • 한 연결에서 여러 스트림을 독립적으로 전송
    • TCP와 달리 하나 스트림 지연이나 손실이 다른 스트림에 영향을 주지 않음 (헤드 오브 라인 블로킹 문제 해소)
  • UDP 기반
    • 방화벽이나 NAT 친화적이며, 사용자 공간(user space)에서 구현 가능
    • 네트워크 장비와의 호환성 확보
  • 내장된 보안
    • TLS 1.3 암호화를 기본 내장해 데이터 전송 시 보안 제공

3. O-RTT 흐름

  • 최초 연결 시 클라이언트와 서버는 TLS 핸드셰이크를 통해 안전한 암호키(세션 키)를 서로 생성하고 공유함
  • 이 세션 키나 세션 관련 정보를 저장해 둠 (예: 세션 티켓)
  • 재접속 시 클라이언트는 이 정보를 서버에 보내서 “이전에 만든 키를 사용해서 바로 통신하자”라고 요청
  • 서버가 이를 받아들여서 새 키 교환 없이 바로 데이터를 암호화·복호화함
This post is licensed under CC BY 4.0 by the author.