İlginizi Çekebilir
  1. Ana Sayfa
  2. Network
  3. TCP/IP Yapısı ve Çalışma Prensibi

TCP/IP Yapısı ve Çalışma Prensibi

Merhaba;

Bu makalemizde sizlere hakkında bilgi aktarmaya çalışacağız. İnternet yapısının temel unsurunu oluşturan bu yapı nedir? , nasıl doğdu ve genel anlamda nasıl çalışır?

–          TCP/IP 4 katmanda tanımlanır.

–          En yaygın kullanılan protokoldür.

–          OSI referans modelinde bulunan Application, Presentation ve Session katmanında yapılan işlemler, TCP/IP yapısında Application katmanında tanımlanır. 

TCP/IP endüstri standartı bir protokol’dür. 1970’li yıllarda ABD Savunma Bkalanlığı’nın bir projesi olarak temelleri atılmıştır. Advanced Research Projects Agency (DARPA) projesi  daha sonra ARPANET olarak  adlandırılmıştır. Bu proje ile üniversite ve kamu kuruluşlarının birbirleriyle haberleşmesi amaçlanmıştır. 1978 – 1979’lu yıllarda TCP/IP protokol kümesi büyük ölçüde tamamlanmış ve ARPANET üzerinde kullanılmaya başlanmıştır.

TCP/IP modeli OSI referans modelinden farklı olarak 4 katmanda işlem görmektedir. Bu 4 katman çok kesin sınırlarla birbirinden ayrılmış değildir. Esnek yapıda çalışmaktadır.

Şimdi sırasıyla katmanları, katmanlarda çalışan protokol’leri ve özelliklerini inceleyelim. 


Resim 1

Yukarıdaki şekilde de görüldüğü gibi OSI modelindeki ilk 3 katman TCP/IP modelinde birleştirilerek Application katmanı altında toplanmıştır. Transport katmanı aynı kalırken, Network katmanı ismini Internet katmanı olarak değiştirmiş, Datalink katmanı ve Physical katman ise Network Access  olarak bir araya getirilmiştir. 

1-      Application Katmanı:

Bu katmanda data’yı gönderen uygulama ve kullandığı protokol bulunmaktadır. Kullanıcının etkileşimde bulunduğu katmandır. Bu katmanda kullanıcı uygulamalarına yönelik olarak çeşitli protokol’ler bulunur. Bunlar, DNS, HTTP, HTTPS, POP3, SMTP, FTP, TFTP, SNMP gibi protokollerdir. 

2-      Transport Katmanı: 


Resim 2

Tranport katmanında TCP ve UDP protokolleri işlem görmektedir. Transport katmanı özellikleri;

–          Aynı anda birkaç makine ile bağlantı kurulabilir. ( Session Multiplexing)

–          Veriler parçalara bölünebilir.

–          Akış kontrolü vardır. (Flow Control)

–          Connection-oriented’dir (Gerektiğinde)

–          Güvenilirdir. (Gerektiğinde)

Transport katmanında kullanılan TCP ve UDP protocol’lerini karşılaştıracak olursak, 


Resim 3

Connection-oriented ifadesi  bağlantı temelli anlamına gelmektedir. Yani iletişime geçecek taraflar iletişimden önce bir bağlantı oluşturmak zorundadırlar.

Şimdi Transport katmanı protokollerini detaylı olarak inceleyelim;

TCP:

–          TCP Connection-oriented çalışan bir transport katmanı protokolüdür.

–          Verilere sıra numarası ekler. (Sequence Number)

–          Veriler Parçalara bölünerek yollanır.

–          Güvenilirdir. Kaybolan veri tekrar yollanır. Verinin hedefe gidip gitmediğini kontrol eder.

–          Akış kontrolü vardır. (Flow Control)

–          Full Dublextir.

Tcp’nin yukarıda bahsettiğimiz özelliklerini daha ayrıntılı olarak inceleyelim. Öncelikle TCP katmanında veriye eklenen header (Başlık) ve özelliklerini inceleyelim.

Değişken options’ıdır. Genelde en çok kullanılan seçenek TCP’nin kullanacağı band genişliğidir.
TCP iletişimdeki window değerini içerir. Window değeri iletilecek veri byte’ı sayısıdır.
URG TCP type’ı işaretli TCP paketinin öncelikli olarak işleme alınması için kullanılan bölümdür.
TCP Paketi için hata kontolünün yapıldığı bölümdür.
TCP paket tipleri vardır. Şekilde işaretlenmiş kısımlar normalde sıfır değerine sahiptir. Paket’in türüne, seçilen türe ait değer 1 yapılır.
Karşı taraftan istenilen bir sonraki paketin sequence numarasıdır.
Paketin TCP iletişimdeki sıra numarasını içeren kısımdır.
Hedefin port adresini içeren kısımdır.
Kaynağın port adresini içeren kısımdır.


Resim 4
 

TCP header’ında yer alan değerler genel itibariyle bunlar. TCP paket tiplerini biraz daha açalım;

–          RESV : İlerde kullanak için saklanmış olan alanı ifade eder. Bu yüzden bu kısmın değeri 0 dır.

