UDP ve TCP arasındaki fark nedir?


46

Yönlendiricimin bağlantı noktası iletmeyi ayarlarken seçebileceğim iki protokolü (ve "her ikisi de" seçeneği) var: UDP ve TCP. Bu iki protokol arasındaki fark nedir ve port yönlendirmede ne zaman birini seçmelisiniz?

Yanıtlar:


51

TCP acks tarafından desteklenir ve verilerin gittiği yere ulaştığından emin olmak için yeniden dener. UDP bağlantısız ve "ateş ve unut". UDP çoğunlukla akış tipi uygulamalar için kullanılır; burada bazı verileri kaybederseniz tekrar göndermeyi denemenize gerek kalmaz.

Hangisini kullanacağınız uygulamaya bağlıdır. Örneğin, bir web sunucusu TCP kullanır.


3
Bu mantıklı - bir video akışı yapıyorsanız daha sonra eksik bir kareyi yeniden göndermenin anlamı yoktur, çünkü zaten o noktayı geçtiniz. Thanks
Guy

15
+1. Sadece eklemek gerekirse, daha derinlemesine bir anlayış arayan herkes konuyla ilgili birçok mükemmel kitabı W. Richard Stevens'tan okumalıdır. "TCP / IP Illustrated, v1" ve "UNIX Ağ Programlama" mükemmel dersler ve referanslar olarak işlev görür.
Murali Suriar

73

Burada iyi bir özet bulabilirsiniz:

UDP ve TCP internet protokolleri arasındaki fark nedir?

Hem TCP hem de UDP taşıma katmanı TCP / IP modelinde çalışır, ancak çok farklı kullanımları vardır.

En önemli farklılıklar:

  • Güvenilirlik :
    TCP: bağlantı yönelimli
    UDP: bağlantısız
  • Sıralı :
    TCP: mesaj makbuz
    sırası garanti edilir UDP: sipariş garanti edilmez
  • Protokol ağırlığı :
    TCP: bağlantı / sipariş ek yükü nedeniyle ağır
    UDP: hafif, çok az ek yük
  • Paketler :
    TCP: streaming, data bir paketin bittiği ve diğerinin başladığı yeri ayırt eden hiçbir şey olmadan bir "stream" olarak okunur. Her okuma çağrısı için birden fazla paket olabilir.
    UDP: datagramlar, bir okuma çağrısı başına bir paket.

Çerçeve yapısı

Veriler ağ üzerinden gönderildiğinde, "çerçeveler" olarak adlandırılması gerekir. Kullanılan protokole ve topolojiye bağlı olarak çeşitli kapsülleme yöntemleri vardır. Aşağıdaki resimler, TCP ve UDP çerçeve yapılarının nasıl değiştiğini göstermektedir.

Bu TCP çerçeve yapısıdır:

TCP çerçevesi

Bu bir UDP çerçeve yapısı, çok daha basit:

UDP çerçevesi

TCP kullanan tipik protokoller HTTP, FTP ve SMTP'dir. UDP kullanan protokollere örnek DNS ve DHCP'dir.


@ splattne - mesaj makbuzu sipariş iletimi değil garantilidir
Alnitak

@Alnitak: Tabii ki haklısın. Makbuz iletim siparişinde garantili demek istedim. Bunu netleştirmek için güncelleme yapacağım.
splattne

43

Ve CEO seviye açıklaması:

UDP, kağıdınızı genel çöp kutusuna attığınız zamandır.

TCP özlüyorsa, aynı kağıdın tam kopyalarını tekrar tekrar bölmeye düşene kadar atarsınız. Kağıt israfı olacaktı, yeniden gönderilen TCP paketleri bile ağ veya sistem kaynaklarının israfına yol açacaktı.


1
Bu çok iyi bir "CEO seviyesi" açıklamasıdır - Bayıldım!
Keithius

Ben bir CEO değilim ama neden bunu bana daha önce söylemedi! : p
Nicolas Dorier

Bu harika!
shylent

7

