27 Aralık 2007 Perşembe

NEDEN TCP

Internet Protokolü(IP)paket adi verilen bilgi gruplarinin degisimi üzerine kurulmustur. Paketler baslik ve gövdeyi ihtiva eden bir dizi bytettir.Baslik paketlerin nereye gidecegini tanimlar,internette paketlerin paketlerin geçtigi yönlendiriciler paketin hedefine varabilmesi için basliga bakarak yönlendirme yapar.Gövde ise uygulama verilerini içerir.

Normal olmayan bir yigilma durumunda IP protokolü paketleri reddeder.Çünkü iki ardisik paketin internet üzerinde farkli yollardan hedefe ulasirsa siralamalari yanlis olur.

TCP protokolünün yazilim kütüphaneleri IP protokolünü kullanarak uygulamalara,basit arayüz saglar,uygulamalarin çogu temel paket yapilarini gizler,düzensiz paketleri yeniden düzenler,ag yigilmalarini önler,daha önceden reddedilmis olan paketleri tekrar gönderir.

Bu yüzden TCP çogu uygulama yazimini ciddi oranda basitlestirmistir.

TCP’nin Uygulanabilirligi

TCP içindeWWW.E-mail,FTP,Secure Shell ve bazi medya akis programlarininda bulundugu çogu uygulama ve uygulama protokolü tarafindan kullanilir.

TCP bazen düzensiz paketlerini beklerken veya kayip paketleri yeniden gönderirken uzun zaman gecikmelerine maruz kalir bu yüzden TCP teslimatlari zamana bagimli olarak degil veri bütünlügüne yönelik yapmak üzere iyilestirilmistir.

Bu yüzden IP üzerinden ses ve görüntü paylasimi için TCP uygun olmayabilir.

Bu tip uygulamalar için TCP yerine UDP(User Datagram Protokol-Kullanici veri blogu iletisim kurali)üzerinden çalisan RTP(Real-time transport protokol)kullanilmasi tavsiye edilir

TCP KULLANIMI :Uygulamalar herhangi bir ag üzerindeki bir bilgisayarlardan baska birine baglanti olusturabilirler.Olusturduklari bu baglanti üzerinden akis soketlerini kullanarak karsilikli olarak veri gönderip alabilirler.TCP eszamanli uygulamalar tarafindan gönderilen çoklu verileri ayristirabilir.

Internet iletisim kurali paketinde,TCP ortalarlarda bir yerdedir.Yani Internet protokol katmani ile uygulama katmaninin arasindadir.Uygulamalar genelde boruya benzergüvenilir bir hatta ihtiyaç duyarlar.Internet iletisim kurali (IP) iyi bir veri akisi sunamazken sadece best effort delivery(en iyi teslim etme isi )ne tercihen kullanilir.TCP basit bir OSI modelinin tasima katmaninin isini yapar. Internet iletisim kurallarinin diger tasima katmanlari ise UDP veSCTP dir.

Uygulamalar TCP ye network üzerinde istenilen bir noktaya teslim edilmek üzere arka arkaya 8 bitlik veriler gönderir,daha sonra TCPbu verileri network üzerinde tasinabilecek maksimum büyüklükte parçalara böler. Enson haldeki veriler diger uçtaki noktanin TCP modüle teslim edilmek üzere TCP tarafindan Internet protokolüne aktarilir.

Her pakete diger tarafa tam ve dogru sira ile ulasip ulasmadiklarini kontrol için sira numarasi verilir. Verilen bu sira numaralarina göre TCP veri kaybi olup olmadigini kontrol eder.Uzak taraftaki TCP modülü paketlerin alindigina dair ACK (acknovledgment-Kabul tanima)sinyali gönderiri.eger ortalama bir gidis-dönüs süresinde gönderici tarafindaki TCP modülüne ACK sinyali ulasmamissa, bu modüldeki zamanlayici zaman asimi sinyali olusturur ve muhtemel bir veri kaybina karsilik olarak bu paketler tekrar dan gönderilir.TCP ayni zamanda hiçbir byte’in bozulmadan ulasabilmesi için checksum (bütünlük dogrulayici )üretir.bu gönderici tarafindan herbir veri kümesi gönderilmeden önce üretilir.ve alici tarafindan kontrol edilir.



Iletisim Kuralinin Çalismasi

