[CS] TCP vs UDP

khj·2024년 10월 18일

Computer Science

목록 보기
5/25
post-thumbnail

네트워크 통신을 할 때, 데이터를 전달하기 위한 두 가지 주요 프로토콜인 TCP(Transmission Control Protocol)UDP(User Datagram Protocol)가 있습니다.

1. TCP란?

TCP(Transmission Control Protocol)는 신뢰성 있는 연결형 통신을 제공하는 프로토콜입니다. 데이터를 전송하기 전에 발신자와 수신자 사이에 연결을 설정하고, 패킷이 올바르게 전송되었는지 확인하면서 데이터를 전달합니다. 패킷이 손실되면 재전송하며, 순서에 맞게 데이터가 도착했는지도 확인합니다.

TCP는 인터넷에서 가장 널리 사용되는 프로토콜 중 하나로, 웹 브라우징(HTTP, HTTPS), 이메일(SMTP), 파일 전송(FTP) 등에 사용됩니다.

2. UDP란?

UDP(User Datagram Protocol)는 비연결형 통신을 제공하는 프로토콜입니다. 데이터를 보내기 전에 연결을 설정하지 않으며, 패킷이 손실되거나 순서가 뒤바뀌어도 이를 복구하려고 하지 않습니다. 따라서 TCP보다 전송 속도가 빠르고, 단순한 통신에 적합합니다.

UDP는 주로 실시간 스트리밍, 온라인 게임, VoIP(Voice over IP) 같은 실시간 애플리케이션에 사용됩니다.

3. TCP와 UDP의 차이점

구분 TCP UDP
연결 방식 연결형 프로토콜 (데이터 전송 전 연결 설정) 비연결형 프로토콜 (연결 없이 바로 데이터 전송)
신뢰성 패킷 손실 시 재전송, 데이터 순서 보장 패킷 손실, 순서 보장 없음
전송 속도 상대적으로 느림 (연결 설정 및 확인 작업 필요) 빠름 (오버헤드가 적음)
데이터 무결성 보장 (오류 체크, 흐름 제어) 보장하지 않음
전송 용량 헤더 크기 큼 (20바이트 이상) 헤더 크기 작음 (8바이트)
주요 사용 사례 웹 브라우징, 이메일, 파일 전송 등 실시간 스트리밍, 온라인 게임, VoIP 등

4. TCP 통신 과정

TCP는 연결형 프로토콜이기 때문에, 데이터를 전송하기 전에 발신자와 수신자가 3-way Handshake라는 절차를 통해 연결을 설정합니다. 이 과정은 다음과 같습니다:

  1. SYN (Synchronize): 클라이언트가 서버에 연결 요청을 보냅니다.
  2. SYN-ACK (Synchronize-Acknowledgment): 서버가 연결 요청을 수락하고, 응답 메시지를 보냅니다.
  3. ACK (Acknowledgment): 클라이언트가 서버의 응답을 확인한 후, 데이터 전송을 시작합니다.

데이터 전송이 완료되면 4-way Handshake를 통해 연결을 종료합니다. TCP는 이러한 과정 덕분에 데이터의 신뢰성을 보장하지만, 연결 설정 및 해제 과정이 추가되어 UDP보다 속도가 느려질 수 있습니다.

5. UDP 통신 과정

UDP는 비연결형 프로토콜이므로 데이터 전송 전의 연결 설정 과정이 없습니다. 발신자는 단순히 데이터를 패킷으로 나누어 수신자에게 전송합니다. 수신자가 패킷을 받았는지 확인하지 않으며, 패킷이 도착하지 않더라도 이를 복구하는 절차가 없습니다.
이 때문에 UDP는 오버헤드가 적고 속도가 빠르지만, 신뢰성이 낮습니다.

6. TCP와 UDP의 활용 사례

  • TCP 활용 사례
    • 웹 브라우징: HTTP, HTTPS 프로토콜은 신뢰성 있는 데이터 전송이 중요합니다. 웹 페이지가 온전하게 로드되어야 하기 때문에 TCP가 적합합니다.
    • 파일 전송: FTP, SFTP 등 파일 전송에서는 데이터 손실 없이 파일이 온전히 전달되어야 합니다.
    • 이메일: SMTP, POP3, IMAP과 같은 이메일 전송은 수신자가 이메일을 정확하게 받을 수 있어야 합니다.
  • UDP 활용 사례
    • 실시간 스트리밍: 동영상 스트리밍이나 음악 스트리밍은 데이터의 일부가 손실되더라도 큰 문제가 되지 않으며, 지연이 적은 것이 중요합니다.
    • 온라인 게임: 빠른 응답 속도가 중요한 온라인 게임에서는 UDP를 사용하여 네트워크 지연을 줄입니다.
    • VoIP: 인터넷을 통한 음성 통신(VoIP)에서는 지연 없는 실시간 통신이 중요하며, 약간의 데이터 손실은 감수할 수 있습니다.
profile
Spring, Django 개발 블로그

0개의 댓글