TCP와 UDP
TCP (Transmission Control Protocol)
- 연결 지향적: TCP는 연결 설정을 먼저 하고, 연결이 끝난 후 데이터 전송이 이루어지므로, 데이터 전송 전에 통신 상대방과 연결을 설정해야 한다.
- 신뢰성: TCP는 신뢰성 있는 데이터 전송을 보장한다. 데이터가 손실되거나 순서가 뒤바뀌면 이를 감지하고, 재전송을 요청하여 데이터가 정확하게 도달하도록 한다.
- 흐름 제어와 혼잡 제어: TCP는 데이터 전송 중에 흐름을 제어하고 네트워크 혼잡을 관리하여, 네트워크의 상태에 맞게 데이터를 송수신한다.
- 순서 보장: TCP는 데이터 패킷이 올바른 순서대로 도착하도록 보장한다.
- 속도: TCP는 신뢰성 있는 전송을 보장하기 때문에, 상대적으로 속도가 느리다. 연결 설정과 데이터 전송에 시간이 더 필요하고, 오류 처리 및 재전송 등의 과정이 포함된다.
용도:
- 이메일 (SMTP), 웹 페이지 전송 (HTTP/HTTPS), 파일 전송 (FTP) 등 신뢰성이 중요한 통신에 사용된다.
UDP (User Datagram Protocol)
- 비연결형: UDP는 연결 설정 없이 데이터를 전송한다. 즉, 송신자는 데이터를 보낼 때 수신자의 준비 상태를 확인하지 않으며, 연결을 설정하는 과정 없이 바로 데이터를 전송한다.
- 신뢰성 없음: UDP는 데이터의 손실, 중복, 순서 변경 등을 감지하지 않는다. 데이터가 손실되거나 순서가 뒤바뀌더라도 이를 보장하지 않으며, 오류 복구가 없다.
- 빠른 속도: UDP는 연결 설정이 필요 없고, 오류 처리 및 흐름 제어가 없기 때문에 상대적으로 속도가 빠르다.
- 순서 보장 없음: UDP는 데이터가 제대로 순서대로 도착하지 않을 수 있다.
용도:
- 실시간 통신(음성 통화, 비디오 스트리밍), 게임 데이터 전송, DNS 조회 등 속도가 중요한 통신에 사용된다. 단, 신뢰성보다 속도가 우선시되는 경우에 적합하다.
TCP는 신뢰성과 정확성이 필요한 경우에 사용된다. 예를 들어, 웹 브라우징이나 파일 전송 등 데이터의 정확한 전달을 보장해야 할 때 적합하다.
UDP는 속도가 중요한 실시간 애플리케이션에서 유리하다. 예를 들어, 온라인 게임이나 실시간 음성 통화 등에서는 빠른 데이터 전송이 더 중요하기 때문에 UDP가 사용된다.
따라서, 두 프로토콜은 서로 속도와 신뢰성에 대한 요구가 다르므로, 용도에 맞게 적절하게 선택하여 사용해야 한다.