Jason: Bu derste,
TCP, UDP dahil olmak üzere IP protokol
türlerini ve bağlantısız ve bağlantı
yönelimli yöntemler kavramlarını
tartışacağız.
Şimdi, TCP nedir?
TCP bir İletim Kontrol Protokolüdür.
Bağlantı odaklı bir protokoldür, bu da
segmentleri ağımız boyunca taşımanın
güvenilir bir yolu olduğu anlamına gelir.
Şimdi, bir segment düşürülürse,
protokol aslında her seferinde onay isteyecektir.
Ve bu onayı alamazsa, o bilgi parçasını
yeniden gönderecektir.
Bu yüzden buna bağlantı dolu protokol diyoruz çünkü
iki yönlü bir bilgi türü var; ben size bilgi gönderiyorum
ve sizin de bunu aldığınızı
dinleyerek doğruluyorum ve siz de
bana bir yanıt veriyorsunuz.
Şimdi bir saniyeliğine ekrandaki
bu küçük diyagrama bakalım.
Sol tarafta bir istemci ve sağ tarafta bir
sunucu olduğunu göreceksiniz.
Şimdi, istemci sunucuya syn paketi ya da senkronizasyon
paketi adı verilen bir paket
gönderecektir.
Şimdi, sunucu bunu aldığında,
istemciye syn ack
olarak bilinen bir senkronizasyon onayı
gönderecektir.
Şimdi, istemci bu onayı aldığında, sunucuya
kendi onayını geri gönderecektir.
Bu, ack olarak bilinir.
Şimdi, bu syn, syn ack, ack'ı yaptığımızda, bu üç
yönlü el sıkışma olarak adlandırdığımız şeydir.
Esasen, istemcinin "Hey sunucu,
biraz bilgi almaya hazır mısın? Ve sonra sunucu der ki, "Elbette.
Neden olmasın?
"Bana biraz bilgi gönderin. Müşteri de diyor
ki, "Tamam, işte geliyor. Ve sonra aktarım başlayacak çünkü üç
yönlü el sıkışmayı gerçekleştirdik
ve her iki tarafın da iletişim kurmaya
hazır olduğunu biliyoruz.
"Şimdi, hazır mısın? "Evet, öyleyim.
"İşte
geliyor. Şimdi, segment olarak adlandırdığımız
bu veri ağ üzerinden her gönderildiğinde,
alınan bir onay olacak ve bu
bize iki yönlü iletişimin başarılı bir
şekilde gerçekleştiğini söyleyecektir.
Şimdi, bu sunucu 100 parça bilgi
almayı bekliyorsa, ancak bunlardan
yalnızca 98'ini aldıysa, istemciye "Hey,
bana 100 şey göndereceğini
söylemiştin, ancak bana yalnızca 98'ini gönderdin"
diyecektir.
"Eksik olan şu iki şeyi bana gönderin. Ve sonra, bir yeniden
iletim gerçekleşir.
Bu şekilde, iletişim
bizim için devam edebilir ve her zaman
almamız gerekeni aldığımızdan
emin olabiliriz çünkü paketleri
ağ üzerinden yeniden göndeririz.
Şimdi bu, nihai hedefine ulaşması için güvence
altına alınması gereken tüm ağ verileri için kullanılır.
Bunu iadeli taahhütlü posta gibi düşünmek istiyorum.
Örneğin IRS'ye bir mesaj göndermek istersem, bunu aldıklarından
ve postada kaybolmadığından
emin olmak isterim.
Bu yüzden biraz daha fazla para ödeyerek,
oraya ulaştığında imzalamaları
gereken ve bana geri postalanacak olan
onaylı bir makbuz alabilirim.
Bu şekilde, makbuzu
geri aldığımda, IRS'nin
posta paketimi aldığını biliyorum.
TCP bu şekilde çalışır.
Öte yandan, UDP olarak
bilinen başka bir protokolümüz daha var.
UDP bağlantısız protokol olarak adlandırdığımız bir protokoldür,
yani bağlantı beklemek zorunda değildir.
UDP, Kullanıcı Datagram Protokolü anlamına gelir.
Buna datagram dememizin nedeni,
UDP kullanıyorsanız bu tür bir veri kullanıyor
olmanızdır.
Buna datagram deniyor.
Şimdi, UDP hakkında konuştuğumuzda,
UDP güvenilmezdir ve datagram
adı verilen segmentleri iletir.
Ve eğer düşürülürlerse,
gönderenin bundan haberi bile olmaz.
Şimdi, neden gönderenin haberdar olmadığı
ve herhangi bir makbuz almadığım
bir şey göndermek isteyeyim ki?
UDP, ses ve görüntü akışı için gerçekten iyidir çünkü çok fazla
veri gönderirsiniz ve UDP kullandığınızda
çok daha az ek yük vardır, çünkü bunu oluşturmak
için sürekli üç yönlü el sıkışmamız
yoktur ve TCP kullanarak
ilişkili olan tüm kontrol ve dengelere
sahip değiliz.
Dolayısıyla, UDP kullanarak ağınızın
performansını gerçekten artırabilirsiniz çünkü
sıfır yeniden iletiminiz olacaktır.
Sonunda bilgiyi düşürürsünüz.
Şimdi, bu kötü bir şey değil mi?
Neden bilgiyi bırakmak isteyelim ki?
Bazı uygulamalar için gerçekten
fark etmez.
Örneğin, şu anda bu videoyu yayınlıyorsunuz.
Peki ya saniyenin yüzde biri kadar bir süre için bıraksam,
fark eder miydiniz?
Muhtemelen yapmazsınız ve UDP'nin
bu kadar iyi olmasının nedeni budur çünkü
burada zamanın 1/100'ünü düşürebiliriz ve bunu gerçekten
asla fark etmeyeceksiniz ve bir yeniden
iletim olmayacak.
Ancak TCP ile, çok daha fazla ara belleğe alma
işlemine yol açacaktır çünkü beklemeniz
ve ardından size yeniden gönderilmesini
sağlamanız ve ardından doğru yere
koymanız ve ardından geri oynatmanız
gerekir.
Dolayısıyla, bu onaylama ve ek yük nedeniyle, bu videonun
her bir saniyesi için, videoyu çok daha büyük
hale getirecek ve çok daha fazla bant genişliği
kullanacaktır.
Video akışı ve ses akışı
için UDP kullanmamızın en büyük nedenlerinden biri de budur.
Şimdi burada TCP ve UDP'nin kısa bir özetini yapalım.
Çünkü bu gerçekten çok önemli bir kavram.
Aslında, şu anda notlarınızı çıkarmış olsaydınız,
TCP'ye karşı UDP hakkında konuşurken
size şimdi anlatacağım bu
tabloyu not ederdim.
Çünkü gerçekten bu kadar önemli.
Şimdi, ilk olarak, TCP güvenilirdir, UDP'nin
çok güvenilir olmadığı yerde
üç yönlü bir el sıkışması vardır.
Güvenilir olmayan bir protokoldür
çünkü üç yönlü el sıkışma yoktur.
TCP, bağlantı yönelimli ya da bağlantı
dolu bir protokoldür, çünkü onaylarda
üç yönlü el sıkışma vardır, ancak UDP
bağlantısızdır.
Bu bir ateşle ve unut yöntemidir.
Ben sadece bilgi göndermeye başlıyorum
ve umarım siz de bunu alırsınız.
TCP, pencereleme yoluyla işlenen segment yeniden iletimini
ve akış kontrolünü kullanır.
Öte yandan UDP'de
yeniden iletim ve pencereleme yoktur.
TCP ile, tüm farklı
segmentlerimizin sıralamasında
segmentasyonumuz var.
UDP ile sıralama yoktur.
Şimdi, bunun anlamı, her şeyi gönderirken,
birden 100'e kadar uygun sırayla göndereceğim.
Bunu hem TCP hem de UDP için yapacağım.
Şimdi, bu parçalardan bazılarını
kaçırırsanız veya ağ üzerinde
farklı bir yol izledikleri için farklı bir
sırayla gelirlerse,
TCP ile sıralanırlar,
bu yüzden 1000'e bir tane olduğunu
bilir ve onları doğru sıraya koyar.
UDP ile, ne olarak
gelirlerse gelsinler,
o şekilde yayınlayacaktır.
Ve böylece, bir, 50,
iki, 500, üç, dört,
beş, altı, 20, bunun gibi
herhangi bir rastgele sırayla gelebilir.
Ve bu şekilde duyacaksınız.
Dolayısıyla videoda biraz atlama veya biraz
tiz gıcırtı ya da buna benzer bir şey
duyabilirsiniz, çünkü
bu karelerden biri sıra dışı olabilir.
Şimdi, TCP'ye geri döndüğümüzde,
bu segmentlerin her birini onaylayacaktır.
Ve böylece onay almış olduk.
Eğer alamazsam, alamadığımı
biliyorum ve bana yeniden
iletilmesini sağlayabilirim ve sonra tekrar alabilirim.
UDP ile onaylama yoktur.
Yani yine, UDP'nin çok daha az ek yükü vardır
çünkü bağlantı, pencereleme,
yeniden iletim, sıralama ve onaylama
yoktur.
Şimdi, oraya bir şey götürmeniz gerekiyorsa
ve kişinin bunu aldığından emin olmak istiyorsanız,
tercih ettiğiniz protokol olarak gerçekten TCP'yi kullanmanız gerekir.
İşte bu yüzden TCP'yi bankacılık, web
siteleri, e-ticaret ve bunun gibi şeyler için
kullanacağız.
Ancak ses veya video akışı gibi çok fazla veri
içeren bir şeyimiz varsa, UDP bu
konuda gerçekten başarılıdır çünkü bu
dosyanın her bir parçasını
almamız gerekmez.
Burada ve orada biraz atlayabiliriz
ve bu sorun değil.
-: [Başka bir Eğitmen] Şimdi, TCP ve UDP söz konusu
olduğunda, bunların bağlantı dolu veya bağlantı
odaklı protokoller ve bağlantısız protokoller
olduğundan bahsettik.
Şimdi size TCP ya da UDP kullanan
birkaç protokol örneği vereyim, böylece neden her birini
kullandığımızı anlayabilirsiniz.
İlk olarak, TCP'ye
ve bağlantı odaklı
ya da bağlantı dolu protokollerimize bakalım.
Bu, SSH ve HTTP veya HTTPS gibi şeyleri içerir.
Şimdi, bu durumlarda neden bağlantı odaklı olmaya ihtiyacımız olsun ki?
SSH gibi bir şey kullandığımda, iki yönlü iletişim
ve uzak sunucu veya uzak iş istasyonunun kontrolünü
yapıyorum ve bunu 22 numaralı bağlantı noktası üzerinden
yapabiliyorum.
Bunu bağlantı odaklı veya bağlantı
dolu bir şekilde yaptığımdan emin olmak istiyorum.
Bu şekilde, bir komut gönderip sunucuyu yeniden
başlat dediğimde, o komutun
gerçekten oraya ulaştığını ve sunucunun
yeniden başlatılacağını biliyorum.
Benzer şekilde, HTTPS ile uğraşırken, TCP kullanarak
bağlantı dolu veya bağlantı odaklı
bir protokole sahip olduğumuzdan emin olmak isteriz.
Bunun nedeni, yine, gönderdiğimiz
şeyin gerçekten oraya ulaştığından
emin olmak istememizdir.
Ve bu, kullanıcı adımızı ve şifremizi kullanarak
bir web sitesine giriş yapmaya çalışırken
kimlik doğrulama gibi şeyleri içerebilir
veya belki de hesap bakiyelerimiz
ve bankacılık bilgilerimiz gibi
o web sitesinden geri aldığımız bilgilerdir.
Öte yandan, protokol
olarak UDP kullanıyorsak, bağlantısız
bir şekilde işlem yapıyoruz demektir.
Şimdi, bunu ses ve video akışı
gibi şeyler için her zaman kullandığımız
gerçeğinden zaten bahsetmiştim.
Ancak buna ek olarak,
DHCP ve TFTP olarak bilinen Trivial File
Transfer Protocol gibi şeyler için de kullanıyoruz.
Şimdi, hatırlarsanız,
DHCP Dinamik Ana Bilgisayar Kontrol Protokolü olarak kullanılır
ve 67 ve 68 numaralı portlar üzerinden çalışır.
Şimdi, bir ağa katıldığınızda,
cihazınız IP adresinin
dinamik olarak atanması için ayarlanmışsa,
o ağda bir DHCP sunucusu arayan bir yayın mesajı
gönderecektir.
İşte bu yüzden bağlantısız bir protokol olarak kullanıyoruz.
Çünkü bu bilgi gönderilir ve kimse yanıt vermezse, müşteriniz
başka birinin orada olacağı umuduyla bunu
tekrar gönderecektir.
DHCP bu şekilde çalışır.
Bir yayın mesajının dışarı çıkmasına izin verecek ve
ardından bir yanıtın geri gelmesini bekleyecektir.
Belirli bir süre içinde
bu yanıtı alamazsa,
mesajını yeniden yayınlayacak ve tekrar
yeni bir DHCP sunucusu arayacaktır.
Şimdi, benzer şekilde, 69 numaralı bağlantı noktası
üzerinden çalışan TFTP veya Trivial File
Transfer Protocol'e sahip olduğumuzda, aktarım
olarak UDP'yi kullanarak bağlantısız bir
şekilde çalışacaktır.
Bunun nedeni, TFTP'nin
Önemsiz Dosya Aktarım Protokolü olmasıdır ve bu nedenle, her
bir paketin bu onaylarla gönderilip alındığına
dair güvencelere sahip olmamız gerekmez
ve TCP kullanırsak bu çok
daha fazla ek yük oluşturur.
Böylece UDP kullanarak, FTP
gibi daha bağlantı dolu bir protokol
kullanmak yerine TFTP gibi bir şey kullandığımızda
daha hızlı bir dosya aktarımı yapabiliriz.