OSI 7계층 중 7계층(응용 계층)을 알아보자.
응용 계층(Application Layer)
응용 계층은 사용하는 애플리케이션이 동작하는 계층이다.
각 애플리케이션마다 활용하는 프로토콜이 다른데 이번에 알아볼 응용 계층의 프로토콜은 아래와 같다.

프로토콜을 하나씩 살펴보자.
HTTP
사용자가 웹 브라우저에 URL을 입력하는 형태로 서비스를 요청하면 서버에선 해당 페이지 정보를 보내 응답한다.
이처럼 웹에서 데이터를 주고받는 것에서 HTTP를 활용한다.
HTTP(HyperText Transfer Protocol)은 Client와 Server가 어떻게 데이터를 교환할지 정해놓은 규칙으로 80번 포트를 사용한다.
HTTP Request와 Response는 아래의 구조를 가진다.

StartLine과 StatusLine을 먼저 확인해 보자.
Request의 StartLine

- HTTP method: 데이터를 수신하는 서버 단에서 어떤 작업을 해야 하는지 알려준다.
- GET: 서버로부터 데이터 획득
- POST: 서버에 데이터를 추가, 생성
- PUT: 서버의 데이터 갱신(전체)
- PATCH: 서버의 데이터 갱신(일부)
- DELETE: 서버의 데이터 삭제
- 경로:웹 페이지를 보여주기 위한 파일이 위치하는 주소
- HTTP 버전: 사용하는 HTTP 버전
- 1.0: 여러 정보를 서버에 보내기 가능하지만 매 요청마다 연결을 수립해야 해 성능 저하 문제가 있다.
- 1.1: 1.0에서 Keepalive(교환을 마칠 때까지 연결 유지) 기능이 추가된 버전으로 현재 가장 많이 사용한다.
- 2.0: 응용 계층에 Binary Frame을 추가해 기존의 일반 text를 바이너리로 변환한 후 데이터를 분할해 보낸다. 전송 속도가 빨라지고 오류 발생 가능성이 줄어든다.
Response의 StatusLine

- HTTP 버전: request와 동일
응답 메시지: 상태 코드로 표현

다음엔 Header와 Body에 대해 알아보자.
Header
Header에는 Client와 Server가 통신하기 위한 부가 정보가 포함된다.
- Host: 서버의 도메인 이름과 포트 번호
- Connection: 현재 작업이 끝난 후에 연결 상태로 유지할지 여부
- Language: 응답에 사용할 언어
- ...
Body
모든 request와 response의 Body에 데이터가 있는 것은 아니다. 필요한 경우에만 데이터가 있다.

DNS
네트워크 통신을 할 때 IP주소를 일일이 기억하기는 거의 불가능하다. 따라서 google, naver 등의 도메인 이름을 활용하는데 이처럼 도메인 주소와 IP 주소 간 변환을 해주는 작업을 DNS(Domain Name System) 서버에서 한다.
동작 과정은 아래와 같다.
- 사용자가 웹 브라우저에 www.google.com을 입력한다.
- 해당 요청이 DNS 서버로 전달되고 DNS 서버에서 www.google.com의 IP 주소를 반환한다.
- 사용자는 DNS 서버로부터 받은 IP 주소를 이용해 웹 사이트에 접속한다.

이때, DNS 서버가 도메인의 IP 주소를 모른다면 DNS 서버가 다른 DNS 서버에게 질의한다.

다른 DNS에게 질의할 때엔 Root DNS(최상위 DNS)부터 시작해 계층적으로 질의한다.
만약 www.naver.com의 IP 주소가 없어서 다른 DNS에게 질의해야 한다면 아래와 같이 동작한다.

