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


144

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

시간이 중요하지 않은 응용 프로그램의 경우 TCP가 사용되고 UDP는 빠른 데이터 전송이 필요한 게임이나 응용 프로그램에 사용됩니다. TCP가 HTTP, HTTP, FTP, SMTP 및 Telnet에 사용된다는 것을 알고 있습니다. DNS와 DHCP에 UDP가 사용된다는 것을 알고 있습니다.

그런데 왜? TCP와 UDP의 특징은 각각의 사용 사례에 유용합니까?


13
그리고 이것이 구글의 첫 히트작 인 skullbox.net/tcpudp.php 는 명확하지 않습니까? 무엇에 대해 혼란 스러웠습니까? 어쩌면 이것이 더 낫습니까? tcpipguide.com/free/…
S.Lott

1
나는 왜이 질문이 3 개의 투표를 받았는지 궁금하다. 첫 번째 문장은 의미가 없으며 한 주제를 검색하면이 주제에 관한 자료가 많이 있습니다.
MattH

21
@MattH : 1) 다소 광범위하고 복제본이 이미 잘 대답되어 있다면 좋은 질문입니다. 2) 첫 번째 문장에서 오타를 수정하기에 충분한 평판을 얻었습니다. 3) 이것에 관한 정보가 다른 곳에 존재한다는 것은 관련이 없습니다. 스택 오버플로는 지식 저장소가되는 것을 목표로하고 여기에서 정식으로 질문에 답변 합니다 .
ire_and_curses

2
DHCP가 브로드 캐스트를 사용한다고 언급하는 사람은 거의 없지만, 누구나 '답변'은 전달 및 재전송 보장에 관한 것이라고 생각합니다.
Heath Hunnicutt

1
미래에 이것을 읽는 다른 사람들을 위해 위에서 언급 한 Skullbox 사이트는 Google에 따라 MALWARE를 가지고 있습니다 (클릭하면 나를 멈추게했습니다). 나는 거기 가지 않는 것이 좋습니다.
Alan006

답변:


119

TCPIP 네트워크를 통한 연결 지향 스트림입니다. 전송 된 모든 패킷이 올바른 순서로 대상에 도달 할 수 있습니다. 이는 발신자에게 다시 전송 된 확인 응답 패킷과 자동 재전송을 사용하여 추가 지연을 유발하고보다 효율적이지 않은 전송을 의미 UDP합니다.

UDP비 연결 프로토콜입니다. 커뮤니케이션은 데이터 그램 중심입니다. 무결성은 단일 데이터 그램에서만 보장됩니다. 데이터 그램이 목적지에 도달하여 순서가 잘못되었거나 전혀 도착하지 않을 수 있습니다. TCPACK를 사용하기 때문에 보다 효율적 입니다. 일반적으로 실시간 통신에 사용되며, TCP연결 오버 헤드보다 적은 비율의 패킷 손실률이 바람직 합니다.

특정 상황 UDP에서는 브로드 캐스트 패킷 전송이 가능하기 때문에 사용됩니다. DHCP클라이언트 시스템이 여전히 IP주소를 수신하지 않았기 때문에 (이것은 DHCP협상 프로토콜 목적 임) 주소 자체 TCP없이 스트림 을 설정할 수있는 방법 이 없기 때문에 이는 프로토콜 과 같은 경우에 기본입니다 IP.


5
UDP가 사용되는 예는 비디오 및 오디오 전송에서 여기에 몇 개의 패킷이 손실되고 일반적으로 그다지 중요하지 않습니다 (프레임의 색상이 꺼져 있거나 초 나노초의 오디오가 잘 리거나 변경 될 수 있음) -인간에게는 눈에 띄지 않습니다). 물론 연결 상태가 실제로 좋지 않으면 너무 많은 패킷이 손실되어 비디오가 흐릿하거나 픽셀로 표시되고 오디오가 흐릿 해 지거나 많이 끊어 질 수 있습니다.
Niko Bellic

53

에서 Skullbox 기사 :

