UDP와 TCP의 차이점은 무엇입니까?


46

라우터에는 포트 전달을 설정할 때 선택할 수있는 두 가지 프로토콜 (및 "둘 다"옵션)이 있습니다 : UDP 및 TCP. 이 두 프로토콜의 차이점은 무엇이며 언제 포트 포워딩에서 다른 프로토콜을 선택할 것입니까?

답변:


51

TCP 는 데이터가 어디로 이동하는지 확인하기 위해 acks와 재시 도로 지원됩니다. UDP 는 연결이없고 "화재와 잊어 버리기"입니다. UDP는 주로 스트리밍 유형 응용 프로그램에 사용되며, 일부 데이터가 손실되면 다시 보내려고 할 필요가 없습니다.

사용하는 응용 프로그램에 따라 다릅니다. 예를 들어 웹 서버는 TCP를 사용합니다.


3
비디오를 스트리밍하는 경우 나중에 해당 지점을 통과했기 때문에 누락 된 프레임을 다시 보내지 않아도됩니다. 감사합니다
Guy

15
+1. 덧붙여서 더 깊이 이해하고 싶은 사람은 W. Richard Stevens 중 하나에 관한 주제에 관한 훌륭한 책을 읽어야합니다. "TCP / IP Illustrated, v1"및 "UNIX Network Programming"은 훌륭한 자습서 및 참조 자료로 사용됩니다.
Murali Suriar

73

여기서 좋은 요약을 찾을 수 있습니다.

UDP와 TCP 인터넷 프로토콜의 차이점은 무엇입니까?

TCP와 UDP는 모두 전송 계층 TCP / IP 모델에서 작동하지만 사용법이 매우 다릅니다.

가장 중요한 차이점은 다음과 같습니다.

  • 안정성 :
    TCP : 연결 지향
    UDP : 비 연결
  • 주문 :
    TCP : 메시지 수신 순서가 보장됩니다
    UDP : 순서가 보장되지 않습니다
  • 프로토콜 가중치 :
    TCP : 연결 / 주문 오버 헤드로 인해 헤비급
    UDP : 경량, 매우 적은 오버 헤드
  • 패킷 :
    TCP : 스트리밍, 데이터는 "스트림"으로 읽 히며, 한 패킷이 끝나는 위치와 다른 패킷이 시작되는 위치를 구분하지 않습니다. 읽기 호출 당 여러 개의 패킷이있을 수 있습니다.
    UDP : 데이터 그램, 한 번의 읽기 호출 당 하나의 패킷.

프레임 구조

데이터가 네트워크를 통해 전송되면 소위 "프레임"으로 캡슐화해야합니다. 사용중인 프로토콜 및 토폴로지에 따라 다양한 캡슐화 방법이 있습니다. 다음 이미지는 TCP 및 UDP 프레임 구조가 어떻게 다른지 보여줍니다.

이것은 TCP 프레임 구조입니다.

TCP 프레임

이것은 UDP 프레임 구조로 훨씬 간단합니다.

UDP 프레임

TCP를 사용하는 일반적인 프로토콜은 HTTP, FTP 및 SMTP입니다. UDP를 사용하는 프로토콜의 예는 DNS 및 DHCP입니다.


@splattne-메시지 수신 순서는 전송 이 아니라 보증입니다
Alnitak

@Alnitak : 물론입니다. 전송 주문에서 영수증이 보증됨을 의미했습니다. 명확하게하기 위해 업데이트하겠습니다.
splattne

43

그리고 CEO 수준의 설명 :

UDP는 용지를 쓰레기통의 일반적인 방향으로 던질 때입니다.

TCP는 놓친 경우 동일한 용지의 정확한 사본을 휴지통에 넣을 때까지 반복해서 던집니다. 종이 낭비, 심지어 TCP 패킷 재전송으로 인해 네트워크 또는 시스템 리소스가 낭비 될 수 있습니다.


1
그것은 매우 좋은 "CEO 수준"설명입니다.
Keithius

나는 CEO가 아니지만 왜 아무도 나에게 이것을 먼저 말하지 않았다! : p
Nicolas Dorier