TCP geleneksel esdegeri olarak bilinen UDP den su açidan farklidir. UDP, paketleri hemen göndermeye baslarken, TCP verileri göndermeden önce bazi islemler yapar. TCP baglantilari üç adimdan olusur.

· Baglanti kurulumu

· Veri aktarimi

· Baglantinin sonlandirilmasi

Bu üç adimi açiklamadan önce, diger uçtaki son nokta veya internet soketi baglantisinin degisik durumlarini not alalim.

1. LISTEN

2. SYN-SENT

3. SYN-RECEIVED

4. ESTABLISHED

5. FIN-WAIT 1

6. FIN-WAIT 2

7. CLOSE WAIT

8. CLOSING,

9. LAST-ACK

10. TIME-WAIT

11. CLOSED

LISTEN: Uzaktaki bir TCP veya Port tarafindan gönderilecek baglanti sistemini beklemeyi temsil eder.

SYN-SENT: uzaktaki TCP nin SYN ve ACK bayraklarini kurmak için geriye bir TCP paketi göndermesinin beklenmesi.

SYN-RECEIVED: uzaktaki TCP ye geri gönderdigi verinin ulastigina dair bilgilendirme sinyalinin gönderilmesinin beklenmesi.

ESTABLISHED: Portlarin veri alip göndermeye hazir oldugunu gösterir.

TIME-WAIT: Uzaktaki TCP nin baglanti sonlandirma isteginin cevabini almasi için geçmesi gereken süre.

Baglanti kurulumu:TCP bir baglantiyi olusturmak için 3 degisik tokalasma yöntemi kullanilir.Bir istemci sonucu ile baglanti kurma girisiminde bulunmadan önce,sunucu bir portu bu baglantinin olusabilmesi için istemciyle iliskilendirmelidir.buna baglantinin pasif olarak açilmasi denir.Pasif baglantinin açilmasindan hemen sonra istemci aktif baglantiya geçer.Bir baglanin kurulabilmesi için 3 çesit tokalasma olur.



· Istemci tarafindan gerçeklestirilen aktif baglanti sunucuya SYN gönderir.

· Sunucu cevap olarak SYN-ACR gönderir.

· Son olarak istemci sunucuya ACR gönderir.

Bu noktada hem istemci hem de sunucu baglanti konusunda birbirlerini tanimis olurlar.

ÖRNEK:

1.Istemci baglantiyi baslatmak için Synchronization(SYN bayragim1 yapar)paketi gönderir. Her SYN paketi bir sira numarasi tutar. Sira numarasi 32 bitlik bir sayidir ve TCP baslik kisminda yer alir. Bu bölümde sirra numarasi x ile niteleyecegiz.

2. diger taraftaki makine paketleri alir ve sira numarasini kaydeder (x) ve bir tanima ve senkronizasyon ( Acknowlegment and Synchronization)

(SYN-ACK): Tanima (kabul)sinyali(verisi) 32-bittir ve TCP baslik kismindadir. Bu veri alamayi umdugu diger paketin sira numarasini tutar.

(x+1).host ayni zamanda dönüs oturumunuda baslatir. Bu içinde kendisinin baslangiç sira numarasi olan (y)barindiran bir tcp segmenti barindirir.

3. Baslangiç makinesi cevap olarak sira numarasi x+1 olan paketi ve sira numarasi göndericinin kinin bir fazlasi oln (y+1) tanima paketi gönderir.

Savunmasiz Tarafi Kilitlenme:korsanlarin sahte ip kullanarak üst üste SYN paketleri göndermeleri sunucunun sahte baglantilarin kaydini tutmak için çok fazla kaynak harcamasina sebep olur. Bu problemin önerilen çözümü SYN. Cookie ve Kriptolamada saklidir.



Veri Aktarimi

TCP ile UDP arasinda birkaç önemli farkliliklar vardir.

· Düzenli veri aktarimi

· Kayip paketlerin tekrar aktarimi

· Yenilenen paketlerin reddedilmesi

· Hatadan yoksun veri transferi

· Yigilma/Akis kontrolü

Verilerin Düzenli Aktarimi, Kayip Paketlerin Tekrar Gönderilmesi, Yenilenen Paketlerin Reddedilmesi

