오늘날 서버와 클라이언트 간 데이터 전송의 성능은 인터넷 상의 다양한 서비스 품질을 결정짓는 중요한 요소이다. 

 

인터넷 서비스의 발전과 함께, 데이터의 효율성은 채팅, 스트리밍, 온라인 게임, 금융 거래 등 다양한 분야에서 핵심 역할을 한다. 예를 들어, 실시간 게임에서는 지연 시간이 엄청 중요하고, 금융 거래에서는 신뢰성과 보안이 핵심이다.

 

 

TCP, UDP, QUIC 

  • TCP : 1970년대 초 창시되어 인터넷의 기본 프로토콜로 자리 잡았다. 안정적인 데이터 전송이 요구되는 서비스에 주로 사용된다.
  • UDP : TCP보다 단순한 구조로 빠른 전송이 필요하지만, 신뢰성은 덜 요구되는 서비스에 적합하다. 실시간 스트리밍, VoIP등이 대표적이다.
  • QUIC : 최근 Google에 의해 제안되어 빠른 연결 복원, 낮은 지연 시간, 내장 암호화를 특징으로 한다. HTTP/3의 기반 프로토콜로 각광받고 있다.

각 프로토콜은 당대의 기술적 한계와 요구사항에 맞춰 개발되었는데 TCP는 초기 인터넷의 안정성과 신뢰성을, UDP는 실시간 통신의 필요성을, QUIC은 모바일 환경과 클라우드 서비스 시대의 빠른 응답 속도 요구를 반영한다.

 

 

1. TCP(Transmission Control Protocol)

1.1 TCP의 기본 원리와 동작 방식

TCP는 연결 지향형 프로토콜로, 데이터 전송 전에 반드시 연결을 수립한다. 이를 통해 데이터의 순서와 무결성을 보장한다.

  • 3-way 핸드쉐이크 : 클라이언트와 서버가 서로 연결을 확인하는 과정 
  • 데이터 패킷 : 데이터를 작은 단위로 분활하여 전송 후 재조립

1.2 연결 지향형 통신의 특징

TCP는 연결을 유지하며 데이터를 주고받기 때문에, 중간에 패킷 손실이 발생하면 재전송하는 등 신뢰성을 보장한다. 이로 인해 대용량 파일 전송이나 은행 거래 같은 신뢰성이 중요한 서비스에서 널리 사용된다.

 

1.3 신뢰성 보장 메커니즘

TCP는 다음과 같은 메커니즘으로 데이터 전송의 안정성을 보장한다.

  • 흐름 제어 : 송수신 속도를 동기화하여 버퍼 오버플로우 방지
  • 혼잡 제어 : 네트워크 상황에 따라 전송 속도를 조절
  • 오류 검출 및 재전송 : 패킷 손실 발생 시 자동 재전송

1.4 TCP의 장단점 및 성능 분석

  • 장점 : 높은 신뢰성, 데이터 순서 보장, 오류 복가 기능
  • 단점 : 연결 수립 및 관리 오버헤드, 지연 시간 증가
  • 성능 분석 : 대역폭이 충분하고 지연에 민감하지 않은 서비스에서는 이상적이지만, 실시간 데이터 전송에는 한계가 있다.

 

 

2. UDP (User Datagram Protocol)

2.1 UDP의 기본 원리와 특징

UDP는 비연결형 프로토콜로, 연결 수립 과정 없이 데이터를 빠르게 전송한다.

  • 패킷 단위 전송 : 각 패킷은 독립적으로 전송되며 순서 보장이 없다.
  • 오버헤드 최소화 : 헤더 정보가 간단하여 빠른 데이터 전송이 가능하다.

2.2 비연결형 통신의 개념과 장점

UDP는 연결 설정 없이 데이터를 보내기 때문에, 지연이 적고 실시간 응답이 중요한 환경에서 유리하다.

예시 : 온라인 게임, VoIP, 실시간 스트리밍 등

 

2.3 신뢰성 보장 부재가 가져오는 효과와 사례

UDP는 신뢰성을 보장하지 않기 때문에, 패킷 손실이나 순서 뒤바뀜이 발생할 수 있다.

  • 효과 : 빠른 전송 속도와 낮은 지연
  • 문제 : 데이터 복원 및 오류 처리 로직을 애플리케이션 단에서 구현해야 함

2.4 UDP 사용 시 발생할 수 있는 문제와 해결 방안

패킷 손실이나 중복 전송 문제를 해결하기 위해

  • 애플리케이션 레벨에서의 재전송 로직
  • 시퀀스 번호 추가 및 검증
  • FEC(Forward Error Correction) 기법 등을 사용할 수 있다.

