전체 글 6

[풀스택서비스네트워킹] - 14주차 : HTTP/3

기존 TCP의 문제점슬로우 스타트로 인한 초기 속도 제한패킷 손실(loss) 발생 시 성능 급감플로우 제어(flow control)에서 버퍼 사이즈 제한QUIC의 등장TCP의 단점을 UDP 위에서 해결.암호화(TLS) 강제화특정 프록시를 제외한 라우터, NAT 등 중간 네트워크 장비는 내용을 못 보도록 함네트워크 중간 장비들(라우터, NAT 등)은 최신 기술 발전을 따라가지 못함즉,업그레이드나 프로토콜 인식 능력이 정체되어 있음 → 일종의 프로토콜 화석화QUIC의 연결 설정TCP처럼 좌우 두 엔드포인트 사이의 논리적 연결을 의미함.UDP 기반이지만, 연결을 설정하는 구조는 TCP+TLS와 유사함 (다만 지연 시간을 크게 줄임).버전 협상, 암호화 정보 교환 (TLS 기반), 전송 핸드셰이크QUIC의 스트..

[풀스택서비스네트워킹] - 12주차 : WebRTC

WebRTC (Web Real-Time Communication)웹에서 실시간 커뮤니케이션(RTC)을 가능하게 하는 기술.화상 회의 시스템, 실시간 게임 통신 등에 주로 사용.실시간 영상/음성 데이터 전송, 웹 브라우저 간 직접 통신 (P2P 기반), 별도의 플러그인 없이 웹에서 동작PC 브라우저뿐만 아니라 모바일 기기에서도 원활히 작동최신 모바일 기기는 성능이 좋아 충분히 WebRTC를 감당 가능단, UI/UX의 차이로 인해 일부 서비스는 모바일 이식에 어려움WebRTC의 APIRTCPeerConnection: 피어(웹브라우저) 간 연결 설정RTCDataChannel: 양방향 데이터 전송getUserMedia(): 카메라 및 마이크 접근 허용ICE (Interactive Connectivity Esta..

[풀스택서비스네트워킹] - 11주차 : HTTP/2 (2)

HTTP/2 - 헤더 압축의 필요성HTTP/1.1에서도 변하지 않는 정보 (User-Agent, Accept, Cookie 등)를 계속 전송함 → 비효율적통계적으로 일반적인 헤더의 크기: 500~800바이트, 많으면 수 KBHTTP/2의 헤더 압축 (HPACK)헤더 필드의 전송 크기를 줄이기 위해 정적 허프만(Huffman) 인코딩과 헤더 테이블 기반의 인덱스 압축.HPACK - Huffman 코딩자주 등장하는 값일수록 더 짧은 비트 문자열로 표현.즉, 헤더 필드의 문자열들을 인코딩하면 크기가 작아져 전송 속도가 빨라짐.처음 등장하는 헤더 정보는 인덱스로 전송 불가하므로, Huffman 인코딩을 하여 전송함.이미 등장한 헤더 정보는 테이블의 인덱스만 전송.HPACK - Header Table Static..

[풀스택서비스네트워킹] - 10주차 : HTTP/2 (1)

TCP의 문제점슬로우 스타트(Slow Start):초기 전송 속도가 느림. 네트워크 상태에 따라 성능이 출렁거림.출렁임을 줄이기 위해 TCP 연결을 여러 개 사용하기도 함.연결 관리의 불확실성:TCP는 커넥션 오리엔티드(connection-oriented).하지만 HTTP는 무상태(stateless) 처럼 동작.즉, 클라이언트 상태 유지하려면 쿠키나 세션 같은 별도 메커니즘이 필요서버 입장에서 “언제 연결을 끊어야 할지” 모호함.오래 유지하면 리소스 낭비, 일찍 끊으면 연결 재설정 비용 발생. HTTP/1.1의 문제점1. Head-of-Line Blocking (HOL Blocking)클라이언트가 여러 요청을 보냈을 때, 서버는 응답을 요청 순서대로 전송하므로 앞선 응답이 지연되면 뒤의 응답도 지연됨.해..

[풀스택서비스네트워킹] - 9주차 : gRPC (2)

프로토콜 버퍼(Protocol Buffers)의 개요 및 배경운영체제, 언어에 상관없이 함수를 정의하고, 데이터를 주고받기 위해 만들어짐.즉, 함수, 데이터 등의 이진 직렬화/역직렬화를 통해 language/platform-neutral.직렬화(Serialization)의 개념복잡한 메모리 구조의 데이터를 디스크 저장 또는 통신에 적합한 형태로 변환하는 과정.JSON도 직렬화의 한 예로, 사람이 읽기 쉬우나 비효율적.JSON vs Protocol BuffersJSON은 사람이 읽기 편한 형태지만, 공간 낭비가 심함 (예: "OK" → 12바이트).또한 JSON은 디코딩 시 문법 분석 등 추가 처리 필요 → 성능 저하.반면, 프로토콜 버퍼는 이진(binary) 형식으로 컴팩트하고 빠름.Protocol Bu..

[풀스택서비스네트워킹] - 8주차 : gRPC (1)

컴파일과 링크의 기본 개념C++로 프로그램을 작성하고 컴파일을 수행하면 결과물로 오브젝트 파일(.o) 또는 라이브러리(.lib, .a)가 생성됨오브젝트 파일은 단독으로 실행될 수 없으며, 다른 코드들과 연결(link) 되어야 함링크 과정은 여러 기계어 코드들을 하나로 합쳐 실행 가능하게 만드는 단계링크(link)의 의미와 역할내가 만든 프로그램이 다른 라이브러리(예: printf)를 사용할 경우, 링크 과정에서 외부 함수의 기계어 코드와 연결됨즉, printf는 내가 작성하지 않았고 컴파일 시 포함되지 않으므로, 링크 시 외부 라이브러리에서 기계어로 된 printf 코드와 연결링크 과정을 통해 하나의 실행 파일(.exe) 또는 하나의 커다란 라이브러리 파일로 완성됨실행 파일의 메모리 구조실행 파일이 실행..