TCP ve UDP, IP üzerinden çalışan protokollerdir. TCP teslimi garantilidir ve UDP yoktur. Hangi hizmeti yönlendirmeye çalıştığınıza bağlı olarak, bağlantı noktası iletme için birini veya diğerini seçersiniz. HTTP, örneğin TCP. İletmeye çalıştığınız servisin hangi protokol olduğunu bilmiyorsanız, neredeyse kesinlikle TCP'dir.


3

Sorunuzun diğer bölümünü yanıtlamak için, uygulamanızın kullandığını iletmek zorundasınız. HTTP trafiğini iletmek için TCP'yi seçin. TFTP trafiğini iletmek için UDP'yi seçin. p2p programları çoğunlukla hem tcp hem de udp kullanır, bu yüzden ikisini de iletin.

Tüm protokol ve kullandığınız programa bağlıdır.


Tamamen haklı değilsin. dns ayrıca çok sık değil ama yine de tcp / 53 kullanır [örn. bölge transferi için].
pQd

Evet. Ayrıca, normal dns sorgularını tcp üzerinden göndermek tamamen geçerlidir. Örneği sadece UDP kullanan TFTP olarak değiştirdim.
hayalci

2

Şimdiye kadar belirtilen farklılıkların yanı sıra TCP de sağlar

akış kontrolü. Bir pencere mekanizması kullanarak, alıcı gönderenden daha fazla veri göndermek için izin beklemek zorunda kalmadan göndericiden almak istediği sayı grubunu (bayt) sınırlar. Konuşma ilerledikçe pencerenin boyutu alıcı tarafından değiştirilebilir. Bu, bir alıcının bir göndericiden gelen veri hızını 'azaltmasına' izin verir: UDP buna izin vermez ve bir alıcının yapabileceği tüm vardıklarında araştıramayacağı veya işleyemeyeceği verileri çöpe atmaktır.

bitişik olmayan onaylama gibi bazı daha teknik olanaklar (gönderenin, eksik çerçeveden ziyade yalnızca eksik bir çerçeveyi ve daha sonra alıcının olağan şekilde kabul edemediğini ancak sonradan alıp kabul edemeyenleri) yeniden göndermesine izin vermek için seçici onaylar kullanır), uyarlamalı yeniden iletme (bir onay alınmadığında iletilen çerçevenin ne kadar zamanda yeniden gönderileceğine karar veren zamanlayıcıyı ayarlama). Bunlar UDP ile ilgili değildir, ancak aynı yük taşıma hacmi için ağ yükünü büyük ölçüde artırmadan TCP'nin UDP üzerinden ek hizmetler sağlamasına yardımcı olur.


2

TCP, verilerin alıcıya verilmesini sağlamak için çaba gösterir; UDP yapmaz.


Yanlış. IP protokolü güvenilir değildir ve veri kaybı meydana gelebilir. TCP, gönderilen verilerin (küçük parçalara bölünmüş ve IP paketleriyle gönderilen) alıcıya ulaşmasını sağlamak için çaba gösterir (gerekirse küçük parçaları tekrar göndererek).
Anonymous

@ Anonim - Temelde yukarıda söylediklerimi yeniden düzenlediniz. Nasıl hatalıyım
J. Polfer

Sanırım, hem IP'nin hem de UDP'nin ve TCP'nin kullandığı temel iletişim protokolünün temel çerçevesi (yığın) olduğunu göreceksiniz. Faydalı verileri internet üzerinden SADECE IP kullanarak bildiğim kadarıyla iletişim kuramazsınız - bildiğim kadarıyla - temel ping'ler vb. IP üzerinde bir protokol kullanır (diğeri ana; ICMP).
Lee B,

1

Birini diğerine açıklayan tüm cevapları boşver. Portföy oluşturma amaçları için kurallar oldukça basittir: kullandığınız protokol / uygulama için dokümanlar UDP kullanmıyorsa, TCP'yi seçmeniz gerekir. Genellikle UDP kullananlar akışla veya güvenilirlikten daha hafif protokolleri / hızı destekleyen çok basit şeylerle (özellikle DNS ve NTP) ilgilidir. TCP ve UDP'nin yanı sıra başka protokollerin de olduğunu unutmayın - ICMP, tünel protokolleri, vb.


1

Bir protokol ne kadar iyi bilinirse, yoldaki yönlendiriciler o kadar fazla protokolle etkileşime girer. Tcp paketleri gönderin ve alınan paketlerin oldukça karışık olması büyük bir olasılık. UDP genellikle birbirine karışmaz ve diğer 254 IP ödeme protokolü genellikle dokunulmazdır.


0

Kullanıcı Datagram Protokolü (UDP)

Internet Protocol Suite'in temel protokollerinin bir parçasıdır. Ağa bağlı bilgisayarlardaki programlar bazen datagram olarak adlandırılan kısa mesajlar gönderebilir. UDP herhangi bir güvenilirliği garanti etmemektedir (datagramın arızalı olması, çoğaltılması veya herhangi bir bildirimde bulunmaksızın eksik olması durumunda). Tüm paketlerin gerçekten teslim edilip edilmediğinin kontrol edilmemesi gerçeği UDP, garantili teslim edilmesi gerekmeyen uygulamalar için daha hızlı ve daha verimli olduğunu kanıtlar. UDP bu gibi durumlarda kullanımlarını bulur:

Zamana duyarlı uygulamalar. Gecikmeli paketlerden kaynaklanan sorunlardan kaçınılır.

Ayrıca çok sayıda müşteriden gelen küçük sorguları cevaplayan sunucular için de kullanışlıdır. UDP, paket yayınını (yerel ağdaki herkese iletir) ve çok noktaya yayını (tüm abonelere iletir) destekler.

Şanzıman Kontrol Protokolü (TCP)

Internet Protocol Suite'deki bu protokolün önemi nedeniyle genellikle TCP / IP olarak adlandırılır. TCP yalnızca iki uç sistemle (örneğin web tarayıcısı ve web sunucusu arasında) ilgili olarak daha yüksek bir düzeyde çalışır. TCP, bir veri akışının bir bilgisayardaki bir programdan başka bir bilgisayardaki başka bir programa güvenli ve sıralı olarak teslim edilmesini sağlar. TCP grup e-posta desteği ve dosya aktarımı ve Web uygulamalarının ortak kullanımları. Yönetim görevleri arasında, TCP mesaj boyutunu, mesajların değiş tokuş edilme oranını ve ağ trafiği sıkışıklığını kontrol eder. IP gelince, bilgisayardan bilgisayara düşük seviye iletimleri Internet üzerinden aktarılan bir mesaj olarak ele alır.


0

Her ikisi de İnternet Protokolü veya IP denilen bir şeyin üzerine kurulmuş ağ protokolleridir. İnternet Protokolü, İnternet’in ana protokolüdür ve örneğin web’e göz atmamızı sağlayan şeydir. Bu yüzden bu protokolleri TCP / IP veya UDP / IP olarak sık sık göreceksiniz. Onlar aslında internetin temel protokolleridir.

Her iki durumda da, verileriniz paket adı verilen parçalara bölünür. TCP, bu paketlerin hedeflerine ulaşmasını ve doğru sırada ve hatasız olmasını sağlar.

Öte yandan UDP, bir veri paketinin ulaşacağından bile emin olmayacak. Sadece ulaşırsa hatasız olmasını sağlayacaktır.

Genellikle, diğer protokoller TCP ve UDP'nin üzerinde çalışır ve işletim sistemi içinde değil bir uygulama içinde çalıştıkları için uygulama protokolleri olarak bilinir. Web tarayıcınız, TCP protokolünü kullanacak HTTP protokolünü kullanır.

Etki alanı adı aramaları veya DNS sorguları genellikle UDP'yi kullanır, ancak TCP'yi de kullanabilir. Bir dizi akış servisi başka bir uygulama protokolünün altında UDP kullanır.

Umarım bu sorunuzu daha basit ingilizce olarak cevaplar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.