Öncelikle Giriş
İnternet nasıl çalışır? Güzel soru, değil mi? İnternet'in gelişimi şu sıralar fena patladı ve görünen o ki televizyonlarda karşımıza çıkan, radyolarda duyduğumuz ve dergilerde gördüğümüz www .com bombardımanından kaçmak imkansız gibi. İnternet artık hayatımızın büyük bir parçası haline geldiğinden, nasıl kullandığını bilmek de önemli.
İnternet'i çalıştıran teknolojiyi ve altında yatan enfrastrüktürü anlatacağım. Çok fazla derinlere inmeye lüzum yok, genel olarak konuları basitçe anlatsam yeter.
Başlayalım.. İnternet Adresleri
İnternet, küresel bir bilgisayar ağı olduğundan; İnternet'e bağlanan her bilgisayarın kendine mahsus bir adresi olması lazım. İnternet adreslerinin formatı sss.sss.sss.sss şeklindedir ve her sss bölümüne 0-256 arası rakamlar olmalıdır. Bu adres, IP adresi olarak da bilinir (IP = İnternet Protokolü).
Aşağıda iki tane İnternet'e bağlanmış bilgisayar göreceksiniz. Biri 1.2.3.4 IP adresli sizin bilgisayarınız, diğeri ise 5.6.7.8 IP adresli başkasının bilgisayarı. İki bilgisayar arasında İnternet, soyut bir nesne olarak temsil edilmiştir (Aşağıda ilerledikçe bu resmin İnternet bölümü açıklanacak ve İnternet'in detayları ortaya çıktıkça bu resim birçok kez yeniden gelişmiş haliyle karşınıza çıkacak).
Eğer İnternete bir İnternet Servis Sağlayıcısı (ISP) aracılığında bağlanıyorsanız, genellikle bu sözleşmeniz zarfı içerisinde sizlere geçici bir IP adresi tanımlanır. Eğer İnternete bir Yerel Alan Ağı (LAN) aracılığı ile bağlanıyorsanız, bilgisayarınızda kalıcı bir IP adresi olabilir veya Dinamik Ana Bilgisayar Yapılandırma Protokolü (DHCP) sunucusundan geçici bir tane temin edilir. Her durumda İnternete bağlı iseniz bilgisayarınızın IP adresi var demektir.
Protokol Yığınları ve Paketleri
Şimdi, bilgisayarın İnternete bağlı ve kendine has bir adresi de var. Peki bu diğer İnternete bağlı bilgisayarla konuşma nasıl gerçekleşir? Bir örnekle izah edeyim. Diyelim ki sizin IP adresiniz 1.2.3.4 ve 5.6.7.8 IP adresli bilgisayara Merhaba 5.6.7.8 mesajını yollamak istiyorsunuz. Belli ki mesajınız bilgisayarınız İnternete ne tür ile bağlı ise onun aracılığı ile iletilecektir. Diyelim ki ISP aracılığı ile evden bağlanıyorsunuz ve bu durumda mesajınız telefon hattı üzerinden iletilmek zorunda. Bu sebeple mesajınız önce alfabetik metinden elektronik sinyallere dönüştürülmeli, İnterner aracılığı ile iletilmeli ve sonra tekrardan alfabetik metne çevrilmelidir. Peki bütün bunlar nasıl gerçekleşir? Protokol yığını kullanarak. Her bilgisayar bu işlemi gerçekleştirmek adına bunlardan birine ihtiyaç duyar ve zaten bilgisayarınızın işletim sisteminde (Windows, Linux, Unix vs.) hali hazırda bulunur. İnternette kullanılan protokol yığını, ana iki iletişim protokolü bunu kullandığından TCP/IP protokol yığını olarak anılır. TCP/IP protokolü şöyledir:
-resim2-
Eğer Merhaba 5.6.7.8 mesajının iletilme yolunu izleyebilseydik şunlarla karşılaşırdık:
- Mesaj, protokol yığınının en başından başlar ve aşağı doğru iner.
- Eğer iletilecek mesaj çok uzunsa her bir katmanda veri yığını gittikçe küçültülebilir. İnternette bu veri yığınları, paketler olarak da bilinir.
- Paketler uygulama katmanı sonrası TCP katmanı ile devam eder. Her pakete atanan bir port numarası vardır. Portları daha sonra açıklayacağım ama şu kadarını söylemek gerekirse çoğu programlar TCP/IP yığınını kullanabilir ve mesajları yollayabilir. Bizim bilmemiz gereken karşı bilgisayarda bu mesajın hangi program tarafından alınacağı çünkü o seçili port dinlenecek.
- TCP katmanından sonra sırada IP katmanı var. Burası varış yeri 5.6.7.8 olan her paketin alındığı yerdir.
- Şimdi, mesaj paketlerimizin bir port numarası ve IP adresi var ve İnternet üzerinden gönderilmeye hazırlar. Donanım katmanı bu işlemler sırasında paketlerin alfabetik metinden elektronik sinyallere dönüştürülmesinden ve telefon hattı üzerinden iletilmesinden sorumludur.
- Telefon hattının diğer ucunda ISPnız, İnternete direk bağlıdır. ISPnın yönlendiricisi (router), her bir paketteki varış adresini inceler ve nereye gönderileceğine karar verir. Genelde paketin sıradaki durağı diğer yönlendirici olur. Yönlendiriciler ve İnternet altyapısı hakkında bilgi daha sonra verilecektir.
- Sonunda paket 5.6.7.8 IP adresli bilgisayara ulaştı. Şimdi işlemler yukarı doğru tersine bir daha işleyecektir.
- Paketler, yığınlar doğrultusunda yukarı doğru gittikçe, gönderen bilgisayarın yığınlara eklediği tüm yönlendirici verileri (IP adresi ve port numarası) paketlerden kaldırılacak.
- Veri, yığınların en üstüne ulaştığında; paketler tekrardan eski orijinal haline çevrilecek yani Merhaba 5.6.7.8 e.
Network Altyapısı
Artık paketlerin bir bilgisayardan başka bir bilgisayara İnternet üzerinden yolculuğunun nasıl olduğunu biliyoruz. Peki tam olarak arada neler var? İnterneti neler meydana getirir. Aşağıdaki fotoğrafa bakalım.
İşte dediğimiz gibi resim1e tekrardan gelişmiş bir halde bir daha rastladık. Telefon ağından İnternet Servis Sağlayıcısına fiziksel bağlantı tahmin etmesi kolay olabilir, lakin bunun ötesinde bazı açıklamalar olabilir.
ISPları müşterileri için modemler havuzu barındırır. Bu, modem havuzundan bir omurgaya veya özel bir hat yönlendiricisine veri akışını kontrol eden bir bilgisayar türü (genellikle bu iş için adanmış bir tane vardır) tarafından yönetilir. Bu kurulum ağa sunucu erişimi olan port sunucusu olarak diye de geçebilir. Fatura ve kullanıl bilgileri de genellikle burada toplanır.
Paketlerin, telefon ağından ve ISPnın yerel ekipmanlarından karşıya ulaştığında; ISPnın omurgasına veya ISPnın bant genişliğinin satın aldığı bir omurgaya yönlendirilirler. Buradan sonra paketler genelde birkaç yönlendiricilere ve birkaç omurgalardan, hatlardan ve varış yerini (5.6.7.8 IP adresli bilgisayar) bulana kadar diğer ağlardan doğru seyahat ederler.
Eğer tracereoute kullanırsanız, hedefinizin varış yerine ulaşması için birçok şeyden geçmesi gerektiğini fark edeceksiniz. Çoğunun ismi sjc2-core1-h2-0-0.atlas.digex.net ve fddi0-0.br4.SJC.globalcenter.net gibi uzundur. Bunlar paketlerin nereye gideceğine karar veren İnternet yönlendiricileridir. Resim4te birkaç yönlendirici gösterilmiştir lakin bunlar tamamının sadece birazı. Resim4 sadece basit bir ağ yapısının gösterimidir. İnternetin tamamı çok daha karışıktır.
İnternet Altyapısı
İnternetin omurgası birbirlerine bağlı birçok büyük ağlardan oluşmuştur. Bu büyük ağlar genelde Ağ Servis Sağlayıcısı (NSP) olarak bilinir. Büyük NSPlardan birkaçı şunlardır: UUNet, CerfNet, IBM, BBN Planet, SprintNet, PSINet ve diğerleri. Bu ağlar paket trafiğini sağlamak amaçlı birbirleriyle eşleşirler. Bu NSPlar, üç tane Ağ Erişim Noktasına (NAP) bağlı olmalı. NAPin paket trafiği bir NSP omurgasından diğer NSP omurgasına atlayabilir. NSPler ayrıca Metropolitan Alan Değişimine (MAE) bağlı olmalılar. MAEler NAPler gibi aynı amaca hizmet ederler lakin özel mülkiyete aittirler. NSPlar orijinal İnternet bağlantı noktaları idi. Hem NAPler hem de MAEler İnternet Değişim Noktası (IX) olarak bilinir. NSPlar ayrıca ISP ve daha küçük bant genişliği sağlayıcıları gibi daha küçük ağlara bant genişliği satarlar. Bu anlattığım ağın hiyerarşik altyapısı aşağıdaki fotoğraftadır.
Bu resim gerçek İnternetin bir parçasının gösterimi değil. Resim5 sadece NSPların birbirlerine ve daha küçük ISPlarına nasıl bağlı olduğunu anlatma amaçlı temsili idi. Fiziksel ağ bileşenlerinin hiçbiri, Resim4'te olduğu gibi, Resim5'te gösterilmemiştir. Bunun nedeni tek bir NSPın omurga altyapısının çizimi kendi başına bile oldukça karmaşık oluşudur. Çoğu NSPlar ağ altyapısının haritasını kendi web sitelerinde yayınlarlar ve kolayca bulunabilir. İnternetin gerçek haritasını çizmek büyüklüğünden, karmaşasından ve sürekli değişen yapısından dolayı imkansız yakındır.
İnternet Yönlendirme Hiyerarşisi
Peki bu paketler İnternetin bir ucundan diğer ucuna yollarını nasıl buluyorlar? İnternete bağlı her bilgisayar, diğer bilgisayarların nerede olduklarını biliyor mu? Paketler yoksa İnternetteki her bilgisayara yayın mı yapıyor? Tüm bu soruların yanıtı hayır. Hiçbir bilgisayar diğerlerinin nerede olduğunu bilmez ve paketler her bilgisayara gitmez. Paketleri varış yerine götürmek için kullanılan bilgiler, İnternet'e bağlı her bir yönlendirici tarafından tutulan yönlendirme tablolarında bulunur.
Yönlendiriciler, paket anahtarlarıdır. Bir yönlendirici genellikle, aralarındaki paketleri yönlendirmek için ağlar arasında bağlıdır. Her yönlendirici alt ağlarını ve kullandığı IP adreslerini bilir. Yönlendiriciler genelde IP adreslerin neyin üstünde olduğunu bilmezler. Örnek olarak resim6 aşağıdadır. Omurgalara bağlı kara kutular yönlendiricilerdir. Daha büyük olan NSP omurgaları en yukarıda NAPlere bağlıdır. Onların altında birtakım alt ağlar ve onların da altında daha çok alt ağlar vardır. En aşağıda bilgisayarlara bağlı iki LAN vardır.
Bir paket yönlendiriciye vardığında; yönlendirici, kaynak bilgisayardaki IP protokol katmanındaki IP adresini inceler. Yönlendirici bunu yönlendirme tablosundan kontrol eder. IP adresini içeren ağ bulunursa, paket o ağa gönderilir. IP adresini içeren ağ bulunmazsa; daha sonra yönlendirici, paketi genelde omurga hiyerarşisine bağlı kalarak bir sonraki yönlendiriciye gönderir. Sıradaki yönlendiricinin paketin nereye gönderileceğini bilmesi umuduyla.. Eğer oradan da sonuç alınamazsa bir yukarı sevk edilir, ta ki NSP omurgasına gelene kadar. Yönlendiriciler NSP omurgasına bağlıdır. NSP omurgası en büyük yönlendirme tablosunu barındırırlar ve buraya kadar gelen paket ille de sonuçlanır çünkü buradan sonra kademe kademe aşağıya doğru doğru şekilde iner ta ki varış yerini bulana kadar.
Alan Adları ve Adres Çözünürlüğü
Peki ya bağlanmak istediğiniz bilgisayarın IP adresini bilmiyorsanız? Ya www.turkhackteam.org gibi bir web sunucusuna erişmek istiyorsanız? Tarayıcınız, bu bilgisayarın İnternet'te nerede olduğunu nasıl biliyor? Tüm bu soruların cevabı Alan Adı Servisinde (DNS) saklı. DNS, bilgisayar adlarını ve bunların ilgili IP adreslerini Internet'te izleyen dağıtılmış bir veritabanıdır.
Çoğu bilgisayarlar DNS veritabanının bir kısmında İnternet yöneticisine bağlılar ve yazılımlar da başkalarının buna erişmesi için varlar. Bu bilgisayarlar DNS sunucuları diye de geçerler. Hiçbir DNS sunucusu bütün veritabanını içermez, sadece alt kümesini içerir. Eğer bir DNS sunucusu başka bir bilgisayar tarafından istenilen alan adına sahip değil ise, DNS sunucusu istek yapan bilgisayarı başka bir DNS sunucusuna yönlendirir.
DNSda IP yönlendirme hiyerarşisine benzer bir hiyerarşi ile yapılandırılmış. Bilgisayar bir ismi sorguluyor ve bu direkt olarak yukarı yönlendiriliyor hiyerarşi çerçevesinde, ta ki DNS sunucusu istenilen alan adını çözümleyip bulana dek. Resim7de hiyerarşinin bir kısmını görmektesiniz. Ağacın en üstünde alan adı kökleri bulunur.
İnternet bağlantısı kurulduğunda (örneğin LAN veya Windowsta Çevirmeli Ağ), birincil olarak bir ikincil olarak ise bir veya daha fazla DNS sunucuları genelde kurulumun bir parçası olarak veriliyor. Bu nedenle her İnternet uygulaması alan adı çözümlemenin düzgün çalışmasına ihtiyaç duyar. Örneğin tarayıcınıza bir web adresi girdiğinizde tarayıcınız, ilk olarak birincil DNS sunucunuza bağlanacak. Girdiğiniz alan adının IP adresini elde ettikten sonra tarayıcınız hedef bilgisayara bağlanacak ve istediğiniz web sayfasını görüntüleyecek.
İnternet Protokolleri Tekrardan Gözden Geçirilmiş
Protokol yığınları ile ilgili bölümde daha önceden de ima edildiği gibi, İnternette kullanılan birçok protokolün varlığı anlaşılıyor. Buna TCP ve IP protokolleri, yönlendirme protokolleri, orta erişim kontrol protokolleri, uygulama seviye protokolleri vs. dahil. Aşağıdaki bölümlerde İnternette bulunan bazı daha önemli ve yaygın kullanılan protokolleri açıklayacağım. Üst düzey seviyedeki protokoller önce tartışılır, ardından daha düşük seviyeli protokoller gelir.
Uygulama Protokolleri:
HTTP (Hiper-Metin Transfer Protokolü) ve WWW (Dünya Çapında Ağ)
İnternette en sık kullanılan servislerden biridir WWW. İnternetin çalışmasını sağlayan uygulama protokolü HTTPdir. Hiper-Metin Biçimlendirme Dili (HTML) ile karıştırılmamalıdır. HTML, web sayfası yazarken kullanılan bir dildir. HTTP ise tarayıcıların sunucularla İnternet üzerinden iletişim kurmalarını sağlayan bir protokoldür. Bu bir uygulama seviye protokolüdür çünkü protokol yığınında TCP katmanının en üstünde bulunur ve belirli uygulamalarda bir başka ile iletişim amaçlı kullanılır. Yani bu uygulamalar tarayıcı ve sunucu arasındadır.
HTTP, metin tabanlı bağlantısız bir protokoldür. İstemciler (tarayıcılar) sunuculara web unsurları (web sayfası, resimler vs.) için istek yollar. Bu istek bir sunucu tarafından sunulduktan sonra İnternet üzerinden istemci ile sunucu arasındaki bağlantı kesilir. Her bir istek için yeni bir bağlantı gerekir. Çoğu protokoller bağlantıya yöneliktir. Bu, İnternet üzerinden iletişim halinde olan iki bilgisayarın bağlantıyı açık tuttuğu anlamına gelir. HTTPde işler öyle değil halbuki. Bir istemci tarafından bir HTTP isteği yapılabilmeden önce sunucuya yeni bir bağlantı yapılmalıdır.
Tarayıcınıza bir URL girdiğinizde şunlar gerçekleşir:
- Eğer girdiğiniz URL alan adı ise tarayıcı ilk olarak alan adı sunucusuna bağlanır ve web sunucusuna eş değer olan IP adresini alır.
- Tarayıcı sunucuya bağlanır ve protokol yığını üzerinden web sayfasını istemek amaçlı bir HTTP isteği yollar.
- Sunucu gelen isteği alır ve istenilen sayfayı kontrol eder. Eğer öyle bir sayfa mevcut ise sunucu bunu yollar. Eğer istenilen sayfa mevcut değil ise HTTP 404 hata mesajını yollar (404 Sayfa Bulunamadı anlamına gelir ki İnterneti kullananların çoğu bunu bilir).
- Tarayıcı sayfayı alır ve bağlantı kapanır.
- Tarayıcı sayfayı inceler ve sayfanın diğer tüm unsurlarının tam olup olmadığına bakar. Kastettiğim resimler, uygulamacıklar (applets) vs.
- İhtiyaç duyulan her bir unsur için tarayıcı ilave bağlantılar kurar ve her bir unsur için birer HTTP isteği yollar.
- Tarayıcı sonunda resimler, uygulamacıklar vs. gibi tüm ihtiyaç duyduğu şeyleri indirmeyi tamamladıktan sonra, pencereye yansıtır.
Uygulama Protokolleri:
SMTP (Basit Posta Aktarım Protokolü) ve Elektronik Posta
Sıklıkla kullanılan bir diğer İnternet servisi de elektronik postadır. E-posta, SMTP adında bir uygulama seviye protokolü kullanır. SMTP ayrıca metin tabanlı bir protokoldür ama HTTPden ziyade SMTP daha çok bağlantıya yöneliktir. SMTP ayriyeten HTTPden çok daha karmaşıktır. SMTPde HTTPden çok daha fazla komutlar ve dikkate alınması gereken hususlar vardır.
E-postanızı okumak için posta istemcinizi açtığınızda şunlar gerçekleşir:
- Posta istemciniz standart mail sunucusuna bir bağlantı açar.
- Posta sunucusu kendini tanımlamak için her zaman ilk mesajı iletecektir.
- İstemci, sunucunun 250 OK mesajı ile cevap vereceği bir SMTP HELO komutu yollayacaktır.
- İstemcinin postayı kontrol edip etmediğine, posta göndermesine vs. bağlı olarak, uygun SMTP komutları sunucuya gönderilecek ve buna göre yanıt verilecektir.
- Bu istek/yanıt alışverişi ta ki istemci SMTP QUIT komutunu gönderene dek devam edecek. Sunucu kapanacak ve bağlantıyı sonlandıracak.
TCP (Geçiş Kontrol Protokolü)
Protokol yığınında uygulama katmanının altındaki katmandır TCP katmanı. Uygulama, bir başka bilgisayarla İnternet üzerinden bağlantı kurduğunda yığınlarda (belirli bir uygulama katman protokolü kullanarak) TCP katmanına geçer. TCP uygulama protokollerini varış bilgisayarındaki doğru uygulamaya yönlendirmeden sorumludur. Bu işlemin başarı ile gerçekleşmesi için port numaraları kullanılır. Portlar her bilgisayardaki ayrı kanallar olarak düşünülebilir. Örneğin e-posta yazarken webde sörf edebilirsin. Bunun nedeni bu farklı iki uygulamanın (tarayıcı ve posta istemcisi) farklı portlar kullanmasıdır. Bilgisayara bir paket vardığında protokol yığınına gider, TCP katmanı port numarasına bağlı olarak hangi uygulamanın bunu alması gerektiğine karar verir.
TCP işleyişinde şunlar gerçekleşir:
- TCP katmanı yukarıdan uygulama katmanı protokol verisi aldığında, yönetilebilir yığın parçalarına ayırır. Ve her bir yığına belirli TCP bilgileri ile TCP başlığını ekler. TCP başlığındaki bu bilgiler veriyi göndermekte ihtiyaç duyulan uygulama port numarasını içerir.
- TCP katmanı, altındaki IP katmanından paketi aldığında, TCP katmanı paketteki TCP başlık verilerini kaldırır, eğer gerekli ise bazı verileri yeniden yapılandırır ve TCP başlığında geçen port numarasını kullanan doğru uygulamaya veri yollanır.
TCP protokol yığınında doğru uygulamaya veriyi yönlendirme işlemi böyledir.
TCP, metinsel bir protokol değildir. TCP bağlantı yönlü, gayet sağlam bir çoklu yayın servisidir. Bağlantı yönlü, TCP kullanan iki uygulamanın veri alışveriş öncesi bağlantı kurulmasının şart olması demektir. TCP gayet sağlamdır çünkü alınan her bir paket teslimatın gönderildiğine dair onay adına tasdik bildirmesindendir. TCPde ayrıca alınan verinin başlığında hata kontrol sağlaması da vardır. TCP başlığı şöyle gözükür:
TCP başlığında IP adresi için herhangi bir yerin olmadığını unutmayın. Çünkü TCP, IP adresi ile alakalı hiçbirşey bilmez. TCPnün işi uygulamadan uygulamaya eksiksiz bir şekilde uygulama seviye verileri almaktır. Bilgisayardan bilgisayara veri almak IPnün işidir.
-resim9-
IP (İnternet Protokolü)
TCPnden ziyade IP, çok da güvenilir değildir. Bağlantısız protokoldür. IP paketin varış yerine gelip gelmediğini önemsemez. IP, bağlantı ve port numaraları hakkında da bilgi sahibi değildir. IPnün işi sadece paketleri diğer bilgisayarlara göndermek ve yönlendirmek. IP paketleri bağımsız varlıklardır ve bozulabilir veya hiç gelmeyebilir de. Bozulmaması ve doğru yere başarıyla varmasını sağlaması gereken TCPdür. IPnün TCP ile ortak olan tek yönü, veriyi alışı ve TCP verisine kendi IP başlık bilgisini ekleyişi. IP başlığı şöyle gözükür:
Yukarıda da görüldüğü üzere IP başlığında gönderen ve alan bilgisayarların IP adresleri mevcut. Aşağıdaki resimde de uygulama, TCP ve IP katmanlarını geçen bir paketin nasıl göründüğünü göreceksiniz. IP başlığı eklenmiş ve paket İnternet aracılığı ile iletilmiş.
Moderatör tarafında düzenlendi: