TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 인터넷 프로토콜 스위트의 두 가지 주요 전송 계층 프로토콜입니다. 이들은 데이터 전송의 특성과 용도에 따라 각각의 강점을 가지고 있습니다.
TCP (Transmission Control Protocol)
특징:
- 연결 지향(Connection-oriented): TCP는 데이터 전송 전에 발신자와 수신자 간에 연결을 설정합니다. 이 연결 설정은 "3-way handshake"라고 불리는 세 단계의 절차를 통해 이루어집니다.
- 신뢰성(Reliability): TCP는 데이터 전송의 신뢰성을 보장합니다. 송신자는 수신자로부터 각 패킷에 대한 확인 응답(ACK)을 받아야 합니다. 손실된 패킷은 재전송되며, 데이터는 올바른 순서로 재조립됩니다.
- 흐름 제어(Flow Control): TCP는 수신자의 수신 버퍼 크기에 맞춰 데이터를 전송합니다. 이를 통해 송신자가 수신자가 처리할 수 있는 양만큼 데이터를 전송하도록 조절합니다.
- 혼잡 제어(Congestion Control): TCP는 네트워크 혼잡을 감지하고 이를 완화하기 위해 전송 속도를 조절합니다. 이는 네트워크의 효율성을 높이고 혼잡으로 인한 데이터 손실을 줄입니다.
- 오버헤드(Overhead): TCP는 추가적인 제어 정보를 포함하는 헤더를 사용하여 데이터를 전송하기 때문에, UDP에 비해 오버헤드가 큽니다.
사용 사례:
- 웹 브라우징 (HTTP/HTTPS): 신뢰성과 데이터 순서가 중요한 웹 페이지 로딩.
- 이메일 (SMTP): 정확한 데이터 전송이 필요한 이메일 전송.
- 파일 전송 (FTP): 파일의 손실 없는 전송을 보장.
UDP (User Datagram Protocol)
특징:
- 비연결 지향(Connectionless): UDP는 데이터 전송 전에 연결을 설정하지 않습니다. 각 데이터그램은 독립적으로 전송됩니다.
- 비신뢰성(Unreliable): UDP는 데이터 전송의 신뢰성을 보장하지 않습니다. 패킷 손실에 대한 재전송을 하지 않으며, 데이터가 순서대로 도착하는 것을 보장하지 않습니다.
- 흐름 제어 및 혼잡 제어 없음: UDP는 흐름 제어나 혼잡 제어를 수행하지 않습니다. 이는 단순한 구조로 인해 오버헤드가 적고 전송 속도가 빠르다는 장점을 제공합니다.
- 오버헤드 적음(Low Overhead): UDP는 헤더가 간단하여 TCP보다 오버헤드가 적습니다. 이는 빠른 데이터 전송을 가능하게 합니다.
사용 사례:
- 실시간 스트리밍 (VoIP, 동영상 스트리밍): 일부 데이터 손실이 허용되는 응용 프로그램에서 빠른 전송 속도가 중요할 때.
- 온라인 게임: 빠른 응답 시간이 중요한 온라인 게임에서 사용.
- DNS 조회: 빠르고 단순한 쿼리를 위해 사용.
주요 비교 요약
특성 | TCP | UDP |
연결 방식 | 연결 지향 | 비연결 지향 |
신뢰성 | 보장 (ACK, 재전송) | 비보장 |
흐름 제어 | 있음 | 없음 |
혼잡 제어 | 있음 | 없음 |
오버헤드 | 높음 | 낮음 |
전송 속도 | 느림 | 빠름 |
사용 사례 | 웹 브라우징, 이메일, 파일 전송 | 실시간 스트리밍, 온라인 게임, DNS 조회 |
TCP와 UDP는 각각의 강점이 있어 상황에 따라 적절하게 사용됩니다. TCP는 데이터의 신뢰성과 무결성이 중요한 경우에, UDP는 빠른 전송 속도가 중요한 경우에 적합합니다.
'공부 > C#' 카테고리의 다른 글
C# Packet Generator (0) | 2024.06.13 |
---|---|
BitConverter란? (1) | 2024.06.12 |
패킷(Packet) (0) | 2024.06.10 |
Session 이란? (0) | 2024.06.10 |
소켓 (1) | 2024.06.05 |