TCP (Transmission Control Protocol)는 인터넷에서 가장 일반적으로 사용되는 프로토콜입니다. TCP가 오류 수정 기능을 제공하기 때문입니다. TCP 프로토콜을 사용하면 "보장 된 배달"이 있습니다. 이것은 대부분 "흐름 제어"라고하는 방법 때문입니다. 흐름 제어는 데이터를 언제 다시 보내야하는지 결정하고 이전 패킷이 성공적으로 전송 될 때까지 데이터 흐름을 중지합니다. 이는 데이터 패킷이 전송되면 충돌이 발생할 수 있기 때문에 작동합니다. 이 경우 클라이언트는 전체 패킷이 완료되고 원본과 동일 할 때까지 서버에서 패킷을 다시 요청합니다.

UDP (User Datagram Protocol)는 인터넷에서 일반적으로 사용되는 프로토콜입니다. 그러나 UDP는 웹 페이지, 데이터베이스 정보 등과 같은 중요한 데이터를 보내는 데 사용되지 않습니다. UDP는 일반적으로 오디오 및 비디오 스트리밍에 사용됩니다. Windows Media 오디오 파일 (.WMA), Real Player (.RM) 등과 같은 스트리밍 미디어는 속도를 제공하므로 UDP를 사용합니다! UDP가 TCP보다 빠른 이유는 흐름 제어 또는 오류 수정 형식이 없기 때문입니다. 인터넷을 통해 전송 된 데이터는 충돌의 영향을받으며 오류가 발생합니다. UDP는 속도에만 관심이 있다는 것을 기억하십시오. 이것이 스트리밍 미디어가 고품질이 아닌 주된 이유입니다.

1) TCP는 연결 지향적이고 안정적이며 UDP는 연결이 적고 신뢰할 수 없습니다.

2) TCP는 UDP와 달리 네트워크 인터페이스 수준에서 더 많은 처리가 필요합니다.

3) TCP는 3 방향 핸드 셰이크, 혼잡 제어, 흐름 제어 및 기타 메커니즘을 사용하여 안정적인 전송을 보장합니다.

4) UDP는 패킷 지연보다 패킷 지연이 더 심각한 경우에 주로 사용됩니다.


1
+1 합리적으로 좋은 요약. 하지만 is the most commonly used protocol on the Internet문이 정말 논란의 여지가 있고 사용자가 정의하는 방법에 따라 달라집니다 most commonly used, protocol하고 the Internet. 예를 들어, 인터넷 프로토콜은 특정 왕관과 경쟁 할 가능성이 높습니다.
MattH

-1 : DHCP에 UDP가 사용되는 이유는 패킷 지연 또는 손실과 관련이 없습니다.
Heath Hunnicutt

2
일반 채널에서 많은 양의 데이터를 보낼 때 TCP가 종종 UDP보다 빠릅니다. UDP가 실시간 스트리밍 오디오 또는 비디오와 같은 용도로 사용되는 이유는 TCP 패킷이 누락되면 누락 된 데이터가 재전송되고 성공적으로 수신 될 때까지 수신 애플리케이션이 더 이상 아무것도 볼 수 없기 때문입니다. 많은 스트리밍 응용 프로그램에서 늦게 도착하는 데이터는 쓸모가 없으므로 재전송을 기다리는 동안 모든 것을 유지하는 것은 아무 소용이 없습니다.
supercat

TCP는 브로드 캐스트를 지원하지 않기 때문에 DHCP에 UDP가 사용됩니다. DHCP는 DHCP 서버의 IP 주소를 얻기 위해 브로드 캐스트 사용에 의존합니다. 참조 stackoverflow.com/questions/21266008/...
ScottSmudger

41

TCP는 두 위치 사이에서 패키지의 전용 예약 된 UPS / FedEx 픽업 / 드롭 오프로 생각하지만 UDP는 우편함에 엽서를 던지는 것과 같습니다.

UPS / FedEx는 귀하가 발송 한 패키지가 도착하고 제 시간에 도착하도록 최선을 다할 것입니다. 우편 카드를 사용하면 도착하면 운이 좋으며 순서가 늦거나 늦게 도착할 수 있습니다 (휴가를 마치고 집으로 돌아온 후 누군가에게서 엽서를 몇 번 받았습니까?)

TCP는 가능한 한 보장 된 전달 프로토콜에 가깝지만 UDP는 "최선의 노력"입니다.


1
충분한 대답. TCP 스트림에서 대상이 패킷을 확인하고 보낸 사람이 손상된 패킷 / 누락 된 패킷을 재전송한다고 덧붙입니다. UDP에서는 패킷이 전송되고 대상은 임의의 순서로 패킷을 수신하며 수신을 승인하지 않습니다.
Erik Nedwidek

