# 사람처럼 컴퓨터간 커뮤니케이션도 발전합니다 | 커리어리

# 사람처럼 컴퓨터간 커뮤니케이션도 발전합니다, HTTP/0.9부터 HTTP/3 🗣 사람간의 커뮤니케이션도 조금 더 긍정적이고 효율적인 방향으로 발전하는 것처럼, 컴퓨터들의 데이터 전송도 시대와 상황에 맞게 발전합니다. 우리가 이전에 당연하게 여기던 커뮤니케이션 태도나 방식이 현재 도태되거나 불편하게 여겼던 방식이 발전되는 것처럼, 컴퓨터의 네트워크 프로토콜도 당연했던 것이 사라지거나 불편했던 것이 표준이 될 수 있습니다. 네트워크 수업을 듣거나 공부를 하면, HTTP는 TCP전송과 짝꿍이라고 생각하게 되는데요. HTTP가 버전3에서는 TCP가 아니라 UDP와 짝꿍을 하게 된다는 소식에 조금 놀랍습니다. UDP와 TCP의 차이점은 기초 중 단골 문제인만큼, 근본적인 기초의 변화를 만든 그 선택이 더욱 궁금해졌습니다. 그러나 시간이 지나면, 또 익숙해지겠죠? <HTTP/0.9의 탄생> • HTTP/0.9는 유럽의 한 연구생이던 팀 버너스 리에 의해 만들어졌습니다. 그는 1989년 처음으로 Web을 고안했고, 1990년 처음으로 웹 클라이언트와 서버 프로그램을 작성했습니다. 이 모델은 1991년 HTTP/0.9라는 이름을 갖게 되었습니다. • HTTP/0.9는 간단한 one-page 스펙으로, 단 한줄의 HTTP 프로토콜이었습니다. 메소드는 GET 하나이고, 뒤에 문서의 주소를 작성하고, 옵션으로 포트넘버를 넣고, 끝내는 것입니다. • HTTP/0.9에는 네가지 기술을 담겨있습니다. Connection, Disconnection, Request, Response입니다. 모던 기술인 HTTP header도 statusCode도 쿠키도 없지만, 인터넷의 시작을 알렸습니다. <HTTP/1.0의 발전> • HTTP/1.0는 5년 뒤인 1996년 배포되었습니다. 메소드에 HEAD, POST가 생기는 등 0.9를 확장하며 중요한 스펙들이 추가 지원되었습니다. • HTTP/1.0는 추가적으로 messages, resource, entity, client, user agent, server, origin server proxy, gateway, cache 개념이 생겼습니다. • HTTP/1.0는 각 request마다 HTTP버전이 표기되고, response의 시작은 status code표기가 되었습니다. request와 respons는 headers를 갖기 시작했고, headers의 메타데이터는 프로코로에 유연성을 더해주었습니다. headers의 content-type도 HTML이외 다양한 소스를 지원하기 시작했습니다. • 그러나 HTTP/1.0는 정식버전이 아니었습니다. <최초의 HTTP 버전, HTTP/1.1> • HTTP/1.1는 1997년 HTTP의 최초 표준화 버전으로 배포되었습니다. HTTP/1.1는 7개의 메소드를 지원했고, 현대에 필요했던 대부분의 기술을 완성했습니다. • HTTP/1.1는 GET, POST, PUT, DELETE, TRACE, HEAD, OPTIONS 메소드를 지원했으며, 메소드는 오늘날까지 계속 추가되고 있습니다. (2010년의 PATCH, 2014년의 CONNECT 추가) • HTTP/1.1는 HTTP/1.0을 강화하여, 싱글 IP 서버의 멀티 호스팅, 지속적인 파이프라인 커넥션, 적당한 용량의 캐시, 언어와 인코딩 타입을 포함한 콘텐츠 탐색이 가능하게 하였습니다. • HTTP/1.1는 2000년대 Roy Fielding에 의해 주도된 REST(the REpresentational State Transfer) 아키텍쳐의 근간이 되었으며, 현재에도 널리 사용되고 있습니다. <효율성의 강화, HTTP/2> • HTTP/1.1가 널리 사용되고 있지만, 효율성을 강조한 HTTP/2가 2015년에 배포되었습니다. HTTP/2는 네트워크 효율을 높이고 지연 시간을 줄이려는 목표를 가지고 있습니다. HTTP/2는 구글이 개발한 SPDY 네트워크 프로토콜에 기반을 두고 있있습니다. • HTTP/2는 단일 TCP로 연결된 stream에서 클라이언트와 서버가 양방향으로 소통할 수 있습니다. HEADERS은 압축되어 보내지고, text보다 binary를 사용합니다. 새로운 바이너리 frame레이어는 stream을 통해 전송되며, DATA 프레임이 플로우를 관리합니다. • HTTP/2는 유투브 등 늘어난 영상 콘텐츠 소비에 효율적인 데이터 전송을 제공할 수 있습니다. <모바일 기기의 증가, HTTP/3> • HTTP/3은 모바일과 글라스(안경), 드론 등 늘어난 휴대 기기에 대응하기 위해 제안되었습니다. 기기의 증가는 전체적인 response시간을 느리게 했습니다. HTTP/2까지의 연결 프로세스와 데이터 보장 매커니즘은 늘어나는 모바일 기기에 또한 맞지 않았습니다 • HTTP/3은 구글이 개발한 QUIC 프로토콜을 사용한다. QUIC는 UDP로 데이터를 전송하여 연결 프로세스가 적고, 데이터가 유실되면 해당 stream에만 영향을 줍니다. • HTTP/3은 QPACK으로 headers를 압축하며, TLS 1.3 encryption을 제공합니다. • HTTP/3은 아직 정식버전이 확정되지 않았고, 초안을 바탕으로 계속 개발 중 입니다. ⟪참고⟫ - https://www.w3.org/People/Berners-Lee/ - Evans Library, "HTTP/3은 왜 UDP를 선택한 것일까?", 2019.10.8. https://evan-moon.github.io/2019/10/08/what-is-http3/

What's New in HTTP/3?

Medium

2021년 7월 26일 오전 1:08

댓글 2

주간 인기 TOP 10

지난주 커리어리에서 인기 있던 게시물이에요!

더 많은 인사이트를 둘러보세요!