네트워크/TCP

TCP 개요: TCP의 정의

shimdh 2025. 3. 7. 09:29
728x90

TCP(Transmission Control Protocol)는 컴퓨터 네트워크에서 신뢰성 있는 데이터 전송을 보장하는 핵심 프로토콜입니다. 인터넷을 포함한 다양한 네트워크 환경에서 폭넓게 사용되며, 특히 연결 지향적(connection-oriented) 통신이 필요한 애플리케이션에 적합합니다. 웹 브라우징, 이메일 전송, 파일 다운로드 등 수많은 인터넷 서비스가 TCP를 기반으로 동작합니다.


1. TCP란 무엇인가?

TCP는 데이터를 안전하고 순차적으로 전송하는 프로토콜로, 송신자와 수신자 간 정확하고 신뢰할 수 있는 데이터 교환을 보장합니다. 이를 위해 TCP는 패킷 손실 복구, 데이터 순서 보장, 흐름 제어 및 혼잡 제어 등의 기능을 포함하고 있습니다.

TCP의 동작 방식은 다음과 같은 주요 기능을 통해 이루어집니다.


2. TCP의 주요 특징

1) 연결 지향적(Connection-Oriented) 통신

TCP는 데이터를 전송하기 전에 송신자와 수신자 간 논리적인 연결(logical connection) 을 설정해야 합니다. 이를 위해 3-way 핸드셰이크(Three-way Handshake) 라는 과정을 거치며, 이 과정에서 두 장치는 서로 통신할 준비가 되었음을 확인합니다.

3-way 핸드셰이크 과정:

  1. SYN (Synchronize) → 클라이언트가 서버에 연결 요청을 보냅니다.
  2. SYN-ACK (Synchronize-Acknowledge) → 서버가 요청을 승인하고 응답을 보냅니다.
  3. ACK (Acknowledge) → 클라이언트가 최종적으로 확인 응답을 보내고 연결이 완료됩니다.

💡 예시:
웹 브라우저가 웹 서버에 접속할 때, 먼저 TCP 연결이 설정된 후 HTTP 요청이 전송됩니다.


2) 신뢰성 있는 데이터 전송(Reliability)

TCP는 패킷 손실(Packet Loss), 데이터 오류, 패킷 순서 오류를 감지하고 복구하는 기능을 갖추고 있습니다.

데이터 전송 과정:

  • TCP는 데이터를 작은 세그먼트(Segment) 단위로 나누어 전송합니다.
  • 각 세그먼트는 시퀀스 번호(Sequence Number) 를 포함하며, 수신자는 이 번호를 기반으로 올바른 순서대로 데이터를 재조립합니다.
  • 만약 패킷이 손실되거나 손상되었다면, 송신자는 해당 패킷을 다시 전송(재전송)하여 신뢰성을 유지합니다.

💡 예시:
이메일 전송 시 TCP가 패킷을 손실 없이 정확하게 전송하도록 보장하여, 이메일이 완전한 형태로 수신됩니다.


3) 흐름 제어(Flow Control)

흐름 제어는 송신자가 수신자의 처리 속도를 초과하는 데이터를 전송하지 않도록 제어하는 기능입니다.

동작 방식:

  • TCP는 수신자가 현재 처리할 수 있는 데이터 크기(윈도우 크기, Window Size) 를 송신자에게 전달합니다.
  • 송신자는 수신자가 처리 가능한 만큼만 데이터를 전송하고, 수신자의 처리 상태를 지속적으로 확인하면서 데이터 전송 속도를 조절합니다.

💡 예시:
대용량 파일 다운로드 시 네트워크 상태에 따라 전송 속도가 자동으로 조절되어 서버가 클라이언트에게 과부하를 주지 않도록 관리됩니다.


4) 혼잡 제어(Congestion Control)

TCP는 네트워크의 혼잡(Congestion)을 감지하고, 데이터 전송 속도를 조절하여 네트워크 전체의 성능을 최적화합니다.

혼잡 제어 알고리즘:

  • 슬로우 스타트(Slow Start) → 처음에는 적은 양의 데이터를 전송하고, 점진적으로 전송량을 증가
  • 혼잡 회피(Congestion Avoidance) → 네트워크 트래픽이 혼잡해지면 전송 속도를 줄여 과부하를 방지
  • 빠른 재전송(Fast Retransmit) → 패킷 손실이 감지되면 즉시 재전송하여 성능 저하 방지

💡 예시:
온라인 게임, 실시간 스트리밍 등에서는 네트워크 상태가 급변할 수 있기 때문에 TCP의 혼잡 제어가 원활한 데이터 스트리밍을 보장하는 중요한 역할을 합니다.


3. TCP의 활용 예시

TCP는 다양한 인터넷 서비스에서 핵심적인 역할을 수행합니다.

사용 사례 설명
웹 브라우징 (HTTP/HTTPS) TCP를 통해 웹 페이지의 텍스트, 이미지, 동영상 등을 신뢰성 있게 전송
파일 전송 (FTP) 대용량 파일을 안전하게 다운로드 및 업로드
이메일 (SMTP, IMAP, POP3) 메일 전송 시 데이터 손실 없이 정확하게 전달
화상 통화 및 VoIP 패킷 손실을 최소화하여 안정적인 음성 및 영상 통신 보장
원격 접속 (SSH, Telnet) 네트워크를 통해 서버에 안전하게 접속하여 명령을 실행

4. TCP vs. UDP

TCP 외에도 데이터 전송을 위한 또 다른 주요 프로토콜로 UDP(User Datagram Protocol) 가 있습니다.

구분 TCP UDP
연결 방식 연결 지향 (3-way 핸드셰이크 필요) 비연결 지향 (핸드셰이크 없음)
신뢰성 패킷 손실 시 재전송 (높은 신뢰성) 손실된 패킷 재전송 없음 (낮은 신뢰성)
속도 상대적으로 느림 빠름
흐름 제어 및 혼잡 제어 제공 제공하지 않음
사용 사례 HTTP, FTP, 이메일, 원격 접속 DNS, VoIP, 실시간 스트리밍, 온라인 게임

💡 TCP는 신뢰성이 중요한 서비스에 적합하지만, 속도가 중요한 경우 UDP가 더 유리합니다.


5. 결론

TCP는 현대 인터넷 통신의 핵심 프로토콜로, 안정적인 데이터 전송을 보장하는 데 필수적인 역할을 합니다.

TCP의 핵심 기능 요약:

  • 연결 지향적 프로토콜 → 3-way 핸드셰이크를 통한 연결 설정
  • 신뢰성 보장 → 데이터 순서 보장 및 패킷 손실 시 재전송
  • 흐름 제어 → 수신자의 처리 속도에 맞춰 데이터 전송량 조절
  • 혼잡 제어 → 네트워크 트래픽 과부하 방지

인터넷을 포함한 다양한 네트워크 환경에서 TCP는 필수적인 역할을 하며, 이를 이해하는 것은 네트워크 및 시스템 개발에서 매우 중요한 요소입니다. 🚀

728x90

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

TCP의 특징: 혼잡 제어  (0) 2025.03.07
TCP의 특징: 흐름 제어  (1) 2025.03.07
TCP의 특징: 신뢰성  (0) 2025.03.07
TCP의 특징: 연결 지향성  (0) 2025.03.07
TCP 개요: TCP의 역사  (0) 2025.03.07