TCP/IP

Selamlar, bu yazıda TCP/IP modelinin ne olduğundan ve nasıl çalıştığından bahsedeceğim. Öncelikle ağ protokollerin ne olduğundan başlayalım. Sonrasında konumuza girelim.

Ağ Protokolü (Network Protocol) Nedir?

İki veya daha fazla cihazın birbirleriyle iletişim kurabilmesi ve anlayabilmesi için belirli eylemleri gerçekleştirmenin ve verileri biçimlendirmenin standartlaştırılmış yoludur.

Protokollerin neden gerekli olduğunu anlamak için günlük hayata bir bakalım; bir mektup postalama sürecini düşünün. Zarfın üzerine adresler şu sırayla yazılır: alıcı bilgileri, gönderen bilgileri ve içerik. Aynı şekilde, tüm IP veri paketlerinin belirli bilgileri belirli bir sırada sunması gerekir ve tüm IP adresleri standartlaştırılmış bir biçimi izler.

TCP Nedir?

Türkçe karşılığı İletişim Kontrol Protokolü olan TCP'nin açılımı Transmission Control Protocol'dür. Bilgisayarlar arasında veri (data) ve mesajları kayıpsız bir şekilde iletmek için kullanılan bir protoküldür. TCP, veriyi gönderirken ve alırken verinin bütünlüğünü garanti eder. Birçok protokol veri iletimini sağlarken TCP'yi kullanır.

TCP Bağlantısı Nasıl Kurulur?

TCP, bilgisayarlar arasında kayıpsız bir iletişim kurmak için kullanıldığından aslında basit bir çalışma mantığı vardır. Türkçe'de üçlü el sıkışması dediğimiz 3-Way Handshake sürecinden oluşur. Adında olduğu gibi aslında 3 aşama vardır.

Yukarıdaki görselde görüldüğü gibi bağlantıyı başlatan tarafından bağlantı kurulacak hedefe SYN=1 paketi gönderilir. Sonrasında geri cevap olarak SYN=1 ACK=1 paketi gönderilir. SYN=1 ACK=1 paketini alan ACK=1 paketini gönderir ve bağlantı tamamlanır.

Bu süreçteki önemli bazı bayrakları (flag) inceleyelim.

  • SYN Synchronization: Bağlantının ilk gelen ve giden paketlerinde kullanılan bayraktır. Oturumun onay sırasını belirlemede rol alır.

  • ACK Acknowledgement: Başarılı bir şekilde alınan paketleri kabul etmek için kullanılır.

  • FIN Finish: Bağlantının düzgün bir şekilde sonlandırılması için kullanılır. SYN bayrağının tersi diyebiliriz.

  • RST Reset: Alıcı, bağlantı sırasında güvenlik sorunu, hatalar vb. bir sorunla karşılaşıldığında bağlantıyı direkt olarak iptal eder.

  • PSH Push: Veriyi direkt olarak teslim etmek için kullanılır. Gerçek zamanlı veri aktarımlarında yaygın olarak kullanılır. Örneğin; 5G teknolojisi olan Open5GS'teki servisler arasındaki iletişimde kullanılmaktadır.

IP Nedir?

Türkçe karşılığı İnternet Protokolü olan IP adını Internet Protocol'ün kısaltmasından alır. Verilerin, ağlar arasında doğru hedefe ulaşabilmeleri için bir nevi adreslemek için kullanılan bir protokoldür. IP bilgileri her pakete eklenir ve yönlendiricilerin (routers) paketleri doğru adrese göndermelerine yardımcı olur.

İnternete bağlanan her cihaza bir IP adresi (ip address) atanır ve paketler, IP adreslerine yönlendirilerek ihtiyaç duyulan adreslere ulaşır.

IP Adresi Nedir?

IP adresi, Internet'e bağlanan bir cihaza atanan benzersiz bir tanımlayıcıdır. Her IP adresi, '10.10.67.1' ya da '3b18:2293:16:67::1' gibi bir dizi karakterdir.

IP Adresleri Nasıl Oluşturulur?

