응용 계층은 네트워크의 최상위 계층으로, 사용자와 네트워크 간의 상호작용을 처리하는 중요한 역할을 합니다.
응용 계층의 내용을 정리할 때는 개념정리와 더불어 기술 면접에서 자주 나오는 질문과 답변을 포함하여 정리해 보았습니다.
1. 응용 계층 개요
- 응용 계층 역할
- 사용자와 네트워크 간 상호작용을 지원하며, 데이터를 전송하거나 요청하는 작업을 담당합니다.
- ex) 브라우저를 통해 웹 페이지 요청, 이메일 송수신, 파일 다운로드 등
2. 주요 프로토콜 상세 설명
1) HTTP와 HTTPS
- HTTP (HyperText Transfer Protocol)
- 텍스트, 이미지, 동영상 등의 리소스를 서버에서 클라이언트로 전송하는 프로토콜입니다.
- 상태 비저장(Stateless) 프로토콜로, 요청 간 연결 상태를 유지하지 않습니다.
* 상태 비저장 : HTTP에서 클라이언트가 서버로 요청을 보낼 때, 요청은 독립적으로 처리됩니다. 이전 요청의 정보(로그인 상태 등)를 서버가 자동으로 기억하지 않습니다. -> 이를 해결하기 위해 쿠키, 세션, 토큰과 같은 추가적인 메커니즘을 사용합니다.
* 요청 간 연결 상태 유지 X : HTTP 프로토콜은 기본적으로 클라이언트와 서버 간 연결을 요청(Request)과 응답(Response) 단위로 처리합니다. 요청이 끝나면 서버와 클라이언트 간의 연결이 끊어집니다.
- HTTPS (HTTP Secure)
- HTTP에 SSL/TLS를 추가하여 데이터를 암호화하고 보안을 강화한 프로토콜입니다.
- HTTPS 보안 제공 요소
- 기밀성 : 데이터를 암호화하여 도청 방지
- 무결성 : 데이터가 전송 중 변경되지 않았음을 보장
- 인증 : 서버가 신뢰할 수 있는지 보증
Q. HTTP와 HTTPS의 차이를 설명하시오.
- HTTP와 HTTPS의 차이점 : 데이터 암호화
- HTTP는 데이터를 암호화하지 않고 평문(Plain Text)으로 전송하는 프로토콜
- 브라우저와 서버 간 전송되는 모든 데이터를 암호화하여 기밀성, 무결성, 인증을 제공
- HTTPS는 HTTP + SSL/TLS로 데이터를 암호화하고, 인증을 추가한 프로토콜
- 브라우저와 서버 간 전송되는 모든 데이터를 암호화하여 기밀성, 무결성, 인증을 제공
- HTTPS는 SSL/TLS 인증서를 필요로 하며, 브라우저에서 "https://"로 표시됨
Q. HTTP 2.0과 1.1의 차이를 설명하시오.
- HTTP 1.1
- 한 번에 하나의 요청만 처리
- 요청과 응답이 순차적으로 이루어지며, 동시에 여러 요청을 처리하지 못함
- HTTP 2.0
- 멀티플렉싱 기술을 사용하여 한 번의 연결로 여러 요청과 응답을 동시에 처리 가능
- 응답은 요청 순서와 상관없이 스트림 방식으로 비동기 처리
추가 설명
- SSL(보안 소켓 계층)과 TLS(전송 계층 보안)는 HTTPS에서 데이터를 암호화하는 데 사용하는 프로토콜입니다.
- SSL은 TLS의 이전 버전이며, 현재 대부분 TLS가 사용됩니다.
2) DNS (Domain Name System)
- DNS 역할
- 사람이 읽기 쉬운 도메인 이름을 IP 주소로 변환하여 브라우저와 서버 간 연결을 지원합니다.
- 작동 과정
- 사용자가 브라우저에 example.com을 입력합니다.
- 브라우저가 로컬 DNS 서버에 도메인 이름의 IP 주소를 요청합니다.
- 로컬 DNS 서버에서 IP 주소를 찾을 수 없으면, 루트 네임서버 → TLD 네임서버 → 권한 있는 네임서버로 요청을 전달합니다.
- 최종 IP 주소를 클라이언트로 반환합니다.
Q. https://www.example.com/ 접속 과정은 무엇인가요?
- 브라우저가 도메인을 IP 주소로 변환하기 위해 DNS 요청을 전송합니다.
- 라우터를 통해 최적 경로를 찾아 서버로 요청을 전달합니다.
- TCP 연결 설정 : 3-way handshake로 클라이언트와 서버가 연결됩니다.
- HTTPS를 사용하는 경우, SSL/TLS 핸드셰이크를 통해 데이터를 안전하게 암호화합니다.
- 서버가 요청을 처리하고, HTML, CSS, JavaScript 등 데이터를 응답으로 전송합니다.
- 브라우저가 데이터를 렌더링 하여 화면에 표시합니다.
추가 설명
- DNS 캐싱 : 클라이언트가 요청한 도메인-주소 정보를 브라우저 또는 로컬 DNS 서버에 임시 저장하여, 같은 요청이 반복될 때 DNS 쿼리 시간을 줄입니다.
- 클라이언트가 자주 사용하는 도메인을 빠르게 처리하기 위해 DNS 캐싱을 적극 활용
- DNS 레코드 유형
- A 레코드: 도메인 → IPv4 주소
- AAAA 레코드: 도메인 → IPv6 주소
- CNAME: 도메인 별칭
3) FTP (File Transfer Protocol)
- FTP 역할
- 클라이언트와 서버 간 파일 업로드 및 다운로드를 지원합니다.
- 주로 대용량 파일 전송 시 사용됩니다.
- 작동 방식
- Active Mode : 서버가 클라이언트와 직접 데이터 채널을 열어 통신
- Passive Mode : 클라이언트가 데이터 채널을 여는 방식으로 방화벽을 우회
Q. FTP와 HTTP의 차이점은 무엇인가요?
- FTP는 파일 전송에 특화된 프로토콜로 양방향 데이터 전송이 가능합니다.
- HTTP는 주로 웹 리소스 요청 및 전송에 사용됩니다.
4) SMTP와 POP3/IMAP
- SMTP (Simple Mail Transfer Protocol)
- SMTP는 이메일 발신 전용 프로토콜로, 메일 클라이언트에서 메일 서버로 메시지를 보냅니다.
- POP3 (Post Office Protocol 3)
- 이메일을 서버에서 다운로드하여 로컬에 저장합니다.
- 서버와 동기화하지 않아 다른 기기에서 메일 상태를 확인하기 어렵습니다.
- IMAP (Internet Message Access Protocol)
- 이메일을 서버에 저장하고 클라이언트와 동기화합니다.
- 여러 기기에서 동일한 메일 상태를 유지합니다.
Q. SMTP와 POP3/IMAP의 차이를 설명하시오.
- SMTP는 메일을 전송하는 프로토콜이고, POP3/IMAP은 메일을 수신하는 프로토콜입니다.
- POP3는 이메일을 다운로드하고, IMAP은 서버에 메일을 저장하며 동기화합니다.
3. 추가 개념
1) 쿠키와 세션
- 쿠키
- 클라이언트에 저장되는 데이터로, 서버 요청 시 함께 전송됩니다.
- 상태를 유지하기 위해 클라이언트-서버 간 정보를 저장합니다.
- 세션
- 서버에 저장되는 데이터로, 클라이언트를 식별하기 위한 세션 ID를 사용합니다.
- 서버에서 관리되므로 보안성이 더 높습니다.
Q. 쿠키와 세션의 차이점을 설명하시오.
- 쿠키는 클라이언트에 저장되며, 서버 요청 시 함께 전송합니다.
- 세션은 서버에 저장되며, 클라이언트를 식별하기 위한 세션 ID를 사용합니다.
- 쿠키는 보안에 취약하지만, 세션은 서버에서 관리되므로 보안성이 더 높습니다.
Q. 쿠키를 HTTPS와 함께 사용하면 안전한가요?
- HTTPS를 사용하면 쿠키 데이터는 암호화되어 전송되므로 안전성이 높아집니다. 그러나 쿠키 탈취를 방지하기 위해 Secure, HttpOnly 옵션을 사용하는 것이 권장되고 있습니다.
2) REST와 RESTful API
- REST (Representational State Transfer)
- 자원을 URI로 표현하며, HTTP 메서드(GET, POST, PUT, DELETE)를 통해 자원을 조작합니다.
- RESTful API
- REST 원칙을 준수하는 API 설계 방식으로, 확장성과 유연성을 제공합니다.
Q. RESTful API란 무엇인가요?
- REST 원칙을 따르는 API로, 클라이언트와 서버 간 통신을 단순화하고 확장성을 제공합니다.
- 상태 비저장성(Stateless), 계층화된 구조, 캐싱 등의 특징을 가집니다.
Q. RESTful API의 단점은 무엇인가요?
- 요청이 많아질 경우 오버헤드 발생 가능합니다.
- 클라이언트가 요청마다 필요한 정보를 포함해야 하므로, 데이터 크기가 커질 수 있습니다.
'CS' 카테고리의 다른 글
| 개발자가 컴퓨터 구조를 알아야 하는 이유 (0) | 2025.01.13 |
|---|---|
| 웹 개발 시 꼭 챙겨야 할 보안 체크 리스트 (0) | 2025.01.07 |
| 혼자 공부하는 네트워크 CH4. 전송 계층 (1) | 2024.12.17 |
| 혼자 공부하는 네트워크 CH3. 네트워크 계층 (1) | 2024.12.12 |
| 혼자 공부하는 네트워크 CH2. 물리 계층과 데이터 링크 계층 (3) | 2024.12.09 |