HTTP vs HTTPS

강두연·2020년 11월 11일
1
post-thumbnail

HTTP

HyperText Transfer Protocol의 약자로 어디선가 본듯한 'HyperText'... 바로 HTML(HyperText Markup Language)!
그렇다면 http가 무엇인지 바로 감을 잡을수가 있다.
hypertext는 우리가 사용하는 웹브라우저 위에서 동작하는 것이고 이것을 주고받는(Transfer) 과정에서 개발자 혹은 사람마다 다른 양식으로 주고받게되면 조잡해지기 때문에 규약,협약 (Protocol)을 정의하여 HTML파일을 어떻게 주고 받을지에 대한 약속이 HTTP라고 할 수 있다.

요약: 컴퓨터끼리 HTML파일을 주고받을 수 있도록 하는 소통방식 또는 약속

HTTP의 두가지 특징

앞서말한 HTTP는 소통하는 방법에 대한 약속이라고 했다. 약속에는 언제나 조항들이 있어야하고 HTTP는 어떤 조항으로 이뤄져 있는지 살펴보겠다.

Request / Response (요청/응답)

HTTP 통신의 핵심은 요청과 응답이다. 소통을 한다는 것은 어떠한 것을 전송한다는 것이고, 전송에는 보내는 주체가 있고 받는 주체가 있다. 보내는 주체는 받는 주체에게 어떠한 요청을 보내고 받는 주체는 요청을 보낸 주체에게 응답을 보낸다. 이것이 HTTP에서 요청, 응답 개념의 핵심이다.

예를 들어, 유튜브에서 사용자가 영상('a'라는 영상)을 누르는 순간 사용자의 컴퓨터에서는 구글 서버에 'a라는 영상을 주세요' 라고 요청을 보낸다. 그러고 나면 구글 서버에서는 사용자의 컴퓨터에 'a라는 영상 드립니다' 라고 응답을 보낸다.

마치 인간이 소통하는 방식을 컴퓨터의 소통방식에도 적용했다고 볼 수 있다.

Stateless (상태없음)

HTTP에서 정말로 중요한 특징이다.

각각의 HTTP 통신(요청/응답)은 독립적이기 때문에 과거의 통신에 대한 내용을 전혀 알지 못한다. 예를 들어, 로그인을 하는 요청을 보냈고 성공했다는 응답을 받았어도 그 다음에 어떤 통신을 할 때 로그인여부는 HTTP에서는 알 수가 없다.

따라서, 만일 여러번의 통신의 과정에서 연속된 데이터 처리가 필요한 경우(온라인 쇼핑몰에서 로그인 후 장바구니 기능)를 위해 로그인 토큰, 브라우저의 쿠키, 세션, 로컬스토리지 같은 기술이 필요에 의해 만들어졌다.



HTTPS

기본적인 특징은 HTTP와 같고 끝에 S는 Secure(안전한)를 뜻한다.

무엇으로부터 안전한가?

먼저, 사용자가 어떤 사이트로 부터 보내는 정보를 다른 누군가가 훔쳐보지 못하게 한다. 예를들어 로그인을 하게되면 요청을 보내면서 request.body에 사용자가 입력한 id와 비밀번호를 같이 담아서 서버로 보내는데 HTTP에서는 사용자가 입력한 두 값을 입력한 그대로 보내진다. 이 과정에서 누군가가 정보(ex.{id: 'myid', password: 'password123'})를 가로채서 본다면 사용자의 아이디와 비밀번호가 그대로 유출이 되는것이다.

HTTPS 에서는 저런 과정에서 사용자가 입력한 정보들을 서버에서만 알아볼 수 있고 중간에 다른 누군가가 가로채서 보더라도 알아볼 수 없게 암호화를 해서 보낸다.

또 다른 하나는, 사용자가 접속하는 사이트가 신뢰할 수 있는 사이트인지 판별해준다. 관련 기관으로부터 검증된 사이트만 주소에 https의 사용이 허가 되고 그냥 http를 사용하는 사이트는 주소창에 안전하지 않다고 경고표시를 해주기 때문이다.

요약하자면,
1. 사용자가 사이트에 보내는 정보들을 제 3자가 못 보게한다.
2. 접속한 사이트가 믿을만한 사이트인지 알려준다.

이 두가지 덕분에, 그냥 http보다 안전하다.

위에 2개의 보안기능이 어떻게 작동하는지는 다음 포스팅에 작성하도록 하겠다.

profile
Work hard, Play hard

0개의 댓글