훌륭합니다!
shylent

7

TCP와 UDP는 모두 IP 위에서 실행되는 프로토콜입니다. TCP는 전달을 보장하지만 UDP는 그렇지 않습니다. 전달하려는 서비스에 따라 포트 전달을 위해 하나 또는 다른 것을 선택합니다. 예를 들어 HTTP는 TCP입니다. 전달하려는 서비스가 어떤 프로토콜인지 모르는 경우 거의 TCP입니다.


3

질문의 다른 부분에 대답하려면 응용 프로그램에서 사용하는 내용을 전달해야합니다. HTTP 트래픽을 전달하려면 TCP를 선택하십시오. TFTP 트래픽을 전달하려면 UDP를 선택하십시오. p2p 프로그램은 주로 tcp와 udp를 모두 사용하므로 둘 다 전달하십시오.

프로토콜과 사용중인 프로그램에 따라 다릅니다.


당신은 전적으로 옳지 않습니다. dns는 tcp / 53을 자주 사용하지는 않지만 여전히 사용합니다 [예 : 존 전송 용].
pQd

예. 또한 tcp를 통해 정기적 인 DNS 쿼리를 보내는 것이 전적으로 유효합니다. UDP를 독점적으로 사용하는 TFTP로 예제를 변경했습니다.
hayalci

2

TCP는 지금까지 언급 된 차이점뿐만 아니라

흐름 제어. 수신자는 창 메커니즘을 사용하여 발신자가 더 많은 데이터를 보낼 수있는 권한을 기다려야하기 전에 발신자로부터 수신하려는 옥텟 (바이트) 수를 제한합니다. 대화가 진행되는 동안 수신자가 창의 크기를 변경할 수 있습니다. 이것은 수신자가 발신자로부터 오는 데이터의 속도를 '조절'할 수있게합니다. UDP는 이것을 허용하지 않으며 수신자가 할 수있는 모든 것은 도착시 버퍼링하거나 처리 할 수없는 데이터를 버리는 것입니다.

비 인접 수신 확인 (송신자가 누락 된 프레임이 아닌 누락 된 프레임과 수신자가 이미 가지고 있지만 일반적인 방법으로 인식 할 수없는 후속 프레임 대신 재전송 할 수 있도록 선택적 수신 확인 사용), 혼잡 처리 및 적응 재전송 (응답이 수신되지 않을 때 전송 된 프레임을 재전송하는 시간을 결정하는 타이머 조정) 이는 UDP와 관련이 없지만 TCP가 동일한 페이로드 볼륨에 대한 네트워크로드를 크게 늘리지 않고도 UDP를 통해 추가 서비스를 제공 할 수 있도록 도와줍니다.


2

TCP는 데이터가 수신자에게 전달되도록 노력합니다. UDP는 그렇지 않습니다.


잘못된. IP 프로토콜이 신뢰할 수 없으며 데이터가 손실 될 수 있습니다. TCP는 전송 된 데이터 (작은 부분으로 분할되고 IP 패킷을 통해 전송 됨)가 수신자에게 (필요한 경우 작은 부분을 다시 전송함으로써) 수신자에게 전달하도록 노력합니다.
익명

@ Anonymous-당신은 기본적으로 내가 위에서 말한 것을 쉬었습니다. 내가 어떻게 틀렸어?
J. Polfer

IP가 기본 프레임 워크 (스택)이고 UDP와 TCP가 모두 사용하는 기본 통신 프로토콜이라는 것을 알게 될 것입니다. 내가 아는 한 JUST IP를 사용하여 인터넷을 통해 유용한 데이터를 실제로 통신 할 수는 없습니다. 심지어 기본 핑 (ping)과 같은 IP도 다른 프로토콜 (ICMP)에 프로토콜을 사용합니다.
Lee B

1

하나와 다른 것을 설명하는 모든 대답을 신경 쓰지 마십시오. 포트 포워드를 설정하기 위해 규칙은 매우 간단합니다. 사용중인 프로토콜 / 응용 프로그램에 대한 문서가 UDP를 사용하도록 지시하지 않는 한 TCP를 선택해야합니다. 일반적으로 UDP를 사용하는 것은 스트리밍과 관련이 있거나 가벼운 프로토콜 / 신속성 (특히 DNS 및 NTP)보다 빠른 속도를 선호하는 매우 간단한 것입니다. TCP 및 UDP 외에 ICMP, 터널링 프로토콜 등의 다른 프로토콜도 있습니다.