2
QoS에 더 적합한 오해의 소지가있는 부분
MattH

11
나는 비유를 많이 좋아하지만이 대답이 약간 잘못 나타내는 것은 속도입니다. 실제로 UDP가 오버 헤드가 적기 때문에 TCP가 더 빠르다고 들립니다.
iliketocode

22

DNS와 DHCP에 UDP가 사용되는 이유 :

DNS-TCP에는 클라이언트보다 서버에서 더 많은 리소스 (연결을 수신 대기)가 필요합니다. 특히, TCP 연결이 닫히면 서버는 TIME_WAIT_2로 알려진 상태에서 2 분 동안 연결 세부 사항 (메모리에 보유)을 기억해야합니다. 이것은 현재 연결의 일부로 해석되는 선행 연결에서 잘못 반복 된 패킷을 방지하는 기능입니다. TIME_WAIT_2를 유지 관리하면 서버에서 커널 메모리가 사용됩니다. DNS 요청은 작으며 많은 다른 클라이언트로부터 자주 도착합니다. 이 사용 패턴은 클라이언트에 비해 서버의로드를 악화시킵니다. 연결이없고 클라이언트 나 서버에서 유지 보수 할 상태가없는 UDP를 사용하면이 문제를 해결할 수 있다고 믿었습니다.

DHCP-DHCP는 BOOTP의 확장입니다. BOOTP는 클라이언트가 부팅되는 동안 클라이언트 컴퓨터가 서버에서 구성 정보를 가져 오는 데 사용하는 프로토콜입니다. 서버를 찾기 위해 BOOTP (또는 DHCP) 서버를 요청하는 브로드 캐스트가 전송됩니다. 브로드 캐스트는 UDP와 같은 비 연결 프로토콜을 통해서만 보낼 수 있습니다. 따라서 BOOTP는 서버 찾기 브로드 캐스트에 하나 이상의 UDP 패킷이 필요했습니다. 또한 클라이언트가 부팅하는 동안 BOOTP가 실행 중이므로 클라이언트가 전체 TCP / IP 스택을로드하고 실행하지 않는 기간이므로 UDP는 클라이언트가 처리 할 준비가 된 유일한 프로토콜 일 수 있습니다. 시각. 마지막으로 일부 DHCP / BOOTP 클라이언트에는 UDP 만 내장되어 있습니다. 예를 들어 일부 IP 온도 조절기는 UDP 만 구현합니다.

다른 사람들이 언급했듯이 UDP는 미디어, 특히 오디오 스트리밍에 유용합니다. 단순히 지연된 패킷을 삭제하면 네트워크 지연 상태에서 대화가 더 잘 들립니다. UDP를 사용하여이를 수행 할 수 있지만 TCP를 사용하면 지연 시간 동안 얻을 수있는 모든 것이 일시 중지 된 다음 오디오가 항상 일시 중지 된만큼 지연됩니다. 양방향 전화 스타일 대화의 경우 허용되지 않습니다.


17

차이점 중 하나가 짧습니다.

UDP : 메시지를 보내고 목적지에 도달하면 되돌아 보지 않음, 비 연결 프로토콜
TCP : 메시지를 보내고 목적지에 도달하도록 보장, 연결 지향 프로토콜


9

TCP는 실제 데이터 전송이 이루어지기 전에 연결을 설정하지만 UDP는 연결하지 않습니다. 이런 식으로 UDP는 더 빠른 전달을 제공 할 수 있습니다. 따라서 DNS, 시간 서버 액세스와 같은 응용 프로그램은 UDP를 사용합니다.

UDP와 달리 TCP는 혼잡 제어를 사용합니다. 네트워크로드에 응답합니다. UDP와 달리 네트워크 혼잡이 임박하면 속도가 느려집니다. 따라서 일정한 처리량을 선호하는 멀티미디어와 같은 응용 프로그램은 UDP가 될 수 있습니다.

또한 UDP는 신뢰할 수 없으며 패킷 손실에 반응하지 않습니다. 따라서 멀티미디어 전송과 같은 손실에 민감한 애플리케이션은 UDP를 선호합니다. 그러나 TCP는 신뢰할 수있는 프로토콜이므로 웹 전송, 전자 메일, 파일 다운로드와 같은 안정성이 필요한 응용 프로그램은 TCP를 선호합니다.

