피드로 돌아가기
TCP: Why the Internet Works Even When It's Broken
Dev.toDev.to
Backend

TCP가 세분화·일련번호·확인응답 루프를 통해 신뢰할 수 없는 네트워크에서 데이터 손실 없이 전송 보장

TCP: Why the Internet Works Even When It's Broken

Doogal Simpson2026년 3월 28일4intermediate

Context

인터넷을 구성하는 물리 케이블과 노후 장비는 끊임없이 실패하며, 컴퓨터에서 서버 사이의 수십 개 지점에서 데이터 손실, 손상, 드롭이 발생할 수 있다. 라우터 과열, 네트워크 혼잡, 패킷 손실 등으로 인해 대용량 파일 전송은 원본과 손상된 상태로 도착할 위험이 있다.

Technical Solution

  • 데이터 분할 처리: 대용량 파일을 MTU 크기의 세그먼트로 분할하여 하드웨어가 처리 가능한 크기 유지
  • 일련번호 부여: 모든 패킷에 시퀀스 ID를 붙여 수신자가 올바른 순서로 재조립하고 누락된 청크 식별 가능
  • ACK 확인응답 루프: 각 세그먼트 전송 후 수신자로부터 확인응답 신호 대기, ACK 수신 전까지 로컬 버퍼에 데이터 유지
  • 타임아웃 기반 재전송: 지정된 시간 내 ACK 미수신 시 해당 시퀀스 ID의 패킷 자동 재전송
  • 연결 초기화 실패 처리: 설정된 재시도 횟수 또는 타임아웃 기간 후 ACK 미수신 시 연결 리셋 및 애플리케이션에 네트워크 경로 단절 신호

Key Takeaway

TCP는 네트워크 신뢰성을 가정하지 않고 송신자가 모든 바이트의 안전한 도착을 검증할 책임을 지므로, 높은 레이턴시 오버헤드가 발생하는 대신 정확성이 필수적인 웹사이트 로딩, 이메일 전송, 소프트웨어 다운로드 같은 용도에 적합하다.


파일 전송, 웹 요청, 이메일 전송 등 데이터 정확성이 중요한 서비스를 구축할 때 TCP를 사용하되, 실시간 스트리밍이나 온라인 게임처럼 낮은 지연시간이 우선이면 일부 패킷 손실을 허용하고 재전송 대기 없이 진행하는 UDP 고려

원문 읽기