–          URG : Acil gönderilecek öncelkli paketlerde bu kısmın değeri 1 yapılır.

–          FIN : iletişimin sonlandırıldığı pakettir.

–          RST: İletişim sırasında bir osrun olduğu zaman iletişimin kesilerek tekrardan başlatılmasını sağlayan pakettir.

–          ACK: Paketin alındığını karşı tarafa bildiren onay paketidir.

–          PSH: Alıcı bu paketle hemen uygulama katmanına çıakr. 

     UDP:

–          Connectionless’tır. İletişim sırasında bağlantı oluşturmaz

–          Hata denetimi yoktur. Kaybolan paket’in yeniden gönderilmesi söz konusu değildir.

–          Veri aktarımı daha hızlıdır. 

UDP header’ı TCP header’ı kadar kalabalık değildir. 


Resim 5
 

Şekilde de görüldüğü gibi Source ve Destination port numaralarını tutan bir bölüm UDP’de de söz konusudur. Yine TCP de olduğu gibi Checksum bölümü ve header’ın uzunluğunu tutan Length bölümü UDP header’ında da bulunmaktadır. 

Transport katmanında paket üzerine eklenen port numaraları sayasinde paket transport katmanından bir üst katman olan Application katmanına iletilir. Bu iletişim sırasında Transport katmanında kullanılan protokol önemlidir. Kullanılan protokol’ün TCP yada UDP oluşuna göre paket bir üskatmana sevkedilir. Bir üst katmanda işlem gören protokollerde işlem görmesine göre ya tcp ile yada udp ile çalışırlar. Bunu şu şekilde özetleyelim. 


Resim 6
 

Şekilde görüldüğü gibi Application katmanındaki protokoller de işleyişleri bakımından TCP yada UDP olarak ayrılmaktadırlar. TCP yada UDP olan paketin uygulama katmanında çalışan hangi protokole ait olduğunu ise üzerlerinde bulunan port numaraları belirler. Bu port numaraları sayesinde Application katmanındaki protokoller ayırt edilirler. Örneğin FTP protokolü TCP çalışan bir protokoldür. FTP iletişimden önce taraflar arasında TCP session oluşturulur ve sonrasında iletişime başlanır. Bu iletişimde transport katmanına gelen paket Application katmanında FTP protokolüne yönlendirilmek için 21 numaralı porttan Application katmanına gönderilmelidir. Bu gibi Application katmanında çalışan protokollerin kendilerine özgü port numaraları vardır. Well Known Port Number olarak isimlendirilen bu port numaraları sayesinde standartlaştırılmış bir iletişim söz konusu olur. 1024’e kadar olan port numaraları Well Known Port Number olarak bilinmektedir. Bazı uygulama katmanı protokolleride farklı işleyişlerde farklı transport katmanı protokollerini kullanabilirler. Bunlara örnek olarak DNS verilebilir. DNS’ yapılan sorgular da UDP protokolü kullanılırkeni DNS server’ların kendileri arasında yaptıkları replikasyonlarda TCP protokolü kullanılmaktadır.

Bilgisayarlardaki her IP için 65536’tane port numarası bulunur ve bu portlar 16’bittir. 

Three Way Handshake

TCP iletişime geçmeden önce taraflar birbirlerini doğrulamak zorundadır. Bu doğrulama işleminde de Threeway Handshake denilen yöntemi uygularlar.

Bu yöntem sayesinde taraflar birbirlerini doğrulamış olur ve bu yönüylede TCP güvenlidir. Şimdi aşağıda yapılmış iletişime bir bakalım ve açıkalmaya çalışalım. 


Resim 7
 

1-       Şekile baktığımızda Host A isimli cihaz Host B isimli cihaz ile iletişime geçmek istediğinde ilk yollayacağı paket SYN (Synchronize) paketidir. Bu bir hostun başka bir hostla iletişim kuracağı zaman yollayacağı ilk pakettir. Bu paketi yollarken pakete bir sıra numarası eklenir. Bu sıra numarasına Sequence Number denir. Random olarak bir numara seçilerek iletişime başlanır. Şekilde görüşdüğü gibi ilk paketin Sequence numarası 100’dür. CTL=SYN ifadesi ise paketin Synchronize paketi olduğunu gösterir. Bu paketin SYN olması içinde header’daki TCP paket tiplerinden SYN kısmının değeri 1 olarak değiştirilir.

2-      SYN paketini alan host B iletişime başlamak için SYN paketini onayladığını ve kendisinin de karşı tarafa SYN olmak istediğini belirtmek için SYN + ACK(Acknowledgement) paketi yollar. Bu paket yollanırken TCP Type’larından SYN ve ACK yazan bölüm değerleri  “1” yapılır. Burada yollanan ACK paketi ile alınan paket onaylanır ve bir sonraki paket istenir . Yani şekilde Host A sequence numarası 100 olan paketi Host B’ye yollamıştır. Host bu paketi aldığını onaylaması gerekir bunun için ACK paketini yollar ve bunu aldığını belirtmek için bir sonraki paketin Sequence numarasını yazar.  Dolayısıyla Host B 100 sıra numaralı paketi almıştır ve ACK=101 yazarak aldığını bir sonraki paketi isteyerek Host A’ya belli etmiştir. Bunun yanında da kendisi RANDOM olarak atadığı 300 sequence numarası sayesinde karşı tarafa SYN paketi yollamıştır.