Yukarida bahsedilen 3 asamali el sikismadan ilk iki adimda her iki bilgisayar karsilikli olarak bir baslangiç seri numarasi (ISN-Initial Seguence Number ) birbirlerine gönderirler. Bu numara istege bagli olarak seçilebilir. Bu numara karsilikli veri gönderimlerinde olusabilecek olan parçalanma veya sira bozulmasindan etkilenmesinden veri tasinmasi için bytelarin siralarini belirler. Her byte tasinmasinda sira numarasi artirilir.

Kavramsal olarak, her byte bir sira numarasi ile gönderilir ve alici veriyi aldiginda, bunu belirtmek için bir ACK(kabul) sinyali gönderir. Gerçekte ne oluyor peki, sira numarasi alanina sira numarasi yerlestirilmis ilk veri byte alici tarafindan alindiginda, diger byte’i bekledigine dair bir onay bilgisi gönderir.

Örnegin: Eger A bilgisayari sira numarasi 100’den baslayan 4 byte’lik bir veri gönderirse, alici bu verileri düzgün olarak aldigini ve diger paketteki verileri bekledigini belirtmek için geriye degeri 104 olan bir onay sinyali gönderir.104 degerinde bir onay sinyalinin gönderilmesi 100,101,102,103 nolu bytelarin aldigini gösterir. Eger 102 nolu bir onay sinyali gönderilirse bu 100 ve 104 nolu byte’larin alindigi ve 102 ve 103 nolu bytelarin alinmadigini gösterir.

Bununla birlikte bazen paketler kaybolabilir. Örnegin 10 farkli pakette gönderilen 10.000 byte’tan gönderim sirasinda kaybolduysa; gönderici 10.000 byte’in hepsini tekrardan göndermek zorundadir. Alici 1000 ile 9.999 arasindaki bytelarin aldigini söyleyemez bunu yerine kaybolan ilk paketteki 0 ile 999 arasindaki bytelarin alamadigini söyleyebilir. Bu problemi halletmek için ’seçimli onay’ (Selectime Ack) sinyali seçenegi eklenmistir. Bu seçenek, basit TCP onayinda oldugu gibi basarili olarak alinan en son paketin sira numarasini onaylamak yerine, paketlerin düzgün bir biçimde alinan farkli bloklarina onay verebilir. Her blok baslangiç ve sonuç sira numaralari ile tasinir.” Yukaridaki örnege göre, alici sira numarasi 1000 ile 10000 arasinda olan SACK seçenegi zorunlu degildir, sadece iki kisimda bunu destekliyorsa kullanilabilir. Baglanti kurulum asamasinda karsilikli olarak karara baglanir. SACK kullanimi TCP basliginin seçimine bagli bir bölümdür. SACK ayni zamanda SCTP de de kullanilir.

Hatasiz veri transferi

Sira numaralari ve onay sinyalleri yineleyen paketleri kaybolan paketlerin yeniden gönderilmesi gibi olumsuz durumlari ortadan kaldirir ve düzenli bir veri transferine imkan saglar. Dogru bir transferi saglayabilmek için check sun( kontrol) eklenmistir. Yüksek oranda bit hatalarinin muhtemel oldugu veri baglanti katmanlari ek olarak baglanti hata düzeltme \bulma kapasitesini gerektirebilir. Eger TCP bügün tekrardan dizayn edilmils olsaydi su anda kullanilmakta olan kontrol yöntemi checksum’ un yerine 32 bitlik bir periyodik fazlalik kontrolü yüksek ihtimamli olarak olabilirdi. Zayif checksum 2 katmanda bulunan TCPve IP nin kullandigi en iyi tümlesik kontrolü veya CRC nin bir kismini karsilayabilir. Bununla birlikte bu karsilama 16 bitlik TCP saglamasifazlalik anlamina gelmez, Internet trafigi dikkatle incelenirse CRC korumali paketler arasindaki atlamalardan kaynaklanan yazilim ve donanim hatalarinin oldugu gözükür. Iste bu hatalarin cogunu 16 bitlik TCP saglamasi yakalamaktadir. Bu noktadan noktaya iletisimin bir prensibidir.

Yigilma kontrolü

TCP nin son parçasi yigilma kontrolüdür. TCP yüksek performas saglamak ve ag performansini ciddi derecede düsüren yigilmalarin engellenmesi için pek çok sayida mekanizma kullanmaktadir. Bu mekanizmalar tüm agdaki veri akisini kontrol eder. Veri akisini yigilmayi teziklememesi için belli bir oranin altinda tutulmasini saglar.

