전송계층이 종단 간 통신을 제어하는 방식

전송계층의 다중화, 흐름·오류·혼잡 제어와 TCP·UDP의 차이, 웹·스트리밍·기업 네트워크 활용을 정리한다.

2026-08-14 · 최초 발행 2025-08-10

전송계층은 네트워크가 전달한 데이터를 어느 애플리케이션에 넘길지 판단하고, 필요할 때는 전달 순서와 손실 복구까지 맡는다. OSI 모델의 4계층으로서 응용계층과 네트워크계층 사이에 놓이며, 데이터 단위는 세그먼트(Segment) 또는 데이터그램(Datagram)이라 부른다.

대표 프로토콜은 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)다. 둘은 연결 방식과 신뢰성 보장 범위가 달라 서비스가 요구하는 특성에 따라 선택된다.

포트로 여러 애플리케이션을 연결하는 과정

전송계층은 서로 다른 호스트에서 동작하는 애플리케이션 프로세스 간 논리적 연결을 지원한다. 이때 포트 번호가 애플리케이션을 구분하는 기준이 된다.

다중화(Multiplexing)는 한 호스트의 여러 애플리케이션이 네트워크를 함께 쓰도록 만드는 과정이다. 상위 계층에서 내려온 여러 데이터 스트림을 포트 번호로 묶고, 여러 소켓의 데이터를 하나의 전송 계층 세그먼트로 결합한다.

애플리케이션 A: 포트 8080다중화 과정애플리케이션 B: 포트 9090단일 IP 패킷으로 전송

수신 측에서는 역다중화(Demultiplexing)가 반대 방향으로 수행된다. TCP/UDP 헤더의 포트 정보를 바탕으로 수신 세그먼트를 적절한 소켓에 나누고, 결과적으로 올바른 애플리케이션 프로세스에 전달한다.

수신된 IP 패킷역다중화 과정애플리케이션 A: 포트 8080애플리케이션 B: 포트 9090

대용량 데이터는 네트워크가 처리할 수 있는 크기의 세그먼트로 나뉜다. 수신 측은 이를 원래 메시지로 다시 조립하며, 분할 과정에서는 MTU(Maximum Transmission Unit)를 고려한다.

수신 상태와 네트워크 상태에 맞춘 전송 제어

신뢰성 있는 전달은 하나의 기능으로 완성되지 않는다. 수신자가 감당할 수 있는 양, 전송 중 생긴 손실과 오류, 네트워크 자체의 혼잡을 각각 다뤄야 한다.

흐름제어로 수신 버퍼를 보호한다

흐름제어(Flow Control)는 송신자와 수신자의 처리 속도 차이 때문에 수신 버퍼가 넘치는 상황을 막는다.

슬라이딩 윈도우(Sliding Window)는 수신 측 버퍼 상태에 따라 송신 측 전송량을 조절한다. TCP 헤더의 Window Size 필드로 수신 가능한 데이터 양을 알리고, 윈도우 크기를 동적으로 바꿔 버퍼 오버플로우를 방지한다.

수신자송신자수신자송신자송신자는 3000바이트까지만 전송윈도우 크기 축소 (버퍼 상태 반영)데이터 전송ACK + Window Size = 30003000바이트 이내 데이터 전송ACK + Window Size = 1500

Stop-and-Wait은 패킷을 보낸 뒤 확인 응답(ACK)을 기다리는 단순한 흐름제어 방식이다. 네트워크 자원 활용 효율성은 낮지만 구현이 단순하며, 소규모 데이터 전송에 사용될 수 있다.

손실과 중복을 감지해 복구한다

오류제어(Error Control)는 전송 도중 발생한 오류를 감지하고 복구한다.

시퀀스 번호(Sequence Number)는 각 세그먼트에 고유 번호를 부여해 순서와 중복을 관리한다. 32비트 필드로 표현되며 약 4GB의 데이터를 식별할 수 있다. 최초 연결에서는 랜덤 값으로 시작해 보안성을 강화한다.

확인응답(Acknowledgment)은 수신 측이 데이터를 올바르게 받았음을 송신 측에 알리는 방식이다. 누적 ACK는 특정 시퀀스 번호까지의 모든 데이터 수신을 확인하고, 선택적 ACK(SACK)는 비연속적인 데이터 블록의 수신을 개별적으로 확인한다.

패킷 손실이나 오류가 발생하면 재전송(Retransmission)이 이어진다. 일정 시간 안에 ACK가 오지 않으면 타임아웃 기반 재전송을 수행한다. 동일한 ACK가 연속적으로 수신되는 경우에도 패킷 손실로 판단해 재전송할 수 있다.

