본문 바로가기

Backend study/Backend theory

TCP 와 UDP

TCP (Transmission Control Protocol)UDP (User Datagram Protocol)는 인터넷에서 데이터를 전송하기 위해 사용되는 두 가지 주요 프로토콜이다. 이 두 프로토콜은 모두 IP(Internet Protocol) 위에서 동작하며, 서로 다른 방식으로 데이터를 전송한다.

 

1. TCP (Transmission Control Protocol)

TCP란?

  • TCP연결 지향적(Connection-oriented) 프로토콜로, 데이터의 신뢰성을 보장하는 프로토콜이다. 패킷 손실, 중복 패킷, 순서가 잘못된 패킷 등의 문제를 처리하여 데이터를 안전하게 전달한다.
  • TCP는 데이터를 스트림(Stream) 형태로 전송하며, 흐름 제어혼잡 제어 기능을 가지고 있어 네트워크 환경에서 최적의 성능을 발휘하도록 설계되었다.

TCP의 주요 특징

  1. 연결 지향성: TCP는 서버와 클라이언트 간에 연결을 설정한 후 데이터를 전송한다. 연결은 세 단계로 이루어지며, 이를 3-way 핸드셰이크라 부른다. 데이터 전송이 끝나면 연결을 종료하는 4-way 핸드셰이크를 통해 연결을 안전하게 닫는다.
    • 3-way 핸드셰이크: 연결 설정 단계.
      1. 클라이언트가 서버로 SYN 패킷을 보냄.
      2. 서버가 이를 받아 SYN-ACK 패킷으로 응답.
      3. 클라이언트가 서버로 ACK 패킷을 보내 연결을 확립.
    • 4-way 핸드셰이크: 연결 종료 단계.
      1. 클라이언트가 연결을 닫기 위한 FIN 패킷 전송.
      2. 서버가 이를 받아 ACK 패킷으로 응답.
      3. 서버가 FIN 패킷을 보내 연결 종료 의사 전달.
      4. 클라이언트가 ACK 패킷을 보내고 연결 종료.
  2. 데이터 전달 보장: TCP는 데이터를 확실히 전달하기 위해 패킷 손실을 감지하고 재전송한다. 만약 전송된 패킷이 손실되거나 손상되면, TCP는 해당 패킷을 재전송하여 정확한 데이터 전달을 보장한다.
  3. 순서 보장: 전송되는 패킷이 네트워크 환경에서 순서가 뒤바뀌는 경우에도, TCP는 패킷이 원래 순서대로 도착하도록 관리한다.
  4. 흐름 제어: 송신자와 수신자 간의 속도 차이를 해결하기 위해 흐름 제어를 수행한다. 수신자의 처리 속도가 느리다면 송신자는 전송 속도를 조절해 수신자가 데이터를 처리할 수 있게 한다.
  5. 혼잡 제어: 네트워크 혼잡 상태를 감지하고, 네트워크 상태에 맞게 전송 속도를 조절하여 네트워크 혼잡을 줄이는 기능을 제공한다.

TCP의 장점

  • 신뢰성 보장: 데이터가 손실되지 않고 순서대로 도착한다.
  • 데이터 흐름 제어 및 혼잡 제어: 네트워크 상태에 맞게 적절히 데이터 전송 속도를 조절한다.
  • 안전한 데이터 전송: 오류가 발생하면 데이터를 재전송하고, 패킷이 손실되면 복구한다.

TCP의 단점

  • 속도 저하: TCP는 신뢰성을 보장하기 위해 추가적인 프로토콜 오버헤드(예: 패킷 재전송, 흐름 제어, 혼잡 제어 등)가 있다. 이는 성능에 영향을 줄 수 있다.
  • 연결 설정 비용: 연결 설정(3-way 핸드셰이크)과 연결 해제(4-way 핸드셰이크)에 시간이 소요되기 때문에 초기 연결 시간이 길어진다.

TCP의 사용 사례

TCP는 신뢰성이 중요한 경우에 주로 사용된다. 대표적인 사용 사례는 다음과 같다:

  • 웹 브라우징(HTTP/HTTPS): 웹 페이지는 데이터의 신뢰성이 중요하므로 TCP를 사용한다.
  • 파일 전송(FTP, SFTP): 파일을 정확하게 전송하기 위해 TCP를 사용한다.
  • 이메일(SMTP): 이메일 전송에 TCP를 사용하여 데이터 손실을 방지한다.
  • 원격 접속(SSH, Telnet): 원격으로 서버에 접속할 때 신뢰성을 보장하기 위해 TCP를 사용한다.

 

2. UDP (User Datagram Protocol)

UDP란?

  • UDP비연결성(Connectionless) 프로토콜로, 데이터의 신속한 전송에 중점을 둔 프로토콜이다. 패킷 전달 보장, 순서 보장, 흐름 제어 등의 기능이 없기 때문에, TCP보다 단순하고 빠르다.
  • UDP는 데이터그램 단위로 데이터를 전송하며, 송신자는 수신자가 데이터를 받았는지 여부를 알 수 없다. 따라서 비신뢰성을 가정한 통신에서 사용된다.

