주로 사용하는 HTTP/1과 HTTP/2은 TCP를 사용하고 HTTP/3부터는 UDP를 사용하며 80번 포트를 사용한다
HTTP 특징: 무상태, 비연결성
- 서버가 클라이언트의 상태를 보존하지 않는 프로토콜을 말한다.
- 따라서 서버가 클라이언트를 식별할 수 없다.
- 서버가 클라이언트의 상태를 보존하지 않기 때문에 서버 확장성이 높다 (스케일아웃 Scale-out, 수평확장)
- 클라이언트가 추가 데이터를 전송해야한다.
쿠키, 세션, 토큰을 이용하여 상태를 기억할 수 있다.(Stateful)
비연결성 프로토콜이란 연결 상태를 유지하지 않는 프로토콜을 말한다.
HTTP는 기본이 연결 상태를 유지하지 않는 모델이다.
서버 자원을 효율적으로 사용할 수 있다.
한계
TCP/IP 연결을 새로 맺어야 한다 - 3 way handshake 시간 추가
웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 JS, CSS, 추가 이미지 등등
수 많은 리소스가 함께 다운로드한다.
HTTP는 정보를 텍스트로 주고 받는다. 단순 텍스트를 주고 받기 때문에 네트워크에서 전송 신호를 인터셉트하는 경우 원하지 않는 데이터 유출이 발생할 수 있다.
이와 같은 HTTP의 보안 취약점을 해결하기 위한 프로토콜이 HTTPS다.
HyperText Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure
월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전
기존 HTTP 레이어에서 SSL(TLS) 프로토콜을 얹어 평문 데이터를 암호화
소켓 통신에서 일반 텍스트를 이용하는 대신, SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화 -> 데이터의 적절한 보호 보장
서버와 클라이언트 사이의 모든 통신 내용이 암호화
TCP/IP 443번 포트 사용
인증, 전자상거래와 같이 보안이 중요한 트래픽에 이용
HTTP와 HTTPS의 차이: SSL 인증서
SSL 인증서는 사용자가 사이트에 제공하는 정보를 암호화한다.
이렇게 전송된 데이터는 중간에서 누군가 훔쳐 낸다고 하더라도 데이터가 암호화되어있기 때문에 해독할 수 없다.
HTTPS 동작방식은 대칭키와 공개키(비대칭키) 방식을 전부 사용하는 하이브리드 방식이다.
데이터 전송을 위해 대칭키 방식을 사용하며 대칭키를 안전하게 전달하기 위해 공개키 방식을 사용한다.
쉽게 말해서, 공개키(비대칭키) 방식을 사용하여 대칭키를 전달 -> 전달된 대칭키을 사용하여 데이터 전송한다.
HTTPS 원리
1. 클라이언트가 난수 값을 생성하여 서버로 전송한다.
2. 서버측에서 생성한 난수 값과 해당 서버의 인증서를 클라이언트에 전송한다.
3. 클라이언트는 서버의 인증서가 믿을 수 있는 지 브라우저에 내장된 CA들의 정보를 통해 확인한다.
(공개키방식) CA의 인증을 받은 인증서들은 해당 CA의 개인키로 암호화되어 있으므로 브라우저에 저장된 해당 CA의 공개키로 복호화된다면 신뢰할 수 있음을 뜻한다.
(해당 CA의 공개키로 복호화될 수 있는 인증서를 발급할 수 있는 것은 그에 대응하는 개인키를 가진 CA뿐이기 때문이다.)4. 성공적으로 복호화된 인증서엔 서버의 공개키가 포함되어 있다.
5. 클라이언트는 1, 2번에서 생성하고 받은 두 난수 값을 혼합하여 임시 키(pre-master-key)를 생성한다.
6. 클라이언트는 만든 임시 키를 서버의 공개키로 암호화해서 서버로 전송한다.
7. 서버는 클라이언트로부터 전송받은 임시 키(pre-master-key)를 정상적으로 복호화 후 대칭키(master-key)로 승격한다.
8. 이 후 서버와 클라이언트 둘만 갖고 있는 대칭키를 사용하여 데이터들을 전송한다.
위에서 말했듯이 보안 측면에서 장점이 있다.
가벼운 웹 서핑이라면 HTTP를 사용해도 되지만 자료를 주고 받는 경우 심각한 개인 정보 유출로 이어질 수 있다.
결제 시스템을 도입하거나 회원가입과 같이 사용자 정보를 웹 서버와 주고 받아야 하는 경우라면 HTTP는 정보 유출의 위험성을 갖게 된다.
또 다른 장점으로는 마케팅 측면에도 있다.
HTTPS로 전환하게 되면 검색엔진 최적화(SEO)에 있어서도 큰 혜택을 볼 수 있다.
구글은 HTTP에서 HTTPS로의 전환을 장려하기 위해 구글에서는 HTTPS를 사용하는 웹사이트에 대하여 검색 순위 결과에 가산점을 주겠다고 발표하였다.
따라서 더 높은 검색 순위 결과를 가질 수 있을 뿐만 아니라 사용자들이 결국에는 가장 안전하다고 생각하는 사이트를 더 많이 방문하기 때문에 마케팅 측면에서도 우위를 가진다.