TCP와 UDP의 차이점은 무엇입니까?
시간이 중요하지 않은 응용 프로그램의 경우 TCP가 사용되고 UDP는 빠른 데이터 전송이 필요한 게임이나 응용 프로그램에 사용됩니다. TCP가 HTTP, HTTP, FTP, SMTP 및 Telnet에 사용된다는 것을 알고 있습니다. DNS와 DHCP에 UDP가 사용된다는 것을 알고 있습니다.
그런데 왜? TCP와 UDP의 특징은 각각의 사용 사례에 유용합니까?
TCP와 UDP의 차이점은 무엇입니까?
시간이 중요하지 않은 응용 프로그램의 경우 TCP가 사용되고 UDP는 빠른 데이터 전송이 필요한 게임이나 응용 프로그램에 사용됩니다. TCP가 HTTP, HTTP, FTP, SMTP 및 Telnet에 사용된다는 것을 알고 있습니다. DNS와 DHCP에 UDP가 사용된다는 것을 알고 있습니다.
그런데 왜? TCP와 UDP의 특징은 각각의 사용 사례에 유용합니까?
답변:
TCP
IP 네트워크를 통한 연결 지향 스트림입니다. 전송 된 모든 패킷이 올바른 순서로 대상에 도달 할 수 있습니다. 이는 발신자에게 다시 전송 된 확인 응답 패킷과 자동 재전송을 사용하여 추가 지연을 유발하고보다 효율적이지 않은 전송을 의미 UDP
합니다.
UDP
비 연결 프로토콜입니다. 커뮤니케이션은 데이터 그램 중심입니다. 무결성은 단일 데이터 그램에서만 보장됩니다. 데이터 그램이 목적지에 도달하여 순서가 잘못되었거나 전혀 도착하지 않을 수 있습니다. TCP
비 ACK를 사용하기 때문에 보다 효율적 입니다. 일반적으로 실시간 통신에 사용되며, TCP
연결 오버 헤드보다 적은 비율의 패킷 손실률이 바람직 합니다.
특정 상황 UDP
에서는 브로드 캐스트 패킷 전송이 가능하기 때문에 사용됩니다. DHCP
클라이언트 시스템이 여전히 IP
주소를 수신하지 않았기 때문에 (이것은 DHCP
협상 프로토콜 목적 임) 주소 자체 TCP
없이 스트림 을 설정할 수있는 방법 이 없기 때문에 이는 프로토콜 과 같은 경우에 기본입니다 IP
.
TCP (Transmission Control Protocol)는 인터넷에서 가장 일반적으로 사용되는 프로토콜입니다. TCP가 오류 수정 기능을 제공하기 때문입니다. TCP 프로토콜을 사용하면 "보장 된 배달"이 있습니다. 이것은 대부분 "흐름 제어"라고하는 방법 때문입니다. 흐름 제어는 데이터를 언제 다시 보내야하는지 결정하고 이전 패킷이 성공적으로 전송 될 때까지 데이터 흐름을 중지합니다. 이는 데이터 패킷이 전송되면 충돌이 발생할 수 있기 때문에 작동합니다. 이 경우 클라이언트는 전체 패킷이 완료되고 원본과 동일 할 때까지 서버에서 패킷을 다시 요청합니다.1) TCP는 연결 지향적이고 안정적이며 UDP는 연결이 적고 신뢰할 수 없습니다.UDP (User Datagram Protocol)는 인터넷에서 일반적으로 사용되는 프로토콜입니다. 그러나 UDP는 웹 페이지, 데이터베이스 정보 등과 같은 중요한 데이터를 보내는 데 사용되지 않습니다. UDP는 일반적으로 오디오 및 비디오 스트리밍에 사용됩니다. Windows Media 오디오 파일 (.WMA), Real Player (.RM) 등과 같은 스트리밍 미디어는 속도를 제공하므로 UDP를 사용합니다! UDP가 TCP보다 빠른 이유는 흐름 제어 또는 오류 수정 형식이 없기 때문입니다. 인터넷을 통해 전송 된 데이터는 충돌의 영향을받으며 오류가 발생합니다. UDP는 속도에만 관심이 있다는 것을 기억하십시오. 이것이 스트리밍 미디어가 고품질이 아닌 주된 이유입니다.
2) TCP는 UDP와 달리 네트워크 인터페이스 수준에서 더 많은 처리가 필요합니다.
3) TCP는 3 방향 핸드 셰이크, 혼잡 제어, 흐름 제어 및 기타 메커니즘을 사용하여 안정적인 전송을 보장합니다.
4) UDP는 패킷 지연보다 패킷 지연이 더 심각한 경우에 주로 사용됩니다.
is the most commonly used protocol on the Internet
문이 정말 논란의 여지가 있고 사용자가 정의하는 방법에 따라 달라집니다 most commonly used
, protocol
하고 the Internet
. 예를 들어, 인터넷 프로토콜은 특정 왕관과 경쟁 할 가능성이 높습니다.
TCP는 두 위치 사이에서 패키지의 전용 예약 된 UPS / FedEx 픽업 / 드롭 오프로 생각하지만 UDP는 우편함에 엽서를 던지는 것과 같습니다.
UPS / FedEx는 귀하가 발송 한 패키지가 도착하고 제 시간에 도착하도록 최선을 다할 것입니다. 우편 카드를 사용하면 도착하면 운이 좋으며 순서가 늦거나 늦게 도착할 수 있습니다 (휴가를 마치고 집으로 돌아온 후 누군가에게서 엽서를 몇 번 받았습니까?)
TCP는 가능한 한 보장 된 전달 프로토콜에 가깝지만 UDP는 "최선의 노력"입니다.
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를 사용하면 지연 시간 동안 얻을 수있는 모든 것이 일시 중지 된 다음 오디오가 항상 일시 중지 된만큼 지연됩니다. 양방향 전화 스타일 대화의 경우 허용되지 않습니다.
TCP는 실제 데이터 전송이 이루어지기 전에 연결을 설정하지만 UDP는 연결하지 않습니다. 이런 식으로 UDP는 더 빠른 전달을 제공 할 수 있습니다. 따라서 DNS, 시간 서버 액세스와 같은 응용 프로그램은 UDP를 사용합니다.
UDP와 달리 TCP는 혼잡 제어를 사용합니다. 네트워크로드에 응답합니다. UDP와 달리 네트워크 혼잡이 임박하면 속도가 느려집니다. 따라서 일정한 처리량을 선호하는 멀티미디어와 같은 응용 프로그램은 UDP가 될 수 있습니다.
또한 UDP는 신뢰할 수 없으며 패킷 손실에 반응하지 않습니다. 따라서 멀티미디어 전송과 같은 손실에 민감한 애플리케이션은 UDP를 선호합니다. 그러나 TCP는 신뢰할 수있는 프로토콜이므로 웹 전송, 전자 메일, 파일 다운로드와 같은 안정성이 필요한 응용 프로그램은 TCP를 선호합니다.
게다가 오늘날 인터넷에서 UDP는 중간 상자로 인해 TCP만큼 환영받지 않습니다. skype와 같은 일부 응용 프로그램은 UDP 연결이 차단 된 것으로 가정하면 TCP로 떨어집니다.
이 실로 들어가서 이런 식으로 표현해 보도록하겠습니다.
3 방향 핸드 셰이크
밥 : 이봐, 에이미, 나는 당신에게 비밀을 말하고 싶다
에이미 : 알았어, 준비 됐어
밥 : 알았어
통신
밥 : 'I'이 첫 번째 문자입니다
에이미 : 나에게 두 번째 편지 보내 주시기 바랍니다받은 첫 번째 편지
: 밥 '이 두 번째 편지는
에이미 : 나에게 보내 주시기 바랍니다 세 번째 글자 수신 된 제 2 편지
밥 : 'L ', 이것은 세 번째 문자입니다
잠시 후
Bob : 'L ',이 세 번째 문자
Amy : 세 번째 문자를 받았습니다. 네 번째 문자
Bob을 보내주십시오 : 'O ',이 네 번째 문자
Amy : ...
... ...
4 방향 핸드 셰이크
Bob : 내 비밀이 드러났습니다. 이제 내 마음을 알고 있습니다.
에이미 : 알겠습니다. 할 말이 없다.
밥 : 알겠습니다.
밥 : I LOVE U
에이미 수신 : OVI LE
TCP는 메시지 순서가 보장되어 UDP보다 더 안정적이므로 UDP가 더 가볍고 효율적인 이유는 의심의 여지가 없습니다.
TCP는 이렇습니다.
당신이 화성에 펜팔을 가지고 있다고 상상해보십시오 (인터넷에서 좋은 시절에 편지로 다시 통신했습니다).
매우 효과적인 사람들의 7 가지 습관을 펜팔에게 보내야합니다. 그래서 당신은 7 개의 별도의 편지로 그것을 보내기로 결정했습니다.
기타
등 7 편-톱을 연마하십시오
펜팔이 모든 편지 를 순서대로 받고 완벽하게 도착하도록해야 합니다 . 펜 지불이 편지 1 이전에 편지 7을 받으면 좋지 않습니다. 펜팔이 편지 3을 제외한 모든 편지를 받으면 좋지 않습니다.
요구 사항을 충족시키는 방법은 다음과 같습니다.
TLDR;
시작하기 전에 무언가의 모든 단점은 장점의 연속 이라는 것을 기억하십시오 . 만병 통치약이없는 직업에 적합한 도구 만 있습니다. TCP / UDP는 수십 년 동안 그리고 그 이유 때문에 공존합니다.
TCP
그것은 매우 신뢰할 수 있도록 설계되었으며 그 일을 잘 수행합니다. 신뢰할 수없는 IP 프로토콜을 통한 안정적인 전송을 제공하는 어려운 작업을 수행하기 때문에 매우 복잡합니다.
모든 TCP의 복잡한 논리가 네트워크 스택에 캡슐화되어 있기 때문에 응용 프로그램 계층에서 오류가 발생하기 쉬운 많은 저수준 작업을 수행하지 않아도됩니다.
TCP를 통해 데이터를 보낼 때, 패킷으로 나누어 져 스택으로 전달되어 유선으로 전송되는 발신자의 소켓에 바이트 스트림을 씁니다. 수신자 측에서 패킷은 연속적인 바이트 스트림으로 다시 어셈블됩니다.
이 멋진 추상화를 유지하려면 복잡성과 성능 측면에서 비용이 듭니다. 바이트 스트림에서 첫 번째 패킷이 손실되면 수신자는 이미 도착한 패킷이라도 후속 패킷의 처리를 지연시킵니다.
또한 TCP는 신뢰할 수 있도록 다음을 구현합니다.
TCP는 지연을 예측할 수 있고 패킷 손실이 그리 일반적이지 않은 유선 네트워크를 위해 설계된 반면이 모든 것은 불안정하고 느린 무선 네트워크에서 악화됩니다. 또한 많은 사람들이 이미 언급했듯이 TCP는 전혀 작동하지 않습니다 (DHCP). 그러나 관련이있는 경우 TCP는 여전히 예외적으로 잘 작동합니다.
메일 비유를 사용하면 TCP 세션은 비서를 메일로 나누고 엉터리 메일 서비스를 통해 게시자에게 보내는 이야기를 비서에게 전달하는 것과 유사합니다. 다른 쪽 비서관은 우편물을 한 장의 텍스트로 조립합니다. 일부 메일은 손실되고 일부는 손상되므로 안정적인 전달을 위해서는 매우 복잡한 절차가 필요하며 10 페이지짜리 스토리가 게시자에게 도달하는 데 시간이 오래 걸릴 수 있습니다.
UDP
반면 UDP는 메시지 지향적이므로 수신자는 소켓에 메시지 (패킷)를 쓴 다음 분할 / 조립없이 그대로 수신자에게 전송됩니다.
TCP에 비해 사양이 매우 간단합니다. 기본적으로 수신자가 패킷 손상을 감지 할 수 있도록 패킷에 체크섬을 추가하면됩니다. 다른 모든 것은 소프트웨어 개발자 인 귀하가 구현해야합니다. 이제 방대한 TCP 사양을 읽고 그 일부를 다시 구현해보십시오.
어떤 사람들은 HTTP / 3가 UDP 기반 프로토콜 인 QUIC를 사용한다는 점에서 이런 식으로 가서 매우 괜찮은 결과를 얻었습니다. 그러나 이것은 예외입니다. UDP의 일반적인 응용 프로그램은 TCP에서 발생하는 지연에 비해 패킷 손실이 중요하지 않은 Skype, Zoom 또는 Google 행 아웃과 같은 오디오 / 비디오 스트리밍 및 회의 응용 프로그램입니다.