IP (Internet Protokol)
Internet üzerinde haberleşmemizi sağlamak amacıyla network paketlerinin verilen 2 nokta arasında belirli bir formatta taşınması gerekmektedir. Alıcı ve gönderici bilgiler, verilerin bütünlüğünün korunması, hatasız yollanması gibi koşulların gerçeklenmesi belirli kuralların tanınmasını gerekli kılmıştır.
Günümüzde IP adresler olarak tanımlan çevremizde dış dünyayla iletişim halinde olan neredeyse tüm cihazlarda IP adresler denen bilgiler tanımlanmaktadır. Bu sayede cihazların bağlı oldukları ortamda diğer cihazlarla haberleşebilmesi sağlanmaktadır. IP adreslerini tanımlanmasında farklı versiyonlar bulunmaktadır. Bu versiyonlar cihaz sayısının artması sonucu varyasyonları arttırmaya yönelik olarak doğmuştur. Şuan kullanılmakta olan IPv4 yavaş yavaşyerini IPv6ya bırakmaktadır. Bunun dışında güvenlik ve sağlıklı bir network oluşturulmasında gerekli olmakta olan subnetworklerin meydana getirmesinde de avantajlar sağlamaktadır.
IP adreslerin ağ üzerinde LAN (Local Area Netwok) veya WAN (Wide Area Network) bilgi aktarılması sırasından temel olarak iki protokolü kullanmaktadır. Bunlar TCP (Transmission Control Protokol)ve UDP (User Datagram Protokol) olarak adlandırılmaktadır.
Network Paketleri
Network paketleri kullanılmakta olan protokolleri ve veri transferini sağlıklı gerçekleştirmek amacıyla belirli formatlarda olmaktadır. Gönderici ve alıcıya ait belirli bilgilerin de ağ üzerinde iletişimi sağlayan cihazlarca bilinmesi gerekmektedir. Bu nedenle ağın farklı katmanlarında raw veriye belirli bilgiler eklenerek paketimiz gittikçe farklı bilgilerce kapsüllenerek iletim paketi halini almakta ve bu paket yapısını tanımakta olan protokollerce çözümlenerek iletilmektedir.
DNS (Domain Name Service)
Günümüzde interneti fazlasıyla kullanmakta ve bunu gerçeklerken internet sitelerini ve buradaki diğer kaynakları dilsel değişkenlerle tanımlama ve isimlendirme ihtiyacı duymaktayız ancak daha öncede bahsettiğimiz üzere makineler arasındaki iletişim rakamlar ve belli adresler cinsinden gerçekleştirilmektedir. Burada isimler ve rakamlar arasındaki ilişkinin kurulması için sağlanmış olan yapı burada kısaca bilgi verilmeye çalışılacak DNS sistemidir.
DNS yapısında internet üzerindeki kaynakların hiyerarşik bir şekilde düzenlenmesi karmaşayı azaltmakta ve kontrolün sağlamlaştırılmasını sağlamıştır. Burada ağaç yapısına benzer bir yapı içerisinde saklanmaktadır. DNS bilgileri yani isimsel ve rakamsal eşleştirmelerde bir cihaz üzerinde düzenlenmiş olan veri tabanından faydalanılır ve bu cihaz artık bizim DNS sunucumuz olmaktadır. Bu sayede adres çubuğumuza yazdığımız www.vypro.org veya bu sitenin barınmakta olduğu sunucunun IP adresi eşleştirilebilmektedir.
Bu eşleşmeyi bulabilmek için Windows command prompt yardımıylada öğrenmemiz mümkündür. Nslookup komutu sayesinde URL veya IP girerek eşleşmeyi yapmak mümkündür.
Burada üst seviyede top level olarak adlandırılan domain adları bulunmaktadır. Bunlar
| Domain | Description |
| .com | Commercial organizations |
| .edu | Educational institutions |
| .mil | U.S. military sites |
| .gov | U.S. government organizations |
| .net | Internet Service Providers (ISPs) |
| .org | Nonprofit organizations |
| .us | Other U.S. organizations (such as local governments) |
| .ca | Canadian organizations |
| .de | German organizations |
| (other countries) | Organizations from other countries |
| .aero | Corporations in the air transport industry |
| .biz | Generic businesses |
| .coop | Cooperatives |
| .info | Unrestricted use |
| .museum | Museums |
| .name | Individuals |
| .pro | Professionals (doctors, lawyers, and so on) |
DNS konfigürasyonumuzu oluştururken uzaktaki bir sunucu üzerinden çalışılabildiği gibi şu günlerde sıklıkla kullanılan “hosts” dosyası yardımıyla da sağlanmaktadır. Bundan önce DNS tanımlanması olana kadar sistemcilerin gecikmelerinden sakınmak için kullandığımız hosts dosyalarını artık yasaklı olan sitelere erişmekte kullanmaktayız. Burada local olarak sağlanan bilgi ile ad çözümlemesi yapılmaktadır.
%:\WINDOWS\SYSTEM32\DRIVERS\ETC dizininde bulunan hosts dosyası değiştirilerek gerekli eşleme yapılabilir.
Soket programlama denince ilk olarak temel kavramlardan bahsetmek ve bu kavramların kullanılarak soket programlamanın temelleri anlatılmaya çalışılacaktır.
Network Programlamanın temelleri Unix temelli olarak atılmış ve geliştirilen APIler yardımıyla kolaylaştırılmıştır. Winsock kütüpheneleri Windows için network programlama için yazılmış olan kütüphanelerdir. Bunların temel alınmasıyla Microsoftta System.Net.Sockets ad uzayı altında tanımlı sınıflar ve metodlar kullanılarak yapılmaktadır. Biraz buradaki temellerden bahsetmekte yarar var.
Bir bağlantı kurulmasından önce gerekli aşamalar temel olarak aynıdır. Bağlanılacak bir soket, bağlantı türü belirtilir. Ve daha sonra bu sokete bind edilerek aradaki ilişki kurulur. Gerisi verinin gönderilmesi yoluyla olur. Burada verinin kayıpsız olarak yollanması veya acknowledge alınarak bunun sağlanmasının yanında verinin doğrudan gönderilerek bir geri bildirim alınmadığı durumlarda söz konusudur.
Unixten gelen bir gelenek olan her şeyin dosya olması veri akışlarının bir kanal üzerinden, bizim I/O diyeceğimiz şey ile gerçekleşmesidir. Soketlerde aslında birer dosyadır ve belirli rakamlarla ilişkilendirilmektedirler. Aslında bizim yaptığımız şey networkle alakalı dosyaları ki bunların isimlerinin soket numarası diyeceğimiz sayılarla isimlendirilmesi ve bu dosyaların üzerine yazma ve okuma yapılmasıdır. Burada gerçekleşen veri akışının daha güvenli olması için ise aslında kullanılan sistem winsock ve benzeri kütüphaneler ile iletişimin daha denetimli yapılmasının sağlanmasıdır.
Protokoller ve bunların gereklilikleri standartlaşmayı getirmiş ve belli soketler belirli işlemlerle anılır olmuşlardır. Bu soketlerin bu işlemlere veya oradan geçmesi beklenen verilere açıldığı söylenebilir.
| Port | Description |
| 7 | Echo |
| 13 | Daytime |
| 17 | Quote of the day |
| 20 | FTP (data channel) |
| 21 | FTP (control channel) |
| 22 | SSH |
| 23 | Telnet |
| 25 | SMTP |
| 37 | Time |
| 80 | HTTP |
| 110 | POP3 |
| 119 | NNTP |
| 123 | Network Time Protocol (NTP) |
| 137 | NETBIOS name service |
| 138 | NETBIOS datagram service |
| 143 | Internet Message Access Protocol (IMAP) |
| 389 | Lightweight Directory Access Protocol (LDAP) |
| 443 | Secure HTTP (HTTPS) |
| 993 | Secure IMAP |
| 995 | Secure POP3 |
Endpoint kavramıyla anlatılmak istenen aslında ulaşılmaya çalışılan bir IP adresi ve soket kombinasyonu olarak ifade edilir. Yazmış olduğumuz bir uygulama 160.75.5.222 IP adresinde çalışmaktadır ancak diğer makinelerdeki uygulamalarla hangi port üzerinde haberleştiği önemlidir. Mesela en güzel uygulama olarak web browserlarımızı verebiliriz. Web browserlarımız bağlandıkları sunuculardaki HTTP ile sağlanan bağlantı ve kullanılan 80 portu ile ifade edilebilir. Veya yazmış olduğumuz gir haberleşme uygulamasının 1234 portunu kullanması gibi.
Endpoint bu nedenle tekrar edecek olursak bilginin aktarılmakta olduğu cihazlara ait IP adresi ve port ikilisinden oluşmaktadır.
TCP hakkında konuşacağımızda en önemli şeyin connection-oriented bir yapıda olduğudur. Burada bağlantının kurulması iki adet endpoint arasında güvenli bir veri transferi ve bilgi aktarımı yapılmasını sağlamaktadır. TCP programlamada veri kaybından çekinmeye gerek yoktur. Burada buffer sayesinde gelen verilerin saklanması ve kullanılana kadar depolanması söz konusudur.
UDP programlama ise TCP de var olan güvenli veri aktarımı koşulunun var olmadığı verinin belirli bir acknwledge alınmadan aktarılması koşuluyla aktarıldığı bir iletişim şeklidir. Bu iletişim protokolünde verinin aktarıldıktan sonra doğru olarak alınıp alınmaması sorun olmamaktadır. Bu amaçla belirlenen uygulamalarda video streaming uygulamaları ve realtime uygulama olması avantajından faydalanılması amacıyla kullanılmaktadır.
