Konu Anlatımı
Geliştirme Ortamı ve Zaman Senkronizasyonu Neden Birlikte Hazırlanır?
Bir bilgisayarda çalışan C# uygulamasının doğruluğu yalnızca koda bağlı değildir; uygulamanın çalıştığı işletim sistemi, derleyici, çalışma zamanı ve ağ yapılandırması da sonucu belirler. Bilişim laboratuvarına yeni kurulan bir istasyonda önce.NET çalışma ortamı kurulur, ardından istasyon laboratuvar ağına IP adresiyle tanımlanır ve sistemin saati ağ zaman sunucusuyla eşitlenir. Bu üç hazırlık tamamlanmadan yazılan kod derlenemez; derlense bile ağ üzerindeki diğer cihazlarla doğru iletişim kuramaz.
1. Geliştirme Ortamının Bileşenleri
C# ile çalışan bir ortam dört temel parçadan oluşur: kodun yazıldığı editör, kodu ara koda çeviren derleyici, derlenmiş kodu çalıştıran çalışma zamanı ve proje yapısını dosyalarda tutan proje sistemi. Öğrenci düzeyinde Visual Studio veya Visual Studio Code editörü,.NET SDK ise derleyici ile çalışma zamanını birlikte getirir. Her bileşenin görevi farklıdır; bileşenler karıştırıldığında alınan hata mesajı yanlış yorumlanır.
| Bileşen | Görevi | Örnek |
|---|
| Editör | Kod yazma, düzenleme ve hata ayıklama | Visual Studio Code |
| Derleyici | Kaynak kodu ara koda çevirir, sözdizimini denetler | .NET SDK içindeki csc aracı |
| Çalışma zamanı | Derlenmiş kodu çalıştırır, belleği ve çöp toplayıcıyı yönetir | .NET çalışma zamanı |
| Proje sistemi | Proje yapısını ve bağımlılıkları dosyalarda tutar | .csproj proje ve.sln çözüm dosyası |
| Çıktı klasörleri | Derlenmiş dosyaları saklar, her derlemede yenilenir | bin ve obj klasörleri |
Komut satırı bu bileşenleri görünür kılar. Boş bir klasörde dotnet new console komutu projeyi oluşturur, dotnet build sözdizimi denetleyip derler, dotnet run ise uygulamayı çalıştırır. Bir hata çıktığında derleyici hangi dosya ve satırda durduğunu bildirir; bu bilgi ekrandaki uyarıyı çözümlemenin ilk adımıdır.
2. Çalışma Ortamında Ağ Yapılandırması
İstasyonun laboratuvar ağına alınması için dört bilgi girilir: IP adresi (örneğin 192.168.1.20), ağ maskesi (255.255.255.0), varsayılan ağ geçidi (192.168.1.1) ve DNS sunucusu (192.168.1.10). Bu dört bilgiden biri eksik olursa yalnızca yerel ayla iletişim kurulabilir. Kablolanma tarafında istasyon RJ-45 konnektörlü Cat5e kabloyla switch portuna bağlanır; bir ağdaki sabit kablo parçası 100 metreyi aşamaz, sınır 90 metre sabit kablo ve 10 metre patch kablosudur.
Teşhis komut satırında sırayla çalıştırılır: ipconfig /all yapılandırmayı, ping 127.0.0.1 yerel yığını, ping 192.168.1.1 ağ geçidini, nslookup ad çözümlemesini, tracert ise paketin izlediği yolu gösterir. Windows istasyonda Komut İstemci, Linux istasyonda terminal bu komutların tamamını verir; komutların çıktısı sorunun hangi katmanda olduğunu belirler.
3. NTP ile Zaman Senkronizasyonu
NTP (Ağ Zaman Protokolü), cihaz saatlerini referans zaman kaynaklarıyla eşitleyen ve 123 numaralı UDP portunu kullanan uygulama katmanı protokolüdür. NTP saat dilimini değil, saatin kendisini düzeltir; zaman dilimi ayrı bir işletim sistemi ayarıdır. Protokolde katman (stratum) kavramı bulunur: stratum 0 doğrudan atomik saat gibi bir zaman kaynağıdır, stratum 1 sunucusu bu kaynağa doğrudan bağlıdır, istemciler ise genellikle stratum 2 ve üzeri sunuculardan zaman alır.
Zaman eşitliği teknik olarak zorunludur. Günlük (log) kayıtları, dosya zaman damgaları, sertifika doğrulaması ve yedekleme işleri doğru sıralanmazsa hatalı raporlanır; örneğin kayıtları 5 dakika geriden giden bir sunucuda olay sırası ters anlaşılır. Windows istasyonda w32tm /query /status komutu kaynak ile sapmayı gösterir, w32tm /resync yeniden eşitleme yapar; Linux tarafında timedatectl status benzer bilgiyi verir. Genel kullanımda pool.ntp.org havuz adresi, ülkemizde tr.pool.ntp.org tercih edilir.
4. Adım Adım: İlk Konsol Uygulamasının Derlenmesi
İlk uygulama beş adımda tamamlanır; adımlar atlandığında çıkan uyarı çoğu zaman sorunun kendisini değil, eksik adımı işaret eder.
- Boş bir klasörde dotnet new console komutuyla proje oluşturulur.
- Program.cs dosyası editörde açılır ve ekrana çıktı yazan kod eklenir.
- dotnet build ile derleme yapılır, varsa ilk hata satır numarasıyla düzeltilir.
- dotnet run ile uygulama çalıştırılır ve konsol çıktısı kontrol edilir.
- w32tm /resync ile sistemin saati eşitlenir ve log kayıtlarının zaman damgası sınanır.
5. Sınav ve Saha Odaklı Notlar
Sınavlarda NTP portu, DHCP ve DNS portlarıyla karıştırılır. Hatırlamanın en güvenli yolu protokolle bağ kurmaktır: zaman eşitliği UDP 123, ad çözümleme DNS 53, adres dağıtımı DHCP 67 ve 68 portlarını kullanır. Benzer biçimde derleme hatası ile çalışma zamanı hatası ayrımı sorulur; ilki kodun sözdizimindedir ve derlemeyi durdurur, ikincisi program çalışırken veriye ve anlık duruma bağlıdır.
Sahada en sık karşılaşılan durum, IP yapılandırmasının yarım bırakılmasıdır. Adres ve maskesi girilmiş ama ağ geçidi yazılmamış bir istasyon laboratuvar içindeki diğer bilgisayarlarla konuşur, dış servislere ise çıkamaz. Bu nedenle ağ arızası teşhisinde yapılandırma dört bilgiyle birlikte görülür, ardından sıralı ping testiyle doğrulanır.
Ne Öğreneceğiz
Geliştirme ortamının bileşenleri, komut satırı ile proje adımları, laboratuvar ağının yapılandırılması ve NTP zaman senkronizasyonunu anlatan giriş konusudur. Bu konuda ögrenme çıktıları:
- C# uygulamalarının çalıştığı editör, derleyici, çalışma zamanı ve proje sistemi bileşenlerini ayırt eder.
- Komut satırı üzerinden.NET SDK ile konsol uygulaması oluşturur, derler ve çalıştırır.
- Laboratuvar istasyonuna IP adresi, ağ maskesi, ağ geçidi ve DNS yapılandırmasını doğru girer.
- NTP protokolünün portunu, katman (stratum) kavramını ve zaman eşitleme komutlarını açıklar.
- Derleme hatası ile çalışma zamanı hatasını ayrıştırıp sıralı teşhis adımlarını uygular.
Ön Bilgi
Bu konuya başlamadan önce temel kavram ve ön koşulları kavramanız yardımcı olacaktır. Konunun çerçevesinde şu kavramlar dikkat ister:
- .cs kaynak dosyanın,.csproj proje dosyasının,.sln çözüm dosyasının uzantısıdır; nihai çıktı bin klasörüne düşer.
- NTP saati eşitler, zaman dilimini değil; UTC+3 ayarı işletim sistemi düzeyinde ayrı yapılır.
- Aynı IP adresi iki cihaza verilirse adres çakışması oluşur ve erişim rastgele kopar.
- bin ve obj klasörleri her derlemede yeniden üretilir, sürüm kontrol deposuna eklenmez.
- Ağ geçidi yazılmadan yalnızca yerel ağla, yerel ağ geçidi tanımlı olmadan dış ağla iletişim kurulamaz.
- w32tm /resync komutu zaman eşitlemeyi yeniden başlatır; sapmanın kaynağı w32tm /query /status ile görülür.
Basit Örnek ve Günlük Yaşam
Günlük yaşamda ve mesleki bağlamda bir uygulama:
Soru: Boş bir laboratuvar istasyonunda.NET SDK kuruludur. İlk konsol uygulamasını oluşturup çalıştırmak için izlenecek komut sırası nedir?
- Adım 1: Komut isteminde dotnet new console komutuyla proje oluşturulur.
- Adım 2: dotnet build ile sözdizimi denetlenir, çıkan ilk hata düzeltilir.
- Adım 3: dotnet run ile uygulama çalıştırılır ve konsol çıktısı okunur.
- Adım 4: Çıktı dosyalarının bin klasörüne, ara dosyaların obj klasörüne yazıldığı doğrulanır.
Sonuç/cevap: Cevap: dotnet new console, dotnet build ve dotnet run sırası uygulamayı oluşturur, derler ve çalıştırır; nihai çıktı bin klasöründe bulunur.
İleri Örnek
Daha ileri bir uygulama:
Soru: 192.168.10.64/26 ağı için ağ adresini, yayın adresini ve kullanılabilir adres sayısını bulunuz.
- Adım 1: /26 maskesi 6 bitlik blok verir, 2 üzeri 6 = 64 adres oluşur, maske 255.255.255.192 yazılır.
- Adım 2: 64 ile başlayan blok 64 ile 127 arasında kalanır, bu yüzden ağ adresi 192.168.10.64 olur.
- Adım 3: Bloğun son adresi 192.168.10.127 yayın adresidir.
- Adım 4: 64 − 2 = 62 kullanılabilir adres bulunur; ilk 192.168.10.65, son 192.168.10.126 olur.
Sonuç/cevap: Cevap: Ağ adresi 192.168.10.64, yayın adresi 192.168.10.127, kullanılabilir adres sayısı 62'dir.
Karşılaştırma Tablosu
| Kavram | Açıklama |
|---|
| .cs kaynak dosyanın,.csproj proje dosya | .cs kaynak dosyanın,.csproj proje dosyasının,.sln çözüm dosyasının uzantısıdır; nihai çıktı bin klasörüne düşer. |
| NTP saati eşitler, zaman dilimini değil; | NTP saati eşitler, zaman dilimini değil; UTC+3 ayarı işletim sistemi düzeyinde ayrı yapılır. |
| Aynı IP adresi iki cihaza verilirse adre | Aynı IP adresi iki cihaza verilirse adres çakışması oluşur ve erişim rastgele kopar. |
| bin ve obj klasörleri her derlemede yeni | bin ve obj klasörleri her derlemede yeniden üretilir, sürüm kontrol deposuna eklenmez. |
| Ağ geçidi yazılmadan yalnızca yerel ağla | Ağ geçidi yazılmadan yalnızca yerel ağla, yerel ağ geçidi tanımlı olmadan dış ağla iletişim kurulamaz. |
| w32tm /resync komutu zaman eşitlemeyi ye | w32tm /resync komutu zaman eşitlemeyi yeniden başlatır; sapmanın kaynağı w32tm /query /status ile görülür. |
Sık Yapılan Hatalar
Saat ayarını elle kaydırmak: Ekran saatini geri almak NTP senkronizasyonunu düzeltmez, bir sonraki eşitlemede sapma yeniden geri gelir.
Ağ geçidi yazılmadan dış ağ testi yapmak: Adres ve maskeli olsa bile varsayılan ağ geçidi boşsa yalnızca yerel ağ erişilebilir kalır.
127.0.0.1 ping başarısızlığını kablo arızası sanmak: Bu adres bilgisayarın kendini sınar; başarısızlık yerel yığın sorununu gösterir, kabloyu değil.
bin klasöründeki dosyayı düzenlemek: Bu dosyalar her derlemede yeniden üretilir, elle yapılan değişiklik bir sonraki derlemede kaybolur.
Derleme hatası ile çalışma zamanı hatasını aynı sanmak: Derleme hatası söz dizimindedir ve derlemeyi durdurur, çalışma zamanı hatası ise çalışırken veriye bağlıdır.
Özet
Bu konuda geliştirme ortamının bileşenleri, laboratuvar istasyonunun ağ yapılandırması ve NTP zaman senkronizasyonu ele alındı..NET SDK ile konsol uygulamasının oluşturulması, derlenmesi ve çalıştırılması adım adım görüldü; IP, ağ geçidi ve DNS tanımlarının sahadaki yeri teşhis komutlarıyla sınandı. 123/UDP portlu NTP’nin kayıt tutarlılığındaki rolü ve saat kaymalarının giderilme sırası kavrandı.
Kendini Dene
Soru: Bilişim laboratuvarına yeni kurulan bir istasyon ağa bağlanamıyor. ipconfig /all, ping 127.0.0.1, ping ağ geçidi, ping dış adres, nslookup ve tracert komutlarını kullanarak sıralı bir teşhis kontrol listesi hazırla; her adımda beklenen sonucu ve anormallik hâlinde denetlenecek yapılandırmayı açıkla.
Örnek cevap: Puanlama anahtarı: Komutlar doğru sırada ve doğru yazılışla listelenir, her adımda beklenen normal sonuç belirtilir (5 puan); 127.0.0.1 yanıtsızsa yerel yığın ve adaptör, ağ geçidi yanıtsızsa IP/kablo, dış adres yanıtsızsa yönlendirme, nslookup başarısızsa DNS denetlenir (6 puan); Sonuçlar tablo hâlinde, adres ve arayüz bilgileriyle birlikte anlaşılır biçimde yazılır (4 puan).