목록CS/풀스택서비스네트워킹 (10)
센로그

◆ QUIC 이란? TCP를 대체하는 범용 목적으로 개발된 4계층 통신 프로토콜로, UDP위에서 동작한다. 게임, 스트리밍 미디어, VoIP서비스에 자주 쓰이며, 지연시간이 적은 인터넷 전송 프로토콜임. HTTP/3는 HTTP(Hypertext Transfer Protocol)의 세 번째 메이저 버전으로, 기존의 HTTP/1, HTTP/2와는 다르게 UDP 기반의 프로토콜인 QUIC을 사용하여 통신하는 프로토콜이다. "바로 옆에 있는 애한테 보내는건데, 설마 이게 TCP 혼잡 제어나 오류 제어 할만큼 그렇게나 오류가 많을까? 그건 아닌 것 같은데." 라는 컨셉에서 시작함. 그러다가 수많은 사람들이 개량해나가면서, 근거리 서버 to 서버 에서만이 아닌, 충분히 멀리 떨어진 경우에도 장점이 있도록 발전함. ..

◆ Peer-to-Peer vs Client-Server우리가 지금부터 볼 WebRTC는 웹 기반 실시간 P2P 통신 기법이다.WebRTC(Web Real-Time Communication)은 웹 애플리케이션과 사이트가 중간자 없이 브라우저 간에 오디오나 영상 미디어를 캡쳐하고 마음대로 스트리밍 할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술임들어가기 전에 P2P 방식과 클라-서버 방식이 어떻게 다른지 정리해보자. ■ P2PP2P 통신의 사전적 의미는, 클라이언트들이 별도의 서버 없이 서로 통신을 하는 것임.(사전적이라는 건, 요즘엔 아예 서버를 안쓰는 경우는 거의 없기 때문. 이따가 설명할 것임)만약 6개의 노드가 있는 경우, 한 컴퓨터당 5개의 연결을 유지해야 함.내 정보를 보내고 싶으..

◆ HTTP/1.1의 문제점 HTTP/1.1은 팀 버너스 리가 대학 및 연구기관들 끼리의 연구 자료를 주고받기 위해 고안한 게 시초이다. 따라서 사진이나 음성, 텍스트 등을 주고받는 게 원래 목표였다. 그런데 인터넷이 폭발적으로 성장하면서, HTTP는 더이상 학술 자료 공유의 목적으로만 쓰일 수는 없었다. 일반인들에게 배포되고, 사용자와 사용량이 늘어나고.. → 원래 의도하지 않은 방향으로 사용이 되면서 결국은 오리지널 설계 철학에 미처 담지 못한 것들이 문제가 되었다. 주로 성능상의 문제. 대표적인 문제로 Head of Line (HoL) blocking Fat message headers Limited priorities Client-driven Transmission 가 있다. ◆ Head of L..

◆ gRPC 개요 최근 분산 서버 프로그래밍에서 각광받고있는 기술 중 gRPC라는 기술이 있다. 개발자: 구글 지금부터 배울 gRPC, HTTP/2, HTTP/3는 다 구글의 기술이다. 발표일: 2016년 8월 (4년 전) 저장소: github.com/grpc/grpc Written in: C#, C++, Dart, Go, Java, Kotlin, Node, Objective-C, PHP, Python, Ruby 라이선스: 아파치 라이선스 2.0 웹사이트: grpc.io 특징: HTTP/2 기반, 프로토콜 버퍼 및 IDL 사용, 단방향/양방향 스트리밍 지원, 흐름제어/차단/비차단/취소/타임아웃 등 부가 기능 제공 주용도: Microservice architecture(서버간 통신), Mobile app ..

◆ HTTP란? 서버-클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다 클라가 서버에게 HTTP request을 보냄. 그러면 서버가 이에 대한 HTTP response를 클라에게 주는 형태로 동작함. 그림을 보자. 웹 브라우저가 웹 서버에게 "HTTP라는 프로토콜로 root/index.html을 달라"고 요청하면, 서버는 "알겠어, 그거 여기 있고, 총 3150 length야. 가져가." 하고 주는 것임. 굉장히 심플하다. ※ 어떻게 이렇게 심플할 수 있는 걸까? → 전제조건: 초기에 HTTP를 짤 때, "무조건 HTTP 밑에는 TCP가 돌아야 한다!" 라는 걸 생각하고 짰기 때문에 가능하다. 즉 어차피 TCP가 에러 검출 및 복구를 할 거기 때문에, HTTP는 그걸 신경쓰고 싶지 않고 간단..

◆ ZeroMQ란? 소켓 통신을 기반으로, 사용하기 편하게 만들어놓은 비동기 메시징 라이브러리. 다양한 형태와 방법, 서비스에 대해 메시지를 주고받을 수 있는 오픈소스 라이브러리이다. 결국 통신을 하다보니, 어느 정도 정해진 틀이 잡힌 것이다. 그래서 그 설계를 여러곳에 쓰고, 다시 쓰고 하다보니 ... "이런 설계를 많이 쓸거면, 미리 라이브러리로 만들어놔서 편하게 쓰면 않을까?" → 소켓을 밑에 깔고, 그 위에 1:N이나 M:N 통신을 쉽게 짤 수 있도록 미리 만들어놓은 게 ZMQ 설계 자체를 재활용하는 느낌. ◆ 프로토콜의 위치 ZMQ의 등장에 대해 설명하기 위한 배경. 통신 프로토콜들은 어디에 위치할까? 과거) Kernel 에 위치 전통적으로 OSI7 레이어에서, L1 은 하드웨어에 들어가고, L..