게다가 오늘날 인터넷에서 UDP는 중간 상자로 인해 TCP만큼 환영받지 않습니다. skype와 같은 일부 응용 프로그램은 UDP 연결이 차단 된 것으로 가정하면 TCP로 떨어집니다.



2

Tcp와 Udp 프로토콜의 짧고 간단한 차이점 :

1) Tcp-전송 제어 프로토콜 및 Udp-사용자 데이터 그램 프로토콜.

2) Tcp는 신뢰할 수있는 프로토콜이며 Udp는 신뢰할 수없는 프로토콜입니다.

3) Tcp는 스트림 지향이며 Udp는 메시지 지향 프로토콜입니다.

4) Tcp는 Udp보다 느립니다.


1

이 실로 들어가서 이런 식으로 표현해 보도록하겠습니다.

TCP

3 방향 핸드 셰이크

밥 : 이봐, 에이미, 나는 당신에게 비밀을 말하고 싶다
에이미 : 알았어, 준비 됐어
밥 : 알았어

통신
밥 : 'I'이 첫 번째 문자입니다
에이미 : 나에게 두 번째 편지 보내 주시기 바랍니다받은 첫 번째 편지
: 밥 '이 두 번째 편지는
에이미 : 나에게 보내 주시기 바랍니다 세 번째 글자 수신 된 제 2 편지
밥 : 'L ', 이것은 세 번째 문자입니다
잠시 후
Bob : 'L ',이 세 번째 문자
Amy : 세 번째 문자를 받았습니다. 네 번째 문자
Bob을 보내주십시오 : 'O ',이 네 번째 문자
Amy : ...
... ...

4 방향 핸드 셰이크
Bob : 내 비밀이 드러났습니다. 이제 내 마음을 알고 있습니다.
에이미 : 알겠습니다. 할 말이 없다.
밥 : 알겠습니다.

UDP

밥 : I LOVE U
에이미 수신 : OVI LE

TCP는 메시지 순서가 보장되어 UDP보다 더 안정적이므로 UDP가 더 가볍고 효율적인 이유는 의심의 여지가 없습니다.


0

유추에 의한 간단한 설명

TCP는 이렇습니다.

당신이 화성에 펜팔을 가지고 있다고 상상해보십시오 (인터넷에서 좋은 시절에 편지로 다시 통신했습니다).

매우 효과적인 사람들의 7 가지 습관을 펜팔에게 보내야합니다. 그래서 당신은 7 개의 별도의 편지로 그것을 보내기로 결정했습니다.

  1. 편지 1-사전 대응
  2. 편지 2-끝을 염두에두고 시작하십시오 ...

기타

등 7 편-톱을 연마하십시오

요구 사항 :

펜팔이 모든 편지 를 순서대로 받고 완벽하게 도착하도록해야 합니다 . 펜 지불이 편지 1 이전에 편지 7을 받으면 좋지 않습니다. 펜팔이 편지 3을 제외한 모든 편지를 받으면 좋지 않습니다.