수신자송신자수신자송신자패킷 손실 발생SEQ=100, 200바이트 데이터ACK=300SEQ=300, 200바이트 데이터타임아웃SEQ=300, 200바이트 데이터 (재전송)ACK=500

혼잡 신호에 따라 전송량을 조절한다

혼잡제어(Congestion Control)는 네트워크 혼잡을 감지하고 대응해 전체 네트워크 성능을 유지한다. 송신자가 전송할 수 있는 데이터 양은 혼잡 윈도우(Congestion Window, cwnd)로 조절된다. 혼잡할 때는 윈도우를 줄여 트래픽을 낮추고, 상태가 좋으면 점진적으로 늘린다.

TCP의 슬로우 스타트(Slow Start)는 연결 초기에 cwnd를 1 MSS(Maximum Segment Size)부터 시작하며, 매 RTT(Round Trip Time)마다 cwnd를 2배씩 증가시킨다. 임계값(ssthresh)에 이르면 혼잡 회피 단계로 옮겨간다.

혼잡 회피(Congestion Avoidance)에서는 cwnd가 임계값 이상일 때 매 RTT마다 1 MSS씩 선형적으로 증가한다. 네트워크 용량을 조심스럽게 탐색하며 혼잡을 피하는 단계다.

빠른 재전송/빠른 회복(Fast Retransmit/Fast Recovery)은 3개의 중복 ACK를 패킷 손실 신호로 보고 즉시 재전송한다. 타임아웃을 기다리지 않으며, 임계값은 현재 cwnd의 절반으로 설정한 뒤 혼잡 회피로 전환한다.

YesNo타임아웃3 중복 ACK연결 시작슬로우 스타트: cwnd=1,지수적 증가임계값 도달?혼잡 회피: 선형적 증가패킷 손실?cwnd=1, 임계값=cwnd/2,슬로우 스타트로 복귀빠른 재전송/회복:cwnd=임계값

TCP와 UDP를 서비스 특성에 맞게 고른다

TCP는 연결 지향적 프로토콜이다. 3-way handshake로 연결을 설정하고, 흐름제어·오류제어·혼잡제어를 제공한다. 순서를 보장하고 중복을 막아 웹 브라우징(HTTP), 이메일(SMTP), 파일 전송(FTP)에 사용된다.

UDP는 연결 설정 과정이 없는 비연결형 프로토콜이다. 신뢰성, 순서 보장, 흐름제어 기능 없이 최소한의 오버헤드로 빠르게 데이터를 보낸다. 헤더 크기는 8바이트로 TCP의 20바이트보다 작으며, 실시간 스트리밍, 온라인 게임, DNS 조회에 적합하다.

서비스 환경에서 달라지는 전송계층 선택

웹 서버는 포트 80(HTTP) 또는 443(HTTPS)에서 다수 클라이언트 요청을 다중화해 처리한다. 클라이언트는 임시 포트를 할당받아 서버와 통신하고, 웹 페이지는 TCP의 신뢰성 있는 전송으로 데이터 무결성을 보장받는다. HTTP/3는 기존 TCP 대신 QUIC(UDP 기반)를 사용해 지연 시간을 감소시킨다.

실시간 비디오 스트리밍은 지연 시간을 최소화하기 위해 UDP를 활용한다. 라이브 방송은 패킷 손실보다 실시간성이 중요해 UDP를 선호한다. 반면 VOD(Video on Demand)는 고품질 비디오 데이터를 정확히 보내기 위해 TCP를 사용하며, RTMP와 RTP 같은 상위 프로토콜은 전송계층 위에서 동작한다.

기업 네트워크에서는 WAN 최적화 장비로 TCP 윈도우 크기를 조정해 대역폭 활용도를 높일 수 있다. TCP 가속기는 장거리 통신의 지연 시간을 낮추는 데 사용되며, QoS(Quality of Service) 정책은 중요한 애플리케이션 트래픽에 우선순위를 부여한다. 방화벽과 로드밸런서도 전송계층 정보를 바탕으로 트래픽을 필터링하고 분산한다.

전송 프로토콜이 확장되는 방향

MPTCP(MultiPath TCP)는 여러 경로를 동시에 사용해 대역폭과 안정성을 높인다. QUIC 프로토콜은 UDP 기반의 신뢰성 있는 전송, TLS 암호화, 연결 설정 지연 감소를 다룬다.

소프트웨어 정의 네트워킹(SDN)에서는 전송계층 최적화로 네트워크 성능을 높일 수 있다. 5G 네트워크에 적합한 새로운 전송 프로토콜의 개발과 최적화도 이어지고 있다.

전송계층TCPUDP흐름제어혼잡제어네트워크