1

잘 알려진 프로토콜 일수록 경로에 더 많은 라우터가 프로토콜을 개입시킵니다. tcp 패킷을 보내면 수신 패킷이 엉망이 될 가능성이 큽니다. UDP는 일반적으로 그렇게 엉망이 아니며 다른 254 개의 IP paylod 프로토콜은 일반적으로 완전히 손대지 않습니다.


0

사용자 데이터 그램 프로토콜 (UDP)

Internet Protocol Suite의 기본 프로토콜의 일부입니다. 네트워크 컴퓨터의 프로그램은 데이터 그램이라고도하는 짧은 메시지를 보낼 수 있습니다. UDP는 신뢰성을 보장하지 않습니다 (데이터 그램이 고장 났거나 복제되거나 예고없이 누락 될 수 있음). 모든 패킷이 실제로 전달되는지 여부를 확인하지 않으므로 UDP는 전달이 보장되지 않는 응용 프로그램에 대해 더 빠르고 효율적입니다. UDP는 다음과 같은 상황에서 그 용도를 찾습니다.

시간에 민감한 응용 프로그램. 지연된 패킷으로 인한 문제를 피할 수 있습니다

또한 수많은 클라이언트의 작은 쿼리에 응답하는 서버에도 유용합니다. UDP는 패킷 브로드 캐스트 (로컬 네트워크의 모든 장치로 전달) 및 멀티 캐스팅 (모든 가입자에게 전달)을 지원합니다.

전송 제어 프로토콜 (TCP)

Internet Protocol Suite에서이 프로토콜의 중요성으로 인해 종종 TCP / IP라고합니다. TCP는 두 엔드 시스템 (예 : 웹 브라우저와 웹 서버 간)에만 관련된 상위 레벨에서 작동합니다. TCP는 한 컴퓨터의 한 프로그램에서 다른 컴퓨터의 다른 프로그램으로 데이터 스트림을 안정적으로 순차적으로 전달합니다. TCP 재 그룹 전자 메일 지원 및 파일 전송 및 웹 응용 프로그램의 일반적인 사용 관리 작업 중 TCP는 메시지 크기, 메시지 교환 속도 및 네트워크 트래픽 혼잡을 제어합니다. IP는 인터넷을 통해 전송되는 메시지로 컴퓨터에서 컴퓨터로의 하위 수준 전송을 처리합니다.


0

둘 다 인터넷 프로토콜 또는 IP라는 네트워크 프로토콜입니다. 인터넷 프로토콜은 인터넷의 주요 프로토콜이며 예를 들어 웹 탐색을 가능하게합니다. 따라서 이러한 프로토콜이 종종 TCP / IP 또는 UDP / IP로 작성되는 것을 보게됩니다. 그들은 실제로 인터넷의 핵심 프로토콜입니다.

두 경우 모두 데이터는 패킷이라고하는 청크로 분할됩니다. TCP는 이러한 패킷이 목적지에 올바른 순서로 오류없이 도착하도록합니다.

반면에 UDP는 데이터 패킷이 도착하는 것을 보장하지 않습니다. 도착한 경우 오류가 없는지 확인합니다.

일반적으로 다른 프로토콜은 TCP 및 UDP 위에서 실행되며 운영 체제가 아닌 응용 프로그램 내에서 작동하기 때문에 응용 프로그램 프로토콜이라고합니다. 웹 브라우징은 TCP 프로토콜을 사용하는 HTTP 프로토콜을 사용합니다.

도메인 이름 조회 또는 DNS 쿼리는 종종 UDP를 사용하지만 TCP도 사용할 수 있습니다. 많은 스트리밍 서비스가 다른 응용 프로그램 프로토콜 아래에서 UDP를 사용합니다.

간단한 영어로 귀하의 질문에 대답하기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.