요구 사항을 충족시키는 방법은 다음과 같습니다.

  • 확인 편지 : 따라서 펜팔은 "나는 편지 1을 받았다"는 확인 편지를 보냅니다. 그렇게하면 펜팔이 펜을 받았다는 것을 알게됩니다. 편지가 도착하지 않거나 순서가 맞지 않으면 편지를 중지 한 후 돌아가서 해당 편지와 모든 후속 편지를 다시 보내야합니다.
  • 흐름 제어 : Xmas 시대에는 펜 친구가 많은 메일을받을 것이라는 것을 알고 있으므로 펜 친구를 압도하고 싶지 않기 때문에 속도가 느려집니다. (펜팔은 펜팔의 편지함에있는 읽지 않은 메시지 수에 대한 지속적인 업데이트를 보냅니다. 펜팔이받은 편지함이 가득 차서 폭발 할 것이라고 말하면 편지를 보내는 속도가 느려집니다. 읽을 수 없습니다.
  • 완벽한 도착. 때로는 우편으로 편지를 보낼 때 찢어 지거나 달팽이가 절반을 먹을 수 있습니다. 모든 서신이 완벽한 상태로 도착했다는 것을 어떻게 알 수 있습니까? 글쎄, 당신의 펜팔은 당신에게 그들이 전체 편지를 가지고 있는지와 그것이 당신이 보낸 편지인지 정확히 확인할 수있는 메커니즘을 제공 할 것입니다. (예 : 단어 수 등을 통해). 기본 비유.

0

TLDR;

  • TCP-스트림 지향, 연결 필요, 신뢰성, 느림
  • UDP-메시지 지향, 비 연결, 신뢰할 수없는, 빠른

시작하기 전에 무언가의 모든 단점은 장점의 연속 이라는 것을 기억하십시오 . 만병 통치약이없는 직업에 적합한 도구 만 있습니다. TCP / UDP는 수십 년 동안 그리고 그 이유 때문에 공존합니다.

TCP

그것은 매우 신뢰할 수 있도록 설계되었으며 그 일을 잘 수행합니다. 신뢰할 수없는 IP 프로토콜을 통한 안정적인 전송을 제공하는 어려운 작업을 수행하기 때문에 매우 복잡합니다.

모든 TCP의 복잡한 논리가 네트워크 스택에 캡슐화되어 있기 때문에 응용 프로그램 계층에서 오류가 발생하기 쉬운 많은 저수준 작업을 수행하지 않아도됩니다.

TCP를 통해 데이터를 보낼 때, 패킷으로 나누어 져 스택으로 전달되어 유선으로 전송되는 발신자의 소켓에 바이트 스트림을 씁니다. 수신자 측에서 패킷은 연속적인 바이트 스트림으로 다시 어셈블됩니다.

이 멋진 추상화를 유지하려면 복잡성과 성능 측면에서 비용이 듭니다. 바이트 스트림에서 첫 번째 패킷이 손실되면 수신자는 이미 도착한 패킷이라도 후속 패킷의 처리를 지연시킵니다.

또한 TCP는 신뢰할 수 있도록 다음을 구현합니다.

  • TCP에는 3 개의 왕복 ( "유명한"3 방향 핸드 셰이크)이 필요한 연결이 설정되어 있어야합니다.
  • TCP는 수신기가 데이터를 유지할 수 있도록 연결을 설정 한 후 전송 속도를 점차적으로 증가시킬 때 "느린 시작"이라는 기능을 가지고 있습니다.
  • 전송 된 모든 패킷을 확인해야합니다. 그렇지 않으면 발신자가 더 많은 데이터 전송을 중지합니다.
  • 그리고 계속해서 ...

TCP는 지연을 예측할 수 있고 패킷 손실이 그리 일반적이지 않은 유선 네트워크를 위해 설계된 반면이 모든 것은 불안정하고 느린 무선 네트워크에서 악화됩니다. 또한 많은 사람들이 이미 언급했듯이 TCP는 전혀 작동하지 않습니다 (DHCP). 그러나 관련이있는 경우 TCP는 여전히 예외적으로 잘 작동합니다.

메일 비유를 사용하면 TCP 세션은 비서를 메일로 나누고 엉터리 메일 서비스를 통해 게시자에게 보내는 이야기를 비서에게 전달하는 것과 유사합니다. 다른 쪽 비서관은 우편물을 한 장의 텍스트로 조립합니다. 일부 메일은 손실되고 일부는 손상되므로 안정적인 전달을 위해서는 매우 복잡한 절차가 필요하며 10 페이지짜리 스토리가 게시자에게 도달하는 데 시간이 오래 걸릴 수 있습니다.

UDP

반면 UDP는 메시지 지향적이므로 수신자는 소켓에 메시지 (패킷)를 쓴 다음 분할 / 조립없이 그대로 수신자에게 전송됩니다.

TCP에 비해 사양이 매우 간단합니다. 기본적으로 수신자가 패킷 손상을 감지 할 수 있도록 패킷에 체크섬을 추가하면됩니다. 다른 모든 것은 소프트웨어 개발자 인 귀하가 구현해야합니다. 이제 방대한 TCP 사양을 읽고 그 일부를 다시 구현해보십시오.

어떤 사람들은 HTTP / 3가 UDP 기반 프로토콜 인 QUIC를 사용한다는 점에서 이런 식으로 가서 매우 괜찮은 결과를 얻었습니다. 그러나 이것은 예외입니다. UDP의 일반적인 응용 프로그램은 TCP에서 발생하는 지연에 비해 패킷 손실이 중요하지 않은 Skype, Zoom 또는 Google 행 아웃과 같은 오디오 / 비디오 스트리밍 및 회의 응용 프로그램입니다.

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