Veri gönderi için onaylama gönderici tarafindan , gönderici ve alici tarafindan ag sartlarinin üstü kapali sekilde yorumlanmasi için kullanir.

Bir zamanlayici ile birlestirilmis TCP alici ve göndericileri veri akis özelligini degistirebilirler. Bu akis kotrolü genelde yigilma kontrolü veya agda yigilmalari önlemeyi temsil eder.

TCP nin modern uygulamalari iç içine geçmis 4 algoritma barindirirlar. Yavas- baslangiç_ yigilmalardan uzak , hizli yeniden gönderim ve hizli kurtarma.

TCP pencere boyutu

TCP alici pencere büyüklügü alicinin baglanti süresince tamamlayabilecegi veri boyutudur. Gönderici tarafi ilk etapda en fazla bu büyüklük kadar veri gönderebilir daha sonra alicinin alindi onayini ve pencereyi güncellendi göndermeyi keser ve devem sayacini çalistirir. Devem sayaci TCP yi bir kilitlemeye karsi korur. Kilitleme göndericinin yeni pencere büyüklügünün güncellenmesini beklerken alicinin hiçbir veri göndermemesi durumunda meydana gelir. Devam sayaci sona erdiginde alicinin onay paketiyle birlikte yeni pencere büyüklügünü ve TCP nin kilitlemeye maruz kalmamasi için küçük bir veri paketi gönderir.

Pencere ölçeklendirme:

Yüksek bant genisligi saglayan aglarin daha etkin kullanimi için daha büyük TCP

pencere büyüklügü kullanilmalidir.TCP pencere alani veri akisini kontrol eder ve

2 ile 65.535 byte arasinda degisen araliktaki boyutlara sahiptir.Pencere büyüklügünün

asilamadigi durumlarda ölçeklendirme faktörü kullanilir.Iste TCP pencere ölçegi

seçenegi en büyük pencere boyutunu 65.535’den 1GB’a kadar yükseltmek içn

kulanilan bir seçenektir.Büyük boyutlarda pencer kullanimi TCP tuning adiverilen

yüksek bant genisligi ve düsük gecikmeli bir TCP’yi tanimlayan tekniklerin bir parçasidir.

Pencere ölçegi seçenegi sadece 3 asamali yapilan tokalasma sirasinda kulanilabilir.Bu

pencere ölçegi 16 bitlik pencere alaninin kaç bit sola kaydirildigini gösterir.Bu

pencere seçenegi 0 ile 14 arasindaki degerlerde olabilir.

Çogu yönlendirici ve güvenlik duvari iletim esnasinda pencere ölçeklendirme faktörünü yeniden yazar. Bu durum alici-gönderi taraflarinda farkli farkli pencere büyüklügüne sebep

olabilir. Sonuç ise çok yavas ve istikrarsiz bir ag trafigin ortaya çikmasidir.Bu problem kirik-bagli yönlendiricilerin arkasindaki alici ve gönderici sitelerde görülebilir.

Baglantinin Sonlandirilmasi:

Baglanti sonlandirma adimi genelde 4 asamali tokalasmada kullanilir.Her bir baglantiyi birbirinden bagimsiz olarak sonlandirir.Bir nokta baglantisini sonlandirmak isterse diger taraftaki noktanin ACK ile onaylamasi için bir FIN paketi gönderir.Bu yüzden, baglantinin sonlanmasi içinheruç noktadan bir çift FIN ve ACK segmenti gerekir.

Eger bir uç baglantiyi sonlandirdiysa fakat diger ucu sonlandirmadiysa baglanti “Yari açik” bir sekil alir. Bu sekilde bir taraf sonlandirmayi yaptiysa baglanti araciligiyla veri gönderemez fakat diger ise taraf veri gönderebilir.

3 asamali tokalasmada baglanti A ucunun FIN göndermesi ve B ucunun FIN+ACK ile onaylamasi ile sonlanabilir. Ve bu genelde kullanilan bir metoddur.

Iki ucun ayni anda FIN göndermesi ile sonlandirma olabilir.Bu durum FIN/ACK siralamasinin iki yönde ayni anda geçeklesmesiyle 2 asamali tokalasmada olabilir.

Hiç yorum yok: