TCP/IP
Last updated
Last updated
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.
İ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.
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, 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.
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, 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, 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 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.
İ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.
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.
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.
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.
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.
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,
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.