HTTPS
HTTPS는 HTTP의 보안 버전으로, 데이터를 안전하게 전송하기 위해 사용됩니다.
HTTPS는 공개 키 암호화를 사용하여 통신을 보호합니다. 아래는 간단한 원리입니다:
클라이언트(브라우저)가 서버에 연결 요청을 보내면 서버는 공개 키와 인증서를 클라이언트에게 제공합니다.
클라이언트는 서버의 공개 키를 사용하여 데이터를 암호화하고, 서버로 전송합니다.
서버는 자신의 개인 키를 사용하여 데이터를 해독하고 응답을 클라이언트에게 전송합니다.
클라이언트는 서버의 공개 키를 사용하여 응답을 해독합니다.
이러한 과정을 통해 데이터가 중간에서 탈취 또는 변조되는 것을 방지하고, 클라이언트와 서버 간의 신뢰성을 확보합니다.
TCP 3-way Handshake
TCP 3-way 핸드쉐이크는 TCP/IP 네트워크 프로토콜에서 연결을 설정하기 위한 과정입니다.
다음과 같은 단계로 이루어집니다:
클라이언트가 서버에게 연결 요청 메시지(SYN)를 보냅니다.
서버는 클라이언트의 요청을 수락하고, 스스로의 초기 순차 번호(ISN)와 함께 연결 수락 메시지(SYN-ACK)를 클라이언트에게 보냅니다.
클라이언트는 서버의 응답을 받으면 스스로의 초기 순차 번호(ISN)를 생성하고, 서버에게 연결 수락 메시지(ACK)를 보냅니다.
이러한 과정을 통해 양쪽 시스템이 연결이 설정되었음을 확인하고 데이터 전송을 시작할 수 있습니다.
TCP vs. UDP
TCP(전송 제어 프로토콜)는 연결 지향적이며 신뢰성 있는 통신을 제공합니다. 반면, UDP(사용자 데이터그램 프로토콜)는 비연결성이며 신뢰성이 낮은 통신을 제공합니다.
TCP는 3-way 핸드쉐이크와 같은 연결 설정 과정을 거치며, 데이터 전송 중 재전송과 순서 제어를 수행하여 데이터의 신뢰성을 보장합니다.
UDP는 연결 설정 과정이 없으며, 데이터를 무조건적으로 보내고 받기 때문에 빠른 전송이 가능하지만, 데이터 손실이나 순서 뒤섞임이 발생할 수 있습니다.
TCP는 웹 브라우징, 이메일, 파일 전송과 같은 신뢰성이 필요한 응용 프로그램에 사용되며, UDP는 실시간 멀티미디어 스트리밍과 같이 속도가 중요한 응용 프로그램에 사용됩니다.
CORS(Cross-Origin Resource Sharing)
CORS는 웹 애플리케이션에서 다른 도메인의 자원을 요청할 때 보안 정책을 적용하는 메커니즘입니다.
웹 브라우저에서 스크립트로 다른 도메인의 리소스를 요청할 때, 브라우저는 먼저 해당 리소스의 서버에서 CORS 헤더를 확인하고 승인 여부를 결정합니다.
CORS를 구현하려면 서버에서 다음과 같은 HTTP 헤더를 응답에 포함시켜야 합니다:
Access-Control-Allow-Origin: 허용된 오리진(도메인) 목록을 지정합니다. 클라이언트 도메인이 여기에 포함되어야 요청이 승인됩니다.
다른 헤더들도 필요에 따라 설정할 수 있으며, 요청 메서드 (GET, POST 등) 및 허용되는 헤더 등을 제어할 수 있습니다.
CORS를 구현하지 않으면 브라우저에서 보안 정책 위반으로 인해 요청이 차단됩니다. 서버 측에서 올바른 CORS 헤더를 설정하여 이를 해결할 수 있습니다.
'면접' 카테고리의 다른 글
자료구조, 알고리즘 면접 질문 (0) | 2023.09.06 |
---|---|
Node.js 질문 (0) | 2023.09.06 |
데이터 베이스 질문 (0) | 2023.09.06 |
면접 후기 (2) | 2023.09.05 |
프로그래머스 체육복 (0) | 2023.08.06 |