응용 계층
애플리케이션이 동작하는 계층
역할: 클라이언트의 요청을 전달하기 위해 통신 대상(서버 등)이 이해할 수 있는 메시지(데이터)로 변환하고 전송 계층으로 전달
클라이언트 측 애플리케이션(웹 브라우저, 메일 프로그램 등)이 서버 측 애플리케이션(웹 서버 프로그램, 메일 서버 프로그램 등)과 통신하려면 응용 계층의 프로토콜을 사용해야 함
대표적 프로토콜
-
HTTP/HTTPS
웹 브라우징에서 웹 서버와 클라이언트 간 데이터를 주고받음
HTTPS는 보안을 위해 TLS를 추가함
-
DNS
사용자가 입력한 도메인 이름(예: www.example.com)을 해당하는 IP주소로 변환
네트워크 통신의 시작점
-
FTP
파일 업로드 및 다운로드에 사용
예: 대용량 파일 전송, 서버 파일 관리
-
SMTP, POP3
이메일 시스템의 핵심 프로토콜
SMTP: 이메일 송신 / POP3: 이메일 수신
HTTP (HyperText Transfer Protocol)
클라이언트와 서버 간에 웹 페이지와 리소스(이미지, 동영상 등)를 주고받기 위한 프로토콜

주요 특징
- 비연결 지향 (Stateless)
HTTP는 요청과 응답이 끝나면 연결을 끊음
매 요청마다 새로운 연결을 생성하므로, 상태를 유지하지 않음
상태를 위해 쿠키, 세션, 토큰 등을 활용
- 텍스트 기반 프로토콜
사람이 읽을 수 있는 형식으로 요청과 응답을 처리
예: GET /index.html HTTP/1.1
- 요청-응답 방식
클라이언트가 요청(Request)를 보내면, 서버가 응답(Respose)를 반환
- 리소스 중심
HTTP는 웹 서버의 리소스(URL)에 접근하기 위한 프로토콜
클라이언트는 서버에 리소스를 요청하고, 서버는 해당 리소스를 반환
메시지 구조
HTTP 요청
: 요청줄, 헤더, 본문으로 구성
- 요청줄: 메서드, 요청 대상(URL), 프로토콜 버전
- 헤더: 오청 관련 부가 정보
- 본문: 전송할 실제 데이터 (POST, PUT 등에서 사용)
HTTP 응답
: 상태줄, 헤더, 본문으로 구성
상태줄: 프로토콜 버전, 상태 코드, 상태 메시지
본문: 서버가 클라이언트에 전달하는 실제 데이터
HTTP 메서드
- GET: 리소스 조회
- POST: 리소스 생성
- PUT: 전체 수정
- PATCH: 일부 수정
- DELETE: 리소스 삭제
HTTP 상태 코드
서버가 요청을 처리한 결과를 숫자로 표현한 코드
- 1xx: 정보 (요청 진행 중)
- 2xx: 성공 (200 OK, 201 Created 등)
- 3xx: 리다이렉션 (301, 302, 304 등)
- 4xx: 클라이언트 오류 (400 Bad Request, 404 Not Found 등)
- 5xx: 서버 오류 (500 Internal Server Error 등)
버전별 특징
- HTTP/1.0
요청마다 새로운 연결을 생성 -> 비효율적
- HTTP/1.1
Keep-Alive로 연결 재사용 가능
Host 헤더 필수
- HTTP/2
멀티 플렉싱 지원 -> 하나의 연결로 여러 요청 병렬 처리
텍스트 대신 이진 프레임 구조
헤더 압축으로 속도 개선
- HTTP/3
TCP대신 UDP 기반 QUIC 프로토콜 사용
연결 지연 감소, 전송 속도 향상
DNS (Domain Name System)
도메인 이름을 IP주소로 변환하는 시스템
사용자가 기억하기 쉬운 도메인 이름(www.example.com)을 입력하면 이를 네트워크가 이해할 수 있는 IP 주소로 변환하여 통신이 가능하도록 함
동작 과정
- 사용자가 도메인 이름 입력
- 로컬 DNS 캐시 확인
사용자의 컴퓨터가 최근 방문한 도메인의 IPP 주소를 캐시에 저장했는지 확인
- DNS 재귀 서버 (Resolver)
캐시에 없는 경우, 인터넷 서비스 제공자 (ISP)의 DNS 서버로 요청이 전달됨
DNS 계층적 조회
요청순서: 루트 네임서버 > TLD 네임서버 > 권한 네임서버

- IP 주소 반환
사용자의 컴퓨터로 IP 주소가 전달되고, 해당 주소로 연결