2.5 UDP 성능 최적화 및 활용 전략

UDP는 실시간 서비스에서 높은 성능을 발휘하지만,

  • 네트워크 상태에 따른 적응형 전송 기법을 적용하면 성능 극대화가 가능하다.
  • 예를 들어, 게임에서는 일정 수준의 패킷 손실을 허용하는 대신 빠른 응답 속도를 선택하는 전략을 사용할 수 있다.

 

 

3. QUIC (Quick UDP Internet Connections)

3.1 QUIC의 개요 및 설계 목적

QUIC는 Google에서 제안한 최신 전송 프로토콜로, 기본적으로 UDP 위에서 동작하지만 TCP의 신뢰성과 UDP의 속도를 결합한 형태이다.

  • 주요 목적 : 빠른 연결 수립, 낮은 지연 시간, 내장 암호화
  • 특징 : 연결 복원, 다중 스트림 처리, 헤더 압축

3.2 QUIC의 주요 기능

QUIC는 다음과 같은 혁신적인 기능들을 제공한다.

  • 연결 복원 : 연결 끊김 후에도 재연결 시 핸드 쉐이크 과정을 생략
  • 다중 스트림 : 하나의 연결에서 여러 데이터 스트림을 동시에 처리
  • 암호화 내장 : TLS/SSL 기반의 보안 기능이 기본 제공되어 데이터 보안이 강화된다.

3.3 TCP와 UDP의 장점을 결합한 QUIC의 차별점

QUIC는 기존 프로토콜의 단점을 보완한다.

  • TCP 대비 : 초기 연결 지연이 크게 줄어들며, 혼잡 제어 기법이 개선되었다.
  • UDP 대비 : 데이터 전송의 신뢰성을 높이고, 연결 복원 기능을 통해 안정성을 보장한다.

 

'네트워크' 카테고리의 다른 글

쿠버네티스 네트워크  (0) 2025.04.08
기본 인증  (0) 2024.08.15
클라이언트 식별과 쿠키  (0) 2024.08.09
캐시  (0) 2024.08.07
웹 서버  (1) 2024.08.06

HTTP 애플리케이션을 개발한다면 HTTP 커넥션과 그것이 어떻게 사용되는지에 대해 잘 이해해야 한다.

 

TCP 커넥션

전 세계 모든 HTTP 통신은, 지구상의 컴퓨터와 네트워크 장비에서 널리 쓰이고 있는 패킷 교환 네트워크 프로토콜들의 계층화된 집합인 TCP/ IP를 통해 이루어진다. 세계 어디서든 클라이언트 애플리케이션은 서버 애플리케이션으로 TCP/IP 커넥션을 맺을 수 있다.

일단 커넥션이 맺어지면 클라이언트와 서버 컴퓨터 간에 주고받는 메시지들은 손실 혹은 손상되거나 순서가 바뀌지 않고 안전하게 전달된다.

 

죠의 컴퓨터 가게에서 전동공구의 최신 가격 목록을 가져온다고 해보자.

 

http//www.joes-hardware.com:80/power-tools.html

 

이 URL을 입력받은 브라우저는 다음과 같은 단계를 수행한다.

 

1단계 ~ 3단계에서 URL을 통해 서버의 IP 주소와 포트 번호를 가져오고, 4단계에서 웹 서버가 TCP 커넥션을 맺고 커넥션을 통해 요청 메시지가 전달된다. 6단계에서 응답을 읽고 7단계에서 커넥션이 끊어진다.

 

 

HTTP 커넥션은 몇몇 사용 규칙을 제외하고는 TCP 커넥션에 불과하다. 신속 정확하게 데이터를 보내고자 한다면 TCP의 기초적인 내용을 알아야 한다.

 

TCP는 HTTP에게 신뢰할 만한 통신 방식을 제공한다. TCP 커넥션의 한쪽에 있는 바이트들은 반대쪽으로 순서에 맞게 정확하게 전달된다.

TCP는 충돌 없이 순서에 맞게 HTTP 데이터를 전달한다.

 

 

 

TCP스트림은 세그먼트로 나뉘어 IP 패킷을 통해 전송된다

TCP는 IP 패킷(혹은 IP 데이터그램)이라고 불리는 작은 조각을 통해 데이터를 전송한다. HTTP가 메시지를 전송하고자 할 경우, 현재 연결되어 있는 TCP 커넥션을 통해서 메시지 데이터릐 내용을 순서대로 보낸다. TCP는 세그먼트라는 단위로 데이터 스트림을 잘게 나누고, 세그먼트를 IP 패킷라고 불리는 봉투에 담아서 인터넷을 통해 데이터를 전달한다. 이 모든 것은 TCP/IP 소프트웨어에 의해 처리되며, 그 과정은 HTTP 프로그래머에게 보이지 않는다.

 

