Contents
⭐️ HTTP 프로토콜에 대해서 설명해주세요.HTTP의 request(요청)/response(응답) 모델에 대해 설명해주세요.HTTP 메서드중 GET과 POST의 차이점에 대해 설명해주세요.HTTP 메서드중 PUT과 PATCH의 차이점에 대해 설명해주세요.HTTP 상태 코드가 뭔가요? 알고 있는 상태 코드 몇가지 설명해주세요.HTTP 헤더가 뭘까요? 알고 있는 헤더 몇 가지 설명해주세요.⭐️ HTTP의 무상태성(Stateless)에 대해서 설명해주세요.HTTP Keep-Alive에 대해서 설명해주세요.HTTP 파이프라이닝에 대해서 설명해주세요.HTTP/1.1, HTTP/2, HTTP/3 각각의 특징에 대해 설명해주세요. HTTPS에 대해서 설명해주세요.SSL/TLS이 뭔가요?대칭키 암호화 방식에 대해 설명해주세요.비대칭키(공개키) 암호화 방식에 대해서 설명해주세요.전자 서명에 대해서 설명해주세요.⭐️ HTTPS 암호화 과정에 대해 설명해주세요. (SSL Handshake의 동작 과정을 설명해 주세요.)⭐️ DNS가 뭔가요?DNS 작동 방식에 대해 설명해주세요.DNS 질의 종류에 대해 설명해주세요.DNS 서버에게 IP 주소를 요청할 때, 왜 UDP를 사용하나요?DNS 레코드가 무엇인가요?참고 본 글은 JSCODE CS스터디 컴퓨터 네트워크 7기에서 학습한 내용을 정리한 글입니다.
⭐️ HTTP 프로토콜에 대해서 설명해주세요.
클라이언트-서버 구조
stateless
connectionless
프로토콜
- HTTP 프로토콜이란 웹에서 클라이언트와 서버 간 통신을 위한 통신 규칙입니다.
- HTTP는 상태 정보를 저장하지 않는 Stateless 특징과, 클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는 connectionless의 특징을 갖고있습니다.
HTTP의 request(요청)/response(응답) 모델에 대해 설명해주세요.
GET
POST
상태 코드
- HTTP 요청/응답 모델은 클라이언트가 서버에 요청을 보내고, 서버가 그 요청에 대한 응답을 반환하는 구조입니다.
- 클라이언트는 GET, POST와 같은 요청 메서드를 사용하여 특정 리소스를 요청하고, 서버는 상태 코드와 함께 요청된 데이터를 포함한 응답을 제공합니다.
HTTP 메서드중 GET과 POST의 차이점에 대해 설명해주세요.
데이터 요청
요청 URL에 파라미터
데이터 생성
요청 본문에 데이터
- GET은 서버에 데이터를 요청할 때 사용하며 요청 URL에 파라피터를 포함하여(query string) 데이터를 전송합니다.
- 활용 사례) 게시판의 게시물 조회
- 중요) 파라미터에 데이터 값이 모두 노출되기 때문에 보안 측면에서 중요한 정보를 다루면 안된다
- POST는 리소스를 생성하거나 업데이트하기 위해 서버에 데이터를 제출할 때 사용하며 요청 본문에 데이터를 포함하여 전송하여 보안성과 데이터 크기에서 GET보다 더 뛰어납니다.
- 활용 사례) 게시판에 게시글 작성
HTTP 메서드중 PUT과 PATCH의 차이점에 대해 설명해주세요.
전체 업데이트
일부 업데이트
- PUT은 리소스 전체를 업데이트할 때 사용되며 지정된 URL의 리소스를 새 데이터로 완전히 대체합니다.
- PATCH는 리소스의 일부만 수정할 때 사용되며 변경할 필드만 포함하여 전송합니다.
HTTP 상태 코드가 뭔가요? 알고 있는 상태 코드 몇가지 설명해주세요.
결과
3자리 숫자코드
200
404
500
- HTTP 상태 코드는 웹 서버가 클라이언트의 요청을 처리한 결과를 나타내는 3자리 숫자 코드로 성공 여부와 그 외 추가 정보를 제공합니다.
- 200 : 요청이 성공적으로 처리되었음
- 404 : 요청한 리소스를 찾을 수 없음
- 500 : 서버 내부 오류 의미
HTTP 헤더가 뭘까요? 알고 있는 헤더 몇 가지 설명해주세요.
메타데이터
성격/응답 형식/캐싱 정책
Content-Type
- HTTP 헤더는 클라이언트와 서버 간의 요청 및 응답에 대한 메타데이터를 포함하는 필드입니다.
- 헤더는 요청의 성격, 응답의 형식, 캐싱 정책 등 다양한 정보를 전달합니다.
- Content-Type : 전송되는 데이터의 MIME 타입 지정
- MIME : Multipurpose Internet Mail Extensions - 인터넷에서 전송되는 파일의 형식을 나타내는 표준
- "Content-Type": "application/json; charset=utf-8"
- Authorization : 인증 정보 포함
- User-Agent : 클라이언트의 소프트웨어 정보 제공
- Set-Cookie : 서버가 클라이언트에 쿠키를 설정할 때
⭐️ HTTP의 무상태성(Stateless)에 대해서 설명해주세요.
독립적인 처리
상태를 기억하지 않음
서버 자원 절약
로드 밸런싱
- HTTP의 무상태성은 각 요청이 독립적으로 처리되며 서버가 클라이언트의 이전 요청 상태를 기억하지 않는 특성을 의미합니다.
- 이를 통해 서버는 각 요청을 별도로 처리할 수 있어 확장성과 성능이 향상됩니다.
- 서버 자원 절약 : 서버는 클라이언트의 상태를 저장할 필요가 없음
- 부하 분산 : 클라이언트의 상태를 추적할 필요가 없기 때문에 요청을 여러 서버에 쉽게 분산 가능 → 로드 밸런싱 용이
HTTP Keep-Alive에 대해서 설명해주세요.
연결 유지
하나의 TCP연결
재사용
오버헤드 감소
- HTTP의 Keep-Alive는 클라이언트와 서버 간의 연결을 유지하여 여러 요청과 응답을 하나의 TCP 연결을 통 여러번 재사용하여 처리할 수 있는 기능입니다.
- 이를 통해 연결 설정 및 해제에 드는 오버헤드를 줄여 성능을 향상시킵니다.
HTTP 파이프라이닝에 대해서 설명해주세요.
한 번의 연결
연속적인 요청
순차 처리
HOL Blocking
- HTTP 파이프라이닝은 한번의 연결로 클라이언트가 서버에 여러 요청을 연속적으로 보내고 서버가 이를 순차적으로 처리하여 응답하는 방식입니다.
- 이를 통해 대기 시간을 줄이고 네트워크 효율성을 높일 수 있지만 HTTP/1.1에서만 지원되며 후순위 요청은 응답이 지연될 수 있다는 단점이 있습니다.
HTTP/1.1, HTTP/2, HTTP/3 각각의 특징에 대해 설명해주세요.
- HTTP/1.1
keep-alive
pipelining
TCP
- 지속적인 연결을 지원하며, 파이프라이닝 기능을 통해 여러 요청을 순차적으로 처리할 수 있지만, 요청과 응답이 순차적으로 이루어져 대기 시간이 발생할 수 있습니다.
- HTTP/2
Multiplexed streams
Header Compression
TCP
- 멀티플렉싱을 통해 단일 연결에서 여러 요청과 응답을 동시에 처리할 수 있어 성능이 크게 향상되며, 헤더 압축 기능으로 중복 헤더로 인한 오버헤드 문제를 해결합니다. 여전히 TCP를 사용하기 때문에 TCP 고유의 HOL Blocking(Head of Line Blocking) 문제가 발생할 수 있습니다.
- HTTP/3
QUIC
UDP
Multiplexed streams
- QUIC 프로토콜을 기반으로 하여 UDP를 사용하고, 연결 설정과 데이터 전송 속도를 개선하여 지연 시간을 줄이며, 패킷 손실에 대한 복원력이 강화되었습니다.
HTTPS에 대해서 설명해주세요.
SSL/TLS
암호화
보안
프로토콜
- HTTPS는 HTTP 프로토콜에 SSL/TLS 암호화를 추가하여 데이터 전송시 보안을 강화한 프로토콜입니다.
- 이를 통해 웹사이트와 사용자 간의 통신을 안전하게 보호하고 데이터의 무결성과 기밀성을 유지하여 중간자 공격을 방지할 수 있습니다.
정보보안 핵심 3대 원칙
1. 기밀성
- 오직 인가된 사람/프로세스/시스템만이 알 필요성에 근거하여 시스템에 접근해야한다
- 위험 요소 : 도청, 사회 공학 등
- 적용 기술 : 암호화, 네트워크 트래픽 통제
2. 무결성
- 정보는 고의적인, 비인가된, 우연한 변경으로부터 보호되어야 한다
- 위험 요소 : 트로이 목마, 바이러스, 해킹 등
- 적용 기술 : 전자서명, 바이러스 백신, 해쉬 함수
3. 가용성
- 정보는 사용자가 필요로 하는 시점에 접근 가능해야 한다
- 위험 요소 : DoS, DDoS, 재해 등
- 적용 기술 : 백업, 결함허용시스템, 클러스터링
SSL/TLS이 뭔가요?
암호화 프로토콜
인증서 기반 인증
- SSL(보안 소켓 계층)/TLS(전송 계층 보안)는 웹에서 데이터를 안전하게 전송하기 위한 암호화 프로토콜입니다.
- 인증서 기반의 인증을 통해 신뢰할 수 있는 연결을 설정하여 클라이언트와 서버 간의 통신을 보호하여 데이터의 무결성과 기밀성을 유지할 수 있습니다.
- SSL은 초기 버전으로 현재 사용 중단을 권고하고 있고 TLS가 더 안전하고 널리 사용되고 있습니다.
대칭키 암호화 방식에 대해 설명해주세요.
동일한 키
빠르다
키관리
- 대칭키 암호화 방식은 동일한 키를 사용하여 데이터를 암호화하고 복호화하는 방법입니다.
- 비대칭키보다 빠르고 효율적이지만 키 관리가 중요하다는 단점이 있습니다.
비대칭키(공개키) 암호화 방식에 대해서 설명해주세요.
키페어
보안
전자 서명
암호화된 이메일
블록체인 기술
- 비대칭키 암호화 방식은 공개키와 개인키의 쌍을 사용하여 데이터를 암호화하고 복호화하는 방법입니다.
- 공개키로 암호화된 데이터는 해당 개인키로만 복호화할 수 있어 보안성이 높습니다.
- 전자 서명, 암호화된 이메일, 블록체인 기술에 활용되고 있습니다.
전자 서명에 대해서 설명해주세요.
디지털 문서
개인키로 서명
공개키로 검증
- 전자 서명은 디지털 문서의 무결성과 출처를 확인하기 위해 사용되는 암호화 기술로 개인키로 서명된 데이터는 해당 공개키로 검증할 수 있습니다.
- 이를 통해 문서가 변조되지 않았음을 보장하고 서명자의 신원을 확인할 수 있습니다.
⭐️ HTTPS 암호화 과정에 대해 설명해주세요. (SSL Handshake의 동작 과정을 설명해 주세요.)
SSL Handshake
클라이언트 헬로
서버 헬로
서버 인증
프리마스터 시크릿
세션 키 생성
안전한 데이터 전송
- HTTPS 암호화 과정에서 SSL 핸드셰이크는 클라이언트와 서버 간의 안전한 연결을 설정하는 단계입니다.
- 클라이언트가 서버에게 연결 요청을 보내고 (클라이언트 헬로), 서버는 인증서를 통해 자신의 신원을 확인 (서버 헬로, 서버 인증)합니다.
- 클라이언트는 서버의 공개키로 프리마스터 시크릿을 암호화하여 전송하고 (프리마스터 시크릿), 양측은 이를 바탕으로 세션 키(세션 키 생성)를 생성합니다.
- 마지막으로 핸드셰이크가 완료되면 안전한 데이터 전송이 시작됩니다.
⭐️ DNS가 뭔가요?
도메인 이름
IP주소
변환
- DNS(Domain Name System)는 도메인 이름을 IP 주소로 변환하여 인터넷에서의 통신을 가능하게 하는 시스템입니다.
- 사용자가 웹사이트 주소를 입력하면 DNS가 해당 주소에 대한 IP 주소를 찾아 웹사이트를 연결합니다.
- 또한 이메일 서비스에서 도메인 이름을 통해 메일 서버의 IP 주소를 찾는 데도 활용됩니다.
DNS 작동 방식에 대해 설명해주세요.
도메인 이름
DNS 서버에 요청
연결 IP 주소 반환
캐시
- DNS는 사용자가 입력한 도메인 이름을 DNS 서버에 요청하여 해당 도메인에 연결된 IP 주소를 반환하는 방식으로 작동합니다.
- 이 과정에서 DNS 서버는 캐시된 정보를 사용하거나 다른 DNS 서버에 질의하여 최종 IP 주소를찾아냅니다.
DNS 질의 종류에 대해 설명해주세요.
- A 질의
- 도메인 이름을 IP 주소로 변환
- PTR 질의
- IP 주소를 도메인 이름으로 변환
- CNAME
- 별칭 도메인 이름을 다른 도메인으로 매핑
- MX
- 메일 서버 정보 요청
DNS 서버에게 IP 주소를 요청할 때, 왜 UDP를 사용하나요?
빠른 속도
낮은 오버헤드
- 빠른 응답 속도와 낮은 오버헤드를 제공하기 때문에 UDP를 사용합니다.
- DNS 질의는 일반적으로 짧고 간단하여 TCP 연결 설정이 필요 없는 경우가 많습니다.
DNS 레코드가 무엇인가요?
- DNS 레코드는 도메인 이름과 관련된 정보를 저장하는 데이터베이스로 IP주소, 메일 서버, 서브도메인 등의 네트워크 리소스를 매핑하는 데 사용됩니다.
참고
written by salmonavocado🥑
Share article