UDP의 주요 특징

  1. 비연결성: UDP는 TCP처럼 연결을 설정하지 않고 데이터그램을 바로 전송한다. 이로 인해 TCP의 핸드셰이크 과정이 없고, 더 빠르게 데이터를 전송할 수 있다.
  2. 데이터 전달 보장 없음: UDP는 데이터의 신뢰성을 보장하지 않는다. 패킷 손실, 중복 전송, 순서 뒤바뀜 등이 발생할 수 있으며, 이를 감지하거나 수정하지 않는다.
  3. 순서 보장 없음: UDP는 패킷이 도착하는 순서를 보장하지 않으며, 네트워크 상태에 따라 패킷이 순서대로 도착하지 않을 수 있다.
  4. 오버헤드 적음: UDP는 추가적인 기능(재전송, 흐름 제어, 혼잡 제어 등)이 없기 때문에 프로토콜 오버헤드가 매우 적어 데이터를 빠르게 전송할 수 있다.
  5. 빠른 전송: UDP는 데이터를 재전송하지 않기 때문에 실시간 데이터 전송이 필요할 때 적합하다.

UDP의 장점

  • 빠른 데이터 전송: 추가적인 제어나 연결 설정 없이 데이터를 즉시 전송할 수 있다.
  • 프로토콜 오버헤드가 적음: 흐름 제어, 혼잡 제어 등이 없기 때문에 빠르고 가벼운 프로토콜이다.

UDP의 단점

  • 신뢰성 부족: 패킷이 손실되거나 순서가 뒤바뀌어도 복구되지 않으며, 데이터를 안전하게 전달할 수 없다.
  • 순서 보장 없음: 패킷이 도착하는 순서를 보장하지 않기 때문에 데이터의 순서를 유지해야 하는 경우에는 적합하지 않는다.

UDP의 사용 사례

UDP는 속도가 중요하고 신뢰성보다 실시간성이 중요한 경우에 주로 사용된다. 대표적인 사용 사례는 다음과 같다:

  • 실시간 스트리밍(음성/영상): 비디오 스트리밍, 화상 통화, 음성 통화 등에서는 패킷이 손실되더라도 신속한 전송이 중요하다.
  • 온라인 게임: 온라인 멀티플레이어 게임에서는 빠른 반응이 중요하기 때문에, 일부 데이터 손실을 허용하는 UDP를 사용한다.
  • DNS(Domain Name System): 도메인 이름을 IP 주소로 변환하는 작업은 빠르게 처리되어야 하므로 UDP를 사용한다.
  • DHCP(Dynamic Host Configuration Protocol): 네트워크에서 IP 주소를 할당하는 DHCP 프로토콜도 UDP를 사용한다.

 

3. TCP와 UDP의 비교

특징  TCP  UDP
연결 방식 연결 지향적 (3-way 핸드셰이크) 비연결적
데이터 전달 보장 데이터 전달 보장 (재전송 및 오류 수정) 데이터 전달 보장 없음
패킷 순서 보장 순서 보장 순서 보장 없음
흐름 제어 및 혼잡 제어 있음 없음
오버헤드 비교적 높음 매우 적음
전송 속도 상대적으로 느림 매우 빠름
사용 사례 웹 브라우징, 파일 전송, 이메일, 원격 접속 등 실시간 스트리밍, 온라인 게임, DNS, DHCP 등

 

4. TCP와 UDP 사용의 선택 기준

  • TCP가 적합한 경우:
    • 데이터 신뢰성이 매우 중요할 때.
    • 패킷 손실이 허용되지 않는 경우 (예: 파일 전송, 웹 브라우징).
    • 순차적인 데이터 전송이 필요할 때 (예: 이메일, 채팅).
  • UDP가 적합한 경우:
    • 실시간 응답성이 중요한 경우 (예: 음성 통화, 비디오 스트리밍, 게임).
    • 데이터 신뢰성보다 속도가 중요한 경우.
    • 약간의 패킷 손실이 크게 문제가 되지 않는 경우.

 

  • TCP신뢰성을 보장하는 프로토콜로, 데이터 전송 중 손실, 중복, 순서 문제 등을 해결해 안정적인 통신을 제공한다. 하지만 오버헤드가 있어 전송 속도가 상대적으로 느릴 수 있다. 주요 사용 사례로는 웹 브라우징, 파일 전송, 이메일, 원격 접속 등이 있다.
  • UDP속도와 실시간성에 중점을 둔 프로토콜로, 연결 설정과 패킷 보장 기능 없이 데이터를 빠르게 전송한다. 신뢰성이 떨어지지만, 빠른 응답이 중요한 스트리밍, 온라인 게임, DNS 등의 서비스에 적합하다.

두 프로토콜은 각각의 장단점이 있으며, 네트워크 환경과 서비스의 특성에 따라 적합한 프로토콜을 선택하는 것이 중요하다.

728x90