http.png

웹브라우저와 웹서버가 컨텐츠(html, 이미지, 오디오, css, javascript 파일등)을 주고 받기 위해서 사용하는 통신규칙인 HTTP(HyperText Transfer Protocol)의 원리를 다시 공부해보자.

1. 왜 HTTP를 사용하는가?

웹은 크게 4가지 요소로 이루어져 있다. 웹페이지를 만드는 컴퓨터 언어인 html. 원하는 웹 페이지를 방문할 수 있도록 도와주는 주소 체계인 url. 웹 페이지를 주고 받는 소프트웨어인 웹브라우저와 웹서버. 마지막으로 웹브라우저와 웹서버가 통신할 때 사용하는 통신 규칙인 http.

처음 http는 매우 단순한 통신이었지만 웹이 폭발적으로 성장하면서 단순한 http의 기능만으로는 성능 보안 안정성을 확보하는 것이 어려워졌다. 이런 문제를 해결하기 위해 보다 풍부한 기능을 가진 프로토콜로 발전하기 시작했다. 그리고 오늘날 단지 html과 같은 텍스트 파일 뿐만 아니라 이미지, 오디오, 동영상과 같은 다양한 멀티미디어 파일을 전송하는 중요한 프로토콜로 성장했다.

클라이언트는 어떤 메세지를 통해서 서버에 요청하고, 서버는 어떤 메세지를 이용해서 응답하는지 살펴보자.


2. HTTP request, response 메세지

서버와 클라이언트가 컨텐츠를 주고 받기 위해서 서로가 알아들을 수 있는 공통의 약속인 메시지가 필요한데 바로 그 메시지가 http이다.

http는 크게 request와 response를 위한 메세지로 구분되어 있다.

  • request http-req.png

  • response http-res.png


3. http와 https 차이점

https로 시작한다면 ssl을 이용하고 있다는 것이다. s는 secure의 약자로 안전한 이라는 뜻이다. http가 처음 세상에 나왔을 때 사람들은 웹을 통해서 심각한 정보를 다루지 않았기 때문에 그렇게 위험하지 않았다. 그러나 지금 우리는 웹을 통해 군사, 금융과 같은 정보를 다룬다. http를 통해서 통신을 하고 있다면 누군가 내 정보를 보고 있는 것으로 간주해야한다. 하지만 https를 사용하면 전송하고 있는 내용을 누군가 가로챈다 하더라도 실제로 그 안에 무슨 내용이 담겨 있는지 당사자들은 알 수 없다. 암호화되어 있기 때문이다.


4. Cache

한번 웹사이트에 접속해서 어떠한 내용을 다운로드 받았다면 그 다음에 접속할 때 또 다운로드 받을 필요가 있을까? 이미 다운로드 받은 저장된 파일을 읽어서 성능을 향상시키는 기법이 캐시이다. 그런데 캐시는 풀기 어려운 문제가 있다. 내용이 갱신되었을 때에 웹브라우저는 그 사실을 알아채지 못하게 된다는 것이다. 바로 이런 문제를 해결하기 위한 여러 테크닉 들이 있다. cache-control, pragma 이러한 헤더값들은 캐쉬를 제어하는 테크닉이다. 그리고 비교적 최신 기술인 애플리케이션 캐시와 같은 것들도 같은 목적으로 고안된 기술이다.


쿠키 값을 웹브라우저에 설정하면 접속할 때마다 그 설정됐던 키값을 서버에 전송하는 걸 통해서 사용자의 상태를 유지할 수 있고 사용자를 식별할 수 있다. 최근에는 쿠키보다도 훨씬 더 많은 정보를 저장하면서도 보안쪽으로도 보다 우수한 웹 스토리지라는 기술이 있다.


6. proxy

웹브라우저와 웹서버 사이에 프록시라고 불리는 이름의 중계 서버를 둘 수 있다. 중간에 있는 서버가 캐시를 대신해주거나 보안과 관련된 공격을 막아주거나 적당히 사용자 요청을 여러개의 서비스로 분산해주는 것과 같은 역할을 프록시 서버들이 대신해줄 수 있다.