HTTP(HyperText Transfer Protocol)란 ❓
HTTP(HyperText Transfer Protocol)는 웹에서 클라이언트와 서버 간에 데이터를 주고받기 위한 프로토콜입니다.
주로 웹 브라우저와 웹 서버 간에 HTML 문서, 이미지, 비디오, 자원 등 웹 페이지에 필요한 다양한 데이터를 전송하는 데 사용됩니다. HTTP는 웹상에서 정보를 요청하고 응답하는 방식으로, 클라이언트(웹 브라우저)와 서버 간의 통신을 관리합니다.
프로토콜 (Protocol) ❓
컴퓨터나 네트워크 장비 간 데이터 교환을 위한 규칙과 약속입니다. 데이터 전송 방식, 형식, 순서, 오류 처리 등을 정의하여 원활한 통신을 가능하게 합니다.
간단한 예시로 TCP/IP, HTTP, FTP 등이 있습니다.
HTTP의 특징
1. 비보안 통신 (Non-secure)
- HTTP는
암호화되지 않은 방식으로 데이터를 전송합니다. - 즉, 통신 내용이 네트워크를 통해 전달될 때, 중간에서 제3자가 데이터를 쉽게 볼 수 있습니다.
2. 상태 비저장 (Stateless)
- HTTP는 상태 비저장 프로토콜입니다. 즉, 클라이언트와 서버 간의 요청과 응답은 독립적입니다. 서버는 이전 요청에 대한
정보를 저장하지 않습니다. - 예: 사용자가 로그인한 후 서버는 이전에
로그인한 정보를 기억하지 않으며, 매 요청마다 로그인 정보를 다시 확인해야 합니다.
3. 텍스트 기반 프로토콜
- HTTP 요청과 응답은 텍스트 기반으로 구성되며, 사람이 읽을 수 있는 형태로 되어 있습니다.
- 예를 들어, 요청은 GET /index.html HTTP/1.1와 같은 형태로 전송됩니다.
4. 80번 포트 사용
- HTTP는 기본적으로 포트 80을 통해 연결됩니다.
- 즉, 웹 서버가 HTTP를 사용할 경우 포트 80을 통해 요청을 받습니다.
HTTP의 동작 방식
1. 클라이언트가 요청
- 사용자가 웹 브라우저에서 URL을 입력하면, 브라우저는 HTTP 요청을 해당 서버에 보냅니다.
2. 서버가 응답
- 서버는 요청을 처리하고, 해당 페이지나 자원(HTML 파일, 이미지 등)을 HTTP 응답으로 반환합니다.
3. 브라우저가 응답을 렌더링
- 브라우저는 서버에서 받은 데이터를 사용자에게 표시합니다.
HTTP의 한계
보안 부족
- HTTP는
데이터를 암호화하지 않기 때문에 중간에서 데이터를 가로채거나 변조할 수 있습니다.
정보 노출
- 로그인 정보, 결제 정보 등 중요한 데이터를 HTTP로 전송하면 보안상의 위험이 발생할 수 있습니다.
HTTPS (HyperText Transfer Protocol Secure)란 ❓
HTTPS (HyperText Transfer Protocol Secure)는 HTTP의 보안 버전으로, SSL/TLS 암호화 프로토콜을 사용하여 웹 브라우저와 서버 간의 통신을 안전하게 보호합니다.
HTTPS는 웹에서 주고받는 데이터를 암호화하여 중간자 공격(MITM)이나 도청으로부터 보호하며, 데이터의 무결성과 기밀성을 보장합니다.
HTTPS의 특징
1. 암호화
- HTTPS는 SSL/TLS 프로토콜을 사용하여 클라이언트와 서버 간의 데이터를 암호화합니다. 이로 인해 중간에서
데이터가 유출되거나변조되는 것을 방지할 수 있습니다. - 암호화된 통신은 누군가가 데이터를 가로채더라도 내용을 읽을 수 없도록 만듭니다.
2. 데이터 무결성
- HTTPS는 데이터 전송 중에
변조되지 않도록 보호합니다. 즉, 전송되는 데이터가 도중에변경되지 않음을 보장합니다.
3. 인증
- HTTPS는 서버 인증을 통해 연결되는 서버가 실제로 자신이 주장하는 서버임을 확인할 수 있습니다. 이 인증은 SSL 인증서를 통해 이루어집니다.
- SSL 인증서는 인증 기관(CA, Certificate Authority)에서 발급되며, 이를 통해 사용자는 서버가 신뢰할 수 있는 서버인지 확인할 수 있습니다.
4. 보안성
- HTTPS는 특히 로그인 정보, 신용카드 정보, 개인정보 등을 처리할 때 반드시 사용해야 합니다. 보안이 중요한 서비스나 사이트에서 필수적으로 사용됩니다.
5. 포트 433 사용
- HTTPS는 포트 443을 사용하여 연결됩니다
HTTPS의 동작 방식
1. 클라이언트와 서버 간 SSL/TLS 핸드쉐이크
- 클라이언트(웹 브라우저)는 HTTPS 사이트에 접속할 때, 서버와 SSL/TLS 핸드쉐이크를 시작합니다.
- 이 과정에서 서버의 SSL 인증서를 확인하고, 안전한 암호화 통신을 위한 키 교환이 이루어집니다.
2. 암호화된 데이터 전송
- 핸드쉐이크가 완료되면, 이후 클라이언트와 서버 간의 모든 데이터는 암호화되어 전송됩니다.
- 중간에서 데이터가 가로채지더라도 내용은
해독할 수 없습니다.
3. 서버 인증
- 클라이언트는 서버의 인증서를 통해 서버가 신뢰할 수 있는지 확인합니다.
- 인증서는 인증 기관(CA)에서 발급된 것이어야 하며, 인증 기관의 공개 키를 통해 검증됩니다.
핸드쉐이크(Handshake)
두 컴퓨터 시스템 간의 연결을 설정하는 과정으로, 주로 보안 통신에서 SSL/TLS와 같은 암호화 프로토콜을 사용할 때 발생합니다.
이 과정은 클라이언트와 서버가 안전한 연결을 위해 필요한 암호화 키 교환 및 인증 절차를 완료하는 단계입니다.
HTTPS의 중요성
보안
- HTTPS는 SSL/TLS를 통해 데이터를 암호화하고, 통신 내용이 중간에서 유출되거나 변조되는 것을 방지합니다.
SEO(검색 엔진 최적화)
- Google과 같은 검색 엔진은 HTTPS를 사용하는 웹사이트를 우선순위로 다루기 때문에, SEO 측면에서도 HTTPS를 사용하는 것이 유리합니다.
신뢰성
- HTTPS를 사용하면 사용자가 사이트에 대해 신뢰를 가질 수 있습니다.
- 특히 온라인 쇼핑몰이나 은행 사이트 등에서 사용자는 HTTPS로 암호화된 사이트를 통해 결제 정보나 개인정보를 제공하게 됩니다.
HTTP와 HTTPS의 차이점
보안 | 암호화되지 않음 | SSL/TLS 암호화 적용 |
포트 | 80 | 443 |
인증 | X | 서버 인증 (SSL 인증서) |
성능 | 빠름 (암호화가 없기 때문) | 약간 느림 (암호화로 인한 오버헤드) |
용도 | 보안이 필요 없는 사이트 | 로그인, 결제 등 보안이 중요한 사이트 |
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.11.30 - VsCode > Docker 확장 프로그램 알아보기 (0) | 2024.11.30 |
---|---|
[TIL, 일일 회고] 2024.11.29 - CS 간단 정리 : TCP와 UDP 차이 (0) | 2024.11.29 |
[TIL, 일일 회고] 2024.11.27 - List를 배열로 변환하는 다양한 방법: 프리미티브 타입과 레퍼런스 타입 구분하기 (0) | 2024.11.27 |
[TIL, 일일 회고] 2024.11.26 - Udemy 동영상이 안보일 때 해결방법 (0) | 2024.11.26 |
[TIL, 일일 회고] 2024.11.25 - Interactive vs Non-Interactive Shell 알아보기 (0) | 2024.11.25 |