HTTP와 HTTPS
기술노트
HTTP와 HTTPS
HTTP와 HTTPS는 웹 상에서 클라이언트와 서버 간의 통신을 위한 프로토콜입니다. HTTPS는 HTTP에 보안 계층이 추가된 버전입니다.
HTTP (HyperText Transfer Protocol)
HTTP는 HYPERTEXT TRANSFER PROTOCOL의 약자입니다.
- Hypertext: 컴퓨터 화면이나 전자 기기에서 볼 수 있는 데이터이며, 다른 데이터와 연결될 수 있는 주소를 참조하고 있습니다.
- Transfer: 사람들이 브라우저를 통해 확인하는 웹 상의 데이터는 HTTP에 의해 전달됩니다.
- Protocol: 규칙 혹은 규약을 뜻합니다.
즉, 웹 상에서 클라이언트와 서버가 서로 정보를 주고받을 수 있도록 하는 규약입니다.
- 클라이언트: 서버에 정보(데이터) 전송을 요청(Request)할 수 있는 클라이언트 소프트웨어(크롬, IE, 사파리 등 웹 브라우저가 대표적)가 설치된 컴퓨터(스마트폰 등을 포괄하는, 연산하는 기계의 개념)를 의미합니다.
- 서버: 응답하는(Response) 소프트웨어(아파치, nginx, IIS 등이 유명)가 설치된 컴퓨터를 의미합니다. 서버는 클라이언트의 요청을 해석하고 클라이언트의 요청 및 서버 관리자가 설정한 알고리즘에 준하는 정보를 클라이언트에게 송신합니다.
HTTP 통신 과정
1. 클라이언트가 보고 싶은 정보를 서버에게 HTTP를 통해 요청 → HTTP Request 2. 서버는 알맞은 응답 메시지 및 정보를 클라이언트에게 전달 3. 응답 메시지 및 정보 중 HTTP body 내용이 클라이언트가 설정한 클라이언트의 용처에 도달 → HTTP Response
HTTP Message
- 서버 주소(Host), 요청 메서드(Post), 상태 코드(403,404), target path, 헤더 정보, 바디 정보 등이 포함됩니다.
- 요청 메시지, 응답 메시지의 모양이 다릅니다.
- HTTP/1.1 메시지는 사람이 읽을 수 있어 통신 상태 문제점 파악이 가능합니다.
HTTP Header
- HTTP 메시지의 헤더에는 콘텐츠 관련 정보(Content-Type), 인증 관련 정보(Authorization), 쿠키 정보, 캐시 관련 정보 등 서버와 클라이언트간 통신 시 필요한 정보를 담습니다.
- 클라이언트 요청 시, 서버 응답 시 모두 헤더에 정보를 담을 수 있습니다.
HTTP Status Code
- HTTP 요청 시, 클라이언트는 요청의 결과에 대한 상태 정보를 얻습니다.
- 200, 400, 500 등 숫자 코드와, OK, NOT FOUND 등의 텍스트로 이루어집니다.
- 코드를 이용해 각 결과에 해당하는 행위를 할 수 있습니다.
HTTP 응답 상태 코드 그룹
- 응답 (100번대): 정보 제공
- 성공적인 응답 (200번대): 요청 성공
- 리다이렉트 (300번대): 다른 리소스로 이동
- 클라이언트 에러 (400번대): 요청 오류
- 서버 에러 (500번대): 서버 처리 오류
예를 들어, 알 수 없는 URL로 들어갔을 때 나타나는 404 Error는 Not Found로, 클라이언트가 HTTP를 통해 송신 요청한 정보를 서버가 가지고 있지 않을 때 등장합니다. URL 중 서버까진 맞았는데 그 다음이 틀렸을 때 서버가 보유하지 않은 정보 자원임을 의미합니다.
HTTP 요청 메서드
- HTTP에서 클라이언트가 서버로 요청을 보낼 때 사용합니다.
- 요청 시 요청 메서드로 특정 요청에 대한 동작을 정의합니다.
- 주요 메서드: GET, POST, PUT, PATCH, DELETE 등
REST API (Representational State Transfer API)
- HTTP 규약을 어떻게 잘 활용해서 서버와 클라이언트 사이의 통신을 구축할 수 있을지에 대한 지침입니다.
- API(Application Programming Interface): 사용자가 특정기능을 사용할 수 있도록 제공하는 함수를 의미합니다.
- REST API는 HTTP의 요청 메서드에 응하는 서버 API와 클라이언트 간 통신의 구조가 지켜야 할 좋은 방법을 명시한 것입니다.
- 구체적인 내용으로는 요청 메서드의 의미, URI 설계, 클라이언트의 상태에 대한 동작 등을 정의합니다.
HTTPS (HyperText Transfer Protocol Secure)
- HTTPS(HyperText Transfer Protocol over Secure Socket Layer)는 HTTP를 보완하는 수단입니다.
- HTTP는 암호화되지 않았기 때문에 도난이나 변조, 도청이 가능합니다.
- HTTPS는 HTTP의 일반 텍스트(text)에 SSL(보안 소켓 계층)이나 TLS(전송 계층 보안) 프로토콜을 씌워 데이터를 암호화하는 기법이며, 로그인이나 결제화면에서 주로 쓰입니다.
- SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아줍니다.
- HTTPS를 사용하는 경우 URL에서 http:// 대신 https://를 사용합니다.
HTTPS의 보안성
- HTTP와 HTTPS의 주요 차이점은 SSL 인증서입니다.
- HTTPS는 쉽게 말해서 HTTP 프로토콜에 보안 기능을 추가한 것입니다.
- SSL 인증서는 사용자가 사이트에 제공하는 정보를 암호화합니다. 쉽게 말해서 데이터를 암호로 바꿉니다. 이렇게 전송된 데이터는 중간에서 누군가 훔쳐 낸다고 하더라도 데이터가 암호화되어있기 때문에 해독할 수 없습니다.
- 그 외에도 HTTPS는 TLS(전송 계층 보안) 프로토콜을 통해서도 보안을 유지합니다.
- TLS은 데이터 무결성을 제공하기 때문에 데이터가 전송 중에 수정되거나 손상되는 것을 방지하고, 사용자가 자신이 의도하는 웹사이트와 통신하고 있음을 입증하는 인증 기능도 제공합니다.
HTTPS 확인 방법
브라우저에서 URL을 확인하여 웹사이트에 HTTPS 보호 기능이 있는지를 확인할 수 있습니다. 도메인 이름 앞에 자물쇠 아이콘이 있으면 이 사이트는 HTTPS로 인해 안전한 것입니다.
HTTPS의 SEO 효과
HTTPS는 검색 엔진 최적화(SEO)에도 긍정적인 영향을 미칩니다:
1. 더 나은 사용자 경험 제공
- 사용자 경험(UX)은 SEO의 큰 부분을 차지합니다.
- Google Chrome은 SSL 인증서가 없는 사이트를 방문할 때 "안전하지 않음" 레이블을 표시하여 사용자에게 경고합니다.
- 이러한 경고는 사용자 경험을 해치고 이탈률을 높일 수 있습니다.
2. 사이트 체류시간 증가
- 사용자가 검색결과로 돌아가기 전에 웹 페이지를 분석하는 데 걸리는 시간인 체류시간은 SEO에 중요한 요소입니다.
- HTTPS가 없는 웹 사이트는 "안전하지 않음" 메시지로 인해 사용자가 빠르게 이탈할 수 있어 페이지 체류시간을 줄입니다.
3. 사이트 로딩 속도 개선
- HTTPS는 HTTP보다 최대 300% 이상 더 빠르게 로딩될 수 있어 SEO에 유리합니다.
4. SEO 전략 확인 및 검증
- HTTPS를 사용하는 보안 웹사이트는 분석 대시보드에서 해당 리퍼러(Referral) 정보를 보호하고 표시합니다.
- 웹 사이트에 대한 최적의 트래픽 소스를 명확하게 찾아내고 정확하게 확인할 수 있습니다.
정리
- HTTPS(https://)는 SSL(Secure Socket Layer) 인증서를 사용하는 HTTP(http://)입니다.
- SSL(또는 TLS) 인증서는 일반 HTTP 요청 및 응답을 암호화합니다. 따라서 HTTPS는 HTTP보다 더 안전한 보안용 프로토콜입니다.
- HTTP와 HTTPS의 유일한 차이점은 보안 계층의 추가입니다. HTTPS를 사용한 웹 페이지를 통해 전송되는 모든 데이터는 추가적인 보안 계층인 TLS(전송 계층 보안) 프로토콜을 통해 보호됩니다.
- HTTPS는 SEO(검색 엔진 최적화)에도 유리합니다.