HTTP 2.02016.07.04 16:02

웹 컨텐츠 전송을 위한 프로토콜의 대세가 h2 혹은 http/2 로 자리잡아 가면서 맥(Mac)의 쉘에서도 http/2를 테스트 해야하시는 분들이 많이 늘었을 것으로 생각됩니다. 알려진 내용에 따르면 curl 의 7.34.1 버전 이후에는 --http2 옵션을 통해 http2 로 서버와 통신을 하도록 강제할 수 있지만 환경에 따라서 안되는 경우가 많습니다. curl 은 http/2 를 지원하기 위해 nghttp2 라이브러리를 이용하고 있기 때문에 우선은 nghttp2 를 설치해야 합니다.




nghttp2 가 설치되면 이를 이용해서 curl 을 다시 build 하거나 설치해야 합니다. 홈브루(Homebrew)를 이용하면 간단하게 새로운 버전으로 빌드를 하면서 설치할 수 있으니 아래의 커맨드를 참고해서 설치를 진행하도록 합시다. 아래와 같이 설치한 후 brew info curl 명령을 통해 nghttp2 에 초록색 체크박스가 잘 들어왔다면 일단 설치는 제대로 잘 된거라 봐도 되겠습니다.





그런데 여기까지 하고나서도 curl 을 --http2 옵션으로 실행했을 때 지원하지 않는 프로토콜이라고 에러가 떨어진다면 심볼릭 링크를 한번 교체해줄 필요가 있습니다. 환경 설정에 따라, 사용자 계정에 따라 sudo 를 통해서 권한 상승을 해야 할 필요도 있으니 상황에 따라 적절한 옵션으로 심볼릭 링크를 교체해 주시면 되겠습니다. 




여기까지 해서 마무리가 잘 되었다면 curl --http2 옵션으로 http2 가 활성화된 사이트들, 예를 들어서 아카마이의 https://http2.akamai.com 이라던가 구글 메인 페이지 (https://www.google.com) 쪽으로 요청을 던져볼 수 있게 되셨을 겁니다. 일단 개인적으로 여기까지 해서 문제는 없었습니다만 다른 문제를 겪는 분이 계시다면 댓글로 남겨주시면 한번 살펴보도록 하겠습니다!



- NoPD -




저작자 표시 비영리
신고
Posted by 노피디
HTTP 2.02016.03.15 11:58

HTTP/2 에 대한 이야기들 중 근래에 가장 논란이 되고 있는 것 중 하나가 TLS 에 대한 요구사항일 것 같습니다. 처음 SPDY / HTTP/2 에 대한 이야기가 나오면서 TLS 가 필수 조건이라는 소식에 이제 웹 환경이 완전히 Secure 로 넘어간다는 생각들을 많이 했었습니다. 그런데 결국 TLS 를 이용해야만 한다는 것은 연결을 만드는 과정에 오버헤드가 발생한다는 것이고 Let's Encrypt 등의 도움에도 불구하고 서비스 혹은 상황에 따라 부담이 될 수 있는 여지가 있었습니다.


이 때문에 HTTP/2 Working Group 에서는 암호화 되지 않은 HTTP/2 프로토콜 스펙에 대한 이야기가 오가고 있었고 정확한 시점은 확인해 보지 못했지만 TLS 의 지원이 필수는 아닌 것으로 정리된 것 같습니다. 스펙상으로 이부분은 h2c 라는 용어로 통칭되고 있고 TLS 터널링을 이용하지 않은 Non-encrypted 전송에 대한 이야기라고 이해하시면 되겠습니다 (자세한 이야기는 여기에 : https://http2.github.io/faq/#does-http2-require-encryption)




다만 표준의 진행이 이렇게 가고 있다 하더라도 브라우저들이 HTTP/2 스펙을 구현한 상황을 확인해 보면 이야기는 다소 달라집니다. 현재까지 HTTP/2 를 지원하는 것으로 알려진 모든 브라우저들은 HTTP/2 프로토콜 이용의 조건으로 TLS Handshake 를 전제하고 있습니다. 웹 컨텐츠를 소화하는 방식이 웹 브라우저만 있는 것은 아니겠지만, 대다수가 브라우저 기반이라고 가정했을 때 원본 서버에서 HTTP/2 를 이용하기 위한 전제조건으로 TLS 를 제공해야 한다는 것은 변함이 없을 것 같습니다.


참고 : http://caniuse.com/#search=http2


- NoPD -


저작자 표시 비영리
신고
Posted by 노피디

티스토리 툴바