IP adresleri, Internet of Assigned Numbers Authority (IANA) tarafından bir algoritma kullanılarak otomatik oluşturulur. IANA daha sonra IP adres bloklarını bölgesel internet kayıtlarına (RIR) ayırır ve bu bloklar coğrafi olarak internet servis sağlayıcılarına (ISP) dağıtılır. ISP'ler IP adresleri oluşturmak için genellikle Dynamic Host Configuration Protocol (DHCP) kullanır. DHCP, ağa bağlanan aygıtlara otomatik olarak IP adresi ataması yapar.

IP Adreslerini Yakından İnceleyelim.

IP adresleri İnternet Protokolü'nün (IP) iki ana sürümü kullanılarak oluşturulur: Bunlar IPv4 ve IPv6. Cihazlar; IANA, RIR ve ISP'ler tarafından belirlenen kuralları ve protokolleri kullanarak benzersiz IP adresleri elde edebilir.

IPv4 10.10.67.145

  • 1981 yılında kullanılmaya başlanmıştır.

  • 4.294.967.296 IPv4 adresi oluşturulabilir. (2^32)

  • Noktalarla "." ayrılarak kullanılır.

  • Onluk (decimal) sayı sistemini kullanır.

  • 32 bit

  • DHCP ya da elle yapılandırma yapılmalı.

IPv6 3b18:2293:0016:0067:0000:0000:fb4c:0618

  • 1998 yılında kullanılmaya başlanmıştır.

  • 340.282.366.920.938.463.463.374.607.431.768.211.456 IPv6 adresi oluşturulabilir. (2^128)

  • İki nokta üst üstelerle ":" ayrılarak kullanılır.

  • Onaltılık (hexadecimal) sayı sistemini kullanır.

  • 128 bit

  • Otomatik yapılandırma yapılır.

  • Akıllı cihazların artması sebebiyle IPv4 adreslerinin yetersiz kalmasının önüne geçmek için ortaya çıkmıştır.

İkilik (Binary), Sekizlik (Octal), Onluk (decimal) ve Onaltılık (Hexadecimal) sayı sistemlerini bilmiyorsanız araştırmanızı öneririm. Octal hariç sayı sistemleri için bilgi notlarını yazı içerisinde ekledim.

  • Decimal (onluk) sayı sistemi, günlük hayatta kullandığımız aşina olduğumuz sayı sisteminin ta kendisidir.

  • Binary (ikili) sayı sistemi, 0 ve 1 karakterlerinden oluşur. Elektronik devrelerinde kolay uygulanabilmesi sebebiyle bilgisayar sistemleri binary sayı sistemini kullanır.

  • Hexadecimal (onaltılık) sayı sistemi; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E ve F karakterlerinden oluşur. Bilgisayar sistemlerinde yaygın olarak kullanılır.

IPv4 Adreslerinin Teknik Yapısı

Yukarıda IPv4 adreslerinin decimal sayı sistemini kullandığını ve 32 bit olduğunu belirtmiştim. Şimdi örnek bir IPv4 adresini bit düzeyinde inceleyelim. IPv4 adreslerinin sayısı sınırlı ve az olduğundan, özel ağlar ve çeşitli yöntemler oluşturulmuştur: LAN, WAN, NAT vb.

10.20.67.123

Decimal olarak verilen IPv4 adresini ikili (binary) sayı sistemi üzerinde inceleyelim.

000001010 . 00001010 . 00100011 . 01111011

Binary sistemde her bir karakter 1 bit olduğundan örnekteki karakterleri saydığımızda 32 bit olduğunu ve 8 bitler halinde noktalarla ayrıldığını görebiliyoruz. Bu demek oluyor ki IPv4 adresleri 0.0.0.0 ile 255.255.255.255 arasında olabilir. Aşağıda bazı örnekler verilmiştir. Bunların hangileri IPv4 adresidir hangileri değildir inceleyelim.

100.234.76.254

[Evet] IPv4 Adresidir.

23.256.254.123

[Hayır] IPv4 adresi değildir. Çünkü 256 sayısı 8 bit değildir.