3-      Son olarak Host A karşıtaraftan gelen SYN + ACK paketine karşılık karşı tarafın SYN’sini onaylamak için bir ACK paketi yollaması gerekir. Şekilde görüldüğü gibi karşı tarafın 300 sequence numaralı paketini aldığını onaylamak için bir sonraki paket olan 301 sıra numaralı ACK paketini Host B’ye yollar. Bu şekilde iki taraf da birbirlerini onaylamış olur.

Bu 3 aşamalı işlem TCP iletişimin güvenli olmasını sağlayan işlemdir. Ayrıca paketlere sequence numaralarının  eklenmesi “Men in the middle” denilen ataklara karşı bir önlem niteliğindedir ve güvenliği sağlamaktadır. Three way handshake sadece connection oluşturma sürecidir. Veri iletiğimi bundan sonra başlamaktadır.

Flow Control (Akış Kontrolü)

Çeşitli nedenlerden dolayı (Çok fazla Connection olması gibi) bağlantı bekletilebilir. Bir süre sonra koşullar hazır olduğunda bağlantı tekrardan başlatılır. Yada bağlantı hızlı ise yavaşlatılabilir. Bu duruma flow control (Akış Kontrolü) denir. 


Resim 8
 

Şekilde görüldüğü gibi alıcı çeşitli nedenlerden dolayı, connection oluşturmak isteyen kişiye “NOT Ready” şeklinde hazır olmadığını bildiren bir mesaj yollar. Daha sonra durumu düzeldiğinde iletişimin başlamasını tekrardan tetikler. 

Windowing: 


Resim 9

Şekilde görüldüğü gibi iletişim sırasında gönderilen paketlerin sayısı farklı olabilir. Şekilde 3 adet paket aynı anda gönderiliyor ve alıcı aldığı paketleri onaylamak için bir sonraki paketi istiyor ve ACK değeri olarak 4 ü gönderene yolluyor. Windowing dediğimiz şey iletişim sırasında bağlantının durumuna göre paket sayısının arttırılarak gönerilmesidir. Bunun için three way handshake sırasında bir window size belirlenir ve TCP header’ındaki windowing bölümüne yazılır. Windowing değeri hattın band genişliğine ve iletişimdeki hostların durumlarına göre değişiklik göstermektedir. İletişimin daha hızlı gerçekleşmesi için duruma göre window size ara ara değiştirilir.

Sliding Window 


Resim 10
 

Sliding Window dediğimiz işlem ile window değeri iletişim sırasında düşürülebilir. Bunun nedeni alıcının meşgul olması yada hattın müsait olmaması gibi nedenler olabilir. Bu gibi nedenlerden ötürü alıcı makine window size’ını düşürebilir. Şekilde alıcı makine 3 olan windows size değerini çeşitli nedenlerden dolayı 2 ye düşürmüştür. Genelde iletişim hızına göre bu değer arttırılır yada azaltılır. Veri iletişiminde hızı arttırmak için QoS gibi teknolojilerden faydalanılır. 

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

Yorum Yap

Yazar Hakkında

Sakarya doğumludur. İstanbul Üniversitesi’nde Matematik/Fen ve Teknoloji öğretmenliğini bitirmiştir. Yüksek lisansını Sakarya Üniversitesi Bilgisayar Mühendisliği’nde yapmıştır. Bilişim sektöründe çeşitli firmalarda sistem ve network sorumlusu olarak çalışmıştır. Bazı kurumlarda sistem ve network üzerine uzmanlık eğitimleri vermiştir. Şu anda Netaş şirketinde kurumsal danışman olarak görev yapmaktadır. Microsoft System Center ürünleri, Powershell ve Azure teknolojileri ile ilgilenmektedir. 2016 yılında Microsoft tarafından Cloud and Datacenter alanında MVP unvanını almıştır.

Yorum Yap

Yorumlar (6)

  1. Teşekkürler.. İşte budur Hocam

  2. yardımcı oldu sağol

  3. Merhaba makalenizi neredeyse baştan aşağı okudum. İnternet üzerinde neredeyse doğru düzgün bilgi bile bulunmayan bu konu hakkında bu kadar doğru ve geniş bilgi verdiğiniz için teşekkür ederim.

  4. teseekur le iyi makale olmus

  5. Hocam ellerinize sağlık harika bir döküman olmuş, fakat resimlerde yazılar çok küçük olduğu için görünmüyor. Bunları düzeltme imkanı var mıdır ?

  6. Paylaşımlarınız için teşekkürler. Lakin TCP mimarisini açıklamak için paylaşmış olduğunuz resim (RESİM 4) tam olarak okunmuyor elinizde okunaklısı var ise msonr2@gmail.com adresine mail atar mısınız ?