- 먼저 root DNS에게 1차 질의를 하고 root DNS도 IP주소가 없으면 com DNS의 주소를 알려준다.
- com DNS에게 2차 질의를 하고 없으면 다시 하위 DNS 주소를 알려준다.
- 트리 형태로 점점 내려가면서 최종적으로 원하는 IP 주소를 얻는다.
DHCP
DHCP(Dynamic Host Configuration Protocol)는 사용자들의 IP주소를 자동으로 관리하기 위한 것으로 DHCP 서버를 통해 사용자들에게 IP 주소를 자동 할당 및 회수한다.
IP를 할당해 주는 동작 과정은 아래와 같다.
- 사용자 컴퓨터가 DHCP 서버를 찾는다.
- DHCP 서버는 사용자 컴퓨터에게 IP 주소 할당 여부를 묻는다.
- 사용자 컴퓨터가 IP 주소가 필요하다고 요청한다.
- DHCP 서버에서 IP 주소를 할당한다.

SMTP & POP3
SMTP(Simple Mail Transfer Protocol)와 POP3(Post Office Protocol)는 이메일을 주고받을 때 사용하는 프로토콜로 송신자는 SMTP, 수신자는 POP3를 사용한다.

이를 이해하기 위해
- 송신자(A) - 송신자 메일 서버
- 송신자 메일 서버 - 수신자 메일 서버
- 수신자 메일 서버 - 수신자(B)
로 동작을 구분해 살펴보자.
송신자 - 메일 서버 간 통신
A가 메일 서버와 통신할 때엔 SMTP를 사용한다.

- A는 메일 서버에게 25번 포트(SMTP)로 통신하겠다고 알린다. 메일 서버는 OK 신호와 자신의 이름을 알려준다.
- A는 자신의 이메일 주소를 알린다. 메일 서버는 OK 신호로 응답한다.
- A는 수신자의 이메일 주소를 알린다. 메일 서버는 OK 신호로 응답한다.
- A는 이메일 본문을 알린다. 메일 서버는 OK 신호로 응답한다.
- A는 연결 종료를 알린다. 메일 서버는 연결을 종료한다.
메일 서버 - 메일 서버 간 통신
송신자 - 메일 서버 간 통신과 동일하게 SMTP를 사용하지만 과정이 다르다.

- 송신자 측 메일 서버는 이메일을 수신자 측 메일 서버에 전달한다.(25번 port 사용)
- 수신자 측 메일 서버는 받은 이메일을 B의 편지함에 저장한다.
메일 서버 - 수신자 간 통신
메일 서버와 수신자 간 통신은 POP3를 사용한다.

- B는 110번 포트(POP3)로 메일 서버에 연결을 시도한다. 메일 서버는 OK 신호로 응답한다.
- B는 자신의 USER 정보를 알린다. 메일 서버는 OK 신호로 응답한다.
- B는 자신의 PASSWORD 정보를 알린다. 메일 서버는 OK 신호로 응답한다.
- B는 메일 서버에서 이메일 목록을 확인하고 본문을 취득한다. 메일 서버는 OK 신호로 응답한다.
- B는 연결 종료를 알린다. 메일 서버는 OK 신호로 응답한다.
POP3는 이메일을 가져오면 서버에선 해당 이메일이 삭제된다. 따라서 네트워크가 연결되지 않아도 이메일 내용을 확인할 수 있지만 다른 컴퓨터에서는 확인할 수 없다.
삭제를 원하지 않을 땐 IMAP(Internet Access Message Protocol)를 활용한다.
(IMAP: 서버에서 이메일을 계속 저장)
로드 밸런서
응용 계층의 로드 밸런서는 전송 계층의 로드 밸런서 기능을 포함해 더 많은 작업을 할 수 있다.
IP 주소, port 외에 URI, HTTP header, cookie 등을 기준으로 트래픽 분산이 가능하다.
즉, 서비스 별로 부하를 분산할 수 있다.

'Network' 카테고리의 다른 글
| JWT (1) | 2025.03.25 |
|---|---|
| Network - OSI 7 Layer: 네트워크 흐름 정리 및 이해 (0) | 2024.04.14 |
| Network - OSI 7 Layer: 전송 계층(4 Layer) (0) | 2024.04.01 |
| Network - OSI 7 Layer: 네트워크 계층(3 Layer) (0) | 2024.03.25 |
| Network - OSI 7 Layer: 데이터 링크 계층(2 Layer) (1) | 2024.03.18 |