1.1.1.0.1

[Hayır] IPv4 adresi değildir. Çünkü verilen ifade 32 bit değildir.

9.9.9.9

[Evet] IPv4 Adresidir.

IPv6 Adreslerinin Teknik Yapısı

IPv6 adreslerinin hexadecimal sayı sistemini kullandığını ve 128 bit olduğunu belirtmiştim. IPv6 adresindeki her bir karakter 4 bittir ve IPv6 adresleri ":" ile her parça 16 bit olacak şekilde ifade edilir. Şimdi örnek bir IPv6 adresini inceleyelim. IPv6 adreslerinin sayısı fazla ve uzun olduğundan hexadecimal sayı sistemi tercih edilmiş ve bir kullanım formatı belirlenmiştir. IPv6 adresleri çok uzun olduğundan tamamını yazmak çok uzun ve yorucu olabiliyor. Bu sebeple kısa kullanımı bulunmaktadır.

Örnek IPv6 adresi üzerinde inceleyelim: 3b18:2293:0016:0067:0000:0000:fb4c:0618

  • Eğer 16 bitlik kısmın tamamı sıfırlardan oluşuyorsa sıfırların hepsi silinerek yazılabilir. Burada sadece şuna dikkat edilmesi gerekiyor; sadece bir kez "::" şeklinde bir kullanım olabilir. Örnek: 3b18:2293:0016:0067:0000:0000:fb4c:0618 Örnek: 3b18:2293:0016:0067::fb4c:0618

  • Eğer 16 bitlik kısmın başlarında sıfır bulunuyorsa yazılmak zorunda değildir. Örnek: 3b18:2293:0016:0067:0000:0000:fb4c:~~0~~618 Örnek: 3b18:2293:16:67::fb4c:618

Yukarıda verilen IPv6 adresini önce binary sistemde nasıl gözüktüğünü inceleyelim. IPv6 adresi çok uzun olduğundan sadece son 32 bitlik kısmını inceleyeceğiz.

... : 1111101101001100 : 0000011000011000

Şimdi de parça parça inceleyelim.

  • /48 [Küresel Yönlendirme Öneki] IPv6 adresinin ilk 48 bitini ifade eder. İnternet servis sağlayıcılar (ISP) veya Bölgesel İnternet Kayıt Merkezi (RIR) tarafından kurumlara verilen önek bilgisini içermektedir. 48 bitlik kısmın ilk 23 biti RIR'lara ve RIR'lar tarafından 23 bit ile 32 bit arasındaki kısım ISP'lere dağıtılır. ISP'ler ise 48 bitin son 16 bitini kurumlara dağıtır.

  • /64 [Alt Ağ Arabirim Tanıtıcısı] 48 bit ile 64 bit arasındaki 16 bitlik kısım için kurumların kendi içerisinde oluşturduğu alt ağları ifade eder.

  • /128 [Arabirim Tanıtıcısı] 64 bit ile 128 bit arasındaki 64 bitlik kısım için her bir alt ağ içerisindeki istemcilere (cihazlara) verilecek olan IP aralığıdır.

IPv6 öğrendiklerimizden demek oluyor ki IPv6 adresleri :: ile ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff arasında olabilir. Aşağıda bazı örnekler verilmiştir. Bunların hangileri IPv6 adresidir hangileri değildir inceleyelim.

3b18::16::6128

[Hayır] IPv6 adresi değildir. Çünkü "::" şeklinde kullanım bir kez olmalıdır. Fakat burada iki kez kullanılmış.

3b18:2293:16:67::fb4c:618

[Evet] IPv6 adresidir.

3b18:2293:16:67::a4ce:45:fb4c:618

[Hayır] IPv6 adresi değildir. Çünkü verilen ifade 128 bitten fazladır.

::1

[Evet] IPv6 adresidir.

Yazının sonuna geldin! Bu yazıda genel olarak TCP/IP, IPv4 ve IPv6 protokollerinden bahsettim. Umarım yazdıklarım faydalı olmuştur. Saygılarımla,

Last updated