네트워크 용어집
네트워크 분야의 개념 32개를 한 장에 모았습니다. 네트워크 · 로드 밸런서 · 리버스 프록시 · 보안 채널 수립 등 — 코드베이스에서 뽑아 뜻과 관계를 정리했습니다.
- 네트워크 (networking, 네트워킹)
- 브라우저의 요청이 주소 지정 · 이름 해석 · 전송 · 암호화 · HTTP · 엣지 라우팅을 거쳐 서비스에 닿고 응답이 돌아오는 경로. 단계 순서대로 읽으면 요청 하나가 지나가는 길이 되고, 뒤쪽 단계는 그 위에서 API 를 설계하는 방법이다
- 로드 밸런서 (load balancer, LB)
- 요청을 여러 인스턴스에 나눠 보낸다. 라운드 로빈 · 최소 연결 같은 규칙으로 고르고, 준비되지 않은 인스턴스는 뺀다
- 리버스 프록시 (reverse proxy)
- 클라이언트 대신 요청을 받아 뒤의 서버로 넘긴다. TLS 종료 · 호스트별 라우팅 · 압축을 한곳에서 하고 뒤의 서버 주소를 숨긴다
- 보안 채널 수립
- 전송 위에 암호화 · 무결성 · 서버 인증을 얹는다. 인증서가 누구 것인지 검증하는 것과 TLS 를 어디서 끝내는지(신뢰 경계)가 핵심이다
- 실시간 푸시
- 서버가 먼저 클라이언트에 데이터를 보낸다. 연결을 오래 열어 두므로 프록시 · 타임아웃 · 재연결을 함께 설계한다
- 안전 · 멱등 메서드 (idempotent method, safe method)
- 상태를 바꾸지 않는 메서드(GET · HEAD)는 안전하고, 여러 번 보내도 결과 상태가 한 번과 같은 메서드(GET · PUT · DELETE)는 멱등하다. POST · PATCH 는 멱등하지 않아 재시도에 주의한다
- 엣지 · 게이트웨이 라우팅
- 바깥 요청을 받아 경로 · 호스트로 알맞은 서비스에 보낸다. 인증 · 레이트 리미팅 같은 공통 관문도 여기서 건다
- 오리진 인증서 (Origin CA)
- 엣지 프록시와 오리진 서버 사이 구간에 쓰는 인증서. 공개 CA 가 아니라 프록시 업체가 발급해 그 프록시만 신뢰한다
- 오버페칭 · 언더페칭 (over-fetching, under-fetching)
- 화면이 쓰지 않는 필드까지 받거나(오버), 한 화면을 그리려 여러 번 호출하는(언더) 상태. 응답 크기와 왕복 횟수가 늘어난다
- 요청-응답 API 설계
- 클라이언트가 묻고 서버가 한 번 답하는 API 를 설계한다. 자원을 어떻게 이름 붙이고, 무엇을 한 번에 돌려주고, 재시도 · 캐시 · 버전 변경을 어떻게 견딜지를 정한다
- 우회 호스트
- 오래 열려 있는 연결(WebSocket · SSE)만 엣지 프록시를 거치지 않는 별도 호스트로 받는다. 프록시의 유휴 타임아웃 · 응답 버퍼링을 피하는 대신 그 호스트는 엣지 보호를 받지 못한다
- 이름 해석
- 도메인 이름을 연결할 IP 로 바꾼다. 요청이 출발하기 전 첫 단계다
- 전송
- 두 호스트 사이에 바이트를 나른다. 순서 · 재전송을 보장할지(TCP), 가볍게 보낼지(UDP), UDP 위에 신뢰성과 암호화를 새로 얹을지(QUIC)를 고른다
- 트래픽 라우팅
- 밖에서 들어온 요청을 TLS 로 받고, 호스트 · 경로로 가르고, 살아 있는 인스턴스 하나에 넘긴다
- 프록시 유휴 타임아웃
- 중간 프록시가 한동안 바이트가 오가지 않는 연결을 끊거나 응답을 모아 두는 상태. 오래 열어 두는 SSE · WebSocket 이 조용히 끊기거나 이벤트가 늦게 도착한다
- 핸드셰이크 (handshake)
- 본 데이터를 보내기 전에 양쪽이 연결 조건을 맞추는 교환. TCP 는 연결을, TLS 는 인증서 확인과 키 합의를 맞춘다
- DNS (Domain Name System)
- 도메인 이름을 IP 주소로 바꾸는 계층형 조회 체계. 레코드마다 TTL 이 있어 바꾼 값이 퍼지는 데 시간이 걸린다. 클러스터 안에서는 CoreDNS 가 서비스 이름을 풀고, 규칙으로 바깥 이름을 안쪽 서비스로 돌려 쓸 수도 있다
- GraphQL
- 클라이언트가 필요한 필드 구조를 질의로 적어 보내는 API 방식. 엔드포인트 하나로 여러 자원을 한 번에 받는 대신 캐시 · 권한 검사가 필드 단위로 복잡해진다
- gRPC (Protocol Buffers RPC)
- Protocol Buffers 스키마로 함수를 정의하고 HTTP/2 위에서 이진 직렬화로 호출하는 RPC 방식. 데드라인 · 취소 · 스트리밍을 프로토콜이 지원해 서비스 사이 내부 호출에 쓰고, 브라우저에서 직접 부르기는 어렵다
- HTTP (HyperText Transfer Protocol, HTTP semantics)
- 메서드 · 헤더 · 상태 코드로 요청과 응답을 주고받는 애플리케이션 계층 프로토콜. 상태가 없어 요청마다 인증 정보를 다시 싣는다. 의미(메서드 · 캐시 · 협상)는 버전과 상관없이 같다
- HTTP 상태 코드 (status code)
- 응답 결과를 세 자리 숫자로 나타낸 값. 2xx 성공, 3xx 이동(301 · 302 · 304), 4xx 요청 쪽 잘못(401 인증 없음 · 403 권한 없음 · 409 충돌 · 429 한도 초과), 5xx 서버 쪽 잘못(502 · 503 · 504)이다
- Ingress (인그레스)
- 클러스터 밖의 HTTP 요청을 호스트 · 경로 규칙으로 Service 에 잇는 쿠버네티스 객체. 규칙만 적고 실제 처리는 인그레스 컨트롤러가 한다
- ingress-nginx
- 쿠버네티스 Ingress 규칙을 nginx 설정으로 바꿔 실행하는 인그레스 컨트롤러. 더 긴 경로 접두사가 먼저 이긴다
- REST (Representational State Transfer, RESTful, resource-oriented design, 리소스 지향 설계)
- 자원을 URL 로 이름 붙이고 HTTP 메서드로 조작하는 API 설계 스타일. 응답 모양을 서버가 정하므로 화면마다 필요한 필드와 어긋날 수 있다
- RTT (Round Trip Time, 왕복 지연)
- 패킷이 갔다 돌아오는 왕복 시간. 핸드셰이크 횟수만큼 곱해져 첫 응답 지연을 정한다
- Service (쿠버네티스 서비스, ClusterIP)
- 바뀌는 파드 주소 앞에 고정된 이름과 가상 IP 를 두는 쿠버네티스 객체. 레이블로 고른 Ready 파드들에 요청을 나눈다
- SSE (Server-Sent Events, EventSource)
- HTTP 응답 하나를 끊지 않고 text/event-stream 으로 이벤트를 계속 흘려보내는 서버→클라이언트 단방향 방식. 브라우저 EventSource 가 끊기면 Last-Event-ID 를 실어 자동 재연결한다
- SSL/TLS (TLS, SSL, HTTPS)
- 핸드셰이크에서 인증서로 서버를 확인하고 세션 키를 합의한 뒤, 이후 트래픽을 대칭키로 암호화하는 프로토콜. 프록시 뒤에서는 클라이언트↔엣지, 엣지↔오리진 두 구간을 따로 맺는다
- TCP (Transmission Control Protocol)
- 3-way 핸드셰이크로 연결을 맺고 순서 보장 · 재전송 · 흐름 제어 · 혼잡 제어를 하는 전송 프로토콜. HTTP/1.1 · HTTP/2 · WebSocket 이 이 위에서 돈다. 연결을 새로 맺을 때마다 왕복 한 번이 든다
- UDP (User Datagram Protocol)
- 연결 없이 데이터그램을 보내는 전송 프로토콜. 순서 · 도착을 보장하지 않는 대신 지연이 작아 DNS 조회 · 스트리밍 · QUIC 이 쓴다
- Upgrade 헤더 (101 Switching Protocols)
- HTTP 연결을 다른 프로토콜로 바꾸자고 요청하는 헤더. 서버가 101 Switching Protocols 로 답하면 같은 연결이 WebSocket 이 된다
- WebSocket
- HTTP Upgrade 로 시작해 TCP 연결 하나를 양방향 메시지 채널로 바꾸는 프로토콜. 브라우저 WebSocket 은 Authorization 헤더를 붙일 수 없어 인증을 따로 설계한다
다른 분류