HTTP는 암호화되지 않은 평문 데이터를 전송하는 프로토콜이기에, 제 3자가 정보를 조회할 수 있다.
이로 인해 발생하는 문제를 해결하기 위해 HTTPS가 나오게 되었다.
클라이언트-서버 구조
클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 보내는 구조로 이루어져 있다.
무상태 프로토콜(Stateless) : 서버가 클라이언트의 상태를 보존하지 않는 무상태 프로토콜이다. 즉, 무상태는 응답 서버를 쉽게 바꿀 수 있기에 서버의 확장성이 높다는 장점이 있지만, 클라이언트가 추가 데이터를 전송해줘야 하는 단점을 갖는다.
(scale out-수평확장 : 고객이 증가하면 점원을 대거 투입)
→ 서버가 클라이언트를 식별하지 못한다. 그래서 매번 새로운 인증을 해야하는 번거로움 때문에 서버가 클라이언트를 기억하기 위해 쿠키, 세션, OAuth, JWT 등을 사용한다!!
비연결성 (Connectionless) : 클라이언트와 서버가 연결을 맺은 후, 클라이언트의 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어버리는 성질을 뜻한다.
→ 초 단위 이하의 빠른 속도로 응답이 가능하고, 계속 연결이 되지 않아 리소스를 아껴 더 많은 연결을 할 수 있다. but 매번 새로운 연결을 해야 하므로 오버헤드가 발생한다는 단점도 있다.
HTTPS(Hyper Text Transfer Protocol Secure)로, HTTP에 데이터 암호화가 추가된 프로토콜이다.
기존의 HTTP 프로토콜은 TCP 위에서 작동하는데, 여기에 SSL(Secure Sockets Layer)이라는 보안계층을 올린것이 HTTPS이다.
HTTPS는 SSL위에 HTTP를 얹어 보안이 보장된 통신을 하는 프로토콜로, SSL 암호화 통신이라고도 부른다. (SSL은 공개키 암호화 방식 알고리즘으로 구현됨)
HTTPS는 443번 포트를 사용하며, 네트워크상에서 제 3자가 정보를 볼 수 없도록 암호화를 지원한다. HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용한다.
HTTPS는 대칭키 암호화와 비대칭키 암호화 방식을 모두 사용하여 빠른 연산 속도와 안정성을 보장한다.