각 TCP 세그먼트는 하나의 IP 주소에서 다른 IP 주소로 IP 패킷에 담겨 전달되고, 이 패킷들은 다음을 포함한다.

  • IP 패킷 헤더(보통 20바이트)
  • TCP 세그먼트 헤더(보통 20바이트)
  • TCP 데이터 조각(0 혹은 그 이상의 바이트)

IP 헤더는 발신지와 목적지 IP 주소, 크기, 기타 플래그를 가진다.

 

IP 패킷은 TCP 데이터 스트림의 덩어리를 운반하는 TCP 세그먼트를 실어 나른다.

 

TCP 커넥션 유지하기

컴퓨터는 항상 TCP 커넥션을 여러 개 가지고 있다. TCP는 포트 번호를 통해서 이런 여러 개의 커넥션을 유지한다. 포트 번호는 회사 직원의 내선전화와 같다. 회사의 대표 전화번호는 안내 데스크로 연결되고 내선전화는 해당 직원으로 연결되듯 IP 주소는 해당 컴퓨터에 연결되고 푸트 번호는 해당 애플리케이션으로 연결된다. TCP 커넥션은 네 가지 값으로 식별된다.

 

<발신지 IP 주소, 발신지 포트, 수신지 IP 주소, 수신지 포트>

 

위 네 가지 값으로 유일한 커넥션을 생성한다. 서로 다른 두 개의 TCP 커넥션은 네 가지 주소 구성요소의 값이 모두 같을 수 없다.

어떤 커넥션들은 같은 목적지 포트 번호를 가리킬 수 있다. 하지만 네 가지 커넥션 구성요소를 모두 똑같이 가리키는 커넥션은 있을 수 없다.

 

 

HTTP 트랜잭션 지연

HTTP 요청 과정에서 어떤 네트워크 지연이 발생하는지 살펴보자. 

HTTP 트랜잭션이 처리되는 과정

 

트랜잭션을 처리하는 시간은 TCP 커넥션을 설정하고, 요청을 전송하고, 응답 메시지를 보내느 것에 비하면 상당히 짧다는 것을 알 수 있다. 클라이언트나 서버가 너무 많은 데이터를 내려받거나 복잡하고 동적인 자원들을 실행하지 않는 한, 대부분의 HTTP 지연은 TCP 네트워크 지연 때문에 발생한다.

 

지연 원인

  1. 클라이언트는 URL에서 웹 서버의 IP 주소와 포트 번호를 알아내야 한다. 만약 URL에 기술되어 있는 호스트에 방문한 적이 최근에 없으면, DNS 이름 분석 인프라를 사용하여 URL에 있는 호스트 명을 IP 주소로 변환하는데 수십 초의 시간이 걸릴 것이다.
  2. 클라이언트는 TCP 커넥션 요청을 서버에게 보내고 서버가 커넥션 허가 응답을 회신하기를 기다린다. 커넥션 설정 시간은 새로운 TCP 커넥션에서 항상 발생한다. 이는 보통 1~2초의 시간이 소요되지만, 수백 개의 HTTP 트랜잭션이 만들어지면 소요시간은 크게 증가할 것이다.
  3. 커넥션이 맺어지면 클라이언트는 HTP 요청을 새로 생성된 TCP 파이프를 통해 전송한다. 웹 서버는 데이터가 도착하는 대로 TCP 커넥션에서 요청 메시지를 읽고 처리한다. 요청 메시지가 인터넷을 통해 전달되고 서버에 의해서 처리되는데 까지는 시간이 소요된다.
  4. 웹 서버가 HTTP 응답을 보내는 것 역시 시간이 소요된다.

 

성능 관련 중요 요소

  • TCP 커넥션의 핸드셰이크 설정
  • 인터넷의 혼잡을 제어하기 위한 TCP의 느린 시작
  • 네이글(nagle) 알고리즘
  • 확인응답 지연 알고리즘
  • TIME_WAIT 지연과 포트 고갈

위에 요소는 따로 좀 더 찾아보자.

 

 

'네트워크' 카테고리의 다른 글

웹 서버  (1) 2024.08.06
HTTP 완벽 가이드 - 커넥션 관리(2)  (0) 2024.07.22
HTTP 완벽 가이드 - HTTP 메시지  (1) 2024.07.11
HTTP 완벽 가이드 - URL과 리소스  (0) 2024.07.10
HTTP 완벽 가이드 - 웹의 기초(2)  (2) 2023.08.21

+ Recent posts