-
HTTP3 이해하기개발실 2022. 3. 12. 19:55반응형
통신을 하다보면 아래와 같은 용어들을 많이 봅니다.
HTTP, HTTPS, HTTP3, TLS, SSL, TCP, UDP, QUIC
HTTP3라는건, HTTP통신의 버전 3이라는 말입니다.
개념적으로만 간단히 설명드리면,
우선 프로토콜이라는 개념을 알아야 합니다.
프로토콜은, 상호간의 약속입니다.
머가 됐던간에 상호간의 약속이고 규칙입니다.
사람이라면 어떤 상황에 놓여도 눈치것 알아듣고 응답하고 행동하지만...
기계라면 규칙대로만 행동하니까요.
그래서, 포로토콜에는 데이터에 대한 포맷이나 형식도 있고
서로 누가 먼저 말하고, 어떻게 서로를 인식하고 한번씩 주고 받을 건지, 여러번 주고 받을건지도 모두 약속에 넣습니다.
이모든것을 규칙을 정하고 이름을 붙이면 그게 xxx 프로토콜입니다.
그리고, 상대방과 xxx 프로토콜로 우리 통신하자고 서로 합의를 봤다면
그걸 우리는 xxx 프로토콜로 통신한다고 합니다.
예를 들어, 서버는 yyy 프로토콜밖에 모르는데, 누군가가 xxx 프로토콜로 말을 걸어오면 당연히 서로 통신이 불가합니다.
HTTP, HTTPS, HTTP3, TLS, SSL, TCP, UDP, QUIC 는 모두 프로토콜을 지칭하는 이름입니다.
근데, 같이 언급한 이유는 서로 나몰라라 하는 관계가 아니구요.
가장 먼저 TCP, UDP에 대해서 알아야 합니다.
할아버지 니까요. ( 증조할아버지에 IP 프로토콜이 있지만, 무조건사용하는것이니 알필요가 없음 )
TCP와 UDP는 socket 통신을 기반으로 합니다.
다음은 보안통신을 위한 프로토콜입니다. SSL -> TLS 이름이 변경된겁니다. 공식 명칭이 TLS입니다.
다음은 HTTP 입니다.
이렇게 생각하시면 됩니다.
운영에 대한 규칙은 제외하고 이해를 위해서 설명 드립니다.
TCP 프로토콜이라는 화물 트레일러에 HTTP 라는 컨테이너를 실고 가면
우리는 그걸 HTTP 통신이라고 부릅니다.
고로 HTTP 서버에 클라이언트에서 TCP 프로토콜로 접속해서 구현할수도 있습니다.
학습이 아닌이상 실전에서 굳이 그렇게 할 이유는 없습니다.
근데, HTTP라는 컨테이너를 보안이 강화된 더큰 컨테이너(TLS)에 넣어서 트레일러(TCP)에 실으면,
우린 그걸 HTTPS 통신이라고 부릅니다.
여기까지 이해하셨으면,
UDP 라는 다른 트레일러가 있습니다.
이 트레일러를 튜닝을 하고 운영규칙도 추가하여 업그레이드한 트레일러(QUIC)를 만들었습니다.
이 업그레이드한 트레일러(QUIC)에 HTTP 컨테이너를 실었습니다.
이걸, HTTP3 통신이라고 부릅니다.
이해를 조금더 돕기 위해서 WebSocket통신을 예로 들면,
WebSocket 으로 통신을 한다( 프로토콜?) 고 하면 아래와 같이 진행됩니다.
Client가 HTTP로 일단 서버에 접속을 시도함 -> 서버가 HTTP응답.
HTTP통신과 동일하지만, 서버가 응답하면서 TCP통신을 끊지 않습니다.
그럼, TCP연결이 유지된 상태에서 2번째부터는 HTTP(컨테이너)가 아닌 WebSockek(컨테이너)를
트레일러(TCP)에 실어서 보냅니다. TCP는 원래 양방향통신이기에 Websocket통신은 양방향통신이 가능한겁니다.
규약과 약속이라는 프로토콜은 함부로 변경할수가 없습니다.
모두가 다 그렇게 알고 있으니까요.
시대가 바뀌었고, HTTP2까지 나왔지만 TCP로는 더이상 개선을 하는데 한개를 느꼈기 때문에 HTTP3에서는 QUIC으로 갈아탄거죠.
반응형'개발실' 카테고리의 다른 글
메세지 하나로 해결하는 GRPC 메세지 (0) 2022.05.09 Docker Image 파일 위치. (0) 2022.03.18 Redis를 Service Discovery 로 활용. (0) 2022.02.27 Convert 3DTiles To SLPK. (0) 2022.01.28 git commit할때 yarn 이니 머니 실행될때. (0) 2022.01.23