Linux Acemi


LINUX
Linux ile ses ve görüntü
LINUX'A GEÇMEK İÇİN MP3 ÇALICISI, televizyon kartı sürücüsü, mikser ve diğer çokluortam ürünlerini bekleyenler için bu programları oturup derledik, sizler için Internet'ten indirerek denedik. Ekran görüntüleri de cabası. Linux'un ses ve görüntü özelliklerinden faydalanmak isterseniz, buyrun bu ayki yazımıza. Her konu başlığı zaten kendisini anlattığı için açıklama yazmadık. Burada bahsi geçen tüm programlar aynı zamanda Linuxberg (linuxberg.tucows.com) adresinde de var. Linuxberg'in yansısının linuxberg.ankara.edu.tr olduğunu da satır arasında belirtelim.

l KJukeBox
Sürüm: 0.3.2 kararlı
Boyu: 500Kb
Lisansı: GNU GPL
Web: http://third.informatik.uni-kl.de/~rainer/KJukeBox/index.html
Red Hat ve SuSE için RPM paketleri bulunuyor.
Kjukebox, K masaüstü için geliştirilen bir MP3 çalıcı. Aynı anda iki şarkıyı birden çalabilme özelliği olduğu için evini disko haline getirip annesini çıldırtmak isteyenlere yönelik. Bir şarkı biterken diğeri başlayabiliyor. Kjukebox bir kaç şarkı listesi oluşturup her birisini ayrı ayrı çalabilme özelliğine de sahip.
l Kmp3
 
Sürüm: Kararlı 0.2.2 / Geliştirme 1.0-pre3
Boyu: 323.6 KB / 790.8 KB
Lisans: GNU GPL
Web: http://www.kmp3.org
Çalıştırılabilir, kaynak kodu, RPM, PPC formatlarında
kmp3, kmidi'ye alışkın olanların rahatlıkla kullanabilecekleri bir mp3 çalıcısı. Klasik bir mp3 çalıcısından beklediğiniz hemen her özellik var. Küçük ve zahmetsiz.
l GQmpeg
Sürüm: Kararlı 0.6.3
Boyu: 136 KB
Lisans: GNU GPL
Web: http://www.geocities.com/SiliconValley/Haven/5235/mpeg-over.html
Çalıştırılabilir, RPM, Debian deb ve kaynak kodu halinde
GNOME altında kullanmak için ideal bir Mpeg çalıcısı. Winamp benzeri bir "skin" desteği de var.
l Xmms
Sürüm: Kararlı 0.9.5.1
Boyut: 620 KB
Lisans: GNU GPL
Web: http://www.xmms.org/
RPM, kaynak kodu ve derlenmiş halde
Yine Winamp benzeri, skin destekli bir başka mp3 programı. (Bu arada skin yerine iyi bir önerisi olan var mı?). MPEG 1,2 ve 3. seviye tüm dosyaları, WAV, AU dosyalarını çalabiliyor.
l Electric Eyes
Sürüm: Kararlı 0.3.11
Boyut: 390 KB
Lisansı: GNU GPL
Web: ftp://ftp.gnome.org/pub/GNOME/sources/ee/
RPM, DEB, kaynak kodlu ve derlenmiş halde
Electric Eyes, kısmen Red Hat tarafından geliştirilen bir ürün. Bildiğiniz hemen hemen tüm formatlardaki resimleri kolayca gösterebiliyor. Arayüzü de oldukça kullanışlı.
l AC3D
Sürüm: Kararlı 2.0
Boyut: 1.3 MB
Sürüm: Shareware
Web: http://www.comp.lancs.ac.uk/computing/users/andy/ac3d.html
RPM ve derlenmiş hali var.
AC3D, Linux için geliştirilen popüler 3 boyutlu obje oluşturma ve tarama (render) programıdır. Linux yanında Windows 95/98/NT ve SGI altında da çalışabiliyor. Kullanımı çok kolay ve dakikalar içinde 3D obje üretmek mümkün.
l blender
Sürüm: Kararlı 1.70
Boyutu: 1.4 MB
Lisans: Ticari olmayan kullanımlar için ücretsiz
Web: http://www.blender.nl/
libc5 ve glibc dinamik kütüphaneleriyle derlenmiş halde.
Blender, Linux altında çalışan en gelişmiş modelleme, animasyon ve rendering programı olarak oldukça ün yaptı. En güzel özelliği, sadece saniyeler içinde kurulabilmesi ve hiç bir ayar gerektirmeden çalışmaya başlaması.
l gimp 
Sürüm: Kararlı 1.0.4 / Geliştirme: 1.1.13
Boyut: 3.8 MB / 8.0 MB
Lisans: GNU GPL
Web: http://www.gimp.org
DEB, RPM ve derlenmiş halde bulunabiliyor
GIMP, Linux altındaki en gelişmiş GNU çizim programıdır. Photoshop ile yapacağınız pek çok çizim işlemi gimp ile gerçekleştirilebilir.
l compupic
Sürüm: Kararlı 4.6
Boyut: 1.7 MB
Lisans: Ticari kullanımlar için ücretsiz
Web: http://linux.compupic.com
RPM, DEB ve derlenmiş halde dağıtılıyor.
Compupic, interaktif resim görüntüleme programıdır. Compupic ile 30'dan fazla grafik formatını gösterebilir, birbirine çevirebilir ve kataloglayabilirsiniz.
l aRts
Sürüm: Kararlı 0.3.4
Boyut: 650 KB
Lisans: GNU GPL
Web: http://arts.linuxbox.com/
RPM halde geliyor
aRts, modüler analog sentezleyiciyi tam olarak simüle eden bir program.
l Licq
Sürüm: Stable 0.70.1
Boyut: 390 KB
Lisans: GNU GPL
Web: http://www.licq.org/
RPM ve derlenmiş halde bulunuyor.
Licq, mesaj alma ve gönderme, chat, dosya transferi, kullanıcının durumu gibi temel özellikleri barındıran bir Linux ICQ programıdır. Ayrıca skin desteği de mevcut.
l ksendfax
Sürüm: Stable 0.3.2
Boyut: 150 KB
Lisans: GNU GPL
Web: http://www.sad.it/~jug/ksendfax
RPM, kaynak kodu ve derlenmiş halde var.
Ksendfax, faks mesajlarını mgetty+sendfax paketi üzerinden göndermek için kullanılabilir. Halihazırda bir faks paketiniz var ise ksendfax bu paketi kullanarak kolayca bir grafik arayüzü altında faks göndermenizi sağlar.
l kvirc
Sürüm: Kararlı 1.0
Boyut: 1.650 MB
Lisans: GNU GPL
Web: http://www.kvirc.org
RPM ve derlenmiş halde bulunuyor.
Kvirc, hemen hemen tüm Linux kullanıcılarının ağız birliği etmişçesine birinci seçtikleri irc programı. Gerçekten kullanımı çok kolay, renk ve yazıtipi ayarlamaları da programa ayrı bir hava veriyor.
Bu program harddiskinizdeki tüm partitionları (linux'tan FAT32, NTFS4'ten NTFS5'e kadar) silmeye yarıyor. Bunu nerede mi kullanacaksınız? 3 gün önce haber guruplarını kontrol ederken bir arkadaşın Windows 2000'i kurduktan sonra bazı sorunlarla karşılaştığını okudum. Alican NickName'li bu arkadaşımızın sorununu sizlere aynen aktarıyorum.

"merhaba arkadaşlar benim sorunum;
windows2000 eng. kullanıyorum.
önce seagate 8.4.gb harddiskim var.
önce disk management'te upgrade to dynamic'i tıkladım. ve bu işlem tamamlandı. sonra bu durum hoşuma gitmedi ve bunu eski haline almaya çalıştım ama bir türlü o da olmadı. sonra fdisk yamaya karar verdim, ve partitionları sildim
tabi hepsini silemedim,. ve formatladım, ama ikinci partition şimdi gözükmüyor, windows2000de de bir şey yapamadım. Partition Magic 5.1 yükledim siteme, bununla daha bir şey yapmadım.

yani şu an diskimin sadece C:\ bölümü gözüküyor, dynamic sorunlu gözüküyor.

bütün bunlardan nasıl kurtarırım diski ve eski haline döndürebilirim??

Lütfen yardım!!!!!"
    Ben de ona beklemesini ve siteye birkaç gün içinde bir program koyacağımızı ve bu program ile sorununa çözüm getirebileceğini söylemiştim. Sonunda oldu ama geç oldu... Söz verdiğim tarihten 2-3 gün geçiktim. Bundan dolayı kendisinden özür diliyorum. Neyse... Şimdi de zip dosyası olarak sayfanın sonundaki linkten çekebileceğiniz programın nasıl kullanılacağını sizlere anlatayım. Programı sisteminize yükleyip, zip dosyasının içindekileri bir klasöre kaydettiğinizde karşınıza 3 tene dosya çıkacak.
  • order.frm
  • slate.com
  • slate.doc


    Anlayacağınız üzere "order.frm" dosyası kayıt formudur. "Slate.doc" da programın yardım dosyası oluyor. Yani bizim işimiz "slate.com" ile. Sitemizdenindirecek olduğunuz programın dosyaları ile ilgili de bilgi sahibi olduktan sonra, dilerseniz kalan kısmı sizlere öncelik sırası ile maddeler halinde anlatayım.

1-) Öncelikle temiz bir disket bulup, "hızlı sil" ve "sistem dosyalarını kopyala" seçeneklerini okeyleyerek diski formatlayıp, bir sistem disketi oluşturunuz. 
2-) Bu işlemi "order.com" dosyasını oluşturmuş olduğunuz sistem disketine kopyalayınız.
3-) Sonra da bilgisayarınızı yeniden başlatıp, BIOS ayarlarını kontrol ederek sisteminizin boot sıralamasında ilk disket sürücünüzün (A) geldiğine emin olunuz. Bu ayarları BIOS FEATURES SETUP'ın altındaki BOOT SEQUENCE satırından yapabilirsiniz.
4-) Bilgisayarınızı hazırlamış olduğunuz sistem disketi ile açarak boot ettikten sonra, "slate /?" komutunu dos komut satırına yazarak bu dosyanın hangi alt komutlar ile kullanılabileceğini öğrenebilirsiniz.
5-) Bizim kullanacağımız komut, Harddiskimizin bilgisayarımızda bulunduğu konuma göre anakartın "Primary IDE" çıkışına takılı ise "slate 1", "Secondary IDE" çıkışına takılı ise "slate 2" olacaktır. 
6-) Program, diskin üzerinde herhangi bir değişiklik yapmadan önce emin olup olmadığınızı size size son bir kez daha soracaktır. Tabii ki de bu bölümü olumlu olarak cevapladıktan sonra bilgisayarımızı yeniden başlatıcaz. 
7-) Artık bilgisayarınızda en ufak bir partition bile kalmadı. Bu işlemleri bitirdikten sonra Windows sistem disketi veya CD'si ile sistemimizi boot ettikten sonra (tabii CD ile boot özelliğini aktif hale getirmek için yine BIOS FEATURES SETUP'ın altındaki BOOT SEQUENCE satırında CDROM'u başa almamız gerekecek) tekrar fdiskleyerek, HDD nizi gönlünüze göre parçalayıp, bölüp formatlamanız gerekecek. Son olarak bunları da hallettikten sonra sadece geriye kendinizi tebrik etmek kalıyor :-))
    Artık gönlünüzce bilgisayarınıza işletim sistemi kurabileceksiniz. Ama bildiğiniz gibi bu yaptığınız işlem(ler)in geri dönüşü yok. Bu yüzde işe koyulmadan önce mutlaka yedeklerinizi almanızı şiddetle öneririz. Aksi halde bu programın amacı burada açıkça belirtilmiştir, bilinçsizce atılacak herhangi bir adımdan dolayı doğacak sorun ve meydana gelebilecek hasarlardan ben ve arkadaşlarım kesinlikle sorumluluk kabul etmeyiz. 
LINUX
 


 
Star Office 5.0 Kurulumu
Star Office'i Linux listesinde ilk duyurduğumdan bu yana, Linux kullanıcılarının gözde ve vazgeçilmez bir programı olmuştur. O günden bu güne üzerinde çok şey söylendi. Kurup beğenenlerin yanında, fazla kaynak kullanıyor diye, hiç sevmeyenleri de oldu. Her şeye rağmen Star Office kurulu olan Linux işletim sistemi masaüstünde büyük avantaj salar. Star Office ile Linux'un, diğer işletim sistemlerine iyi bir alternatif olduğu da gözden kaçmamalıdır. Bu yazımızda sizlere Star Office ile ilgili biraz bilgi verdikten sonra Linux'unuza nasıl kuracağınızı açıklayacağız.
STAR OFFICE (SO) NEDİR?
Aslında bu sorunun yanıtını SO'yu kurduktan sonra siz daha iyi vereceksiniz. Biz SO'yu tanıtmak için hakkında birkaç madde sayalım:
l Masaüstüdür: Star Office, herhangi bir pencere yöneticisi ile birlikte büyük bir uyum içinde çalışır ve size bütünleşik bir masaüstü sunar. Her zaman alışık olduğunuz sol alt köşede "Start" menüsü vardır. Bu menüye tıkladığınızda KDE desteği vererek kurduysanız, KDE programlarını çalıştırabilir ya da yeni bir Star Office uygulaması başlatabilirsiniz.
l Dosya Yöneticisidir: SO, dosya ve dizinlerinizi rahatça tarayabileceğiniz, onları yönlendirebileceğiniz bir dosya yöneticisi sunar. Bu dosya yöneticisi, Windows 95'te kullandığınız explorer ile hemen hemen aynıdır. Her bir program kendisine ait simge ile görünür, sürükle bırak mantığı ile kopyalama yapabileceğiniz gibi, bir uygulamayı üzerine çift tıklayarak açabilir, veya ilişkilendirilmiş program içerisinde açabilirsiniz. Örneğin bir Word dokümanı kendisine has "W" simgesi ile görünür ve üzerine çift tıkladığınızda Star Office içerisinde açılır. Diğer dosya yöneticilerine paydos!
l Internet Tarayıcısıdır: SO'nun o kadar çok özelliği vardır ki, değil birkaç sayfa 500-600 sayfalık bir kitap yazılsa yine bitmez. İşte bir özellik daha, "Internet tarayıcısı". SO'nun bu özelliği sayesinde, istediğiniz bir FTP sitesine ulaşabilir, web sitelerinde gezinebilir, daha da güzeli, beğendiğiniz sayfaları, ister html, ister Star Office uygulaması ya da Word dokümanı olarak kaydedebilirsiniz.
İşinize yarayan tablolar ve şekilleri hiçbir değişikliğe uğratmadan başka uygulamalarınıza kopyalayabilirsiniz.
l Web Editörüdür: Konu Internet'ten açılmışken, Star Office'in pek farkedilmeyen web editörlüğünden de bahsedelim. Star Office ile web sayfalarınızı, normal bir doküman hazırlama rahatlığında yazabilirsiniz. Herhangi bir Star Office uygulamasını html sayfası olarak ta kaydedebilme şansınız vardır.
l E-posta Dağıtıcısıdır: SO ile yazdığınız tüm dokümanları, arkadaşlarınıza e-mail olarak gönderebilirsiniz, veya herhangi bir pop3 e-posta hesabınızdaki mektupları okuyabilirsiniz; elbette ki okuduğunuz mektupları SO dokümanı olarak da kaydedebilirsiniz.
l Kelime İşlemcidir: Eğer SO'yu kurmadıysanız, yandaki şekle bakarak onun kelime işlemcilikte ne kadar profesyonel olduğunu anlayabilirsiniz. Aradığınız tüm özellikleri ve hatta daha fazlasını bulabilirsiniz. Alışık olduğunuz Microsoft Word programı ile tıpatıp aynı ve tam uyumludur.
Yani Microsoft Word ile yazdığınız dokümanları hiçbir bozukluğa uğratmadan açabilirsiniz, veya SO ile yazdığınız dokümanlarınızı MS-Word ile aynen açabilirsiniz. Zaten bu dergide okuduğunuz Linux yazıları SO ile yazılıp, derginizin editörüne Word dosyası olarak gönderilmektedir. Kurduktan sonra göreceksiniz ki MS-Word'ten daha fazla yenilik ve kolaylıklar sunulmuştur. Sizin için hazırladığımız pencereyi aşağıda görüyorsunuz.
l Elektronik Tablolayıcıdır (Spreadsheet): Bir ofis paketinin vazgeçilmez iki öğesinden biri kelime işlemci ve diğeri de elektronik tablolayıcıdır. SO'da her iki elemanda bulunur ve birbiri ile tam uyumlu çalışır. Tablolarınızı istediğiniz gibi doldurabilir, elektronik hesaplamalar yapabilirsiniz. 300'ün üzerindeki fonksiyon ile, bir elektronik tablolayıcıdan beklediğiniz her şeyi yapabilirsiniz. Üstelik bu fonksiyonların çağırılması, yazılımı ve kullanımı Microsoft Excel'de olanlarla aynı. Yani hiçbir yabancılık çekmeyeceksiniz. Bir örnek verecek olursak, A3 ve B7 hücrelerini toplayıp sonuçtan C2 hücresinin değerini çıkarıp üçe bölmek için =(A3+B7-C2)/3 yazmanız yeterli olacaktır. Bu denklemi başka yerlere kopyalayacak olursanız, satır ve sütunlarda kopyaladığınız yere göre değişecektir. Sabit kalmasını istediğiniz değerlerin başına her zaman olduğu gibi "$" işareti koyabilirsiniz. Tablolarınızdaki veriler sayfanızda grafik olarak da boy gösterebilir. Daha çok yazmak isteriz ama, yerimiz yok. Sıradan bir çalışmada ki ekran görüntüsü aşağıda.
l Sunum Programıdır: SO ile sunumlarınızı çok rahat hazırlar, ve dinleyicileri büyüleyen efektler katabilirsiniz, slaytlar arası geçişleri isteğiniz gibi ayarlayabilir, kendi art gallery'sinde bulunan renkli resim ve çizimler ile sunumlarınızı zenginleştirebilirsiniz. Tüm bunları yapmak için sadece Star Office kurmanız yeterli olacaktır.
l Çizim Programıdır: Eskiden sunum ve çizim programı bütünleşikti ancak, şimdi bunlar ayrıldılar ve her biri kendisine has özellikleri ile gelişti. Çizim programı ile, düşündüklerinizi çok rahat bir şekilde bilgisayar ortamına aktarabilirsiniz. Artık tasarımlarınız SO ile daha kolay olacak.
l Veritabanıdır: SO'nun hiç kullanmadığım bir özelliği de kendisine özgü bir veritabanı ile birlikte gelmesidir. Görsel ortamdaki tablolar, sorgular, raporlar, MS-Acsess'i hatırlatıyor.
l Resim Editörüdür: SO'nun resim editörü her ne kadar Photo Shop kadar olmasa da, elinizin altında hazır bir resim editörünün bulunması işlerinizi çok kolaylaştıracaktır. Katman mantığı ile çalışabileceğiz. SO'nun resim editöründe birçok filtre ve özelliğin yanında 3D efektleri de vardır. SO ile artık hareketli resimler de hazırlayabiliyorsunuz.
Peki Star Office sadece Linux'ta mı çalışıyor? Hayır! Çok kullanılan birçok UNIX işletim sistemleri için sürümleri var, veee elbette ki Windows 95/98/NT sürümü de. Eğer Star Office'i Windows ortamında kullanmak istiyorsanız, http:/www.stardivision.com firmasından indirebilirsiniz. Şimdilerde Star Office for Java çalışmaları yapılıyor. Bunun anlamı artık tek sürüm olacak, ve aynı paket Java yüklü her işletim sisteminde çalışacak. Laf bu kadar açılmışken, sizlere müjdeli bir haber daha verelim: Star Office 1999 yılı bitmeden tamamen Türkçe olacak!!! Artık İngilizce bilmeyenler SO'yu daha rahat kullanacaklar. Kimbilir belki de kitapçılarda artık "Star Office" başlıklı kitaplarda bulabileceksiniz.
Bu kadar çok işlemin tek paket içerisine sığdırılması ve üstüne üstelik sadece 65MB olması, birde bunun bu işler için tasarlanmamış bir işletim sistemi olan Linux'ta çalışabilmesi, ofis paketi üreten diğer firmaları kıskandırmış olacak ki, şimdilerde Corel firması dahil diğer firmalar Linux için Ofis paketi çıkarma hazırlığındalar. Ancak Star Office bunlardan her zaman daha çok kullanılacak, çünkü; kişsel kullanımlar için ücretsiz. Dileğimiz o ki, Star Division (http://www.stardivision.com) firması, böylesine zengin bir paketi, Linux kullanıcıları için her zaman ücretsiz yapar.
STAR OFFICE 5.0 KURULUMU
Eğer benim gibi Turkuaz GNU/Linux 1.0.3 kullanıyorsanız, SO 5.0'ı kurmak için sadece ve sadece bu pakete sahip olmanız yetecektir. Derginizle gelen CD içerisinde SO 5.0 bulacaksınız, ancak kuruluma devam edebilmek için önce http://www.stardivision.com adresinden bir şifre almanız gerekecek. Eğer modeminiz yok ise, Internet bağlantısı bulunan bir yere gidin ve kendinize bir şifre alın.
SO kurulumu iki şekilde yapılabilir: network ve kişisel. Network kurulumu ile, Linux'unuzu paylaşan diğer kullanıcıların da SO'dan yararlanmasını sağlarsınız, yok eğer evinizde çalışıyorsanız, kişisel kurulum yapabilirsiniz. Aslında, Linux'u sadece siz de kullanıyor olsanız, network kurulumunu tercih etmelisiniz (benim gibi). Tüm kurulum normal kullanıcıların silemeyeceği bir yere kurulduğundan, SO'ya zarar verme olasılığınız ortadan kalkar. Biz burada sadece network kurulumunu anlatacağız ve size de tavsiyemiz her zaman bunu yapmanız. Şimdi kuruluma geçelim:
Elinizdeki CD'yi sürücünüze takın ve bir dizine mount edin. Ben /mnt/cdrom dizinine mount ettim. ve daha sonra aşağıdaki komutu çalıştırın.
#tar -xf /cdrom/linux/so501.tar.gz
Bu komut CD'nizin Linux dizinindeki so ile başlayan tüm arşivleri so50 dizini altına açacaktır. Bu dizin altında aşağıdakilerin olması gerekir
/glibc2_inst
/office50_inst
/so50_doc
README_01
so50_doc dizinine kurulumu adım adım İngilizce olarak açıklayan bir pdf dosyası, glibc2_inst dizininde bu kütüphaneye sahip olmayan sistemler için, glibc2.0.7 kütüphanesi ile kurulumunu açıklayan bir metin ve bir betik; ve office50_inst dizininde ise Star Office 5.0 kurulum dosyaları olacaktır. Şimdilik biz glibc2.0.7 kullanan bir sistem üzerinde kurulumu anlatacağız, daha sonra glibc2.0.7 den daha yukarı sürümleri kullanan sistemler için kurulumun nasıl yapılması gerektiğini anlatacağız.
X altından bir terminal açarak, office50_inst dizinine geçin ve
#./setup /net
komutunu çalıştırın. Biraz bekledikten sonra karşınıza, Windows programlarının kurulumunu andıran bir pencere çıkacak. "Next" düğmesine basarak ilerleyin. Daha sonra karşınıza SO yazılımının lisans sözleşmesi çıkacaktır, eğer size uyuyorsa "Accept" diyerek sonraki adıma geçin. Bir sonraki adım ise kurulum ile ilgili çeşitli açıklamaların yapıldığı bir metin dosyasının görüntülenmesidir. Burada da "Next" diyin. Şimdi karşınıza aşağıdaki gibi, ne tür bir kurulum isteğiniz soracaktır. Biz "Costom installation" seçeneğini seçtik ve "Next" düğmesine bastık. Sonraki adım ise kurulumun yapılacağı dizinin seçimidir. Star Office 5.0 için tavsiye edilen kurulum dizini /opt/Office50 dizinidir. Gelen kutucuğa bu dizini yazabilirsiniz, veya daha önceden oluşturduğunuz bir dizine kurmak istiyorsanız, "Browse" düğmesine basarak, o dizine ulaşabilirsiniz. Eğer yazdığınız dizin yok ise, bu dizini oluşturup oluşturmamak istediğinizi, aşağıda olduğu gibi soracaktır. "Yes" düğmesine basarak dizini oluşturabilirsiniz.
Bir sonraki adım ise, kurulacak paketlerin seçimidir, SO'nun her paketini kuruyoruz, ve KDE desteğinin verilmesi için gerekli modülleri de seçiyoruz, ki; kfm ile diskimizde tarama yaparken SO dosyaları otomatik olarak ilişkilendirilsin ve SO'nun "Start" menüsünden KDE uygulamalarını çalıştıralım diye. Aşağıda bunu yaparken aldığımız ekran görüntüsünü görüyorsunuz. Daha sonra "Complete" düğmesine basın, karşınıza gelen pencerede tekrar "Complete" düğmesine basarak, network (ağ) kurulumunu tamamlayın.
Şimdi sıra ağ kurulumundan kişisel kurulumun yapılmasına geldi. Sıradan bir kullanıcı olarak sisteme girin, X'i çalıştırın ve tekrar bir xterminal açın. /opt/Office50/bin dizinine geçtikten sonra
$./setup
komutunu çalıştırın. İlk pencere kurulum programına hoşgeldiğinizi söyleyecektir. "Next" ile sonraki basamak olan lisans sözleşmesinin kabulüne geçelim. Kabul ediyorsanız, "Accept" deyin. Gene size, kişisel sürüm ve kurulum ile ilgili bir metin gelecektir. Tekrar "Next" deyin. Şimdi de, http://www.stardivision.com adresinden şifre alırken verdiğiniz bilgileri dolduracağınız bir ekran gelecek. Aşağıda bir örneğini görüyorsunuz. Buraya dolduracağınız bilgiler, şifrenizi alırken yazdığınız bilgiler ile aynı olmalıdır. Aynı olmasını da Star Division'dan size gele a-mail ile sağlayabilirsiniz. Bu e-mail içerisinde aynı zamanda bir de şifre bulunacaktır.
Boşlukları doldurduktan sonra "Next" düğmesine basın. Kutucuğa doğru bir şekilde şifrenizi yazın ve "Next" deyin. Ne tür bir kurulum yapacağınız sorulduğunda, birinci seçeneği (iş istasyonu kurulumudur) işaretleyin. Bu kurulum daha önce yaptığımız network (ağ) kurulumunu kullanır, ve size ait bazı dosyalar kopyalar. Bunların toplam boyutu yaklaşık 2.2 MB dır. Eğer ikinci seçeneği işaretlerseniz, ağ kurulumundan bağımsız olarak tüm dosyalar sizin dizininize tekrar kopyalanır. Bu da ağ kurulumuna bağlı olmakla birlikte yaklaşık 140 MB'lık bir yer tutar.
Biz birinci seçeneği işaretledik. "Next" dediğinizde hangi dizine kurmak istediğiniz sorulacaktır, ön tanımlı olarak "/home/kullanıcı/Office50" dizini gelir ve bunu kabul etmenizi tavsiye ederiz.
"Next" ile ilerleyin, dizini oluşturacağına ait soruya "Yes" diyin. Daha sonra "Complete" deyin. Bir sonraki adımda KDE'yi yeniden başlatmanızı söyler, ki kurulum bittikten sonra bunu yapabilirsiniz. Ve son olarak "Complete" dediğinizde kişisel kurulum son bulur.
Artık sizinde bir Star Office'iniz vardır. Gerekmese bile /opt/Office50/bin dizinini search path'a atmakta fayda var. Bunun için ev dizininizdeki .bashrc dosyasının en altına
PATH=$PATH:/opt/Office50/bin
satırını eklemeniz yeterli. Bunu ekledikten sonra logout olun ve sisteme tekrar girin. X'inizi çalıştırdıktan sonra eğer KDE kullanıyorsanız Start --> Application menüsünden veya, bir xterminal açarak
soffice
yazıp Star Office'i başlatabilirisiniz. Star Office'i başlattığınızda tepedeki başlık çubuğunda "Unregistered" yazısını görürsünüz. Verdiğimiz adresten kullanıcı numarası ve bu numaraya ait bir şifre daha almanız gerekecektir. Aldığınız bu bilgileri Help --> Registration yolunu izleyip, gelen ekranda doldurabilirsiniz.
REDHAT 6.0 VE TURKUAZ/SARMAN SÜRÜMÜNDE STAR OFFICE KURULUMU
Linux'un yukarıda belirttiğ-imiz sürümleri Star Office 5.0'dan daha sonra çıktılar ve glibc2.1 kullanırlar. Bu yüzden yukarıda açıkladığımız kurulum işlemine başlamadan önce, ftp://ftp.linux.org.tr/staroffice/glibc2.1-inst dosyasını indirin, ve bu programı çalıştırın.
Bu program Star Office'in çalışabilmesi için glibc2.0.7'yi kuracak ve gerekli yapılandırmaları yapacaktır. Bu işlem ile kesinlikle sisteminiz zarar görmeyecek, ve sisteminizin kütüphanelerine dokunulmayacaktır. Bu program, kurulumu kendisi başlatacaktır, geri kalan adımları yukarıdaki açıklamalarımız ile aynıdır.
STAR OFFICE'TE TÜRKÇE YAZMAK
Mustafa Başer'in uzun çabaları sonucunda SO'dan gerçek anlamda Türkçe çıktı almak mümkün olmuştur. Üstelik 40 ayrı yazıtipinin Star Office'e uyarlamasını da yapmış ve herkese açık olan http://www.geocities.com/ResearchTriangle/Forum/1506/ sitesinde yayınlamış ve duyurmuştur. Sizde SO'dan düzgün çıktı almak istiyorsanız, bu siteye gidin ve orada denilenleri yapın. Başer tüm bunları sizin yerinize yapacak bir Perl programı da yazıp aynı siteye koyacaktır. Belki bu yazıyı okuduğunuz sıralarda hazırlanmış olur.

Star Office'te Türkçe Yazmak!
dosyalar dizinindeki 3 adet dosyayı çekin ve bu dosyaları bir dizine açın. Eğer Windows95/98/NT'de Türkçe çıktı alma sorununuz var ise sadece SO_TR-3.tar.gz dosyasını indirmeniz yeterli olacaktır. Aşağıdaki açıklamalar Linux için yapılmıştır. [so_home] dizininden kastımız Star Office'in kurulu olduğu dizindir.

·        afm dizinindeki dosyaları
[so_home]/xp3/fontmatrices/afm
dizinine çekiniz.

·        pfb dizinindeki dosyaları
[so_home]/xp3/pssoftfonts
dizinine çekiniz.

·        psstd.fonts dosyasını
[so_home]/xp3 dizinine çekiniz. Buradaki orjinal dosya artık işinize yaramayacaktır. İsterseniz, eski dosyayı her ihtimale karşı başka bir isimle kaydedin. Ev dizinindeki ~Office5.1/xp3 dizini altında bulunan psstd.fonts dosyası varsa siliniz.

·        ttf dizini ve içerisindeki tüm dosyaları
/usr/X11/lib/X11/fonts
altında ttf dizini oluşturup, bu dizin altına kopyalayınız.

·        xfsft dosyasını /bin dizinine kopyalayınız
Not:Bu dosya çalıştırılabilir bir dosyadır (ttf font server, eskisi varsa siliniz)

·        Daha sonra /etc/rc.d/rc.local dosyasının alıtna şu satırı ekleyiniz
/usr/X11R6/bin/xfsft -config /usr/lib/X11/fonts/ttf/fonts.con -port 7100

·        /etc/X11/xinit/Xclients dosyasının başına (tabiiki #!/bin/bash den sonra) şu satırı ekleyiniz
xset +fp tcp/localhost:7100 &
Hepsi bu kadar. Şimdi sistemi yeniden başlatın ve Star Office'de Türkçe yazmanın keyfini yaşayın.
Aşağıdaki şekilde RedHat 6.0'da çalışan Star Office 5.1'den bir örnek pencere görünüyor.
Linux Acemi
Yukarıdaki metni bir dosyaya yazdırıp Ghostview ile görüntülersek, ayen aşağıdaki gibi oluyor.
Linux Acemi
Windows9x/NT sistemlerinde Türkçe çıktı alma sorununuz var ise, sadece SO_TR-3.tar.gz dosyasını indirin ve winzip ile istediğiniz bir yere açın. Kontrol panelini açın ve oradan yazıtipleri (fonts) simgesine tıklayın. "Yeni yazıtipi ekleme" (install new fonts) menüsüne gelin, ve ttf dosyalarınızı açtığınız yerden yeni yazıtiplerini ekleyin. Sisteminizde büyük ihtimalle arial, times new roman, verdana gibi yazıtipleri vardır, bunları daha önce kaldırmanız gerekiyor.
Not: Bu yazıtiplerini diğer uygulamalarda da, (KDE, Netscape) kullanabilirsiniz, ancak yazıcıdan Türkçe çıktı alamazsınız. "GIMP" Resim düzenleyicisinde rahatlıkla kullanabilirsiniz.
Yukarıda belirtilen işlemleri tek hamlede yapacak bir betik yazarsanız, buraya koymaktan mutluluk duyarım.
Lütfen hata bildirilerinizi, soru, öneri ve isteklerinizi mbaser@linux.org.tr adresine bildiriniz

Postgres



Bu döküman, Postgres95 hakkında genel bilgiler içermektedir. Dökümanla birlikte hazırlanmış olan örnek uygulamanın da yardımıyla, bu ücretsiz, güçlü veri tabanı sistemini daha iyi tanıyacağınızı tahmin ediyoruz.
Postgres ve Linux'un az bütçeli eğitim kurumları ve küçük çaplı şirketler için oldukça yararlı olabileceğini düşünüyoruz. Aşağıda ayrıntısıyla anlatacağımız bu veri tabanı sisteminin, teknik özellikleri göz önünde bulundurulduğunda birçok ticari veri tabanından fazla eksiğinin olmadığını, hatta bazı konularda artılarının bulunduğunu siz de göreceksiniz.


·        Giriş
·        Postgres'in Özellikleri
·        Genel Tasarım
·        LibPQ

1.Giriş

Postgres, Berkeley Üniversitesi (University of California, Berkeley -- UCB)tarafından yürütülen bir araştırma projesinin ürünü. Proje belli bir aşamaya geldikten sonra UCB, Postgres'in ücretsiz sürümünü daha fazla desteklemedi. UCB, 1994'te Postgres 2.4 sürümündeyken desteğini çektikten sonra, Internet üzerindeki bir grup programcı, Postgresin geliştirilmesine devam etti. Bu sürüme Postgres95 adı verildi. Postgres95 Postgres4.2'nin bazı tamamlanmamış özelliklerini içermezken, bazı ekler içermekteydi. Şu an da Postgres95'in geliştirlmesi sürmektedir. 1.0 sürümü Eylül 95'te çıkarılan Postgres95'in bu uygulamada 1.09 sürümü kullanılmıştır.
Postgres95, temelde ilişkisel (relational), ama bazı nesneye yönelik uzantıları olan bir veri tabanı yönetim sistemi. Aşağıda Postgres95'le ilgili bir dizi bilgiyi ayrıntılı olarak bulacaksınız.

2. Postgres'in Özellikleri

Postgres -- bu döküman boyunca, tersi belirtilmedikce Postgres95 yerine Postgres kullanılacaktır. -- yukarıda da belirtildiği gibi, ilişkisel bir veri tabanı yönetim sistemi. Temel özellikleri:
·        Ücretsiz, Postgres95'in kaynak kodunu hiç para ödemeden Internet üzerinden edinebilirsiniz.
·        SQL desteği,
·        C, Tcl, Perl ve Phyton için Programcı Arayüzleri (API)
sırasıyla: libpq, pgtcl, pg95perl, PyGres95
·        "Object-Relational", Postgres temelde ilişkisel (relational) bir veri tabanı olarak tasarlanmış olmasına karşın, bazı nesneye yonelik özellikler (Object Oriented) de taşıdığından "Object-relational" olarak da sınıflandırılır.
·        Esnek/kullanıcı tarafından geliştirilebilir, Postgres95 kullanıcının kendi veri tiplerini, operatörlerini ve veriye ulaşım yöntemelerini tanımlayabilmesine izin veririr.
·        Taşınabilir, Postgres95 aralarında Linux'un da bulunduğu, birçok işletim sisteminde derlenebilir.
·        "8-bit clean", bu özellik özellikle Türkçe gibi özel karakterler içeren diller için oldukça önemli.
·        Bir çok ücretsiz yan yazılım, Internetten Postgres için yazılmış birçok ticari/ücretsiz yan ürün bulabilirsiniz. Ücretsiz yazılımlardan sadece bazıları:
o       Wdb-p95, Bir Postgres/Web arayüz geliştirme ortamı.
o       AppGEN, Postgres için 4. kuşak bir dil(4GL).
o       EARP, Postgres üzerine kurulmuş bir veri tabanı tasarım/başarım sistemi.
o       MPSQL, Postgres için etkileşimli (interactive) bir sorgu aracı.
bu örneklerin daha fazlası için http://www.postgresql.org/third-party.phtml sayfasına bakabilirsiniz.
·        ODBC desteği, ODBC desteği sayesinde diğer veri tabanlarıyla iletişim kurabilir. Postgres95 için hala geliştirilmekte olan ücretsiz bir ODBC projeleriPostODBC ya da FreeODBC'nin yanı sıra, Openlinksw.com'dan ücretli/ücretsiz ODBC modülleri edinmeniz mümkün.
·        Birkaç Güvenlik Mekanizması desteği, Postgres isteğe göre üç ayrı güvenlik mekanizması kullanılabilir. Bunlardan ilki UNIX güvenlik kontrolleri ve dosya hakları mekanizmasına dayanıyor. Postgres'le gelen standart araçlarla bir UNIX kullanıcısına ya da grubuna veri tabanları ya da tablolar üzerinde belli haklar verebilirsiniz. İkinci seçenek network üzerinden kullanılan Host Based Authentication (HBA) adlı bir güvenlik sistemi. HBA kullanmak isteyip istemediğinizi Postgres'i derlerken belirtmelisiniz. Üçüncüsü ise yaygın olarak kullanılan, MIT Athena projesi çerçevesinde geliştirilen Kerberos mekanizması. Yine Kerberos kullanmak isteyip istemediğinizi derlerken belirtmeniz gerekiyor. Kerberos kullanabilmek için kerberos sisteminin bilgisayar ağınızda kurulu olması gerekir.

3. Postgres'in Genel Tasarımı

Postgres, istemci/sunucu (client/server) modeliyle çalışır. İstemci ile sunucu arasındaki ilişki TCP/IP kullanılarak yapıldığından, farklı bilgisayarlarda kullanılmaları mümkündür. Bir diğer deyişle, gerekli izinler verildiğinde, bir makinadaki veri tabanına uzaktan erişmek mümkündür.
Postgresin sunucu tarafı, posmaster adlı bir UNIX "deamon" ve bir(kaç) backend adı verilen işlemden (UNIX process) oluşur. postmaster, backend'ler arası koordinasyonu, ve backend'lerle istemciler arasındaki haberleşmeyi sağlar. Her istemci için ayrı bir backend işi calışır.
İstemciler, Postgres'in standart yazılımı, psql gibi araçlar olabileceği gibi, yukarıda adı geçen herhangi bir API ile yazılmış kullanıcı programları da olabilir.

4. Postgres Kurulumu ve İlk kullanım

Postgres kaynak kodunu Internetten üzerindeki birçok www/ftp sunucusundan edinebilirsiniz. Postgres'in son sürümünü www.postgresql.org ya da dünyanın değişik yerlerindeki yansılarından (mirror) alabilirsiniz.
Postgres'i sisteminizde nasıl kuracağınızı kısaca aşağıdaki gibi özetleyebiliriz:

1.     Zorunlu olmasa da, Postgres'i standart olarak yüklemek istiyorsanız 'postgres' adlı bir kullanıcı açın. Getirmiş olduğunuz kaynak kodunu bu kullanıcının 'home' dizininde açın (Örneğin, tar zxvf postgres95-1.09.tar.gz). Bu komut kaynak kodu ve dökümanları postgres95 adlı bir dizinin altına açar. Daha sonraki basamaklara İngilizce biliyorsanız paketin içinden çıkan dökümanları okuyarak devam edebilirsiniz.
2.     postgres95/src dizinindeki Makefile.global dosyasını isteklerinize göre değiştirin. Bu işlem için herhangi bir text editor kullanabilirsiniz. Burada değiştirmeniz gerken ya da gerekebilecek paramatreler,
o       PORTNAME, Linux :)
o       POSTGRESDIR, yukarıdaki aşamaları izlediyseniz ~postgres/postgres95 olmalı, Postgres'i farklı bir dizine açtıysanız, açtığınız dizin.
o       USE_READLINE, eğer psql'de yukarı aşağı ok tuşlarıyla önceki komutlara ulaşmak istiyorsanız bunu değiştirmelisiniz. Sisteminizde yoksa Postgres'i derlemeden önce 'GNU Readline' paketini yüklemeniz gerekecektir.
3.     make all komutu Postgresin sisteminizde derlenmesini sağlayacaktır.
4.     make install ise derlenen programları uygun yerlere yereleştirecektir.
5.     postgres kullanıcısının PATHine ~postgres/postgres95/bin dizinini ekleyin.
6.     initdb komutuyla Postgres'i kullanıma hazır hale getirin.
7.     createdb db_adıkomutuyla yeni bir veri tabanı oluşturun ya da Postgresin sizin için oluşturduğu örnek veri tabanıyla oynayın.
8.     Yeni veri tabanı oluşturduysanız psql db_adı komutuyla, Postgres'in örnek veri tabanıyla oynayacaksanız psql template1 komutuyla psql'i caliştırın.
9.     SQL kitabınızı elinize alıp denemelerinizi yapabilirsiniz. psql'in \h komutu size psql'e ozel komutlar \h sql_komutu ise sql_komutu hakkında kısa bilgi verecektir.
postgres95/doc dizinindeki dökümanlarda size gerekli olabilecek hemen hemen bütün bilgileri bulabilirsiniz.

5. LibPQ

Postgres'in birkaç programlama dili için programcı arayüzleri var. Biz uygulamalarımızda ve libpq (Postgres'in C için kullanıcı arayüzü) kullandığımızdan, burada libpq ile Postgres'e nasıl ulaşılacağını kısaca anlatacağız.
libpq bir C kütüphanesi ve birkaç include dosyasından oluşuyor. Postgres'i sisteminizde derlediğinizde kütüphane dosyası ~postgres/postgres95/lib ve include dosyaları ~postgres/postgres95/include dizinlerine kopyalanır. Bu arayüzü kullanmak için libpq-fe.h dosyasını C kaynak kodunuzdan "include" etmelisiniz. Örneğin:
#include <stdio.h>
#include "/home/postgres/postgres95/include/libpq-fe.h"
include dosyasının tam yerini yazmak yerine, derleyiciyi çalıştırırken ek bir seçenek vemeyi tercih ederseniz,
#include <libpq-fe.h>
ve, derleyiciye ek olarak -I~postgres/postgres95/include seçeneğini de vermeniz gerekir. C derleyicisini çalıştırırken verilecek tam komut satırı,
cc -o pgdnm -I~postgres/posgres95/include pgdnm.c -L~postgres/postgres95/lib -lpq
gibi olmalıdır. Aşağıda libpq ile yazılmış küçük bir program örneği bulacaksınız. Program, deneme adlı bir veri tabanı oluşturduğunuzu, bu veri tabanında dnm adlıad ve soyad adlı iki kolonu bulunan bir tablonun oluşturlduğunu varsayıyor. Bunları programdan oluşturmak mümkün olsa da, örneği daha anlaşılır yapmak için burada yer vermedik. Daha ayrıntılı bilgi ve örnek programları Postgres'le birlikte gelen el kitabından bulabilirsiniz. Bu konuda bizim hazırlamış olduğumuz örnekuygulamalar da işinize yarayabilir. Bununla birlikte asagida veri tabanindan alinan biglilerin ekrana yazan bir ornek program yer almakta:

                    #include 
                    #include 
                    #include 
                    #include 
                    
                    #define DBNAME "deneme" main() { PGresult *result;
                    PGconn *conn; char *pghost, *pgport, *pgopt, *pgtty,
                    *dbname; char qry[100], org[100]; int i, j, nFields;
                    pghost=pgport=pgopt=pgtty=NULL; dbname=DBNAME;
                    conn=PQsetdb(pghost, pgport, pgopt, pgtty, dbname);
                    gets(org); sprintf(qry, "select * from dnm; ",
                    org); result=PQexec(conn, qry); if (PQntuples(result) == 0)
                    { printf("Hiç kayıt bulunamadı.\n"); } else if
                    (PQresultStatus(result) == PGRES_TUPLES_OK) {
                    nFields=PQnfields(result); for (i=0; i < nFields; i++)
                    printf("%-15s", PQfname(result,i));
                    printf("\n"); for (i=0; i < PQntuples(result);
                    i++) { for (j=0; j < nFields; j++)
                    printf("%-15s", PQgetvalue(result, i,j));
                    printf("\n"); } } PQclear(result); } 

Bu programı yukarıdaki komutla derleyerek deneyebilirsiniz. Programı calıştırmadan önce psql ile gerekli veri tabanı ve tabloyu oluşturmayı unutmayın.
psql'in ayrıntiları için Postgres el kitabına başvurabilirsiniz. Burada sıkça kullanılan psql fonksiyonlarından kısaca söz edeceğiz.
o       PGconn *PQsetdb(pghost, pgport, pgoptions, pgtty, dbname)
char *pghost, *pgport, *pgoptions, *pgtty, *dbname;
Bu fonksiyon programınızın (istemcinin) veri tabanına (sunucuya) ilk bağlantıyı kurmasını sağlar. pghost ve pgport değişkenleri veritabanının bulunduğu bilgisayarın ip adresi ve portunu, pgoptions Postgres'e vereceğiniz bir dizi seçeneği, pgtty backend'den gelen "debug" mesajlarını yazacağınız dosyayı,dbname ise kullanacağınız veri tabanını belirtir. Bu parametreleri NULLa eşitlerseniz, Postgresi derlediğiniz sırada belirtilen değerleri, ya da varsa programı çaliştirdıgınız sırada değer atanmış olan, PGHOST, PGPORT, PGOPTIONS, PGTTY, PGDATABASE shell değişkenelerinin(environment variable) değerlerini kullanılır. Bunların yanı sıra kerberos güvenlik sistemi kullanıyorsanız, PGREALM değişkeni kerberos 'realm' değerini belirler.
Bu fonksiyondan dönen PGconn * tipindeki değişken daha sonraki veri tabanı erişim fonksiyonları tarafından kullanılır.
o       void PQfinish(conn)
PGconn *conn;
Veri tabanıyla programınız arasındaki bağlantıyı koparır.
o       PGresult *PQexec(conn, query)
PGconn *conn;
char *query;
query karakter dizisineki SQL komutunu calıştırır.
Bu fonksiyondan dönen PGresult tipindeki değişken sonuç üzerinde işlemler yapıp gerekli verileri alabilmemizi sağlar.
o       int PQresultStatus(res)
PGresult *res;

Bu komut sonucun başarılı olup olmadığını analmak için kullanılır. Dönen değeri libpq-fe.h dosyasında tanımlanan sabitlerden biriyle karşılaşırarak sonucu anlayabilirsiniz.
o       int PQntuples(res)
PGresult *res;

Bu komut çalıştırdığınız sorgunun kaç değer içerdiğini gösterir.
o       char *PQgetvalue(res, i, j)
PGresult *res;
int i,j;

Bu komutla çalıştırdığınız bir sorgu sonucundaki, i. satır, j. kolondaki değeri alabilirsiniz. Komut bu haliyle bütün değerleri karakter dizisi olarak verecektir. Nümerik değerler için gerekli tip değiştirme işlemelrini yapmalısınız. Ayrıntılar ve daha karmaşık kullanımlar için Postgres el kitabına bakabilirsiniz.
o       void PQclear(res)
PGresult *res;
Bu komut PQexec komutunun aldığı sistem kaynakalarının sisteme geri döndürülmesini sağlar. Çalıştırdığınız sorguyla ilgili işlerinizi bitirdikten sonra bu fonksiyonu çağırmalısınız. Bu şekilde programınız daha az hafıza kullanacaktir.

6. Uygulamaya Özel Açıklamalar

Bu çalışma çerçevesinde örnek olarak Türkiye Linux Kullanıcıları Veri Tabanı olmasını  planladığımız bir veri tabanı üzerinde temel işlemleri yapan küçük bir uygulama geliştirdik.
Bu uygulamada lbpq kullanıldı. Kullanıcı arayüzleri cgi ile hazırlandı. Bu şekilde programalra kolay ve Internet kullanan her insanın alışık olduğu arayüzlerle(www istemci programlari, netscape, lynx, vb..) ulaşılabildiği gibi, aynı arayüz hem text, hem grafik tabanlı ortamalardan kullanılabiliyor. Biz bu örneklerde gereksiz oldugundan herhangi bir güvenlik mekanizması kullanmadık. Ancak bu tür uygulamalarda kullanılabilecek bir dizi guvenlik mekanizmansı mümkün.

ETKİLİ vi EDİTÖR KULLANIMI

  1. TEMEL KONUMLAR
    1. Komut konumu
Bu konumda basılan bir tuş ekranda görüntülenmez ama bir işlevi vardır. O işlev gerçekleşir.
Bir komut başlamadan girilen rakamlar vi editörün o komutu kaç kez tekrarlayacağını belirtir.
    1. Giriş/Düzeltme konumu
Bu konuma 'i', 'a', veya 'o' komutları ile girilir. Bu konumda iken basılan her tuş ekranda görüntülenir. Bu konumdan Esc tuşu ile çıkılır.
    1. Satır Editörü Konumu
':' komutu ile bu konuma geçilir. Bu komunda yazılan komutların işlemi bitince vi editör tekrar komut konumuna geri döner.
  1. TEMEL KOMUTLAR
Ok tuşları
İmleç (cursor) hareketi
h j k l
Ok tuşları yerine imleç hareketi
i<text>Esc
bir metini araya girme
cw<yeni>Esc
bir sözcüğü değiştirme
x
bir karakter silme
dw
bir sözcük silme
dd
bir satır silme
u
son işlemi geri alma
ZZ
vi editorden saklayarak çıkma
:q!
vi editörden saklamadan çıkma
^D ^B ^F
ileri ve geri sayfa kaydırma
  1. KÜTÜK İŞLEMLERİ
:w
kütüğe yazma
:w!
kütüğü ezerek yazma
:q
editörden çıkma
:q!
değişiklikleri atarak editörden çıkma
:e <ad>
ad adlı kütüğü edit etme
:e + <ad>
ad adlı kütüğü sonundan edit etme
:e + n
kütüğü n. satırdan edit etme
:e #
başka bir kütüğü edit etme
:e! #
değişiklikleri atarak başka bir kütüğü edit etme
:w <ad>
ad adlı kütüğe yazma
:w!<ad>
ad adlı kütüğü ekerek yazma
:sh
shell komutuna geçiş (exit ile geri dönülür).
:!<komut>
bir komutu çalıştırma ve editöre geri dönme
:n
bir sonraki kütüğü edit ortamına alma
^G
kütük adını ve imleçin satır numarasını görüntüleme
:tag <tag>
imleç yerine tag koyma
:pop
bir önceki tag yerine dönme
  1. vi EDİTÖRDE İmleç YERİNİ DEĞİŞTİRME KOMUTLARI
^F
Bir sayfa ileri kaydır.
^B
Bir sayfa geri kaydır.
^D
Yarım sayfa ileri kaydır.
^U
Yarım sayfa geri kaydır.
/pat
verilen karakter dizisini ileriye doğru arama
?pat
verilen karakter dizisini geri doğru arama
N
arama yönünü değiştirme
/pat/+n
ileriye doğru aranan ilk diziden n satır sonrasına gitme
?pat/-n
geriye doğru aranan ilk diziden n satır öncesine gitme
]]
bir sonraki işleve gitme
[[
bir önceki işlev gitme
(
cümlenin başına gitme
)
cümlenin sonuna gitme
{
paragraf başlangıcına gitme
}
paragraf sonuna gitme
%
birbirine karşıt gelen { } veya ( ) ikilisini bulma
^]
imleçden sonraki sözcüğü tag etme
^T
bir önceki tag yerine geri dönme.
  1. EKRAN AYARLARINA İLİŞKİN KOMUTLAR
^L
sayfayı tekrar görüntüle
^R
sayfayı tekrar görüntüle (^L çalışmaz ise)
z
imleç satırı en üstte olacak şekilde sayfayı yeniden

görüntüle
z-
imleç satırı en altta olacak şekilde sayfayı yeniden

görüntüle
z.
imleç satırı ortada olacak şekilde sayfayı yeniden

görüntüle
/pat/z-
pat ile bulunan satırı en altta olacak şekilde sayfayı

yeniden görüntüle.
zn.
n satırlık pencere kullan.
^E
bir satır aşağıya kaydır.
^Y
bir satır yukarıya kaydır.
  1. İŞARETLEME ve İŞARETE GERİ GİTME KOMUTLARI
``
imleçin bir önceki işarete geri gönderme
''
imleçin bir sonraki ilk boşluk olmayan yere götürme.
mx
imleç yerini x küçük harf alanına sakla
`x
imleç yerini x alanında saklanan imleç yerine götür.
'x
imleçi x alanında saklanan imleç yerindeki satırın

ilk boşluk olmayan karakterine götür.
  1. SATIR AYARLAMA KOMUTLARI
H
imleçi ekrandaki ilk satıra götür.
L
imleçi ekrandaki son satıra götür.
M
imleçi ekrandaki orta satıra götür.
+
bir sonraki satıra git.
-
bir önceki satıra git.
CR
bir sonraki satırın başına git.
Aşağı Ok j
bir sonraki satırın aynı kolonuna git.
Yukarı Ok k
bir önceki satırın aynı kolonuna git.
  1. KARAKTER AYARLAMA KOMUTLARI
^
satırdaki ilk boşluk olmayan karaktere git.
0
satır başına git
$
satır sonuna git
l Sağ Ok
bir karakter sağa git
h Sol Ok
bir karakter sola git
^H
bir karakter geri git
boşluk
bir karakter sağa git
Fx
bir önceki x karaterini bul
tx
x karakterinden önceki karaktere git.
Tx
x den sonraki karaktere git.
;
Fx, tx veya Tx işlemini tekrarla
,
Fx, tx veya Tx işleminin tersini tekrarla
n|
n. kolona git
%
karşıklı { } veya ( ) tipi parantezlere git.
  1. SÖZCÜK, CÜMLE, BÖLÜM ve PARAGRAF AYARLAMA KOMUTLARI
w b e
sonraki sözcüğe, önceki sözcüğe, sözcük sonuna git
) (
sonraki cümleye, önceki cümleye git.
} {
sonraki paragrafa, önceki paragrafa git
W B E
sonraki, önceki boşlukla ayrılmış sözcüğe git

boşlukla ayrılmış sözcüğün son karakterine git.
  1. GİRİŞ KONUMU DÜZELTMELERİ
^H
Backspace
^W
bir sözcük silme
\
"erase", "kill" karakteri için başlangıç
Esc, Del
giriş konumundan çıkış
^D
bir karakter geri git.
^^D 0^D
(^) işaretinden sonra ^D satı başına git demektir.
^T
satır başına içerlek boşluk bırak
^V
yazılamayan karakterleri görüntülemek veya girmek

için başlangıç
  1. GİRİŞ ve DÜZELTME KONUMU KOMUTLARI
a
imleç sonuna ekle
A
satır sonuna ekle
i
imleç yerine gir
I
satır başına ilk boşluk olmayan karakterden sonra gir
o
imleç altına bir boş satır aç
O
imleç üzerine bir boş satır aç
rx
imleç karakterini x karakteri ile değiştir
R<text>Esc
imleç yerinden text kadar metni değiştirme.
  1. İŞLEMLER
d
sil
c
değiştir
y
bir satırı belleğe al
< 
sol shift
> 
sağ shift
!
bir komut ile filitrele
  1. ÖZEL İŞLEMLER
C
satırın kalanını değiştir
D
satırın kalanını sil
s
bir karakteri değiştir
S
satırları değiştir
J
satırları birleştir
x
bir karakter sil
X
imleçden önceki karakteri sil
Y
satırları belleğe al
  1. KES ve YAPIŞTIR KOMUTLARI
<n>yy
n satırı belleğe al
<n>yl
n karakteri belleğe al
p
imleçin devamına bellektekini kopyala
P
imleçin önüne bellektekini koplaya
"xp
x belleğindekini kopyala
"xy
x belleğine al
"xd
silerken x belleğine al
  1. GERİ ALMA ve YİNELEME KOMUTLARI
u
son değişiklik işlemini geri al
U
son satırı eski haline getir
.
son değişikliği tekrarla
"dp
sondan d satır önceki satır silmeyi geri getir.

SATIR EDİTÖRÜ KOMUTLARI

Genelde, bir satır editöründe komut :
       ,s/eski/yeni/g
biçimindedir. Bu örnekte editör eski karakter dizisini yenisi ile değiştirir.
Genel satır editörü komutları kalıbı :
       [adres [,adres]]komut[parameterler]
biçimindedir. Bu kalıptaki adres'ler işlemin yapılacağı satırların numaralarını gösterir.
SATIR ADRESLEMESİ
Bir adres kütük içinde satırın başlangıç satırından uzaklığını tanımlar. Komut içinde son satır belirtilmez ise, yalnız virgül kullanımı son satırı gösterir. Satır adresleri aşağıdaki listeden oluşturulurken satırlara sayısal değerler de verilebilir.
Aşağıdaki tabloda satır adresi olarak kullanılan simgeler gösterilmiştir.
  
.
imleçin bulunduğu satır.
$
Kütüğün son satırı.
n
Kütüğün n. satırı n [0,$] arasında bir değerdir.
-
^
Önceki satır. Bu değer -1 ile aynı anlama gelir.
-n
^n
Önce n. satır. Burada n sıfırdan büyük bir sayıdır.
+
Bir sonraki satır. Bu değer +1 ile aynı anlama gelir.
+n
boşluk n
Sonraki n. satır. Burada n sıfırdan büyük bir sayıdır.
,
%
İlk satırdan sonuna kadar tüm satırlar. 1,$ ile aynı anlama gelir.
;
imleç satırından sonuna kadar tüm satırlar. .,$ ile aynı anlama gelir.
/re/
içinde regular expression re olan bir sonraki satır.
?re?
içinde regular expression re olan bir önceki satır.
'lc
Daha önce mark komutu ile işaretlenmiş satır.
DÜZENLİ DEYİMLER (REGULAR EXPRESSIONS)
"Düzenli Deyimler" metin içindeki bir karakter dizisini aramak için kullanılan deyimlerin genel adıdır.
Düzenli deyimler, yalnız karakter dizisi olmayıp, bir kümede yer alan dizileri de tanımlayabilir. Bu durumda kurala uyan karakter dizileri aranmış olur. Bir satırda aynı kümeye/sınıfa giren birden çok karakter dizisi bulunursa, önce soldan ilki seçilir.
Aşağıdaki simgeler Kurallı Deyim oluşturmada kullanılır.

c
Karakter c `{', '}', `(', `)', `<' ve `>' değilse kendisini bulur.
\c
Bu karakter `{', '}', `(', `)', `<', `>', `b', 'B', `w', `W', `+', ve `?' değilse kendisini bulur.
Herhangi bir karakteri bulmak
[char-class]
bu karakter kümesine uygun ilk karakteri bulur. Bir karakter kümesi, yazılan iki karakter arasındaki artan sırada karakterleri tanımlar. Örneğin a'dan z'e tüm küçük harfler kümesi için [a-z] yazmak gerekir.
Aşağıdaki şekilde karakter kümeleri tanımlama olanağı vardır :
[:alnum:] [:cntrl:] [:lower:] [:space:]
[:alpha:] [:digit:] [:print:] [:upper:]
[:blank:] [:graph:] [:punct:] [:xdigit:]
Eğer küme tanımında ilk karakter '-' ise kendisini arar.
Patterns in char-class of the form: Aşağıdaki gibi tanımlanmış kümelerde
[.col-elm.] veya, [=col-elm=]
"col-elm" ülke kodlamasına göre sıralanmış karakterleri tanımlar.
[^char-class]
Yeni satır hariç, belirtilen küme içine girmeyen ilk karakteri bulur.
^
Eğer `^' deyimin ilk karakteri ise satır başından arama yapar. Yoksa karakterin kendisini arar.
$
Eğer `$' deyimin son karakteri ise satır sonuna göre arama yapar, yoksa kendisini arar.
\(re\)
Bir alt deyimi tanımlar. Bazen alt deyim boş olabilir. İçiçe alt deyim tanımlanabilir. Örneğin `\(a.c\)\1'
`abcabc', fakat `abcadc' bulunamaz.
*
bir deyimin peşinden gelen ilk karakteri bulur. Örneğin `b*' ile `abbb' bulunur, ancak `bbb' bulunamaz.
\{n,m\}
\{n,\}
\{n\}
bir karakterlik deyimi en az n kez, en çok m kez tekrarlandıktan sonra bulur.
\<
\>
bir karakterlik deyimi kelime başına (\<) veya kelime sonuna (\>) göre arar.
Aşağıdaki geliştirilmiş işlem kodlarının başındaki '\', işlemleri diğer editör komutlarından ayırmak için konmuştur.

\`
\'
Koşulsuz olarak satır başını (\`) veya sonunu (\') arar.
\?
kendisinden önce gelen deyim veya altdeyime uygun ilk karakteri bulur.
\+
kendisinden sonra gelen ve birden çok tekrarlanan ilk deyim veya altdeyime uygun karakteri bulur.
\b
bir kelimenin başını veya sonunu bulur. Yani `\bhello\b' biçimindeki bir deyim `\<hello\>' ile aynıdır. Ancak `\b\b'i geçerli bir deyim iken `\<\>'değildir.
\B
Bir kelime içindeki boşluğu arar.
\w
bir kelime içindeki herhangi bir harfi arar.
\W
kelime içinde olmayan bir karakteri bulur.
KOMUTLAR (COMMANDS)
Tüm editör komutları tek karakterlidir. Ancak bazıları için paramterler tanımlanabilir. Bir komut için bir satır yeterli olmaz ise satırın devam ettiğini göstermek için (\) kullanılır.
Genelde her satır için bir komut tanımlanabilir. Ancak her komuttan önce yazma ve listeleme komutu kullanılabilir.
^C yazılan satırı durdurur ve editörü komut konumuna geri döndürür.
editör için aşağıdaki komutlar kullanılabilir.

(.)a
metni belirtilen satırın arkasına ekler.
(.,.)c
Belirtilen satırdaki bilgiyi değiştirir.
(.,.)d
adreslenen satırlar arasını siler.
e file
bir kütüğü edit ortamına alır ve varsayılan kütük adını belirler.
e !command
!command komutu ile oluşan çıktı satırını edit ortamına alır.
E file
Bir kütüğü koşulsuz olarak edit ortamına alır.
f file
Varsayılan kütük adını "file" yapar.
(1,$)g/re/command-list
Komut listesini belirtilen satırlar arasında, belirtilen deyime uygun gelen yerlerde uygular.
komut listesindeki komutların herbiri ayrı satırlarda olmalıdır. Ancak en son komut (\) ile son bulmalıdır.
(1,$)G/re/
adreslenen satırlarda deyime uygun bilgiyi etkileşimli olarak edit etmek içinkullanılır.
komut listesi kalıbı 'g' komutundaki gibidir.
H
Bir önceki deyimin yazılıp yazılmamasını değiştirir (yaz/yazma gibi)
h
Son hata açıklamasını yazmak için kullanılır.
(.)i
Aktif satırın önüne yeni satır eklemek için kullanılır.
(.,.+1)j
adreslenmiş satırları birleştirir.
(.)klc
içinde lc ile tanımlanmış küçük harf bulunan satırı işaretler.
(.,.)l
Adreslenmiş satırları listeler.
(.,.)m(.)
adreslenmiş satırları belirtilen satırdan sonrasına taşır.
(.,.)n
Satırları satır numaraları ile yazdırır.
(.,.)p
Belirtilen satırları yazdırır.
P
Komut işaretini kapatır veya açar.
q
editörden çıkmak için kullanılır.
Q
editörden koşulsuz çıkışı sağlar.
($)r file
kütüğü okuyup belirtilen satırdan sonrasına taşır.
($)r !command
!command ile çalıştırılan komutun çıktısını belirtilen satırdan sonarsına okur.
(.,.)s/re/replacement/
(.,.)s/re/replacement/g
(.,.)s/re/replacement/n
Belirtilen satırlar arasında, belirtilen deyime (re) uyan metinleri belirtilen deyimle (replacement) değiştirir.
re ve replacement yeni satır karakteri veya boşluk dışında bir karakter olabilir.
Escape kullanılmamış & replacement içinde varsa re deyimine uyumlu metini tekrarlar.
`\m' karakter sırası kullanılırsa ve burada m [1-9] arasında bir değerse, değişiklik m tane önce yapılan değişikliğe uyan metin ile değiştirilir.
Eğer replacement bir tane `%' den oluşuyorsa bir önceki değiştirmeden kullanılan replacement metni kullanılacaktır. Eğer (\) kullanılırsa yeni satır karakteri metin içine yazılabilir.
(.,.)s
Son değişikliği tekrarlar.
(.,.)t(.)
belitilen satırları komuttan sonra gösterilen satırın arkasına kopyalar.
u
Son komutu geri alır.
(1,$)v/re/command-list
Belirtilen satırlar için re deyimine uymayan satırlarda komut listesini uygular.
(1,$)V/re/
Belirtilen satırlar için re deyimine uymayan satırlarda etkileşimli düzeltme yapılmasını sağlar.
(1,$)w file
Belitilen satırların "file" adlı kütüğe yazılmasını sağlar.
(1,$)wq file
Belitilen satırların "file" adlı kütüğe yazılmasını sağlar. Ve sonra editörü bitirir.
(1,$)w !command
Belirtilen satırların !command komutu ile çalışacak programa girdi olmasını sağlar.
(1,$)W file
Belirtilen satırların "file" adlı kütüğün sonuna yazılmasını sağlar.
(.)x
Belirtilen satırdan sonrasına kesme tampon alanındaki bilginin kopyalanmasını sağlar.
(.,.)y
Belirtilen satırları kesme tampon alanına koplayamaya yarar.
(.+1)zn
Belirtilen adresden başlayarak her seferinde n satır kaydırılmasını sağlar.
!command
shell açarak komutu çalıştırır.
(.,.)#
Bir açıklamayı başları. Bu satırda bundan sonra yazılan herşey açıklama olarak kullanılır.
($)=
Belirtilen satırın satır numarasını yazdırır.
(.+1)newline
Adreslenen satırın satır numarasını yazar ve imleç o satıra gider.



HTML - PHP Programlama
Giriş:
PHP 1994 yılı ortalarında Rasmus Lerdorf tarafından, kendi ev sayfasındaki özgeçmişine bakanların birtakım istatistiklerini tutmak için geliştirildi. 1995 yılı başlarında ise PHP - Personal Home Page Tools adı altında ilk sürümünü çıkardı. Bu ilk sürüm sadece sayaç, misafir defteri ve bunun gibi basit işleri kapsıyordu. 1995 yılı ortalarına doğru, PHP'nin ana mekanizması yeniden yazıldı. İçerisine Rasmus'un yazmış olduğu başka bir paket olan FI, mySQL desteği, ve form yorumlayıcı yerleştirildi. Sonunda yeni çıkan pakete PHP/FI sürüm 2 adı verildi. Zamanla PHP/FI paketini kullananların sayısı arttı ve insanlar PHP/FI için kaynak kodu yazmaya başladılar. 1997 yılı ortalarında ise PHP'nin ana mekanizması Zeev Suraski ve Andi Gutmans tarafından yeniden kodlandi, ve yeni pakete PHP sürüm 3 (PHP3) adı verildi. Günümüzde PHP paketini yaklaşık olarak 150000 web sayfası kullanmaktadır. Ayrıca, RedHat Linux ve StrongHold web sunucusu gibi bir çok ticari ürünle beraber kullanıcıya sunulmaktadır.

İlk Bakış:
PHP, UNIX ve Windows 95/98/NT sistemler üzerinde kullanılabilen, HTML içerisine sıkıştırılmış sunucu tarafında çalışan, C tipinde bir script yazılım dilidir.
PHP'nin belki de en güçlü ve en önemli özelliği OracleAdabas DSybaseFilePromSQLVelocisMySQLInformixSolid,dBaseODBD Unix dbmve PostgreSQL veritabanlarına yapabildiği hızlı ve güvenilir erişimidir.
PHP, ayrıca, IMAPSNMPNNTPPOP3, ve HTTP protokolleri ile, raw network socket bağlantısı kurarak bile iletişim kurabilmektedir.
PHP kaynak kodunu HTML kodunun içinde 4 farklı şekilde yazabiliriz:
1) <? echo("Deneme"); ?>
2) <?php echo("Deneme"); ?>
3) <script language="php"> echo("Deneme"); </script>
4) <% echo("Deneme"); %>

PHP programlarının çalışması icin web sunucunuza PHP modül desteğini vermeniz ve web sunucu ayar dosyasına asağidakine benzer bir satır eklemeniz gerekmektedir. Apache için bu ekleme:
AddType application/x-httpd-php3 .php3 .phtml
Bu ayar sayesinde, uzantısı .php3 ve .phtml olan dosyalar PHP kodu olarak algılanacak ve ona göre işlem yapılacaktır.
Bunun yanında, yazdığınız PHP programının kaynak kodunu, uzantısını .phps yaparak web üzerinden görebilmeniz mümkün. Ancak bunun için ilgili web sunucunuzun ayar dosyasına ufak bir ekleme yapmanız gerekmektedir. Apache için bu ekleme:
AddType application/x-httpd-php3-source .phps

Sonunda PHP4:
PHP yazılım grubu, 8 aylık hummalı bir çalışmanın sonrasında, ödül kazanmış PHP3'ün de ötesinde, PHP3'e özgü pek çok çalışma prensibini de aşarak Web geliştirme araçlarında devrim yaratacak PHP4.0 beta 1 sürümünü piyasaya çıkardı. Bu yeni sürümde göze çarpan en büyük değişiklik, Zeev Suraski ve Andi Gutmans'ın PHP3'ü yeniden kodlayarak geliştirdikleri Zend mekanızmasının, PHP4'e entegre edilmesiydi. Bu değişiklikle beraber yeni sürüm eskisinden çok daha hızlı, performanslı çalışmakta ve özellikle komplike Web sitelerine daha iyi sunum yapabilmektedir. Bunun yanında PHP4 başta TAMAMEN PLATFORMDAN BAĞIMSIZ olmasıyla beraber, pek çok yeni özelliği de kullanıcılarına sunmaktadır. Ancak bu yeni sürümün beta olduğunu, içinde pek çok hata barındırabileceği gibi daha önceden yazılmış programlarınızı modife etmek zorunda kalabiliceğinizi belirtir, PHP ile tanışmaniz için sizlere PHP3'ü tavsiye ederiz.

Değişkenler:
PHP aşaıdaki değişken tiplerini desteklemektedir: integerdoublestringarrayobjectpdfdoc ve pdfinfo (eğer PDF desteği verilmişse).
Programcının bir değişkenin tipini belirtmesine gerek yoktur. Çalışma esnasında PHP tarafından otomatik olarak değişkenin tipi belirlenir. Ancak, programcı gene de settype() fonksiyonunu kullanarak istediği değişkenin tipini belirleyebilir.
Değişken tiplerini önyüklemek (initialize) için, basit olarak ona bir değer atamak yeterlidir. Örnek vermek gerekirse;
 
$deger = 0;                       // integer
$isim = "murat";                // string
$sehir[0] = "adana";         // array

Tanımlanan genel (global) bir değişkeni bir fonksiyonun içinde kullanmak istediğinizde onun global bir degisken olduğunu belirtmeniz gerekir. Örneğin;
 
<?
$a = 1;
$b = 2;
function toplam() {
             global $a, $b;
             $c = $a + $b;
             echo $c;
}
toplam();
?>

Global bir değişken olduğu belirtilmezse, başka bir değişle (yukarıdaki örneği düşünürsek) global $a, $b satırı yazılmazsa; program $a ve $b değişkenlerinin yerel değişkenler olduğunu düşünecektir ve ekrana 0 yazacakır. Aynı işlemi aşağıdaki örnekte olduğu gibi, $GLOBALS array'ini kullanarak da yapabiliriz.
 
function toplam() {
             $c = $GLOBALS["a"] + $GLOBALS["b"];
             echo $c;
}


PHP değişkenlerinin tiplerinin kapsamı arasında, programların en önemli özelliklerinden birisi olan statik değişkenler de yer almaktadır. Bir statik değişken yerel bir değişken olarak düşünülür, ve programın çalışması sırasında değerini kaybetmez. Asağıdaki örneği düşünecek olursak;
 
function test() {
    $a = 0;
    echo $a;
    $a++;              // $a = $a + 1;
}

Bu fonksiyon her çalıştığında $a değişkenini 0'a atayacak, ekrana 0 yazacak, sonra da değerini 1 arttıracaktır. Dolayısı ile yukarıdaki fonksiyonun, fazla bir özeliği yoktur. Ancak, fonksiyonu asağıdaki şekilde düzeltirsek;
 
function test() {
    static $a = 0;
    echo $a;
    $a++;
}


test() fonksiyonu ilk çalıştırıldığında $a değişkeninin değeri 0'a eşitlenecek, ve her çalıştırıldığında değeri 1 arttırılacaktır.
PHP dilinin bir başka özelliği de değişkenlerin tipini otomatik olarak değistirebilmesidir. İlk başta string olan bir değişken çeşitli işlemlerden sonra double'a dönüştürülebilir. Örneğin;
 
$deger = "0";                      // string ASCII(48)
$deger++;                           // string "1", ASCII(49)
$deger += 1;                       // integer 2
$deger = 5 + "10 elma";    // integer 15
$deger = $deger + 1.3;     // double 16.3

Sabit (constant) değişken ise define() fonksiyonu kullanılarak tanımlanabilir: define("PI", "3.14");
Programınızin herhangi bir yerine bilgi (comment) eklemek istediğinizde ise bunu C/C++ dillerindeki, ve Unix kabuk programlamadaki gibi yapabilirsiniz.
 
// Aşağıda değerler toplanıyor
$c = $a + $b;
/* Şimdi bölünüyor */
$d = $c / 2;
# Çarpılıyor
$e = $d * 3;


Fonksiyon Tanımlamaları:
Bir fonksiyon aşağıdaki gibi tanımlanabilir:
 
function isim ($var_1, $var_2, ..., $var_N) {
             ...
             return $return_degeri;
}


Eğer fonksiyona parametre verilmez ise asağıdaki örnekte olduğu gibi değişkene öntanım verebilirsiniz.
 
function isim($ad = "ozgur") {
             ...
             return $return_degeri;
}


Fonksiyon isim() olarak cağrıldığında $ad değişkeninin değeri "ozgur"'dür.
Herhangi bir fonksiyona, parametrelerini değiştirme hakkını vermek istiyorsanız bunu ve karakteri ile (&) yapabilirsiniz. Örneğin;
 
function isim( &$ad ) {
             $ad .= ' sali.';
}
$deger = "pazartesi";
isim($deger);
echo $deger;                    // ekrana "pazartesi sali" yazacaktir.

Yukaridaki örnekteki $ad .= 'sali'; satırı Perl dilindeki gibi stringin sonuna başka bir string ekleme işlemini yapmaktadır.
 
$a = "bugun";
$a .= " gunlerden pazartesi";
echo $a;                            // ekrana "bugun gunlerden pazartesi" yazacaktir.

Dizinler (Arrays):
Bir dizin tanımlamak için array() fonksiyonu kullanilir. Tanimladiginiz dizin N boyutlu olabilir. Tek boyutlu dizine örnek vermek gerekirse;
 
$sehir = array();
$sehir[0] = "adana";
$sehir[1] = "adiyaman";

PHP'nin bir diğer faydalu özelliği de, Perl dilindeki split()'e benzer bir şekilde explode() fonksiyonuna sahip olmasıdır. Örnek:
 
function harf_bol() {
             $harf_listesi = "a:b:c:d:e:f";
             $harf = explode(":", $harf_listesi);
             echo "a harfi = harf[0] = $harf[0]\n";
             echo "f harfi = harf[5] = $harf[5]\n";
}


$harf = explode(":", $harf_listesi) satırından önce $harf = array(); tanımlamasını girerek, $harf değişkeninin dizin (array) tipinde olduğunu belirtmek zorunda degiliz. Zira, hatırlayacağınız üzere PHP dilinde programcının bir değişkenin tipini tanımlamasına gerek yoktur.

Objeler (Objects):
Bir objeyi önyüklemek (initiliaze) için new işlemini kullanmamız gerekmektedir. Örneğin:
 
<?
class tarih {
             function tarih_yaz() {
                            // 23/08/99 - 14:42:45 formatinda
                            $tarih = date("d/m/y - H:i:s", time());
                            printf("Tarih %s\n", $tarih);
             }
}
$tar = new tarih;
$tar->tarih_yaz();
?>


WWW ve PHP:
Web sayfasından bir form PHP script'ine submit edildiğinde, formun içindeki değişkenler otomatik olarak PHP scriptinin içinde yer alır. Örnek vermek gerekirse;
 
<form action="test.php3" method="post">
    Isim: <input type="text" name="ad"><br>
    <input type="submit">
</form>

Bu form submit edildiğinde test.php3 scripti $ad isminde bir değişken yaratıcak ve içine formdaki isim bölgesine yazılan veriyi yerleştirecektir.
Ayrıca formdan gelen değişkenlerin listesini, formun metoduna bağlı olarak (GET/POST$HTTP_POST_VARS ve $HTTP_GET_VARS global array'lerinin içerisinde de bulabilirsiniz. Bunun içinse PHP'yi sisteme kurarken --enable-track-vars özelliğini aktif hale getirmek gerekmektedir.

Veritabanları ve PHP:
PHP'nin en güçlü özelliği Veritabanlarına olan hızlı ve güvenli erişimleridir. Örneğin, sistemimizde PostgreSQL bulunsun, ve deneme isimli veritabanımızda değişiklik yapmak ya da ekrana veri yazdırmak isteyelim. Deneme veritabanımızda calisanlar isminde üç kısımdan oluşan (isim,soyisimyas) bir table olsun. Örneğimizi biraz daha geliştirmek istersek; Web sayfası üzerindeki formdan girilen isim, soyisim ve yaş bilgileriniSQL veritabanımıza önce ekleyelim, sonra da veritabanındaki bilgileri ekrana yansıtalım:

Örnek baslangıç:
 
db.php3:
<?
// veritabanı = deneme, port = 5432
$dbname_port = "dbname=deneme port=5432";
// Veritabanına bağlan
function sql_ac() {
             $conn = pg_connect($dbname_port);
             if($conn == false) {
                            printf("SQL'e bağlantı başarısız!\n");
                            exit();
             }
             return $conn;
}
// Veritabanı bağlantısını kapa
function sql_kapa($conn) {
             pg_close($conn);
             return;
}
// ekrana dataları yazdır
function yazdir() {
             // SQL'e bağlantı
             // Başlangıç
             $conn = sql_ac();
             $query = "SELECT isim,soyisim,yas FROM calisanlar";
             // Query'mizi gönderiyoruz
             $ret = pg_exec($conn, $query);
             $satir = pg_NumRows($ret);
             if($satir == 0) {
                            printf("Kayıt Yok!\n");
                            sql_kapa($conn);
                            exit();
             }
             printf("İsim            Soyisim    Yaş\n");
             for($i = 0 ; $i < $satir ; $i++) {
                            printf("%s %s %s\n", 
                                           pg_result($ret, $i, 0),
                                           pg_result($ret, $i, 1),
                                           pg_result($ret, $i, 2));
             }
             sql_kapa($conn);
             return;
}
// Veri ekleme
function ekle($isim, $soyisim, $yas) {
             $conn = sql_ac();
             $ins = "INSERT INTO calisanlar VALUES('$isim','$soyisim','$yas')";
             pg_exec($conn, "begin");
             $ret = pg_exec($conn, $ins);
             if($ret == false) {
                            printf("Veri SQL'e eklenemedi!\n");
                            sql_kapa($conn);
                            exit();
             }
             sql_kapa($conn);
             printf("Veri eklendi..\n");
             return;
}
// programın ana kısmı
if(!$isim || !$soyisim || !$yas) {
             printf("Lütfen bilgileri eksiksiz doldurunuz..\n");
             exit();
}
// Aşağıdaki üç satır FORM'dan gelebilecek encode edilmiş
// datayı okunabilir hale getirir. Örneğin formda
// herhangi bir kisma , (virgül) ASCII(44) girildiğinde
// bu scripte gelecek deger %2C olacaktır.
// urldecode() fonksiyonu %2C'yi virgüle cevirir.
$isim = urldecode($isim);
$soyisim = urldecode($soyisim);
$yas = urldecode($yas);
// datayı ekle
ekle($isim, $soyisim, $yas);
// dataları ekrana yazdır
yazdir();
?>

 
form.html:
<form method=POST action="db.php3"&
             Isim: <input type=text name=isim<>br>
             Soyisim: <input type=text name=soyisim<>br>
             Yas: <input type=text name=yas<>br>
             <input type=submit value="Ekle">
</form>


Örnek sonu.

PHP ile yazılan Uygulamalar:
Hali hazırda PHP ile yazılan ciddi yazılımlar mevcuttur. Veritabanı uygulamalarına şiddetle ihtiyaç duyan hatta kredi kartı ile işlem yapan pek çok web sitesi, PHP ile yazdıkları programları kullanmakta ve problem yaşamamaktadırlar.
PHP, aralarında GD ve IMAP'inde bulunduğu birtakım kütüphaneleri kullanarak, kullancısına daha iyi hizmet verebilmektedir. Örneğin, geçtiğimiz aylarda, PHP'nin IMAP desteği ile yazmış olduğum ZomZom programında, başka herhangi bir yazılım diliyle çok zor yapabileceğim pek çok işlemi, PHP'nin sayesinde fazla zorlanmadan yazabildiğimi itiraf etmeliyim. Adı geçen yazılım, web üzerinden mesaj alışverişini sağlamakta, kısaca kullanıcılarına istemedikleri mesajları makinalarına indirmeden silmek gibi bazı basit ama faydalı öneriler sunmaktadır.
Herşeyden önce size ZomZom'un çalışma prensibi hakkında bir takım bilgiler vermek istiyorum. Kullanıcı, kodunu ve şifresi girdiğinde, program ilk önce kullanıcı kodu ve şifrenin doğru olup olmadığını kontrol etmektedir.
 
function ks_kontrol($kod, $sifre, $imap_sunucu) {
   global $imap_port, $imap_mbox;
   $i_str = imap_open("{$imap_sunucu:$imap_port}$imap_mbox", $kod, $sifre);
   if($i_str == 0) {
     printf("Kullanıcı kodu ya da şifre hatalı!\n");
     exit();
   }
   $i_close = imap_close($i_str);
}


Yukarıdaki fonksiyonda global değişkenler olan $imap_port; IMAP protokolünün öngörülen portu olan 143$imap_mbox'un değeri ise Inbox'dır.ks_kontrol() fonksiyonu kullanıcının formdan girdiği sunucu adresine, kod ve şifreleri kullanarak bağlanmaya çalışmakta; böylece doğruluklarını kontrol etmektedir.
Kullanıcı, doğru kodu ve şifreyi girdiği taktirde, kendisine içerisinde kod ve şifre ile ilgili bilgileri içeren bir Cookie (kurabiye) gönderilmekte, ve ileride yapacağı işlemler için bu verilerden yararlanılmaktadır. Bu yöntemle, kullanıcının kodu ve şifresi güvenlik altına alınmaktadır.
Daha sonra kullanıcıya posta kutularının listesi sunulmaktadır. IMAP sunucusuna kullanıcının daha önce girmiş olduğu kullanıcı kodu ve şifresi sayesinde bağlanılır, ve posta kutuları listelenir.
 
function postakutu_listele($kod, $sifre, $imap_sunucu) {
   global $imap_port, $imap_box;
   $i_str=imap_open("{$imap_sunucu:$imap_port}", $kod, $sifre);
   $m_list=imap_listmailbox($i_str,"{$imap_sunucu:$imap_port}", DIR, "*");
   for($i = 0 ; $i < count($m_list) ; $i++) 
             printf("%s
\n", $m_list[$i]);
   $i_close = imap_close($i_str);
} 


Yukarıdaki postakutu_listele() fonksiyonu içinde DIR, sabit bir değişken olarak tanımlanmıştır, ve değeri Zom-Mail'dir. Fonksiyon, sunucuya bağlandıktan sonra Zom-Mail dizininin içindeki posta kutularını sıralamaktadır. Bu dizin içerisinde, kullanıcının daha önce arzu edip açtığı posta kutuları bulunmaktadır.
Kullanıcı mesajlarının listesini görmek istediğinde ise, aşağidakina benzer bir fonksiyon calışmaktadır:
 
function listele($kod, $sifre, $imap_sunucu) {
   global $imap_port, $imap_mbox;
   $i_str = imap_open("{$imap_sunucu:$imap_port}$imap_mbox", $kod, $sifre);
   $mbox_bilgi = imap_mailboxmsginfo($i_str);
   if($mbox_bilgi->Nmsgs == 0) {
       printf("Mesajiniz yok!\n");
       $i_close = imap_close($i_str);
       exit();
   }
   printf("Kimden | Tarih | Konu | Uzunluk<br>\n");
   for($i = 1 ; $i <= $mbox_bilgi->Nmsgs ; $i++) {
             $mesaj_hdr = imap_header($i_str, $i);
             $mesaj_no = $mesaj_hdr->Msgno;
             $from_obje = $mesaj_hdr->from[0];
             $kimden = $from_obje->personal;
             $tarih_tmp = $mesaj_hdr->udate;
             $tarih = date("d/m/y - H:i:s", $tarih_tmp);
             $konu = $mesaj_hdr->subject;
             $uzunluk = $mesaj_hdr->Size;
             printf("$kimden|$tarih|$konu|$uzunluk<br>\n");
   }
   $i_close = imap_close($i_str);
}


listele() fonksiyonu kabaca; IMAP sunucusuna bağlanıp, ilgili kişinin mesajlarını listelemektedir.
ZomZom, hali hazırda PostgreSQL veritabanını ve JavaScript dilini de kullanarak, adres defteri ve kişiye özel ayarları desteklemekte, ayrıca eklemeler ile mesaj gönderme/yanıtlama/okuma/yönlendirme/silme işlemlerini de başarıyla yapabilmektedir.

PHP hakkında daha detaylı bilgi alabileceğiniz adresler:
PHP Ana Sayfası: http://www.php.net
Türkiye Yansısı: http://php.bilkent.edu.tr
Örnek Programlar:
http://php.codebase.org
http://www.phpbuilder.com
http://px.sklar.com
Her platform için ASP
Linux Acemi
Bir çok web geliştiricisinin kullandığı ASP, platform bağımsız olma yolunda ilerliyor. Windows NT bağımlıyken JDK desteği ile Solaris’te dahi kullanılmaya başlayan ASP’nin geçmişini öğrenmek ve Linux’unuz için %100 “saf” bir ASP desteği ister misiniz?
Linux Acemi
14.8.2000
Ferhat Bingöl
Linux Acemi
ASP (Active Server Pages) Microsoft tarafından kullanıma sürüldüğünden bu yana giderek artan bir ilgiyle karşılandı bir çok yazılım geliştiricinin Windows NT’ye yönelmesinde temel sebeplerden biri oldu. Microsoft’un çok iyi bir pazarlama taktiğiyle tanıttığı ASP, sadece NT’de çalışmasıyla ünlü bir script dili ya da en azından öyleydi. Yaklaşık 2 senedir gelişimini sürdüren Chili!Soft ASP son 6 ay içersinde büyük bir kullanıcı kitlesine ulaştı. "Platform Bağımsız ASP" sloganıyla satışa sunulan ürün, kısa bir zamanda kullanıcılardan büyük bir talep gördü. Talepteki asıl sebep bana göre Chili!Soft ASP’nin belki de NT’den iyi performansı değil, maliyetindeki düşüklüktü. Tabii, konu maliyet olunca Chili!Soft’a ilk sarılan Linux’culer oldu.

Başarılı buldukları, ancak NT üzerinde yeterli performansta çalışmadığını düşündükleri ASP’yi alıp Java desteği ile Apache Web sunucusu üzerinde çalıştırma fikri bir çok Linux’cu gibi bana da oldukça cazip geldi ve Chili!Soft’u yaklaşık 1 sene kadar önce denedim. Linux üzerinde başarılı performansının yanı sıra Perl ve PHP kullanırken kullanmaya alıştığım sendmail desteği gibi eklentilerinde ASP’nin içinde var olduğunu görmek beni ASP kullanmakta daha rahat bir ortama çekmişti.

Bu ay ilkini okuduğunuz Linux konulu bu Net Okulu yazısında, Chili!Soft ASP’nin Apache Web Sunucusu ve Java JDK kurulu bir Linux sistemine nasıl kurulacağını ve nasıl aktif hale getirileceğini göreceğiz. Öncelikle yazının devamını okumadan sistemin gereksinimlerini sıralayalım :

Sürüm
·        RedHat Linux 6.2, 6.1
·        SuSE Linux 6.4
·        Linux-Mandrake 7.0
·        Slackware Linux 7.0
·        Cobalt RaQ 3 or 3i

Web Sunucusu: Apache 1.3.12, 1.3.11, 1.3.9, 1.3.6, 1.3.4, 1.3.3, Red Hat Secure Server 6.2

Bellek: 128MB Minimum, 256MB tavsiye edilen

CPU: Pentium ya da yukarısı

Sabit Disk alanı: 100 MB

Ek yazılım (tercihe bağlı Veritabanları):
·        PostgreSQL 6.5.2 ya da yukarısı
·        MySQL 3.22.32-1
·        Oracle 8, 8i
·        dBase 5
·        MS SQL Server 7
·        Sybase 11
·        Informix 9
·        MS Access
·        MS SQL Server 6.5

Java Desteği
·        JDK 1.2.2 RC4 (bilgi için www.blackdown.com)
Nereden alınır? Nasıl kurulur?
Linux Acemi
Öncelikle http://www.Chili!Soft.com adresine gitmeniz gerekiyor. Burada platform seçimi yapmanız gerekecek. Linux’u seçin ve gelen sayfadan Download tuşuna basın. Kullanım için eğer sisteminizde kurulu değilse JDK’yı geçerli sürümünüzün CD’sinden ya da http://java.sun.com sitesinden indirebilirsiniz.

Kurulum

Adım 1 :Kurulumdan önce dikkat edilecek hususlar

a. Sisteme Root olarak girmelisiniz

b. En azından 100 mb sabit disk alanına sahip olduğunuzdan emin olun.

c. Geçmiş sürümleri muhakkak kaldırın

Adım 2 : Chili!Soft ASP paketini açmak

a. İndirdiğiniz *.tar dosyasını temp dizinine açın

b. Aşağıdaki komutu kullanarak paketi açın:
#> tar xvf casp-linux- .tar

c. Paket açıldıktan sonra içinden şu dosyalar çıkacak:

README: İngilizce BENİOKU dosyası

install.sh: kurulumu yapacak script:

package/casp.tar.gz - sıkıştırılmış binary dosyası
package/components.tar.gz
package/installer.tar.gz
package/upgrade.pl

d. Kurulum işlemi bitince bu dizini tümüyle silebilirsiniz.
Esas kurulum bölümü
Linux Acemi
14.8.2000
Ferhat Bingöl
Linux Acemi
Adım 3 : Esas kurulum bölümü
a. 'install.sh' dosyasını aşağıdaki komutu kullanarak çalıştırın
#> ./install.sh

b. Chili!Soft’un nereye kurulacağı sorulduğunda ister istediğiniz dizini belirtin ya da ileri diyerek standart "/opt/casp" dizinine kurulumu başlatın.

c. Daha sonra sistem sizden Web sunucusu seçmenizi isteyecek. Seçiminizi yapın.

d. Daha sonra sistem size kurulum için iki farklı yol sunacak. İsterseniz kurulumu tamamen Autoselect seçeneği ile otomatiğe bağlayabileceğiniz gibi, Customize seçeneği ile de tercihe bağlı bir kurulum yapabilirsiniz. Eğer rahat bir kurulum istiyorsanız Autoselect’i tercih etmelisiniz.

Adım 4 : Apache Web Sunucu Modülünün kurulumu:

Kurulum sırasında sadece Apache Web sunucusunu seçmek kullanım için yeterli değil, Apache ile iletişimi sağlayacak modülü de sisteme yüklemeniz lazım. Bu modül kurulumu her sürüm Linux için farklı farklı bu sebeple sürümünüzle ilgili notları Chili!Soft ASP içindeki kurulum dosyasından okumalısınız.

Adım 5 : Ayarların yapılması:

Yönetim Konsolu (ADMINISTRATION CONSOLE) : Chili’Soft’un bu sürümüyle birlikte gelen bu yeni yönetim modülü sayesinde sistemin ayarlarını yapmak daha da kolaylaştırılmış. Detaylı bilgi için http://www.Chili!Soft.com/caspdoc adresine bakabilirsiniz. Bölüm 5 tümüyle bu konuyu içeriyor. Yönteim Konsoluna girmek için http://localhost:5100 adresini tarayıcınıza yazmanız yeterli. İlk kullanım için kullanıcı adınız "admin" ve şifreniz "root" . Buradan istediğiniz tüm ayarlamaları yapmanız mümkün ancak kullanıcı adı ve şifreyi değiştirmeyi unutmayın. Yardım dosyası içindeki 4.1.1 başlığına bakarak bu işlemi yapabilirsiniz.
LINUX
Linux’ta Fvwm95 Pencere Yöneticisi
LINUX işletim sistemi ile ilgili yazılarımızı siz değerli okuyucularımızın Türkiye’deki çeşitli Linux e-posta listelerinde sordukları sorulardan ve bize gelen istek mektuplarından seçmeye özen gösteriyoruz.
Linux işletim sisteminde, son kullanıcıların en çok ilgisini çeken konu kuşkusuz X-Windows ve uygulamalarıdır. Linux altında 20’den fazla, farklı özellik ve görünümde pencere yöneticisi bulunuyor. Diğer işletim sistemlerinin tersine, UNIX/Linux iletim sisteminde X-Windows arayüzü sabit değil ve kullanıcıların beğenisine hitap eden birçok arayüzü mevcut. Bu arayüzlere X-Windows Window Manager (pencere yöneticisi ya da pencere denetleyicisi) denmektedir. Pencere yöneticilerinden en ilgi çekenleri AfterStep, WindowMaker (AfterStep uzantılı bir pencere yöneticisi), Enlightenment (görkemi ve fanteziyi sevenler için hazırlanmış havalı bir pencere yöneticisi) ve Fvwm95’dir.

FVWM95’İN ÖZELLİKLERİ
Fvwm95, fvwm pencere yöneticisinin bir uzantısıdır. Linux kullanıcılarına Windows 95 tipi bir arabirim olarak tasarlanmış bu pencere yöneticisi, kullanım kolaylığı açısından her zaman ilgi odağı olmayı sürdürmüştür. Red Hat dağıtımlarının ön tanımlı pencere yöneticilerinden olan AnotherLevel pencere yöneticisi de bir çeşit Fvwm95 türevidir. Yandaki resimde de gördüğünüz gibi, menüleri yerleşimi, büyültme ve küçültme düğmeleri, görev çubuğu ile Win95 arayüzünün hemen hemen aynısıdır. “Peki neden Linux işletim sisteminde böyle bir arayüze ihtiyaç var?” sorularınızı duyar gibi oluyorum. Bu sorunun cevabını kısaca şöyle verebiliriz: Biliyoruz ki, Linux kullanıcılarının çoğu aynı zamanda Windows 95 kullanıcılarıdır. Bir çoğunun bilgisayarında bu iki işletim sistemi bir arada bulunmaktadır. İşte sürekli bu iki işletim sistemi arasında geçiş yapan kullanıcılar, her seferinde farklı bir arayüzle karşılaşmaktan hiç de hoşnut kalmayabiliyorlar. Bu nedenle aradaki benzerliği artırmak ve kullanımı kolaylaştırmak için Fvwm95 pencere yöneticisi tasarlanmıştır.
Ancak daha önce de belirttiğimiz gibi, Linux’ta birçok pencere yöneticisi var ve her bir pencere yöneticisinin yapılandırma dosyası birbirinden oldukça farklı. Bunları göz önüne alırsak, menülerin kurduğumuz programlar tarafından otomatik olarak ayarlanması imkansız gibi görünmektedir. Son zamanlarda geliştirilen programlardan KDE’nin menülerini otomatik olarak ayarlaması için modüller içerdiği dikkatimizi çekti (örneğin StarOffice 5.0). KDE içindeki bu modül, X Windows açılırken menüleri dinamik olarak değiştirebiliyor. Ayrıca sadece KDE’de değil, diğer pencere denetleyicilerinde de kullanılabiliyor.
Bu yazımızda önce Fvwm95 paketinin derlenmesi ve menülerin nasıl ayarlanacağına dair kısa kısa notlar vereceğiz.
FVWM95 KURULUMU
http://las.ml.org adresinde, Linux programlarının arayabileceğiniz en iyi tarama motorlarından birisi bulunur. Türkiye içinde ise http://ftpsearch.ankara.edu.tr adresi hemen hemen tüm Linux arşivlerini tarayabilir. Bu iki önemli adresi kullanarak fvwm95-2.0.43a-Autoconf.tgz paketini arayın. Makinanıza indirin ve bir dizine aşağıda gösterildiği şekilde açın.
# tar -zxvf fvwm95-2.0.43a-Autoconf.tgz
Bu komut bulunduğunuz dizin altında fvwm95-2.0.43a-Autoconf dizinini açacaktır. Şimdi bu dizine geçin ve
#./configure
komutunu verin. Böylece sisteminizin özellikleri toplanacak ve gerekli kütüphane ve programların var olup olmadığı kontrol edilip Makefile dosyaları yaratılacaktır. Bu işlemi başarı ile bitirdikten sonra:
# make
komutunu verebilirsiniz. Paketlerin derlenmesi birkaç dakikayı alacaktır. Derleme işleminden sonra
# make install
komutunu vererek kurulum işlemini tamamlayabilirsiniz. Son komut gerekli programları sisteme kuracaktır. Fvwm95 modülleri ve yapılandırma dosyası /usr/local/lib/X11/fvwm95 dizinine, fvwm95 çalıştırılabilir programı da /usr/local/bin dizinine kopyalanacaktır. X-windows’unuzu bu arayüzle açmak istiyorsanız ev dizininizdeki .xinitrc dosyası içine (örnek olarak milne kullanıcısı için /home/milne/.xinitrc) /usr/local/bin/fvwm95 satırlarını eklemelisiniz. Kendi menülerinizi ayarlamak istiyorsanız /usr/local/lib/X11/fvwm95/system.fvwm95rc dosyasını ev dizininize .fvwm95rc olarak kopyalayın. Menü ayarlamalarımızı bu dosya içerisinde yapacağız.

FVWM95 MENÜLERİ
Menüleri ayarlamak oldukça kolay bir mantığa dayanır. Örnek olarak Start Menüsüne "rxvt" terminal emülasyon programını ekleyelim. Ev dizininize kopyaladığınız .fvwm95rc dosyasını bir metin düzenleyici (örneğin pico, vi, ya da nedit) ile açın.
#--------- Taskbar’s start menu
ile başlayan satırı bulun. Bundan sonraki satırlar fvwm’in başlangıç menüsünü oluşturur.
#--------- Taskbar’s start menu
DestroyMenu "StartMenu"
AddToMenu "StartMenu@linux-menu.xpm@^#808080^" \
"&Programs%programs.xpm%" Popup Programs
+ "&Documents%documents.xpm%" Popup Documents
+ "&Settings%settings.xpm%" Popup Settings
+ "&Find%find1.xpm%" Popup Find
+ "&Help%help.xpm%" Exec xman &
+ "&Run...%run.xpm%" Exec run &
+ "" Nop
"Sh&ut Down%shutdown.xpm%" Popup Shutdown
Yukarıda gördüğünüz gibi oldukça basit bir mantıkla menülerimizi değiştirebiliriz. Eklemek istediğiniz seçenekleri bir satır içerisine aşağıdaki şekilde yazıyorsunuz
+ "& % %" Exec &
Menüde görmeyi istediğiniz resimleri /usr/local/icons dizininde bulabilirsiniz. Eklemek istediğiniz resimler varsa bu dizine kopyalayın. Biz rxvt programını eklemek istediğimizden mini-term.xpm resmini kullanacağız. İsterseniz, yukarıda Settings menüsünden sonra şu satırı ekleyin
+ "&Konsola çıkış%mini-term.xpm%" Exec rxvt &
Şimdi dosyayı kaydedin ve Start*Shut Down*Restart diyerek yeni menünüzü aktif hale getirin. Yeni Start menünüzün aşağıdaki şekilde görüyorsunuz.
Linux kullanıcılarının vazgeçilmez programı olan Star Office programını hemen programs menüsüne "Office Programları" adlı yeni bir menünün içine ekleyelim. Star Office ikonlarını, www.stardivision.com adresinden indirebilirsiniz. Bu ikonları yukarıda bahsettiğimiz dizine kopyalayın.
Şimdi yapılandırma dosyanızı açın "#--------- Programs" ile başlayan satırı bulun ve takip eden satırları aşağıdaki gibi düzenleyin
#--------- Programs
DestroyMenu "Programs"
AddToMenu "Programs" \
"Accessories%mini-hammer.xpm%" Popup Accessories
+ "Offis Programları%mini-briefcase.xpm" Popup Ofis
+"Text Editors%mini-edit.xpm%" Popup Editors
.....
Bu size Programs menüsü içerisinde "Office programları" adında bir menü açacaktır. Alt menüyü oluşturmak üzere yapılandırma dosyasındak herhangi bir yere, tercihen en son kısma, aşağıdaki satırları ekleyin.
DestroyMenu "Ofis"
AddToMenu "Ofis" \
"Star Office%soffice.xpm%" Exec soffice
+"LyX%mini-doc1.xpm%" Exec lyx
İlk satıra "+" işareti konmadığına dikkat ediniz. Yukarıdaki satırlar menünüze hem "Star Office", hem de "LyX" programını ekleyecektir. LyX Latex için grafik arabirimli bir kelime işlemcidir.
Ancak bu işlemi yaptıktan sonra Star Office programını çalıştırdığınızda görev çubuğunda bu programın ikonunun kırmızı bir "X" harfi ile gösterildiğini göreceksiniz. Bunu düzeltmek için görev çubuğu icon tanımını yapmak üzere herhangi bir yere şu satırı eklemeniz yeterli olacaktır:
Style "StarOffice*" TitleIcon soffice.xpm
Bunun anlamı şudur: Başlık çubuğundaki başlık StarOffice ile başladığı sürece, görev çubuğundaki ikonu soffice.xpm olacaktır. Yeni görev çubuğumuza ait örneği aşağıdaki şekilde görebilirsiniz:
Fvwm95’te masüstü en çok kullandığımız programları bir dokunuşla açabileceğimiz düğmelerden oluşur. Masüstümüze yine Star Office programını ekleyelim. Dosya içerisindeki
# Define the buttons to use.....
satırını bulun ve hemen altına aşağıdaki satırı ekleyin:
*FvwmButtons(Title StarOffice, Icon smain.xpm, Action ‘Exec "Star Office" soffice &’)
Aşağıdaki şekilde değiştirilmiş bir masüstünü görebilirsiniz.
Fvwm95 yapılandırması ile ilgili anlatılacak olanlar bu kadarla bitmiyor elbette. Yapabileceğiniz bir çok eklenti var, bunları anlattıklarımızdan esinlenerek gerçekleştirebilirsiniz. Bir kere menü yaratmayı anladıktan sonra masaüstünüzü şenlendirmek sizin elinizde. Menüleri tamamen Türkçe de yapabilirsiniz.
Türkçeleştirme işleminden sonra herkesin kullanımına sunmak üzere bize gönderin ki bunları en sık ziyaret edilen Linux sayfalarında duyuralım, yaptıklarınız herkesçe paylaşılsın.
FVWM95 İle İlgili Adresler

l http://www.linux-kheops.com/pub/fvwm95
l http://www.terraware.net/ftp/pub/Mirrors/FVWM95/fvwm95.html
l http://www.medfac.unimelb.edu.au/staff/raul/bin/
l ftp://mitac11.uia.ac.be/pub/
l ftp://ekf2.vsb.cz/pub/linux/fvwm-95/
l ftp://ftp.plig.org/pub/fvwm95/
l ftp://ftp.terraware.net/pub/Mirrors/FVWM95/
< Linux'un Eşdeğerleri >
     Bu doküman  VA Linux Systems 'a ait Linux.Com web sitesinin 
JumpStart kısmında aynı isim ile yer alan İngilizce dokümanın Türkçe çevirisidir.
Yazar burada anlattığı şekilde yapılan bir işlemden dolayı meydana 
gelebilecek hiçbir zarardan sorumlu değildir.
Yazar         : Chris "Bix" Marshall
Çevirmen      : Erdinç Güler <guler@ae.metu.edu.tr>
Çeviri Tarihi : 3 Ekim 1999, Pazar
     Neredeyse her yeni kullanıcının sorduğu en büyük sorulardan birisi kabaca :
" Eğer ( buraya en gözde uygulamanızı koyun)’I çalıştırmak istersem ne yapacağım ? " 
...Ve Linux yükleyen birçok yeni kullanıcının bu korkutucu soruya yanıtları hazırdır :
Bir kenara atılmış eski bir 95 bölümü ayırmak ve makinayı iki farklı sistemde çalıştırmak.
Yeterince kolay. Ben yaptım ve uzun zaman Linux’a dönmeyi düşünenen birçok arkadaşıma da bunu önerdim. Ama durumlar değişti ve Linux dünyası hakkında öğrendiğim üç şey fikrimi değiştirmeme neden oldu. İşte nedenleri :
1.) Gün geçtikçe daha fazla uygulama farklı platformlarda çalışma mantığı ile 
     geliştiriliyor..
.
     Word Perfect, Civilization - Call to Power, ve Quake III Arena. Bu uygulamaların Linux kullancıları için neden önemli olduğunun basit bir cevabı var : Bu uygulamalardan herbirini Linux üzerinde çalıştırabilirsiniz.  Bu üç uygulama program geliştiriciler arasında artan eğilimi göstermektedir. Linux en son BT ( Bilşim Teknolojileri ) gözdesi olmaya başladı. Şimdi bir geliştirme platformu. Kullanıcı tabanı küçük uyarı sinyalleri gönderiyor. Bir çok durumda birçok alternatiften daha güvenli olduğunu kanıtlıyor. Fakat bu üç gerçek sadece işletim sistemi için iyi sinyaller. Ama hepsi bir araya geldiğinde büyük isimli yazılım firmaları Linux’a arka çıkmak ve onun için çalışmakta güçlü istekler duymaya başlıyorlar.
2.) Hala geliştirmenin ilk aşamalarında olunmasına karşılık,WINE ve VMWare gibi
     projeler gelecek için potansiyel çözümler sunuyorlar.
     Bu gibi projelere ne kadar güvenilmesi gerektiği hep bir tartışma konusu olmuştur. WINE ve VMWare gibi projelerde bir şeyi aklımızdan çıkartmamalıyız. Bütün verilen sözlere ve bugünkü sonuçlara karşın hiçbirisi son dağıtım aşamasında değiller.Aslında VMWare bitime yaklaşıyor ve bir Win32 uygulaması çalıştırmak istediğinizde biligisayarınızı tekrar açmaya elle tutulur bir alternatif getiriyor ama yine de bitmiş değil ve
birçoklarına göre WINEStarCraft gibi Win32 uygulamalarını sorunsuz çalıştırabiliyor, bu da hala mükemmel değil. Söylenenler, “Başlat" düğmesinden vazgeçemeyenler için bu iki program da büyük umutlar vadediyor.
WINE ( WINE bir emülatör değildir. ) proje geliştiricileri Win32 API ‘sini yerleştirmeye çalışıyorlar. Eğer başarıya ulaşırsa neredeyse tüm Win32 uygulamalarını Linux üzerinde çalıştırabileceksiniz. Şimdilik düşünceleri gerçeklerden ayırmak oldukça zor; ama WINE, önümüzdeki birkaç yıl içinde yayınlayacakları hakkında büyük sözler vermekte.
     Açıkça en çok söz veren VMWare. VMWare bilgisayarınızda sadece bir Windows bölümü oluşturmakla kalmıyor, PC 'nizin içine sanal bir PC de kuruyor. Ve bu sanal PC 'ye Windows’u kuruyor ve çalıştırıyorsunuz. Bu sayede çoklu işletim sisteminden ve bilgisayarınızı tekrar açmaktan kurtuluyorsunuz.
3.) Linux kullanacağınız uygulamaya göre değişen açık kodlarla dolu.
     İlk iki nokta heyecanlı ve Linux’u överken, Linux’a balıklama dalmak için en önemli nedeni anlatmazlar. Bu neden tabiki açık kod topluluğu. Linux’a ilk geçişim sırasında açık kod uygulamalarının kalitesi hakkında biraz şüpheciydim. Tabiki Mozilla gibi açık kodlu kaliteli programları duymuştum; ama bu şekilde yazılmış kaliteli programların MAC’in vereceği detaylı hata kodları kadar nadir olacağını zannediyordum.Taa ki GIMP ‘i derleyinceye kadar. Hikaye çok basit. Çalıştığım web sayfası için bir resmi düzenlemem gerekiyordu. Yıllarca Adobe Photoshop ile çalıştım ve yerine koyacak birşey beklemedim. Bir şirketin web sunucusu için bazı resimlerde birkaç kozmetik değişiklik yapmam gerekiyordu ve kendi NT ’me Photoshop yüklemek yerine GIMP ’i kullanarak zaman kazanabilirim diye düşündüm. Gücü karşısında savrulmuştum... Tabii kullanacağım özelliklerin yerini öğrenmem biraz zamanımı aldı ama kullanmaya alıştıkça GIMP, Photoshop kadar güçlü olmaya başladı. Aslında birçok Photoshop kullanıcısı, GIMP 'in yüksek sonlandırma özelliğinin olmamasını eleştirebilirler ama dürüst olmak gerekirse, GIMP tipik düzenleme ihtiyaçlarım için iyi bir alternatif olacağını kanıtladı.
     Bu akla bir soru getiriyor: Linux topluluğu içinde ne kadar sıklıkta GIMP gibi başarı hikayeleri yankılanıyor. GIMP açık kod uygulamaları için bir lider. Ama birçok Windows kullanıcısı bileMozilla, Apache, GNOME ve daha birçokları gibi devrimsel açık kod projelerini bir çırpıda sayabilir. Açık kod hareketinin önemi, boşlukları doldurmasıdır. Bir pazarlamadan veya şirket yöneticilerinin son kullanıcının ihtiyaçlarını düşünmesinden daha
farklı olarak, son kullanıcı ihtiyaçlarını kendisi yaratıyor veya istedikleri uygulamaların gelişimine kendileri liderlik ediyor. ...Ve hatta açık kod karşıtları bile Freshmeat.net ve Linuxberg.com ‘da bulunan uygulama kütüphaneleri karşısında ses çıkartamıyorlar.
     Sonuçta Win32 uygulamalarını veya taşınmışlarını Linux üzerinde çalıştırabilmek birçoklarımız için faydalı olacaktır; ama en önemli gerçek, Linux topluluğu neredeyse her Linux kullanıcısının ihtiyaçları için çözüm üretebilecek, çokseslilik vadeden bir gelişim ivmesine ulaştı. Kısaca bir daha DOS u çalıştırmaya ihtiyaç duyduğunuzu düşündüğünüz zaman, Linux ’a sorunlarınızı çözmesi için ikinci bir şans verin. Şaşıracaksınız !
Redhat 6.X ile İnternete Nasıl Bağlanılır?


 
1. Adım  xterm den aşağıdaki komutları giriniz. 
 
#su           
#control-panel
Aşağıdaki pencere gelince telefon ikonuna tıklayınız.

Linux Acemi

2. Adım  Modeminizin hangi seri porttan  bağlı olduğunu seçiniz, seçimi yaptıktan sonra pencereyi kapatın. Aşağıdaki şekilde yeterince açıklama var sanırım.   Linux Acemi 

3. Adım Control Panelden Network ikonunu tıklayın
veya xterm den
 #netcfg  komutunu girin burada internet servis sağlayıcınızın DNS numarasını girin (194.242.73.12  sol' un DNS i) Linux Acemi
 

4. Adım  Interfaces Butonuna tıklayın ve Add butonuna tıklayarak ppp ekleyelim.

Linux Acemi

5. Adım ppp eklerken aşağıdaki pencere gelecektir. Burada bağlantı için gerekli ayarlar görülmektedir. Linux Acemi

İnternet servis sağlayıcıya bağlı olarak customize butonuna basarak aşağıdakine benzer ayarlar yapmanız gerekebilir.  
Eğer Gerekli ise aşağıdaki ayarları yapın. 

Linux Acemi 

6. Adım root dan başka kullanıcıların internet bağlanabilmeleri için  Allow any user to (de)activate interface seçeneğini işaretleyin.

Linux Acemi 

7. ve Sonuncu Adım Artık xtermde #usernet komutunu girin. ppp0 butonuna tıklayarak internete bağlanabilirsiniz.  Bağlantı gerçekleşir ise kırmızı buton yeşil olacaktır. Kesmek için yine aynı butona basınız.

Linux Acemi

Sorunlarla Karşılaşığınızda eğer bir sorun var ise yapacağınız şey  başka bir xterm açın ve şu komutları girin #su  #tail -f /var/log/messages bağlantı sırasında sorunlar nedir hata nerde mesajlardan çıkarabilirsiniz. #netcfg  ile ayarlarınızı yeniden gözden geçirin


Mustafa Karakaplan

Sıkça Sorulan sorular

Bu sıkça sorulan sorular üzerinde hala çalışmalarımız sürüyor.

Linux, Windows üzerinde çalışabilir mi?

Hayır. Linux ve windows işletim sistemleridir. bir işletim sistemi sizin ve programların bilgisayarınızla ilişkilerini düzenleyen programlar topluluğudur. Siz aynı anda sadece bir tane işletim sistemini kullanabilirsiniz (ancak sisteminizde kurulu pek çok işletim sistemi bulunabilir).

Windows programlarım Linux üzerinde çalışır mı?

Kotü haber: düşündüğünüz program büyük ihtimalle çalışmıyordur. Linux çok kuvvetli, çok kullanıcılı, çok görevli bir ortam sunan UNIX'e uyumlu olarak yazılmıştır. Windows UNIX uyumlu olarak yazılmamıştır. Genelde, Linux veya başka bir Unix-türevi için yazılan bir program Linux üzerinde gayet güzel çalışır. Windows'un iç yapısı çok farklı olduğundan, windows için yazılmış olan programları Linux ve diğer Unix-türevlerine uyumlu hale getirmek çok büyük bir zorluk taşımaktadır.
Iyi haber: Linux üzerinde, Windows'da kullanmaya alışmış olduğunuz pek çok program ile aynı işi gören programlar bulunmaktadir. Ve bunları tamamen ücretsizolarak internetten bulabilirsiniz.
Pek çok firma ( Netscape - Communicator ve NavigatorCorel - WordPerfect, Office 2000 ve Photopaint ve Sun - StarOffice) hem Linux hem de Windows için programlar yazmaktadır.
Aslında Linux altında Windows ya da Windows altında Linux çalıştırmanın bir yolu var. Şu anda hala geliştirilen VMware projesi ile kullandığınız işletim sistemi üzerinde bir sanal makine sayesinde başka bir işletim sistemini çalıştırabilirsiniz. VMvare ana sayfası.

Linux benim donanınımla çalışır mı?

Cevap, eğer makineniz gundelik hayatta rastlanabilcek türdense, genellikle evet olacaktır. Donanımla ilgili bilgiyi Linux Donanım uyumluluk Belgesi'nden alabilirsiniz. Kullandığınız modem winmodem ise büyük ihtimalle çalışmayacaktır.

Ayny bilgisayar üzerinde Linux ve Windows çalışabilir mi??

Evet, doğrusu bu oldukça yaygın olarak yapılmaktadır. dual boot olarak adlandırılır. Bu işlemi yapmak için linux ile gelen "lilo" adlı linux loader programını kullanmak oldukça kullanışlıdır.

Linux'u nasıl edinebilirim?

Linux satışını yapan herhangi bir bilgisayarcıdan CDROM halinde alabilirsiniz veya Türkiye çapında hizmet veren Gelecek Bilişim ve İletişim A.Ş'den temin edebiliriniz. Bir başka seçenek ise İnternet üzerinden kopyalayıp kullanmak. Ancak son seçeneği seçmeniz halinde en az 400Mb'lık dosya indirmeniz gerektiğini hemen belirtelim.

Windows'u silmeden sabit diskimi Linux için nasıl bölmeleyebilirim?

Normalde, Windows bölmenizi, Linux bölmesi için yer açabilmek için yeniden boyutlandırmanız gerekmektedir. Her Linux dağıtımı ile gelen FIPS yazılımı ile verilerinizi kaybetmeden Windows bölmeleriniz yeniden boyutlandırabilirsiniz. Linux bölmelendirmeleri için daha detaylı bilgiyi Bölmelendirme Belgesinde bulabilirsiniz.

Linux altında metin dosyalarını nasıl düzenlerim?

Pek çok Linux sorusu gibi, bu sorunun da birden çok cevabı var. Klasik editorden pico, vi, joe, emacs sayılabilir. Windows'a alışkın kullanıcılar için, joe programını tavsiye ederim, eski Wordstar editorunun bir kopyasıdır. DOS Edit veya Notepad kadar kolay değildir ama, yardım ipuçlarını görme şansınız var, bu özellik de yeniler için oldukça büyük kolaylıklar sağlıyor. Eğer KDE kurulu ise, kedit programıda çok kolay kullanımlı bir editordur. Windows Notepad programınıa cok benzemesiyle birlikte pekçok yönden ondan üstün durumdadır.

Linux altında internete nasıl bağlanırım?

Linux altında internete bağlanmak için pek çok yöntem var. Bunlardan en kolayları genellikle X window altında çalışan programları kullanmak. xisp ve KDE ile gelenkppp örnek verilebilecek kadar yetenekli ve kolay kullanımlı. Ancak kararınız bunlardan yana olmaz ise her dağıtım içinde konsol tabanlı ppp programları bulunmaktadir.

X window ekran kartımı destekler mi?

Xwindow şu anda bilgisayar mağazalarından alabileceğiniz hemen hemen tüm kartları destekleyebilir, ve her yeni çıkan kartı güncellemeler ve yeni sürümler ile desteklemeye devam etmektedir. Ancak eğer ekran kartınız desteklenmiyor ve vesa 2.0 standartlarına uygun ise frame buffer aygıtı olarak linux altında kullanılabilir.
Frame buffer olarak kullanılan kartlarda konsolda vga modlarını kullanma şansı vardır.

Çekirdek ne işe yarar, nasıl derlenir?

Çekirdek linux işletim sisteminin kalbini oluşturan programdır. Programcılar tarafından sürekli güncellenen bir yapıya sahiptir. Çekirdek güncellemeleri sizin yeni donanımlarınızı kullanabilmenizi sağlar.

Linux altında oyun oynayabilir miyim?

Hem evet hem de hayır. Oynayacağınız oyunun Linux altında çalışabilmesi için Linux icin adapte edilmesi gerekmektedir. Quake 1, 2 ve 3 ile Civilization için bu ayarlamalar yapılmıştır. Sürkeli olarak tanınmış oyun firmaları Linux'a destek verdiklerini beyan ediyorlar.
DOS altında çalışan oyunları pek çoğu dosemu veya vmware gibi uygulamalar sayesinde çalışabilmektedir. Sega ve diger oyun makineleri için olan oyunların emulasyon programları ve ROM görüntüleri internet üzerinden bulunabilir. Bu makinalara ait yüzlerce (hatta binlerce) çok kaliteli program indirmeniz işten bile değıl. Ancak DirectX ve Direct3D gerektiren oyunları oynamanız şu an için imkansız.

Linux ile güvende miyim?

Hayır, Linux sizi uzaylılardan veya terörist saldırılardan koruyamaz. Ancak internet üzerinde yapılacak pek çok saldırıya karşı diğer ticari işletim sistemlerine göre çok daha güvenlidir.
Linux üzerinde ayrıca bir güvenlik duvarı aramanıza gerek yoktur. Elinizin altında her dağıtımda bulunan ipchains (eski sürümlerde ipfwadm) komutu ile istediğiniz IP ve/veya port'lardan gelecek saldırıları engelleyebilirsiniz.

Mount ne demek?

Mount sözlük anlamıyla eklemek, dahil eklemek, bağlamak demektir. Linux dünyasında bir aygıtı sisteminizde kullanılır hale getirmek demektir. Bilgisayarınızdaki bir sabit diskin bir bölümünü bile bağlamadan (mount) göremezsiniz. Çekirdeğiniz hangi dosya sistemlerini destekliyorsa o dosya sistemlerine erişebilirsiniz.
Eğer windows bölümünüzde FAT32 dosyalama sistemini kullanıyorsanız; 2.0.34 ve sonraki çekirdeklerde bu sisteme erişebilirsiniz. 2.1.x çekirdekler ve 2.2 veya 2.3 çekirdeklerle NT dosyalama sisteminden tutun QNX dosyalama sistemini bile tanıtmak mümkün olur.

7.1 Bilgisayar Ağları Temelleri
7.1.1 İletişim Ağları Yapısal Modeli
Bu bolumde bilgisayar aglarinin birbirleri ile olan iletisimi (internetworking) konusunda bazi temel kavramlar hakkinda bilgi verilecektir.
7.1.1.1 OSI Referans modeli
Bilgisayarlar arasi iletisimin basladigi gunden itibaren farkli bilgisayar sistemlerinin birbirleri arasindaki iletisim daima en buyuk problemlerden birisi olmus ve bu sorunun ustesinden gelebilmek icin uzun yillar boyunca cesitli calismalar yapilmistir. 1980'li yillarin basinda Uluslararasi Standartlar Organizasyonu (International Standarts Organization-ISO) bilgisayar sistemlerinin birbirleri ile olan iletisiminde ortak bir yapiya ulasmak yonunde cabalari sonuca baglamak icin bir calisma baslatmistir. Bu calismalar sonucunda 1984 yilinda Acik Sistem Baglantilari (Open Systems Interconnection-OSI) referans modeli ortaya cikarilmistir. Bu model sayesinde degisik bilgisayar firmalarinin urettikleri bilgisayarlar arasindaki iletisimi bir standarda oturtmak ve farkli standartlar arasi uyumsuzluk sebebi ile ortaya cikan iletisim sorununu ortadan kaldirmak hedeflenmistir. OSI referans modelinde, iki bilgisayar sistemi arasinda yapilacak olan iletisim problemini cozmek icin 7 katmanli bir ag sistemi onerilmistir. Bir baska deyisle bu temel problem 7 adet kucuk probleme parcalanmis ve her bir problem icin ayri ayri bir cozum yaratilmaya calisilmistir. Bu 7 katmanin en altinda yer alan iki katman yazilim ve donanim, ustteki bes katman ise genelde yazilim yolu ile cozulmustur. OSI modeli, bir bilgisayarda calisan uygulama programinin, iletisim ortami uzerinden baska bir bilgisayarda calisan diger bir uygulama programi ile olan iletisiminin tum adimlarini tanimlar. En ust katmanda goruntu ya da yazi seklinde yola cikan bilgi, alt katmanlara indikce makine diline donusur ve sonuc olarak 1 ve 0 lardan ibaret elektrik sinyalleri halini alir. Asagidakisekilde OSI referans modeli katmanlari ve bir yerel ag uzerindeki durumu gosterilmektedir:
7.1.1.2 OSI katmanlarinin tanimlanan temel gorevleri :
7- Uygulama
Kullaniciya en yakin olan katmandir. Spreadsheet, kelime islemci, banka terminali programlari vs. bu katmanin parcalaridir.
6-Sunum
Bu katmanda gelen paketler bilgi haline donusturulur. Bilginin karakter set cevrimi veya degistirilmesi, sifreleme vs. gorevlerini bu katman ustlenir.
5- Oturum
 İki bilgisayar uzerindeki uygulamalarin birbirini farkettigi katmandir.
4- Tasima
Bu katman gelen bilginin dogrulugunu kontrol eder. Bilginin tasinmasi esnasinda olusan hatalari yakalar ve bunlari duzeltmek icin calisir.
3-Ag
Baglantiyi saglayan ve ulasilmak istenen bilgisayara giden yolu bulan katmandir. Yonlendirme protokolleri bu katmanda calisir.
2-Veri iletim
Bu katman fiziksel katmana ulasim stratejisini belirler. Fiziksel adresleme, ag topolojisi, akis kontrolu vs. bu katmanin gorevlerindendir. Kopru cihazlari bu katmanda calisir.
1- Fiziksel
Bu katman agin elektriksel ve mekanik karakteristiklerini belirler. Modulasyon teknikleri, calisma voltaji, frekansi vs. bu katmanin temel ozelliklerindendir. OSI referans modeli bir ag uygulamasi degildir. OSI sadece her katmanin gorevini tum detaylari ile tanimlar. Bu modeli bir gemi ya da ev projesine benzetebiliriz. Nasil ayni gemi planini alip farkli firmalar gemi yapabilirse OSI modeli de boyledir. Nasil ayni gemi planindan iki farkli firma gemi urettiginde en azindan kullanilan civiler farkli yerlere cakilirsa, OSI modeli de gerceklestiren firmadan firmaya farklilik gosterebilir.
7.1.2 Baglanti Aygitlari
Bilgisayar agi erisiminde genel olarak dort tip baglanti aygiti kullanilir: tekrarlayici (repeater), kopru (bridge), yonlendirici (router) ve gecityolu (gateway). Tekrarlayicilar tamamen protokol bagimsiz olarak fiziksel katmanda calisir ve fiziksel genisleme amacli kullanilirlar. Geleneksel kopruler ayni protokolu kullanan Yerel Aglar arasinda temel veri duzeyinde baglanti saglar. Buna karsilik, geleneksel yonlendiriciler degisik tipteki ag protokollerini idare edebilecek sekilde programlanabilirler ve boylelikle ayni genis ag alani uzerinde farkli tipteki Yerel Aglari ve bilgisayar sistemlerini destekleyebilirler. Gecityollari daha karmasik olup, islem yogunluklu protokol cevrimi yaparak uygulamalar arasinda isletilebilirligi (interoperability) saglarlar.
7.2 TCP/IP ve Bilesenleri
Su ana kadar bilgisayar agi kavramlari ve ag yapisinin fiziksel katmanlari hakkinda genel bir fikir edindik. Bu noktada bilgisayarlar arasi iletisimi saglayan temel protokol katmanlarina gelmis bulunuyoruz. Burada okuyucuya alt yapi protokolleri ile ilgili detayli ancak cok teknik olmayan bilgiler verilecek ve sistemin temel calisma prensipleri aciklanmaya calisilacaktir.
7.2.1 Genel tanimlar
TCP/IP katmanlardan olusan bir protokoller kumesidir. Her katman degisik gorevlere sahip olup altindaki ve ustundekikatmanlar ile gerekli bilgi alisverisini saglamakla yukumludur. TCP/IP katmanlarinin tam olarak ne oldugu, nasil calistigi konusunda bir fikir sahibi olabilmek icin bir ornek uzerinde inceleyelim:
TCP/IP nin kullanildigi en onemli servislerden birisi elektronik postadir (e-posta). E- posta servisi icin bir uygulama protokolu belirlenmistir (SMTP). Bu protokol e- posta’nin bir bilgisayardan bir baska bilgisayara nasil iletilecegini belirler. Yani e- postayi gonderen ve alan kisinin adreslerinin belirlenmesi, mektup iceriginin hazirlanmasi vs. gibi. Ancak e-posta servisi bu mektubun bilgisayarlar arasinda nasil iletilecegi ile ilgilenmez, iki bilgisayar arasinda bir iletisimin oldugunu varsayarak mektubun yollanmasi gorevini TCP ve IP katmanlarina birakir. TCP katmani komutlarin karsi tarafa ulastirilmasindan sorumludur. Karsi tarafa ne yollandigi ve hatali yollanan mesajlarin tekrar yollanmasinin kayitlarini tutarak gerekli kontrolleri yapar. Eger gonderilecek mesaj bir kerede gonderilemeyecek kadar buyuk ise (Ornegin uzunca bir e-posta gonderiliyorsa) TCP onu uygun boydaki segment’lere (TCP katmanlarinin iletisim icin kullandiklari birim bilgi miktari) boler ve bu segment’lerin karsi tarafa dogru sirada, hatasiz olarak ulasmalarini saglar. Internet uzerindeki tek servis e-posta olmadigi icin ve segment’lerin karsi tarafa hatasiz ulastirilmasini saglayan iletisim yontemine tum diger servisler de ihtiyac duydugu icin TCP ayri bir katman olarak calismakta ve tum diger servisler onun uzerinde yer almaktadir. Boylece yeni bir takim uygulamalar da daha kolay gelistirilebilmektedir. Ust seviye uygulama protokollerinin TCP katmanini cagirmalari gibi benzer sekilde TCP de IP katmanini cagirmaktadir. Ayrica bazi servisler TCP katmanina ihtiyac duymamakta ve bunlar direk olarak IP katmani ile gorusmektedirler. Boyle belirli gorevler icin belirli hazir yordamlar olusturulmasi ve protokol seviyeleri insa edilmesi stratejisine ‘katmanlasma’ adi verilir. Yukarida verilen ornekteki e- posta servisi (SMTP), TCP ve IP ayri katmanlardir ve her katman altindaki diger katman ile konusmakta diger bir deyisle onu cagirmakta ya da onun sundugu sevisleri kullanmaktadir. En genel haliyle TCP/IP uygulamalari 4 ayri katman kullanir. Bunlar:
- Bir uygulama protokolu, mesela e-posta
- Ust seviye uygulama protokollerinin gereksinim duydugu TCP gibi bir protokol katmani
- IP katmani. Gonderilen bilginin istenilen adrese yollanmasini saglar.
- Belirli bir fiziksel ortami saglayan protokol katmani. Ornegin Ethernet, seri hat, X.25 vs.
Internet birbirine gecis yollari (gateway) ile baglanmis cok sayidaki bagimsiz bilgisayar aglarindan olusur ve buna ‘catenet model’ adi verilir. Kullanici bu aglar uzerinde yer alan herhangi bir bilgisayara ulasmak isteyebilir. Bu islem esnasinda kullanici farkina varmadan bilgiler, duzinelerce ag uzerinden gecis yapip varis yerine ulasirlar. Bu kadar islem esnasinda kullanicinin bilmesi gereken tek sey ulasmak istedigi noktadaki bilgisayarin ‘Internet adresi’ dir. Bu adres toplam 32 bit uzunlugunda bir sayidir. Fakat bu sayi 8 bitlik 4 ayri ondalik sayi seklinde kullanilir (144.122.199.20 gibi). Bu 8 bitlik gruplara ‘octet’ ismi de verilir. Bu adres yapisi genelde karsidaki sistem hakkinda bilgi de verir. Mesela 144.122 ODTU icin verilmis bir numaradir.ODTU ucuncu octet’i kampus icindeki birimlere dagitmistir. Ornegin, 144.122.199 bilgisayar merkezinde bulunan bir Ethernet agda kullanilan bir adrestir. Son octet ise bu Ethernete 254 tane bilgisayar baglanmasina izin verir (0 ve 255 bilgisayaradreslemesinde kullanilmayan ozel amacli adresler oldugu icin 254 bilgisayar adreslenebilir).
IP baglantisiz “connectionless” ag teknolojisini kullanmaktadir ve bilgi “datagramlar” (TCP/IP temel bilgi birim miktari) dizisi halinde bir noktadan digerine iletilir. Buyuk bir bilgi grubunun (buyuk bir dosya veya e-posta gibi) parcalari olan “datagram” ag uzerinde tek basina yol alir. Mesela 15000 octet’lik bir kutuk pek cok ag tarafindan bir kere de iletilemeyecek kadar buyuk oldugu icin protokoller bunu 30 adet 500 octetlik datagramlara boler. Her datagram ag uzerinden tek tek yollanir ve bunlar karsi tarafta yine 15000 octet lik bir kutuk olarak birlestirilir. Dogal olarak once yola cikan bir datagram kendisinden sonra yola cikan bir datagramdan sonra karsiya varabilir veya ag uzerinde olusan bir hatadan dolayi bazi datagramlar yolda kaybolabilir. Kaybolan veya yanlis sirada ulasan datagramlarin siralanmasi veya hatali gelenlerin yeniden alinmasi hep ust seviye protokollerce yapilir. Bu arada “paket” ve “datagram” kavramlarina bir aciklama getirmek yararli olabilir. TCP/IP ile ilgili kavramlarda “datagram” daha dogru bir terminolojidir. Zira datagram TCP/IP de iletisim icin kullanilan birim bilgi miktaridir. Paket ise fiziksel ortamdan (Ethernet, X.25 vs.) ortama degisen bir buyukluktur. Mesela X.25 ortaminda datagramlar 128 byte lik paketlere donusturulup fiziksel ortamda boyle tasinirlar ve bu islemle IP seviyesi hic ilgilenmez. Dolayisiyla bir IP datagrami X.25 ortaminda birden cok paketler halinde tasinmis olur.
7.2.2 TCP katmani
TCP’nin (“transmission control protocol-iletisim kontrol protokolu”) temel islevi, ust katmandan (uygulama katmani) gelen bilginin segment ler haline donusturulmesi, iletisim ortaminda kaybolan bilginin tekrar yollanmasi ve ayri siralar halinde gelebilen bilginin dogru sirada siralanmasidir. IP (“internet protocol”) ise tek tek datagramlarin yonlendirilmesinden sorumludur. Bu acidan bakildiginda TCP katmaninin hemen hemen tum isi ustlendigi gorulmekle beraber (kucuk aglar icin bu dogrudur) buyuk ve karmasik aglarda IP katmani en onemli gorevi ustlenmektedir. Bu gibi durumlarda degisik fiziksel katmanlardan gecmek, dogru yolu bulmak cok karmasik bir is halini almaktadir. Su ana kadar sadece Internet adresleri ile bir noktadan diger noktaya ulasilmasi konusundan bahsettik ancak birden fazla kisinin ayni sisteme ulasmak istemesi durumunda neler olacagi konusuna henuz bir aciklik getirmedik. Dogal olarak bir segment’i dogru varis noktasina ulastirmak tek basina yeterli degildir. TCP bu segment’in kime ait oldugunu da bilmek zorundadir. “Demultiplexing” bu soruna care bulan yontemdir. TCP/IP ‘de degisik seviyelerde “demultiplexing” yapilir. Bu islem icin gerekli bilgi bir seri “baslik” (header) icinde bulunmaktadir. Baslik, datagram’a eklenen basit bir kac octet’den olusan bir bilgiden ibarettir. Yollanmak istenen mesaji bir mektuba benzetecek olursak baslik o mektubun zarfi ve zarf uzerindeki adres bilgisidir. Her katman kendi zarfini ve adres bilgisini yazip bir alt katmana iletmekte ve o alt katmanda onu daha buyuk bir zarfin icine koyup uzerine adres yazip diger katmana iletmektedir. Benzer islem varis noktasinda bu sefer ters sirada takip edilmektedir.
Bir ornek vererek aciklamaya calisirsak: Asagidaki noktalar ile gosterilen satir bir noktadan diger bir noktaya gidecek olan bir dosyayi temsil etsin,
...............
TCP katmani bu dosyayi tasinabilecek buyuklukteki parcalara ayirir:
... ... ... ... ...
Her segment’in basina TCP bir baslik koyar. Bu baslik bilgisinin en onemlileri ‘port numarasi’ ve ‘sira numarasi’ dir. Port numarasi, ornegin birden fazla kisinin ayni anda dosya yollamasi veya karsidaki bilgisayara baglanmasi durumunda TCP’nin herkese verdigi farkli bir numaradir. Uc kisi ayni anda dosya transferine baslamissa TCP, 1000, 1001 ve 1002 “kaynak” port numaralarini bu uc kisiye verir boylece herkesin paketi birbirinden ayrilmis olur. Ayni zamanda varis noktasindaki TCP de ayrica bir “varis” port numarasi verir. Kaynak noktasindaki TCP nin varis port numarasini bilmesi gereklidir ve bunu iletisim kuruldugu anda TCP karsi taraftan ogrenir. Bu bilgiler basliktaki “kaynak” ve “varis” port numaralari olarak belirlenmis olur. Ayrica her segment bir “sira” numarasina sahiptir. Bu numara ile karsi taraf dogru sayidaki segmenti eksiksiz alip almadigini anlayabilir. Aslinda TCP segmentleri degil octet leri numaralar. Diyelim ki her datagram icinde 500 octet bilgi varsa ilk datagram numarasi 0, ikinci datagram numarasi 500, ucuncusu 1000 seklinde verilir. Baslik icinde bulunan ucuncu onemli bilgi ise “kontrol toplami” (Checksum) sayisidir. Bu sayi segment icindeki tum octet ler toplanarak hesaplanir ve sonuc basligin icine konur. Karsi noktadaki TCP kontrol toplami hesabini tekrar yapar. Eger bilgi yolda bozulmamissa kaynak noktasindaki hesaplanan sayi ile varis noktasindaki hesaplanan sayi ayni cikar. Aksi takdirde segment yolda bozulmustur bu durumda bu datagram kaynak noktasindan tekrar istenir. Asagida bir TCP segmenti ornegi verilmektedir.
Eger TCP basligini “T” ile gosterecek olursak yukarda noktalarla gosterdigimiz dosya asagidaki duruma gelir:
T... T... T... T... T...
Baslik icinde bulunan diger bilgiler genelde iki bilgisayar arasinda kurulan baglantinin kontrolune yoneliktir. Segment’in varisinda alici gonderici noktaya bir “onay” (acknowledgement) yollar. Ornegin kaynak noktasina yollanan “onay numarasi” (Acknowledgement number) 1500 ise octet numarasi 1500 e kadar tum bilginin alindigini gosterir. Eger kaynak noktasi belli bir zaman icinde bu bilgiyi varis noktasindan alamazsa o bilgiyi tekrar yollar. “Pencere” bilgisi bir anda ne kadar bilginin gonderilecegini kontrol etmek icin kullanilir. Burada amac her segment’in gonderilmesinden sonra karsiya ulasip ulasmadigi ile ilgili onay (ack) beklenmesi yerine segment’leri onay beklemeksizin pencere bilgisine gore yollamaktir. Zira yavas hatlar kullanilarak yapilan iletisimde onay beklenmesi iletisimi cok daha yavaslatir. Diger taraftan cok hizli bir sekilde surekli segment yollanmasi karsi tarafin bir anda alabileceginden fazla bir trafik yaratacagindan yine problemler ortaya cikabilir. Dolayisiyla her iki taraf o anda ne kadar bilgiyi alabilecegini “pencere” bilgisi icinde belirtir. Bilgisayar bilgiyi aldikca pencere alanindaki bos yer azalir ve sifir oldugunda yollayici bilgi yollamayi durdurur. Alici nokta bilgiyi isledikce pencere artar ve bu da yeni bilgiyi karsidan kabul edebilecegini gosterir. “Acil isareti” ise bir kontrol karakteri veya diger bir komut ile transferi kesmek vs. amaclarla kullanilan bir alandir. Bunlar disinda ki alanlar TCP protokolunun detaylari ile ilgili oldugu icin burada anlatilmayacaktir.
7.2.3 IP katmanı
TCP katmanina gelen bilgi segmentlere ayrildiktan sonra IP katmanina yollanir. IP katmani, kendisine gelen TCP segmenti icinde ne oldugu ile ilgilenmez. Sadece kendisine verilen bu bilgiyi ilgili IP adresine yollamak amacindadir. IP katmaninin gorevi bu segment icin ulasilmak istenen noktaya gidecek bir “yol” (route) bulmaktir. Arada gecilecek sistemler ve gecis yollarinin bu paketi dogru yere gecirmesi icin kendi baslik bilgisini TCP katmanindan gelen segment’e ekler. TCP katmanindan gelen segmentlere IP basliginin eklenmesi ile olusturulan IP paket birimlerine datagram adi verilir
Bu basliktaki temel bilgi kaynak ve varis Internet adresi (32-bitlik adres, 144.122.199.20 gibi), protokol numarasi ve kontrol toplamidir. Kaynak Internet adresi tabiiki sizin bilgisayarinizin Internet adresidir. Bu sayede varis noktasindaki bilgisayar bu paketin nereden geldigini anlar. Varis Internet adresi ulasmak istediginiz bilgisayarin adresidir. Bu bilgi sayesinde aradaki yonlendiriciler veya gecis yollari (gateway) bu datagram’i nereye yollayabileceklerini bilirler. Protokol numarasi IP’ye karsi tarafta bu datagram’i TCP’ye vermesi gerektigini soyler. Her ne kadar IP trafiginin cogunu TCP kullansa da TCP disinda bazi protokollerde kullanilmaktadir dolayisiyla protokoller arasi bu ayrim protokol numarasi ile belirlenir. Son olarak kontrol toplami IP basliginin yolda bozulup bozulmadigini kontrol etmek icin kullanilir. Dikkat edilirse TCP ve IP ayri ayri kontrol toplamlari kullanmaktalar. IP kontrol toplami baslik bilgisinin bozulup bozulmadigi veya mesajin yanlis yere gidip gitmedigini kontrol icin kullanilir. Bu protokollerin tasarimi sirasinda TCP’nin ayrica bir kontrol toplami hesaplamasi ve kullanmasi daha verimli ve guvenli bulundugu icin iki ayri kontrol toplami alinmasi yoluna gidilmistir. IP basligini “I” ile gosterecek olursak IP katmanindan cikan ve TCP verisi tasiyan bir datagram su hale gelir:
IT...IT...IT...IT...IT...
Basliktaki “Yasam suresi” (Time to Live) alani IP paketinin yolculugu esnasinda gecilen her sistemde bir azaltilir ve sifir oldugunda bu paket yok edilir. Bu sayede olusmasi muhtemel sonsuz donguler ortadan kaldirilmis olur. IP katmaninda artik baska baslik eklenmez ve iletilecek bilgi fiziksel iletisim ortami uzerinden yollanmak uzere alt katmana (bu Ethernet, X.25, telefon hatti vs. olabilir) yollanir.
7.2.4 Fiziksel katman
Fiziksel katman gercekte Data Link Connection (DLC) ve Fiziksel ortami icermektedir. Ancak biz burada bu ara katmanlari genlleyip tumune Fiziksel katman adini verecegiz. Gunumuzde pek cok bilgisayar aginin Etherneti temel iletisim ortami olarak kullanmasindan dolayi da Ethernet teknolojisini ornek olarak anlatacagiz. Dolayisiyla burada Ethernet ortaminin TCP/IP ile olan iletisimini aciklayacagiz. Ethernet kendine has bir adresleme kullanir. Ethernet tasarlanirken dunya uzerinde herhangi bir yerde kullanilan bir Ethernet kartinin tum diger kartlardan ayrilmasini saglayan bir mantik izlenmistir. Ayrica, kullanicinin Ethernet adresinin ne oldugunu dusunmemesi icin her Ethernet karti fabrika cikisinda kendisine has bir adresle piyasaya verilmektedir. Her Ethernet kartinin kendine has numarasi olmasini saglayan tasarim 48 bitlik fiziksel adres yapisidir. Ethernet kart ureticisi firmalar merkezi bir otoriteden uretecekleri kartlar icin belirli buyuklukte numara bloklari alir ve uretimlerinde bu numaralari kullanirlar. Boylece baska bir ureticinin karti ile bir cakisma meydana gelmez. Ethernet teknoloji olarak yayin teknolojisini (broadcast medium) kullanir. Yani bir istasyondan Ethernet ortamina yollanan bir paketi o Ethernet agindaki tum istasyonlar gorur. Ancak dogru varis noktasinin kim oldugunu, o aga bagli makinalar Ethernet basligindan anlarlar. Her Ethernet paketi 14 octet’lik bir basliga sahiptir. Bu baslikta kaynak ve varis Ethernet adresi ve bir tip kodu vardir. Dolayisiyla ag uzerindeki her makina bir paketin kendine ait olup olmadigini bu basliktaki varis noktasi bilgisine bakarak anlar (Bu Ethernet teknolojisindeki en onemli guvenlik bosluklarindan birisidir). Bu noktada Ethernet adresleri ile Internet adresleri arasinda bir baglanti olmadigini belirtmekte yarar var. Her makina hangi Ethernet adresinin hangi Internet adresine karsilik geldigini tutan bir tablo tutmak durumundadir (Bu tablonun nasil yaratildigi ilerde aciklanacaktir). Tip kodu alani ayni ag uzerinde farkli protokollerin kullanilmasini saglar. Dolayisiyla ayni anda TCP/IP, DECnet, IPX/SPX gibi protokoller ayni ag uzerinde calisabilir. Her protokol basliktaki tip alanina kendine has numarasini koyar. Kontrol toplami (Checksum) alanindaki deger ile komple paket kontrol edilir. Alici ve vericinin hesapladigi degerler birbirine uymuyorsa paket yok edilir. Ancak burada kontrol toplami basligin icine degilde paketin sonuna konulur. Ethernet katmaninda islenip gonderilen mesaj ya da bilginin (Bu bilgi paketlerine frame adi verilir) son hali asagidaki duruma gelir:
Ethernet basligini “E” ile ve Kontrol toplamini “C” ile gosterirsek yolladigimiz dosya su sekli alir:
EIT...C EIT...C EIT...C EIT...C EIT...C
Bu paketler (frame) varis noktasinda alindiginda butun basliklar uygun katmanlarca atilir. Ethernet arayuzu Ethernet baslik ve kontrol toplamini atar. Tip koduna bakarak protokol tipini belirler ve Ethernet cihaz surucusu (device driver) bu datagram’i IP katmanina gecirir. IP katmani kendisi ile ilgili katmani atar ve protokol alanina bakar, protokol alaninda TCP oldugu icin segmenti TCP katmanina gecirir. TCP sira numarasina bakar, bu bilgiyi ve diger bilgileri iletilen dosyayiyi orijinal durumuna getirmek icin kullanir. Sonucta bir bilgisayar diger bir bilgisayar ile iletisimi tamamlar.
Ethernet encapsulation: ARP
Yukarida Ethernet uzerinde IP datagramlarin nasil yer aldigindan bahsettik. Fakat aciklanmadan kalan bir nokta bir Internet adresi ile iletisime gecmek icin hangi Ethernet adresine ulasmamiz gerektigi idi. Bu amacla kullanilan protokol ARP’dir . (“Address Resolution Protocol”). ARP aslinda bir IP protokolu degildir ve dolayisiyla ARP datagramlari IP basligina sahip degildir. Varsayalimki bilgisayariniz 128.6.4.194 IP adresine sahip ve siz de 128.6.4.7 ile iletisime gecmek istiyorsunuz. Sizin sisteminizin ilk kontrol edecegi nokta 128.6.4.7 ile ayni ag uzerinde olup olmadiginizdir. Ayni ag uzerinde yer aliyorsaniz, bu Ethernet uzerinden direk olarak haberlesebileceksiniz anlamina gelir. Ardindan 128.6.4.7 adresinin ARP tablosunda olup olmadigi ve Ethernet adresini bilip bilmedigi kontrol edilir. Eger tabloda bu adresler varsa Ethernet basligina eklenir ve paket yollanir. Fakat tabloda adres yoksa paketi yollamak icin bir yol yoktur. Dolayisiyla burada ARP devreye girer. Bir ARP istek paketi ag uzerine yollanir ve bu paket icinde “128.6.4.7” adresinin Ethernet adresi nedir sorgusu vardir. Ag uzerindeki tum sistemler ARP istegini dinlerler bu istegi cevaplandirmasi gereken istasyona bu istek ulastiginda cevap ag uzerine yollanir. 128.6.4.7 istegi gorur ve bir ARP cevabi ile “128.6.4.7 nin Ethernet adresi 8:0:20:1:56:34” bilgisini istek yapan istasyona yollar. Bu bilgi, alici noktada ARP tablosuna islenir ve daha sonra benzer sorgulama yapilmaksizin iletisim mumkun kilinir. Ag uzerindeki bazi istasyonlar surekli agi dinleyerek ARP sorgularini alip kendi tablolarini da guncelleyebilirler.
7.2.5 TCP disindaki diger protokoller: UDP ve ICMP
Yukarida sadece TCP katmanini kullanan bir iletisim turunu acikladik. TCP gordugumuz gibi mesaji segment’lere bolen ve bunlari birlestiren bir katmandi. Fakat bazi uygulamalarda yollanan mesajlar tek bir datagram’in icine girebilecek buyukluktedirler. Bu cins mesajlara en guzel ornek adres kontroludur (name lookup). Internet uzerindeki bir bilgisayara ulasmak icin kullanicilar Internet adresi yerine o bilgisayarin adini kullanirlar. Bilgisayar sistemi baglanti kurmak icin calismaya baslamadan once bu ismi Internet adresine cevirmek durumundadir. Internet adreslerinin isimlerle karsilik tablolari belirli bilgisayarlar uzerinde tutuldugu icin kullanicinin sistemi bu bilgisayardan bu adresi sorgulayip ogrenmek durumundadir. Bu sorgulama cok kisa bir islemdir ve tek bir segment icine sigar. Dolayisiyla bu is icin TCP katmaninin kullanilmasi gereksizdir. Cevap paketinin yolda kaybolmasi durumunda en kotu ihtimalle bu sorgulama tekrar yapilir. Bu cins kullanimlar icin TCP nin alternatifi protokoller vardir. Boyle amaclar icin en cok kullanilan protokol ise UDP’dir(User Datagram Protocol). UDP datagramlarin belirli siralara konmasinin gerekli olmadigi uygulamalarda kullanilmak uzere dizayn edilmistir. TCP’de oldugu gibi UDP’de de bir baslik vardir. Ag yazilimi bu UDP basligini iletilecek bilginin basina koyar. Ardindan UDP bu bilgiyi IP katmanina yollar. IP katmani kendi baslik bilgisini ve protokol numarasini yerlestirir (bu sefer protokol numarasi alanina UDP’ye ait deger yazilir). Fakat UDP TCP’nin yaptiklarinin hepsini yapmaz. Bilgi burada datagramlara bolunmez ve yollanan paketlerin kayidi tutulmaz. UDP’nin tek sagladigi port numarasidir. Boylece pek cok program UDP’yi kullanabilir. Daha az bilgi icerdigi icin dogal olarak UDP basligi TCP basligina gore daha kisadir. Baslik, kaynak ve varis port numaralari ile kontrol toplamini iceren tum bilgidir. Diger bir protokol ise ICMP’dir (“Internet Control Message Protocol”). ICMP, hata mesajlari ve TCP/IP yaziliminin bir takim kendi mesaj trafigi amaclari icin kullanilir. Mesela bir bilgisayara baglanmak istediginizde sisteminiz size “host unreachable” ICMP mesaji ile geri donebilir. ICMP ag hakkinda bazi bilgileri toplamak amaci ile de kullanilir. ICMP yapi olarak UDP’ye benzer bir protokoldur. ICMP de mesajlarini sadece bir datagram icine koyar. Bununla beraber UDP’ye gore daha basit bir yapidadir. Baslik bilgisinde port numarasi bulundurmaz. Butun ICMP mesajlari ag yaziliminin kendisince yorumlanir, ICMP mesajinin nereye gidecegi ile ilgili bir port numarasina gerek yoktur. ICMP ‘yi kullanan en populer Internet uygulamasi PING komutudur. Bu komut yardimi ile Internet kullanicilari ulasmak istedikleri herhangi bir bilgisayarin acik olup olmadigini, hatlardaki sorunlari aninda test etmek imkanina sahiptirler Su ana kadar gordugumuz katmanlari ve bilgi akisinin nasil oldugunu asagidaki sekilde daha acik izleyebiliriz.
7.2.6 Internet Adresleri
Daha once de gordugumuz gibi Internet adresleri 32-bitlik sayilardir ve noktalarla ayrilmis 4 octet (ondalik sayi olarak) olarak gosterilirler. Ornek vermek gerekirse, 128.10.2.30 Internet adresi 10000000 00001010 00000010 00011110 seklinde 32-bit olarak gosterilir. Temel problem bu bilgisayar agi adresinin hem bilgisayar agini ve hem de belli bir bilgisayari tek basina gosterebilmesidir. Internet’te degisik buyuklukte bilgisayar aglarinin bulunmasindan dolayi Internet adres yapisinin tum bu aglarin adres sorununu cozmesi gerekmektedir. Tum bu ihtiyaclari karsilayabilmek amaci ile Internet tasarlanirken 32bitlik adres yapisi secilmis ve bilgisayar aglarinin cogunun kucuk aglar olacagi varsayimi ile yola cikilmistir. 32-bit Internet adresleri, 'Ag Bilgi Merkezi (NIC) Internet Kayit Kabul' tarafindan yonetilmektedir. Yerel yonetilen bir ag uluslararasi platformda daha buyuk bir aga baglanmadiginda adres rastgele olabilir. Fakat, bu tip adresler ileride Internet'e
baglanilmasi durumunda sorun cikartabilecegi icin onerilmemektedir. Ag yoneticisi bir diger IP-tabanli sisteme, ornegin NSFNET'e baglanmak istediginde tum yerel adreslerin 'Uluslararasi Internet Kayit Kabul' tarafindan belirlenmesi zorunludur.
7.2.7 Degisik buyuklukteki aglari adreslemek amaci ile 3 sinif adres kullanilmaktadir:
A Sinifi adresler: Ilk byte 0 'la 126 arasinda degisir. Ilk byte ag numarasidir. Gerisi bilgisayarlarin adresini belirler. Bu tip adresleme, herbiri 16,777,216 bilgisayardan olusan 126 agin adreslenmesine izin verir. B Sinifi adresler: Ilk byte 128 'le 191 arasinda degisir. Ilk iki byte ag numarasidir. Gerisi bilgisayar adresini belirler. Bu tip adresleme, herbiri 65,536 bilgisayardan olusan 16,384 agin adreslenmesine izin verir. C Sinifi adresler: Ilk byte 192 ile 223 arasinda degisir. Ilk uc byte ag numarasidir. Gerisi bilgisayarlarin adresini belirler. Bu tip adresleme, herbiri 254 bilgisayardan olusan 2,000,000 agin adreslenmesine izin verir.
A Sinifi Adresler
0 1 8 16 24 31
+-------+---------------+--------------------------------+
|0 |Ag Numarasi |Bilgisayar Numarasi |
+-------+---------------+--------------------------------+
B Sinifi Adresler
0 1 16 31
+--+--+------------+--------------------+
|1 |0 |Ag Numarasi |Bilgisayar Numarasi |
+--+--+------------+--------------------+
C Sinifi Adresler
0 1 2 24 31
+--+--+--+--------------+-----------------------+
|1 |1 |0 |Ag Numarasi |Bilgisayar Numarasi |
+--+--+--+--------------+-----------------------+
127 ile baslayan adresler Internet tarafindan ozel amaclarla (localhost tanimi icin) kullanilmaktadir.
223'un uzerindeki adresler gelecekte kullanilmak uzere D-sinifi ve E-sinifi adresler olarak reserve edilmis olarak tutulmaktadir. A sinifi adresler, NSFNET, MILNET gibi buyuk aglarda kullanilir. C sinifi adresler, genellikle universite yerleskelerinde kurulu yerel aglarla, ufak devlet kuruluslarinda kullanilir. NIC sadece ag numaralarini yonetir. Bolgede olmasi beklenen bilgisayar sayisina gore A, B veya C sinifi adresleme secilir. Bir bolgeye ag numarasi verildikten sonra bilgisayarlarin nasil adreslenecegini bolge yonetimi belirler. IP adres alani ozellikle son yillarda artan kullanim talebi sonucunda hizla tukenmeye baslamistir. Bu nedenle yapilan IP adres taleplerinin gercekci olmasinin saglanmasi icin gerekli kontroller yapilmaktadir.
7.2.8 Alt Aglar (Subnet)
Subnet ya da alt ag kavrami, kurumlarin ellerindeki Internet adres yapisindan daha verimli yararlanmalari icin gelistirilen bir adresleme yontemidir. Pek cok buyuk organizasyon kendilerine verilen Internet numaralarini "subnet" lere bolerek kullanmayi daha uygun bulmaktadirlar. Subnet kavrami aslinda 'Bilgisayar numarasi' alanindaki bazi bitlerin 'Ag numarasi' olarak kullanilmasindan ortaya cikmistir. Boylece, elimizdeki bir adres ile tanimlanabilecek bilgisayar sayisi dusurulerek,
tanimlanabilecek ag sayisini yukseltmek mumkun olmaktadir. Nasil bir alt ag yapisinin kullanilacagi kurumlarin ag alt yapilarina ve topolojilerine bagimli olarak degismektedir. Subnet kullanilmasi durumunda bilgisayarlarin adreslenmesi kontrolu merkezi olmaktan cikmakta ve yetki dagitimi yapilmaktadir. Subnet yapisinin kullanilmasi yanlizca o adresi kullanan kurumun kendisini ilgilendirmekte ve bunun kurum disina hicbir etkisi de bulunmamaktadir. Herhangi bir dis kullanici subnet kullanilan bir aga ulasmak istediginde o agda kullanilan subnet yonteminden haberdar olmadan istedigi noktaya ulasabilir. Kurum sadece kendi icinde kullandigi gecis yollari ya da yonlendiriciler uzerinde hangi subnet'e nasil gidilebilecegi tanimlamalarini yapmak durumundadir. Bir Internet agini subnet’lere bolmek, subnet maskesi denilen bir IP adresi kullanilarak yapilmaktadir. Eger maske adresteki adres bit'i 1 ise o alan ag adresini gostermektedir, adres bit'i 0 ise o alan adresin bilgisayar numarasi alanini gostermektedir. Konuyu daha anlasilir kilmak icin bir ornek uzerinde inceleyelim:
ODTU kampusu icin bir B-sinifi adres olan 144.122.0.0 kayitli olarak kullanilmaktadir. Bu adres ile ODTU 65.536 adet bilgisayari adresleyebilme yetenegine sahiptir. Standart B- sinifi bir adresin maske adresi 255.255.0.0 olmaktadir. Ancak bu adres alindiktan sonra ODTU'nun teknik ve idari yapisi goz onunde tutularak farkli subnet yapisi uygulanmasina karar verilmistir. Adres icindeki ucuncu octet'inde ag alani adreslemesinde kullanilmasi ile ODTU'de 254 adede kadar farkli bilgisayar aginin tanimlanabilmesi mumkun olmustur. Maske adres olarak 255.255.255.0 kullanilmaktadir. Ilk iki octet (255.255) B-sinifi adresi, ucuncu octet (255) subnet adresini tanimlamakta, dorduncu octet (0) ise o subnet uzerindeki bilgisayari tanimlamaktadir.

144.122.0.0 ODTU icin kayitli adres
255.255.0.0 Standart B-Sinifi adres maskesi Bir ag, 65536 bilgisayar
255.255.255.0 Yeni maske 254 ag, her agda 254 bilgisayar
ODTU de uygulanan adres maskesi ile subnetlere bolunmus olan ag adresleri merkezi olarak bolumlere dagitilmakta ve her bir subnet kendi yerel agi uzerindeki ag parcasinda 254 taneye kadar bilgisayarini adresleyebilmektedir. Boylece tek bir merkezden tum universitedeki makinalarin IP adreslerinin tanimlanmasi gibi bir sorun ortadan kaldirilmis ve adresleme yetkisi ayri birimlere verilerek onlara kendi iclerinde esnek hareket etme kabiliyeti taninmistir. Bir ornek verecek olursak: Bilgisayar Muhendisligi bolumu icin 71 subneti ayrilmis ve 144.122.71.0 ag adresi kullanimlarina ayrilmistir. Boylece, bolum icinde 144.122.71.1 den 144.122.71.254 'e kadar olan adreslerin dagitimi yetkisi bolumun kendisine birakilmistir. Ayni sekilde Matematik bolumu icin 144.122.36.0, Fizik bolumu icin 144.122.30.0 ag adresi ayrilmistir. C-sinifi bir adres uzerinde yapilan bir subnetlemeye ornek verecek olursak:
Elinde C-sinifi 193.140.65.0 adres olan bir kurum subnet adresi olarak 255.255.255.192 kullandiginda
193.140.65.0 11000001 10001100 01000001 00000000
255.255.255.192 11111111 11111111 11111111 11000000
<-------------------------->|<---->
| Ag numarasi alani |Bilgisayar Numarasi
elindeki bu adresi dort farkli parcaya bolebilir. Degisik subnet maskeleri ile nasil sonuclar edinilebilecegi ile ilgili ornek bir tablo verecek olursak :
IP adres Subnet Aciklama
128.66.12.1 255.25.255.0 128.66.12 subneti uzerindeki 1. bilgisayar
130.97.16.132 255.255.255.192 130.97.16.128 subneti uzerindeki 4. bilgisayar.
192.178.16.66 255.255.255.192 192.178.16.64 subneti uzerindeki 2. bilgisayar
132.90.132.5 255.255.240.0 132.90.128 subnetindeki 4.5 inci bilgisayar.
18.20.16.91 255.255.0.0 18.20.0.0 subnetindeki 16.91 inci bilgisayar
7.2.9 Ozel adresler
Internet adreslemesinde 0 ve 255'in ozel bir kullanimi vardir. 0 adresi, Internet uzerinde kendi adresini bilmeyen bilgisayarlar icin (Belirli bazi durumlarda bir makinanin kendisinin bilgisayar numarasini bilip hangi ag uzerinde oldugunu bilmemesi gibi bir durum olabilmektedir) veya bir agin kendisini tanimlamak icin kullanilmaktadir (144.122.0.0 gibi). 255 adresi genel duyuru "broadcast"
amaci ile kullanilmaktadir. Bir ag uzerindeki tum istasyonlarin duymasini istediginiz bir mesaj genel duyuru "broadcast" mesajidir. Duyuru mesaji genelde bir istasyon hangi istasyon ile konusacagini bilemedigi bir durumda kullanilan bir mesajlasma yontemidir. Ornegin ulasmak istediginiz bir bilgisayarin adi elinizde bulunabilir ama onun IP adresine ihtiyac duydunuz, bu cevirme isini yapan en yakin "name server" makinasinin adresini de bilmiyorsunuz. Boyle bir durumda bu isteginizi yayin mesaji yolu ile yollayabilirsiniz. Bazi durumlarda birden fazla sisteme bir bilginin gonderilmesi gerekebilir boyle bir durumda her bilgisayara ayri ayri mesaj gonderilmesi yerine tek bir yayin mesaji yollanmasi cok daha kullanisli bir yoldur. Yayin mesaji yollamak icin gidecek olan mesajin IP numarasinin bilgisayar adresi alanina 255 verilir. Ornegin 144.122.99 agi uzerinde yer alan bir bilgisayar yayin mesaji yollamak icin 144.122.99.255 adresini kullanir. Yayin mesaji yollanmasi birazda kullanilan agin fiziksel katmaninin ozelliklerine baglidir. Mesela bir Ethernet aginda yayin mumkun iken noktadan noktaya (point-to-point) hatlarda bu mumkun olmamaktadir.
Bazi eski surum TCP/IP protokolune sahip bilgisayarlarda yayin adresi olarak 255 yerine 0 kullanilabilmektedir. Ayrica yine bazi eski surumler subnet kavramina hic sahip olmayabilmektedir.
Yukarida da belirttigimiz gibi 0 ve 255'in ozel kullanim alanlari oldugu icin aga bagli bilgisayarlara bu adresler kesinlikle verilmemelidir. Ayrica adresler asla 0 ve 127 ile ve 223'un uzerindeki bir sayi ile baslamamalidir.
7.3 Yönlendirme
Bu bolumde farkli cografi noktalarda yer alan TCP/IP aglarinin birbirleri ile olan iletisiminin saglanmasi icin en onemli anahtar olan, yol bulma yani yonlendirme konusu aciklanacaktir.
Daha onceki aciklamalarimizda IP (Internet Protokol) katmaninin datagram'larin (TCP/IP’de iletisim icin kullanilan bilgi birim miktari) varis noktasina ulasmasini saglamakla yukumlu oldugundan bahsettik. Fakat bu islemin nasil yapilacaginin detaylarini incelemedik. Bir datagram'in varis noktasina ulastirilmasina 'yonlendirme' (routing) adi verilmektedir. Yonlendirmenin nasil yapildigini kavrayabilmek icin IP'nin dayandigi modeli anlamak gereklidir. IP katmani daima, bir sistemin bir aga bagli oldugunu varsayar. Ethernet tabanli bir ag uzerinde sadece karsi istasyonun Ethernet adresini bilmek yeterli oldugu icin hersey cok kolaydir. Fakat datagram'lar farkli aglar uzerindeki noktalara gonderilmek istendiginde sorunlar baslar.
Bir ag uzerinden diger ag uzerine gececek bilgi trafigini kontrol etmek, onu yonlendirmek gorevi genel olarak 'gecis noktasi aygitlarina' (gateway) aittir. Internet uzerinde IP protokolu kullanan aglarda bu isleri yerine getiren aygitlara yonlendirici (router) adi verilir. Boyle bir gorev ustlenen makina uzerinde birden fazla bilgisayar agi baglantisi yer alip, farkli aglarin bilgi trafikleri bu yolla birbirlerine iletilir. IP aglarindaki yonlendirme tamamen varis noktasi adresi temeline oturmaktadir. Ornegin ODTU'nun uluslararasi Internet baglantisini yapan yonlendirici 144.122.1.2 adresinde bulunmaktadir. Dolayisiyla 144.122.1 agi uzerinde yer alan diger sistemler 144.122.1.2 adresini yurt disi adreslere ulasmak icin gecis noktasi olarak tanimak zorundadirlar. Benzer bir sekilde Bilgisayar Muhendisligi bolumunun kampus omurga agina gecis noktasi olarak kullandigi bilgisayarin adresi de 144.122.71.1'dir. 144.122.71 agi uzerinde bulunan bir bilgisayar, kampus icindeki baska bir bilgisayara ulasmak icin bu gecis noktasindan gecmek zorundadir. Bu ag uzerinde bulunan bir bilgisayar datagram yollamak istediginde oncelikle ulasmak istedigi adresin ayni ag uzerinde olup olmadigina bakar, eger varis noktasi ayni ag uzerinde ise bilgi dogrudan varis adresine yollanir. Eger degilse, sistem varis noktasina ulasmak icin gerekli bilgileri arastirmaya baslar.
7.3.1 Yonlendirme protokolleri
Yukarida da aciklandigi gibi yonlendirme, bir bilgisayar agi uzerinde yer alan bir bilgisayarin ayni ya da farkli bir ag uzerinde yer alan baska bir bilgisayara nasil ulasacagina karar verirken kullanilan yontemdir. Bu sayede herhangi iki farkli noktada yer alan kullanicilar birbirleri ile bilgisayar kullanarak haberlesebilmektedir. Dolayisiyla yonlendirmeyi bir nevi yapistirici gibi dusunebiliriz.
Iletisimin en onemli noktasi olmasindan dolayi yeni bilgisayar agi kuruluslarinda en onemli sorunlardan birisi yanlis yapilan yonlendirme olmaktadir. Bu noktada yonlendirme ve yonlendirme protokolu arasindaki farki aciklamak ileride olusabilecek yanlis anlamalari onlemek acisindan yararli olacaktir. Bir bilgisayar agina bagli her sistem bilgiyi bir noktadan bir digerine yonlendirebilir ama her sistem uzerinde yonlendirme protokolu calismaz. Yonlendirme, bir yonlendirme tablosundaki bilgiye gore bilgi paketlerinin gecirilmesidir. Yonlendirme protokolu ise bu tablolarin olusturulmasinda bilgi degisimini saglayan programlardir. Basit bir bilgisayar aginda bir yonlendirme protokolu calismadan, sabit tablolar kullanarak iletisim saglanabilir.
Temel olarak 3 yonlendirme yontemi vardir (Asagida verilecek olan komutlar UNIX isletim sistemlerinde bulunmakta olup diger sistemlerde farkli komutlar kullanilabilir):
- Minimum yonlendirme: Bir bilgisayar agi baska bir bilgisayar agina bagli olmaksizin tek basina calisiyorsa minimum yonlendirme ile ag uzerindeki iletisimi saglayabiliriz. (Bu yonlendirme genelde sadece ifconfig komutu ile yapilir)
- Sabit yonlendirme: Kurulu bir bilgisayar aginin dis dunyaya bir ya da birkac cikisi varsa sabit yonlendirmeyi kullanabilir. (Bu yonlendirme genelde route komutu ile yapilir). Gerekli komut kullanilarak agin dis dunyaya cikan trafigi cikis noktasina yonlendirilmis olur.
- Dinamik yonlendirme: Agin dis dunya ile olan iletisimi birden fazla noktadan yapiliyorsa, yonlendirme protokolu ile dinamik olarak bir yonlendirme tablosu tutulur ve yonlendirme protokolleri birbirleri ile gerekli bilgi alisverisini yaparak en uygun cikisi kullanirlar. Boylece ag yoneticisinin elle mudahalesi gerekmeksizin en uygun yolu bu protokoller bulurlar. Dolayisiyla bir cikis noktasinda meydana gelen bir sorunda tum trafik otomatik olarak digerine yonlendirilebilir.
Bu yonlendirme yontemlerini biraz daha detaylari ile ornekler vererek inceleyelim.
# ifconfig le0 144.122.99.2 netmask 255.255.255.0 broadcast 144.122.99.255
komutu kullanilarak arayuzunun ag baglantisi yapilmis olan bir bilgisayarin yonlendirme tablosunun icerigine bakarsak
% netstat -rn
Routing Tables
Destination Gateway Flags Refcnt Use Interface
127.0.0.1 127.0.0.1 UH 1 132 lo0
144.122.99.0 144.122.99.2 U 26 49041 le0
Ilk satirdaki 127.0.0.1 loopback adres olarak bilinen lokal bilgisayarin kendisini tanimlayan ve Internet protokolunu calistiran her bilgisayarda bulunan standart bir adrestir. Ikinci satirda ise 144.122.99.0 agina, ethernet le0 arayuzu uzerinden gidilecegini belirtiyor. 144.122.99.2 ise uzaktaki (remote) bir gecis noktasi (gateway) adresi degil le0 arayuzunun kendi adresidir. Flags alanlarina bakacak olursak her iki satirda da bulunan U (up), her ikisinin de kullanima hazir oldugunu gosterir. Her iki satirda da Flags alaninda G (Gateway) isareti yoktur zira her iki arayuze aradaki bir gecis kapisi (gateway) uzerinden ulasilmamaktadir. Loopback yonlendirme taniminin bulundugu satirdaki H (Host) isareti bu yonlendirme ile sadece bir bilgisayara (yani kendisine) ulasilabilecegini tanimlamaktadir. Bu satir bilindigi gibi her yonlendirme tablosunda bulunmaktadir. Bu yonlendirme tablosu goruldugu gibi sadece 144.122.99.0 agi ile ilgili yonlendirme bilgisine sahiptir. Dolayisiyla sadece bu ag uzerinde yer alan bilgisayarlar birbirleri ile iletisime gecebilmektedirler. Bu yonlendirme tablosu olustuktan sonra herhangi bir problem olup olmadiginin testi ping komutu ile kolayca yapilabilir. Once bu ag uzerinde yer alan bir bilgisayari ping komutu ile kontrol edelim:
% ping 144.122.99.3
PING 144.122.99.3: 56 data bytes
64 bytes from 144.122.99.3: icmp_seq=0, time=11, ms
64 bytes from 144.122.99.3: icmp_seq=1, time=11, ms
^C
----144.122.99.3 PING statistics----
2 packets transmitted, 2 packets received, 0% packet loss
round-trip (ms) min/avg/max =10/10/11
Goruldugu gibi 144.122.99.3 ile olan iletisimin basarili oldugu test edilmis oldu. Bunun yaninda ayni ag uzerinde bulunmayan bir adrese ulasmak istedigimizde nasil bir sonucla karsilasacagimizi test etmek istersek :
% ping 26.40.0.17
sendto: Network is unreachable
Gelen cevaptan da anlasilacagi gibi, ulasmak istedigimiz bilgisayara ait yonlendirme bilgisine sahip olmadigi icin, bilgisayarimiz datagram lari varis noktasina iletemedigini ve o noktaya ulasilamaz oldugu mesajini veriyor. Eger bilgisayar aginizin dis dunya ile irtibati yoksa ifconfig ile yaratilan tablo tum ihtiyaclarinizi karsilamaya yeterlidir. Ancak eger bir dis baglanti varsa o zaman yonlendirme tablosunun daha fazla bilgiye ihtiyaci vardir.
7.3.2 Sabit Yonlendirme Tablosu
Yukarida da gordugumuz gibi minimum yonlendirme tablosu ile ayni ag icindeki bilgisayarlara ulasmak mumkundur. Baska aglar uzerindeki bilgisayarlara ulasmak icin bunlarla ilgili bilgiler yonlendirme tablolarina girilmelidir. Yonlendirme tablosunu yaratmak icin kullanilan yollarin en populeri route komutudur. route komutu ile yonlendirme tablosuna elle yeni yonlendirme bilgileri eklenip cikartilabilir.
Ornek verecek olursak, yukaridaki sekilde gorulen 144.122.99.0 agindaki bir bilgisayardan 144.122.71.0 agina ulasmak icin soyle bir tanim yeterlidir:
# route add 144.122.71.0 144.122.99.1 1
add net 144.122.71.0: gateway 144.122.99.1
route komutundan sonraki 'add' argumani yonlendirme tablosuna bir ek yapilacagini soylemektedir. Tablodan bir bilgi silinecegi zaman 'add' yerine 'delete' kullanilarak bu silme islemi yapilir. Ayni satirdaki ucuncu bilgi bu yonlendirme bilgisi ile ulasilmak istenen adresi belirtmektedir. Ulasilacak adres 4 farkli sekilde tanimlanabilir:
a- bir IP adresi ,
b- /etc/networks dosyasindaki bir ag ismi,
c- /etc/hosts dosyasindaki bir bilgisayar ismi,
d- default. Eger ulasilmak istenen adres olarak default kullanilirsa ayni ag uzerinde yer almayan her adrese burada tanimlanan gecis yolu uzerinden ulasilmaya calisilir. Eger bir agin dis dunyaya cikisi tek bir noktadan ise default olarak bu cikis adresi tanimlanmalidir.
Komut satirindaki dorduncu bilgi gecis yolu adresidir. Bu adres agin dis dunya ile iletisimini saglayan gecis kapisidir. Son arguman ise yonlendirme metrik bilgisidir. Bu bilgi, sadece ROUTE bilgisinin eklenmesi durumunda kullanilir. Metrik bilgisi degerinin 0 olmasi durumunda yonlendirme bilgisinin lokal aga ait oldugu seklinde yorumlanir ve daha once netstat komutunda gordugumuz Flags alanindaki G (Gateway) isareti gozukmez. Ama eger Metrik 0 degerinden buyukse bu o zaman bu
yonlendirme bilgisinin dis dunyaya acilan gecis yolunu tarif ettigi anlasilir ve Flags alanina G isareti konulur. Sabit yonlendirme 0 ve 1 disinda bir Metrik degeri kullanmaz.
7.3.3 Diger Yonlendirme Protokolleri
Butun yonlendirme protokolleri temelde en iyi yonu ve yolu bulma islevini yerine getirirler ve bu yonlendirme bilgisini ag uzerinde dagitirlar. Yonlendirme protokolleri iki temel gruba bolunebilirler: Interior (ic) ve Exterior (dis).
i-Interior (ic) protokoller: Bu protokoller bagimsiz bir bilgisayar agi icinde kullanilirlar. TCP/IP terminolojisinde boyle bilgisayar agi sistemlerine Otonom sistemler (AS) adi verilir. Otonom sistem icinde yonlendirme bilgisi, o agin yoneticisi tarafindan belirlenen bir ic yonlendirme protokolu ile dagitilir. Bu amacla kullanilabilecek degisik Interior (ic) protokoller mevcuttur.
HELLO en iyi yonu secerken gecikme faktorunu kullanan bir protokoldur. Gecikme olarak cikis noktasindan varis noktasina gonderilen bir paketin cikis noktasina ulasana kadar gecen zaman suresi kabul edilir. Bu protokol cok yaygin olarak kullanilmamaktadir. NSFNET omurgasi 56 Kbps hizinda iken kullanilmis ve zaman icinde baska protokoller ile degistirilmistir.
Son zamanlarda yayginlasmaya baslayan bir diger ic protokol de OSPF'dir (Open Shortest Path First). OSPF 'equal cost multipath routing' (esit maliyetli cok yollu yonlendirme) mantigi ile calismakta ve cok buyuk aglarda kullanilmaktadir. OSPF ayni varis noktasina birden fazla yonlendirme bilgisini tutmaktadir. Ancak OSPF'in bugun icin sadece ozel yonlendirme cihazlari uzerinde var olmasi ve henuz UNIX sistemlerin bir parcasi haline gelmemesinden dolayi yaygin kullanima gecilememektedir.
RIP (Routing Information Protocol) bu protokoller icinde en cok kullanilanidir. RIP'i populer yapan sebeplerin basinda bu protokolun UNIX sistemlerin bir parcasi olmasi gelmektedir. RIP protokolu yonunu en dusuk sicrama sayisi-hop count (metrik) ile secer. RIP 'hop count', bilginin varis noktasina ulasana kadar gececegi gecis yollari sayisini gosterir. Dolayisiyla RIP en az gecis yoluyla ulasilabilecek yolu en iyi yol olarak secer. Bu yaklasimla yol secme islemine 'distance- vector algoritmasi' adi verilir. RIP protokolunun kabul edebilecegi maksimum gecis yolu (gateway) sayisi 15 ile sinirlidir. Ulasilmak istenen yon ile ilgili metrik 15'den buyukse, RIP o noktaya ulasilamaz oldugunu varsayar ve ilgili yonlendirme bilgisini atar. Dolayisiyla RIP cok buyuk Otonom Sistemler icin uygun bir protokol degildir. Bunun yaninda en kisa yol en iyi yoldur yontemi de yavas ve yuklu hatlar kullanilmasi durumunda dogru olmamaktadir.
Cok kullanilan bir yonlendirme protokolu olmasindan dolayi RIP protokolunun biraz daha detaylarina girelim. Daha once de belirttigimiz gibi RIP pek cok UNIX sisteminin bir parcasi olarak gelmektedir. RIP bu isletim sisteminde bir yonlendirme deamon'u olarak calisir. UNIX'deki bu deamon routed'dir. routed calistirildiginda yonlendirme tablosunu guncellemek (update) icin hemen bir istek paketi yollar ve ardindan gelecek olan cevaplari dinlemeye baslar. RIP calistiran baska bir sistem bu istegi aldiginda kendi yonlendirme tablosu ile ilgili guncel bilgileri cevap olarak yollar. Bu paket adresler ve bu adreslerle ilgili metrik bilgilerini icerir. Bunun yaninda guncelleme paketleri sadece istek uzerine degil periodik olarak yollanmaya baslanir.
routed bir guncelleme bilgisini aldiginda gelen paket icindeki bilgiyi alir ve kendi tablolarini gunceller. Gelen bilginin icinde yeni bir yonlendirme bilgisi varsa bunu da hemen tablolarina ekler. Gelen paket icindeki yonlendirme bilgileri arasinda lokal tabloda bulunan bir adres icin ikinci bir yol belirtiliyorsa bu durumda lokal tablodaki ve gelen guncelleme tablosundaki metrik bilgileri karsilastirilir. RIP protokolu Metrik bilgisi dusuk olan noktaya daha kolay ulasilacagi varsayimi ile calistigi icin tabloya bu degere sahip yone iliskin adres yerlestirilir.
RIP tablolari tabii ki belli bir yerden sonra cok fazla buyuyecegi icin bir sekilde kontrol altinda tutulmalidir. Bunun icin iki yol mevcuttur. Birincisi, bir noktaya ulasmak icin gereken metrik 15'in uzerindeyse bu nokta ulasilamaz kabul edilir ve tablodan cikarilir. Ikincisi, eger bir gecis noktasi belli bir sure guncelleme bilgisi yollamazsa RIP o noktanin olu oldugunu ve ulasilamadigini varsayar. Genel olarak guncelleme cevabi bekleme suresi 30 saniye civarindadir. Bir UNIX sisteminde RIP protokolunu calistirmak icin
# routed
komutunun girilmesi yeterlidir. Genellikle komut hic bir arguman verilmeden calistirilir. Fakat kullanilan sistem bir gecis noktasi degilse ve elindeki yonlendirme bilgisini surekli yayinlamasi gerekmiyorsa bu durumda komut -q opsiyonu ile calistirilabilir. Boylece sistem sadece yeni duyurulan yonlendirme bilgilerini dinleyip tablolarini guncelleyecek ancak kendisi bir duyuru yapmayacak dolayisiyla gereksiz trafik yaratilmayacaktir.
ii-Exterior (dis) protokoller: Otonom Sistemler arasinda yonlendirme bilgisinin birbirleri arasinda degistirilmesi amaci ile kullanilir. Bu belli bir Otonom Sistem uzerinden hangi aglara ulasilabilecegi bilgisini icerir. Bu protokoller icinde en populer olanlari EGP (Exterior Gateway Protocol) ve BGP'dir (Border Gateway Protocol). Bu dokuman icinde EGP ve BGP protokollerin detaylarina girilmeyecektir.
7.4 İsimler ve Adresler
7.4.1 Adresleme stratejileri
Ilk bilgisayar sistemleri, kullanicilarin sayisal adresleri anlamalari ve kullanmalari temelinde tasarlanmislardi (sistem tablolari, yazici ve teyp uniteleri gibi cihazlar vs.). Daha sonra ortaya cikan sistemlerde harici cihazlar (yazici vs.) ve dosyalar daha anlasilir sembolik isimler ile gosterilmeye basladi. Benzer bir degisiklikte ag baglantilarinda yasandi. Once bilgisayarlar arasi noktadan noktaya bagli ag teknolojisi ortaya cikti ve alt seviye donanim isimleri makinalari tanimlamada kullanildi. Ancak pek cok bilgisayarin birbiri ile baglantisi gundeme geldiginde ust seviye adresleme yapisina gereksinim dogdu. Kullanicilar pek cok makinadan olusan hesaplama ortamlarinda makinalari tanimlamak icin anlasilir sembolik isimlere sahip bir adresleme yapisini talep ettiler. Bilgisayar sayilarinin gunumuze gore cok az olmasi sebebi ile baslangicta sadece makinanin kullanim amacina yonelik bir adlandirma yontemi kullanildi (personel, arastirma, muhasebe, gelistirme vs.). Ancak makina sayisinin artmasi ile sembolik yeni isimlerin bulunmasi ve tum bu birbirine bagli sistemlerin adlarinin bir merkezden kontrolu zorlasmaya basladi.
Adresleme problemlerini en aza indirmek icin, merkezi olarak bilgisayar isimlerinin kontrolu ve kayidi yerine daha uygun bir sistem olarak siraduzensel (hiyerarsik) ve otoritenin dagitildigi merkeziyetci olmayan bir adresleme sistemi getirildi. Bu sistemde adresleme en genelden ozele dogru yapilmakta ve her adres seviyesinin kontrolu yetkisi de dagitilmaktadir. Bu yapiya 'Alan Isimlendirme Sistemi-Domain Name Sistem' veya kisaca DNS ismi verilmektedir. Hiyerarsik yapidaki Alan (Domain) isimleri kavramini biraz daha detayli inceleyelim.
Alan (Domain) ismi birbirinden bir nokta (.) ile ayrilan, siraduzensel seviyedeki alt isimler (subnames) dizisidir. Mesela ODTU Bilgisayar Merkezi Alan ismi olan
cc.metu.edu.tr
dort seviye ile gosterilir ve her bir seviyeye de Domain adi verilir. Ornegimizde en alt seviye olan 'cc' (Computer Center) Bilgisayar Merkezini gostermektedir. Ucuncu seviye 'metu', ODTU'nun Domain ismidir. Bir ust seviye 'edu' (Education) ise bu domain'in bir egitim kurumuna ait oldugunu gosterir. En ust seviye 'tr' ise ISO (Internetional Standards Organization) tarafindan belirlenen Turkiyenin ulke kodudur. En ust seviyede kullanilan bazi domain isimleri asagida listelenmistir:
.com ticari kuruluslar (commercial)
.edu egitim kuruluslari (education)
.gov devlet kuruluslari (government)
.mil askeri kuruluslar (military)
.net ag organizasyonlari (network)
.ulke kodu ISO standart ulke kodu
Kisacasi isimler asagidaki domain ve alt domain siraduzensel yapiya gore verilir:
Makine.altorganizasyon.organizasyon.domain
7.4.2 TCP/IP ve DNS
Bilindigi gibi TCP/IP aglarina bagli olan her bilgisayarin ag arayuzu 32-bitlik IP adresi ile tanimlanmaktadir. Ancak IP adreslerinin gundelik hayatta kullanimi ve hatirlanmasi pek pratik olmadigi icin domain isimlendirme sistemi kullanilir. Aslinda TCP/IP yazilimlarinin ag uzerindeki iletisimi saglamak icin isimlere ihtiyaci yoktur, isim yapisi ag kullanicilarinin hayatlarini kolaylastirmak icin ortaya cikarilan bir yontemdir. Kullanicinin tercihine gore IP numaralari veya isimler kullanilabilir. Mesela:
% telnet 144.122.199.20
% telnet knidos.cc.metu.edu.tr
komutlarinin her ikiside ayni islevselliktedir. Her ikisinde de ODTU'de bulunan bir bilgisayara uzaktan baglanmak icin gerekli komut girilmektedir. Her iki durumda da baglanti IP numarasi kullanilarak yapilir. Isim ile baglanti durumunda sistem once bilgisayar ismini (knidos.cc.metu.edu.tr) IP numarasina cevirir ve daha sonra bu numaraya baglantiyi saglar. Dikkat edilirse bu sistem sayesinde makinanin IP adres degisiklikleri kullaniciyi hic etkilememektedir. Isimler ve adresler arasindaki iliskiyi saglayan sistemleri ve programlari kurup calistirmak sistem sorumlularinin gorevidir. Isimlerin IP adreslerine cevrilmesi islemi aslinda cok basit bir islem de degildir. Zira lokal calisan bir bilgisayar aginda hic dikkat edilmeyen pek cok konu bilgisayar agini Internete bagladiginizda cok ciddi problemlere yol acabilir. Ag uzerinde yer alan bilgisayarlarinizin isminin IP adresine cevrilmesi artik dunyanin her yerinden sorunsuz olarak yapilmak zorundadir. DNS in nasil calistigini ticari bir sirketin Internete baglandigini varsayarak bu ornek uzerinde aciklamaya calisalim. Bu hayali sirketimizin adi PLANET AS. olsun. Sirketimiz su anda Turkiye de calistigi icin tabiiki ust seviye domain adi .tr olacak. Alt seviyede ise sirket olmasindan dolayi .com domaini altinda bulunmaktadir. Bir alt domain ise sirketimizin adini gostermektedir, planet.com.tr. Buyuk bir sirket oldugumuz icin farkli birimlere sahibiz ve her birimimizde ayri bir domain altindadir. Arastirma gelistirme bolumu arge.planet.com.tr, satis bolumu sales.planet.com.tr, destek bolumu support.planet.com.tr gibi. Birimlerimiz oldukca buyuk oldugu icin her birim kendi Domain Name Servisini kendisi kontrol etmektedir. Sirketimizin ayrica tum bu alt seviye domainleri taniyan bir "root name server" makinasi bulunmaktadir. Alt domainler sadece kendi domainleri ile ilgili bilgiyi ellerinde tutarlar ve bilemedikleri her turlu domain icin sorgulamayi "root name server" uzerinden yaparlar. Ayrica eger istenirse alt seviye domainler (.sales, .arge gibi) kendi iclerinde baska alt seviye domainler de (sub domain) yaratabilirler. Aslinda tum seviyelerdeki domainleri kontrol eden "name server" makinalari kendi sorumluluklari altindaki bilgisayarlarin isimlerini ve IP adreslerini tablolarda tutan birer Bilgi Bankasindan (Database) baska bir sey degildir. Sirketimiz bu yapiyi kurduktan sonra dogal olarak Internet uzerindeki baska merkezlerle alfanumerik adresler kullanarak haberlesmek isteyecek ya da disardan kullanicilar sirketimizin sundugu bazi servislerimizi alabilmek icin bize ulasmak isteyeceklerdir. Bu noktada sirketimizin "root name server" makinasini ulke icindeki root name server makinasina tanitmamiz gerekmektedir. Su anda Turkiye icindeki .com dahil tum domainler icin bu gorevi knidos.cc.metu.edu.tr adresinde bulunan bir UNIX makina yapmaktadir. Bu "name server" uzerinde PLANET sirketinin root name server kaydi yapildiktan sonra artik dunyanin dort bir yanina alfanumerik isimler kullanarak ulasmak icin haziriz demektir. (Name server taniminin yapilmamasi IP adresleri kullanarak Internet uzerindeki adreslere ulasmamiza engel degildir. Name server bize sadece alfanumerik isimler kullanma imkanini verir.)Simdi Amerikadaki bir kullanicinin sirketimizin satis bolumundeki unix1.sales.planet.com.tr isimli bilgisayara Internet uzerinden ulasmak istedigini varsayalim. Unix1.sales.planet.com.tr adresine ulasmak icin lokal server once ABD’de icm1.icp.net adresindeki name server’a sorguyu yolluyor. icm1.icp.net Turkiye ile ilgili butun kayitlarin knidos.cc.metu.edu.tr adresinden alinacagini bildigi icin sorgulamanin bu adresten yapilmasini istiyor. Ayni sorgu bu sefer knidos.cc.metu.edu.tr adresine yollandiginda sorgulanan adresin netmgr.planet.com.tr tarafindan bilindigi cevabi yollaniyor. Ve sonucta ulasilmak istenen adres (193.141.75.9) netmgr.planet.com.tr adresinden elde ediliyor. Bu sorgulama sonucu Amerikadaki kullanicinin makinasi unix1.sales.planet.com.tr makinasinin IP adresini ogrenmis oldu ve bu adres ile yapmak istedigi iletisimi sagladi. Bu sorgulamanin sonucu ayrica istekte bulunan bilgisayarin cache bellegine yerlestirildi. Bu bilgi cache bellekte durdugu surece bir daha ayni adrese baglanmak isteyen bir kisi tekrar ayni sorgulamayi yapmaksizin o IP adresine dogrudan ulasabilecektir.
7.5 Arayüz Kuruluşu
Bilgisayarlar arasinda kullanilan iletisim altyapisinin sabit olmasi ve daima ayni fiziksel alt yapinin kullanilmasi durumundabilgisayar agi arayuzunun (interface) ag yazilimina tanitilmasina gerek kalmaksizin ag kurulusu yapilabilirdi. Ancak gunumuz bilgisayar aglarinda kullanilan fiziksel ag alt yapisi kullanim cesitliligine gore cok degisik ozelliklere sahiptirler. Bina iclerindekurulu yerel aglar farkli bir fiziksel yapi kullanirken kitalar arasi ag baglantilari icin tamamen farkli bir yapi kullanilmaktadir. Tum bu cesitlilik sebebi ile iletisim agi yazilimina her arayuz ayri ayri tanitilmak ve karakteristiklerine gore konfigurasyonu yapilmak zorundadir.
TCP/IP fiziksel alt yapidan tamamen bagimsiz bir sekilde dizayn edildigi icin, adresleme ag donanimi seviyesinde degil de ag yazilimi seviyesinde kontrol edilmektedir.
Bu bolumde TCP/IP kullanilan aglardaki ara yuz kurulusunun nasil yapildigi standart UNIX komutu olan ifconfig komutu kullanilarak ve ornekler verilerek anlatilacaktir.
- ifconfig komutu
ifconfig ag arayuzlerinin (bir bilgisayarin birden fazla ag arayuzu olabilir) kurulus ve kontrollerinde kullanilan bir komuttur. Her arayuze Internet adresinin, subnet maskesinin ve broadcast adresinin verilmesinde kullanilir. Bir ornek uzerinden inceleyecek olursak:
# ifconfig le0 144.122.199.20 netmask 255.255.255.0 broadcast 144.122.199.255
ifconfig komutu ile kullanilan temel argumanlar :
* arayuz: ifconfig komutu ile konfigure edecegimiz arayuzun adi. Yukaridaki ornekte Ethernet arayuzun ismi 'le0'.
* adres: Bu arayuze verilen Internet adresi. Bu adres noktali ondalik formda (dotted decimal form) veya bilgisayar adi olarak girilebilir. Ancak ad olarak girilmesi durumunda bilgisayar adina karsilik gelen Internet adresinin /etc/hosts dosyasinda bulunmasi gereklidir. Genelde ifconfig komutu DNS'den (DNS detaylarina ileride girilecektir) once calistirildigi icin ozellikle bu dosyada bulunmasi problemlerin onlenmesi acisindan onemlidir. Yukaridaki ornekte 144.122.199.20 bu arayuze verilen adrestir.
* netmask: mask Bu arayuzun subnet maskesi. Eger kullanilan ag daha kucuk captaki subnet lere bolunecekse bu alanda kullanilan degerler onem kazanir. Ornekteki adres icin 255.255.255.0 seklindeki subnet maskesi kullanilmis ve ag subnetlere bolunmustur.
* broadcast address: Agin yayin adresi. Bu adres subnet yapisina bagli olarak belirlenir ve ayni ag uzerindeki her bilgisayarda ayni degerin kullanilmasi gerekmektedir. Ornegimizde bu adres 144.122.199.255 olarak belirlenmistir.
Burada kullanilan tum adresler vs. o agin yoneticisince belirlenir ve bilgisayarlara verilir. Arayuzun ismi genelde sistemden sisteme degisebilecegi icin kurulus islemlerine baslamadan once sistem dokumanlarinin incelenmesinde buyuk yarar vardir. Ayrica simdi inceleyecegimiz netstat komutu ile hangi arayuzlerin, nasil konfigure edildikleri ile ilgili bilgi de edinilebilir.
7.5.1 Arayuzler ve netstat komutu
Iletisim protokolu olarak TCP/IP kullanilan sistemlerde bilgisayar agi arayuzlerinin hangilerinin varoldugunu anlamanin en kolay yollarindan birisi netstat komutunun kullanilmasidir. Ornegin bir sistem uzerindeki tum ag arayuzlerinin durumunu kontrol etmek icin su komut kullanilabilir:
% netstat -ain
-i opsiyonu, netstat'in konfigure edilmis ara yuzlerin durumunu gostermesini
-a opsiyonu, tum arayuzlerin durumunu gostermesini
-n opsiyonu, gelen bilginin numerik olarak gosterilmesini saglar.
Gelen cevap :
Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue
le0 1500 144.122.199.0 144.122.199.20 1547 1 1127 0 135 0
lo0 1536 127.0.0.0 127.0.0.1 133 0 133 0 0 0
Name: Arayuzun ismi. Bu alanda eger (*) bulunursa bu o arayuzun o anda calismadigini gosterir.
Mtu: Maximum Transmission Unit. Bu arayuz uzerinden bolunmeden gonderilebilecek en uzun paketin boyu (byte olarak).
Net/Dest: Bu arayuzun ulasim sagladigi ag veya varis bilgisayari. Bu alan, varis bilgisayari adresini sadece PPP (point-to-point) tanimlamasi yapildiginda icerir. Diger zamanlarda bu alanda ag adresi bulunur.
Address: Bu ara yuze verilmis olan Internet adresi.
Ipkts: Input Packets. Bu ara yuz uzerinden alinan paket sayisi.
Ierrs: Input Errors. Bu arayuz uzerinden alinan hatali paket sayisi.
Opkts: Output Packets. Bu ara yuz uzerinden yollanan paket sayisi.
Oerrs: Output Errors. Hataya yol acan paket sayisi.
Collis: Bu arayuz uzerinde tespit edilen carpisma sayisi. Ethernet disindaki arayuzlerde bu alan olmaz.
Queue: Bu arayuz uzerinde kuyrukta bekleyen paket sayisi. Normalde bu deger 0'dir.
Yukaridaki degerler bu sorgulamanin yapildigi istasyonun iki ag ara yuzune sahip oldugunu gostermektedir. 'lo0' arayuzu loopback arayuzu olup standart olarak her TCP/IP sisteminde bulunur ve normalde herhangi bir konfigurasyona da ihtiyac duymaz. 'le0' bir Ethernet arayuzudur. Bir makina uzerinde eger birden fazla Ethernet arayuzu varsa bunlar 'le0', 'le1' ... seklinde numaralanirlar.
7.5.2 Arayuzun ifconfig komutu ile kontrolu
Bir arayuzun konfigurasyonu 'ifconfig' komutu ile kontrol edilir.
ifconfig le0
le0: flags=63 UP,BROADCAST,NOTRAILERS,RUNNING
inet 144.122.199.20 netmask ffffff00 broadcast 144.122.199.255
Gelen cevaptaki ilk satir arayuzun adini ve karakteristiklerini verir. Ornekteki arayuzun adi 'le0' dir. Arayuzun karakteristikleri:
UP: Arayuz kullanima hazir
BROADCAST: Bu arayuz broadcast'i destekliyor. (Zira arayuz bir Ethernet ortamina bagli)
NOTRAILERS: Arayuz 'trailer encapsulation' desteklemiyor (Ethernete has bir karakteristik).
RUNNING: Arayuz su anda calisiyor.
Gelen cevaptaki ikinci satir direk olarak bu arayuzun TCP/IP konfigurasyonu ile ilgili bilgi verir. Bu arayuze Internet, maske ve yayin adreslerinin olarak ne verildigi buradan gorulmektedir. Bu adreslerde yapilmak istenen degisiklikler ve duzenlemeleri yine 'ifconfig' komutunu kullanarak gerceklestirmek mumkundur. Mesela yukaridaki ornekteki subnet maskesi ve yayin adresini asagidaki komutu kullanarak degistirebiliriz:
# ifconfig le0 144.122.199.20 netmask 144.122.255.255 broadcast 255.255.0.0
Genelde 'netmask' degeri dogrudan komutun icinde belirtilir. Ancak eger istenirse bu degeri komutun gidip bir dosyadan almasi da mumkundur. Kullanilmasina karar verilen 'netmask' degeri /etc/networks dosyasina eklenirse 'ifconfig' komutu bu degeri o dosyadan alir. Ornegin ag yoneticisi asagidaki satiri /etc/networks dosyasina eklesin:
odtu-mask 255.255.255.0
Bundan sonra 'ifconfig' komutu kullanilirken:
# ifconfig le0 144.122.199.20 netmask odtu-mask
seklinde verilen komut netmask degerini /etc/networks dosyasindan alir. Yukaridakine benzer sekilde arayuzun Internet adresini de 'ifconfig' komutu ile degistirmek mumkundur. Ornek verecek olursak:
# ifconfig le0 144.122.199.50
komutu ile yukaridaki orneklerde adresi 144.122.199.20 olan bilgisayarin yeni adresi artik 144.122.199.50 olarak degismis oldu. Her seferinde numerik adres yazilmasi istenmiyorsa /etc/hosts dosyasinda bu Internet adresine karsilik gelen isim girilebilir.
144.122.199.50 icin /etc/hosts dosyasina eklenecek olan
144.122.199.50 artemis.metu.edu.tr artemis
satiri ile 144.122.199.50 adresine artemis.metu.edu.tr veya kisaca artemis adi verilmis olur. Bundan sonra konfigurasyon yaparken
# ifconfig le0 artemis
olarak girilen komut bu Ethernet arayuzune 144.122.199.50 adresini /etc/hosts dosyasindan alarak verir.
Sistemin yeni acilisi esnasinda dogru adresin ve konfigurasyonun yuklenmesi icin yukarida acikladigimiz komutlar her seferinde girilmek durumundadir. Bu islemin otomatik yapilabilmesi icin 'ifconfig' komutu dogru parametreler ile sistem yukleme
dosyasinda bulunmalidir. BSD UNIX sistemlerinde bu komut genelde /etc/rc.boot veya /etc/rc.local, System V UNIX sistemlerinde ise /etc/tcp veya /etc/init.d/tcp dosyalarina konulur. Boylece sistem her acilisinda 'ifconfig' komutunun ellle girilmesine gerek kalmaksizin uygun konfigurasyon otomatik gerceklestirilir.
Arayuzun kontrolune yonelik olarak 'ifconfig' komutu ile kullanilan baska parametreler de vardir. Arayuzun bir sure kapatilmasi ve acilmasi icin 'up' ve 'down' parametreleri kullanilir. Arayuz uzerinde yapilacak degisikliklerde (ornegin adres degisikligi) trafik akisinin durmasi icin arayuz once 'down' edilip ardindan 'up' duruma getirilir. Ornegin:
# ifconfig le0 down
# ifconfig le0 144.122.199.100 up
komutlari ile Ethernet ara yuz once kapatildi sonra adres degisikligi yapilarak acildi.
Bu noktaya kadar verilen bilgiler ve ornekler ile TCP/IP protokolune sahip UNIX tabanli bilgisayar sistemimiz bir Ethernet agina baglandi ve ayni ag uzerinde yer alan diger bilgisayarlar ile iletisime gecti. 'ifconfig' komutunun daha baska ozellik ve yeteneklerinin olmasina karsin su asamada o detaylara girmiyoruz. Bu noktadan sonra yerel agimizin seri hatlar uzerinden uzak bir noktadaki baska bir aga yani Internet'e nasil baglanabilecegini anlatacagiz.
7.5.3 Seri hatlar uzerinde TCP/IP Konfigurasyonu
TCP/IP protokolu cok cesitli fiziksel ortamlarda calisabilmektedir. Yukaridaki bolumde Ethernet aglar uzerinde nasil konfigurasyon yapilacagi anlatildi, simdi ise uzak iletisim hatlari uzerinden baska bir ag ile baglantinin nasil yapilacagi anlatilacaktir.
Seri arayuz bilgiyi tek bir hat uzerinden seri bitler olarak yollayan bir ortamdir. Her bilgisayar sisteminde en az bir veya iki seri arayuz cikisi bulunmaktadir. Bu cikis uzerinden iki nokta arasindaki iletisimi saglamak icin modem ya da benzeri bir aygit kullanilir.
Gunumuzde iletisim teknolojilerinin cok hizlanmasi ve bunun yaninda fiyatlarin dusmesi ile beraber telefon hatlari uzerinden evlerden dahi ag baglantilari yapilabilir duruma gelmis ve TCP/IP icin standart genis alan baglantisi (WAN) protokolleri gelistirilmistir. Bu protokoller SLIP (Serial Line IP) ve PPP'dir (Point-to- Point Protocol).
SLIP, PPP protokolunden once ortaya cikan ve standart disi bir Internet protokoludur. Bunun yaninda PPP, SLIP'den sonra ortaya cikmistir ve Internet'in standart seri hat protokollerinden birisidir. SLIP onceden ortaya cikmasi ve pek cok UNIX sisteminin parcasi haline gelmesi sebebi ile cok yaygin olarak kullanilmaktadir.
Burada her iki protokolun bir UNIX ortaminda nasil konfigure edilecegi orneklerle anlatilacaktir.
7.5.4 SLIP kurulusu
Aga bagli bilgisayarinizin SLIP amacli kullanim icin kurulusunun Ethernet kurulusundan pek bir farki yoktur. Ancak SLIP'e has bazi komutlari vardir, bunun yaninda PPP gibi standart olmayisindan dolayi bazi komutlar sistemden sisteme degisebilmektedir. En cok kullanilan komutlar: 'slattach' ve 'sliplogin' komutlaridir.
- slattach
Bu komutun kullanim ve ve fonksiyonu 'ifconfig' komutuna cok benzer.
# slattach /dev/tty001 144.122.199.200 144.122.199.201
Yukaridaki ornekte 144.122.199.200 Internet adresi /dev/tty0001 seri portuna verildi. 144.122.199.201 adresi ise seri hattin diger ucundaki bilgisayarin Internet adresidir.
Ornekten de goruldugu gibi 'slattach' komutu ile ag arayuzu standart ismi olan sl01 yerine /dev/tty001 seri port tanimlanir. Ancak 'netstat' komutu ile SLIP arayuzu kontrol edildiginde arayuzun ismi (sl01) ile ilgili bilgi verir.
Bir arayuzden SLIP kullanimini kaldirmak icin ise genelde kullanilan komut 'sldetach' komutudur.
# sldetach sl01
Yukaridaki komut ile bu arayuz artik normal terminal arayuzu olarak kullanilir (bu komutta ag arayuzu isminin kullanildigina dikkat edin).
Bazi UNIX sistemlerde SLIP baglantinin dial-up telefon hatlari uzerinden yapilabilecegi goz onunde tutularak 'slattch' komutuna gerekli eklenti yapilmistir. Ornegin IBM AIX sistemlerde :
# slattch /dev/tty1 '""ATZ OK \pATDT5551212 CONNECT""'
komutu ile karsidaki sistemin telefon numarasi cevrilip baglanti kurulmaktadir. Ancak slattach komutunda bu yetenege sahip olmayan sistemler dial-up turu baglantilarda 'cu' veya 'tip' gibi programlar ile once iki nokta arasindaki iletisim saglanmali sonra 'slattach' calistirilmalidir.
- sliplogin
'sliplogin' SUN sistemlerde kullanilan slipware yaziliminin SLIP baglantilari saglayan komutudur. Kullanimi 'slattach' komutuna benzer:
# sliplogin 144.122.199.200 144.122.199.201 < /dev/ttyb
Bu ornekteki ilk adres bilgisayarimizin uzerindeki ara yuzun adresi, ikinci adres ise SLIP baglantinin yapildigi bilgisayarin adresidir. Yine benzer sekilde ara yuzun adi yerine seri port (/dev/ttyb) bu komutta kullanilmistir.
PP kurulusu
Bir bilgisayarin seri hat uzerinden PPP protokolunu kullanarak ag baglantisini saglamak icin 'ppp' komutu kullanilir. Ornegin /dev/ttya seri portunu PPP olarak konfigure etmek icin
# ppp 144.122.199.200 144.122.199.201 /dev/ttya &
komutunu girmek yeterlidir. Boylece komutun calistirildigi bilgisayarin seri arayuzu 144.122.199.200 adresini ve karsi taraftaki bilgisayarda 144.122.199.201 adresini alir. Ancak PPP'nin dinamik adresleme yeteneginden dolayi karsi tarafin adresini vermek bir zorunluluk degildir. Ornegin :
# ppp 144.122.199.200: /dev/ttya &
komutu ile PPP seri porta 144.122.199.200 adresini verir. Ancak diger bilgisayarin Internet adresi baglanti kurulduktan sonra karsi taraftan ogrenilir.
Dial-up telefon hatlari uzerinden yapilan baglantilarda SLIP'de oldugu gibi 'cu' veya 'tip' gibi programlar ile ilk iletisim kurulur.
7.6 Linux ' ta Modem Ayarları
Linuxta modemi tanitmak icin yapmaniz gereken seyler asama asama sunlardir:
7.6.1 Oncelikle modeminizin hangi aygit dosyasina ve irq ya sahip oldugunu bulmaniz gerekir
Bunun icin bir program hazirlanmasi dusunulmektedir ama su an icin elle yapmalisiniz. Modemin bagli bulundugu aygiti bulmak icin dip programini kullanabilirsiniz.
guru@valhalla|tty9:~# dip -t
DIP: Dialup IP Protocol Driver version 3.3.7o-uri (8 Feb 96)
Written by Fred N. van Kempen, MicroWalt Corporation.
DIP> port cua4
DIP: tty_open: cannot get current state!
ornekte goruldugu gibi dip -t komutunu girdiginizde DIP> seklinde bir komut girisi goreceksiniz. Burada modem inizin bagli olabilecegi 4 aygit olabilir. Eger mouse unuz DOS taki COM1 de ise olasilik 3'e duser, bunun anlami modemin cua0 aygitinda olmadigidir, geriye sadece cua1 (COM2), cua2 (COM2) ve cua3 (COM4) aygitlari kalir. Bu uc olasiligi port komutunu kullanarak deneyebilirsiniz. Eger dip programi yukarida gorulen hatayi vermeyip DIP> ciktisini verirse dogru portu buldunuz demektir.
Ornek:
DIP> port cua2
DIP>
Simdi sira irq'yu bulmaya geldi. Normalde irq 3 veya irq 4 olmalidir, fakat bazi durumlarda modeminizin irq su degismis olabilir. Bunu anlamak icin
cat /proc/interrupts komutunu verin.
guru@valhalla|tty9:~# cat /proc/interrupts
0: 439984 timer
1: 28367 keyboard
2: 0 cascade
11: 61497 + serial
4: 7214 + serial
7: 1 sound blaster
9: 0 mpu401
13: 1 math error
14: 63955 + ide0
15: 4 + ide1
Bu ciktida serial yazan iki satir goreceksiniz, birisi mousea ait digeri modeme aittir. Burada mousea ait olan irq 4 olmalidir. Digeri ise modemdir. Bu sayi modeme iliskin irq degerini verir. Eger bu sayi 3 ise hic bir islem yapmaniza gerek yoktur, eger farkli bir degerse su komutu vermelisiniz.
* Modem aygitinizin cua3 ve irq degerinin 11 oldugunu varsayarsak,
guru@valhalla|tty9:~# setserial /dev/cua3 irq 11
bu islemden sonra modem e ait irq ayarlanmis olur. Bu komutun etkisi sadece o oturuma iliskindir, yani her boot isleminde komutun etkisi yokolur o yuzden eger bu komutu vermeniz gerekliyse /etc/rc.d/rc.local dosyasi icersine ekleyin.
7.6.2 Ayarlarin Dogru Olup Olmadiginin Sinanmasi
Ayarlarinizi yaptiktan sonra dip programi ile modemin dogru calisip calismadigini sinayabilirsiniz. Bunun nasil yapildigini anlatmadan once dip programini biraz taniyalim. Dip programinda iki kip vardir; birinci kip normal kiptir, ikincisi ise TERM kipidir. TERM kipinde girilen her komut modem tarafindan HAYES komut setinde bir komut olarak algilanir. TERM moduna gecmek icin term komutunu vermeniz yeterlidir, TERM modundan cikmak icinse ^] yani (CTRL+] tus kombinasyonu) gerekir.
guru@valhalla|tty9:~# dip -t
DIP: Dialup IP Protocol Driver version 3.3.7o-uri (8 Feb 96)
Written by Fred N. van Kempen, MicroWalt Corporation.
DIP> port cua4
DIP> TERM
[ Entering TERMINAL mode. Use CTRL-] to get back ]
atz
OK
yukarida ornekte goruldugu gibi, term moduna gecildiginde atz komutunu verin (HAYES komut setinde modemi resetleyen komut), eger komutu yazarken yazdiginizi goruyorsaniz ve OK ciktisini aliyorsaniz ayarlariniz saglamdir, eger degilse maalesef ayarlarinizi yanlis yapmissiniz demekir,
7.6.3 DIP Ile PPP Baglanti
Bu kisimda dip in script ozelligine girmeden , en eski yontem ile PPP baglantisinin nasil alindigi anlatilacaktir. Ilk once assagidaki ciktiyi inceleyin,
guru@valhalla|tty9:~# dip -t
DIP: Dialup IP Protocol Driver version 3.3.7o-uri (8 Feb 96)
Written by Fred N. van Kempen, MicroWalt Corporation.
DIP> port cua1
DIP> get $local 0.0.0.0
DIP> get $remote 0.0.0.0
DIP> get $mru 542
DIP> get $mtu 542
DIP> speed 57600
DIP> term
[ Entering TERMINAL mode. Use CTRL-] to get back ]
ath0
OK
atdt0822xxxxxxx
CONNECT 57600
Username : xxxxx
Password : xxxxx
Async interface address is unnumbered (Ethernet0)
Your IP address is xxx.xxx.xxx.xxx MTU is 542 bytes
Header compression will match your system.
[ Back to LOCAL mode. ]
DIP> mode PPP
guru@valhalla|tty9:~#
Simdi bu ciktiyi inceleyelim, Oncelikle dip -t yazarak dip programini calistirdik daha sonra az once anlatildigi gibi port komutu ile modemin bagli oldugu aygiti tanimladik.
get komutu bir parametrenin degerini vermek icin kullanilir, burada local ve remote parametreleri sira ile bizim modemimizin bagli oldugu aygitin IP sini ve modemimizin bagli oldugu karsi modemin aygitinin IP sini gosterir. Bunlara 0.0.0.0 degerinin verilmesi, bu IP leri programin otomatik almasi gerektigi anlamina gelir, yani bu IP ler program tarafindan otomatik olarak ayarlanacaktir. mru ve mtu parametreleri ise modemin gonderecegi ve cekecegi enbuyuk paket buyuklugunu gosterir bu parametrenin optimum degeri 542 dir, ama bu parametreleri vermeniz zorunlu degildir, speed komutu aygitinizin (dolayisi ile modeminizin) maximum transfer hizini belirler, eger belirtmezseniz 38400 degerini alir, eger modeminiz v42bis ozelligine sahipse ve sIkIstIrma yapabiliyorsa bu hizi daha yuksek tutabilirsiniz, daha sonra term komutu ile TERM moduna geciyoruz ve HAYES komut setini kullanarak numaramizi ceviriyoruz, ath0 komutu modemi ilk kullanim icin hazirlar ve atdt komutu ise belirtilen telefon numarasini cevirir, numarayi cevirdikten sonra CONNECT seklinde bir mesaj alacaksiniz ve komut girdisi goreceksiniz, burasi ISP nize bagli olarak degisir, burada kullanici kodu ve sifrenizi girdikten sonra ISP nizden gelen
Async interface address is unnumbered (Ethernet0)
Your IP address is xxx.xxx.xxx.xxx MTU is 542 bytes
Header compression will match your system.
ciktisini gormelisiniz, bu cikti baglantinin gerceklestigi anlamina gelir, bu asamada ctrl ] komutunu vererek TERM modundan cikin ve mode PPP komutunu verin, tekrar kabuk ortamina duseceksiniz.

Dağıtımlar hakkında bilgi

Aşağıda, belli başlı tüm dağıtımlar hakkında kurulum ve kurulum sonrası yapılandırma konusunda bazı bilgiler bulacaksınız.

SuSE 6.4

SUSE'nin 6.4 sürümünde kurulum işlemleri grafik ortamda ve çok hoş animasyonlarla yapılıyor. Kurulumdan sonra çalıştırabileceğiniz yeni ve gelişmiş Yast2 (yet another setup tool) programı lilo'dan ekran kartına, yazıcı ayarlarından kullanıcı yönetimine kadar tüm işlemleri yapabiliyor.
SuSE 6.4'ün en çok hoşumuza giden özelliği masaüstünde diğer dağıtımlara göre daha çok ve zengin uygulamalara yer vermesi. SuSE'nin web sayfası www.suse.com

Caldera OpenLinux 2.4

Caldera'nın 2.4 sürümünde kurulumda disk bölümlendirme programı bulunmuyor. Ancak "edit" seçeneği mevcut. Bunun için başka bir disk bölümlendirme programı kullanılmalı. Kurulum esnasında "Custom" seçeneği ile disk bölümlendirme kısmında bu bölümler düzenlenmeli. Kurulum programı ekran kartını, monitörü ve ses kartını otomatik olarak tanıma özelliğine sahip.
Ekran kartı, monitör, klavye ve fare ayarları sırasıyla xf86config, XF86Setup, lizard-xserver ve lizardx komutları ile yapılabilir.
Ses kartı ve diğer kartları tanıtmak için ise KDE ekranından K -> Settings -> Coas -> Kernel kullanılabilir. Ayrıca Coas -> Xserver -> Video Mode'dan da monitör çözünürlüğü değiştirilebilir. Komut satırından çalıştırılabilen coastools da aynı görevi yapıyor. Bu arada Coas, CalderaSystems'ın geliştirdiği ve yönetimi kolaylaştırıcı amaçlı hazırlanan programa verilen isim.
Ayrıca CD ile birlikte gelen Webmin adlı programla bir çok ayarı yapmak da mümkündür.
İnternet bağlantısı için kppp kullanılabilir. Caldera'nın web sayfası www.calderasystems.com adresinde.

Red Hat 6.1 ve 6.2

Kurulum işlemleri diğer modern dağıtımlar gibi grafik ortamda yapılmaktadır. Eğer ekran kartı ile ilgili bir problem olup da kurulumda kilitlenme olursa ilk başta yeralan Welcome ekranında "text" yazarak metin kuruluma geçilebilir. Daha sonra Red Hat 6.0'dakine benzer şekilde diğer ayarlamalar tamamlanır. Red Hat 6.2'de Türkçe dil desteği bulunmasına rağmen Türkçe kurulum yapılamamaktadır. İngilizce kurulumu seçmeniz tavsiye edilir.
Ses kartını tanıtmak için sndconfig komutu kullanılabilir. Ancak bu komut nadiren de olsa X Window altında kilitlenmelere sebep olabiliyor. Bu durumda sndconfig --noprobe komutunu deneyin.
Sistemde başka bir işletim sistemi var ise /etc/lilo.conf dosyasında yapılacak küçük bir değişiklik ile girişte bu sistemden açılış sağlanabilir. Bunun için /etc/lilo.conf dosyası içine (tercihan sonuna),
other = /dev/hda1               -> Diğer işletim sisteminin disk bölümü
  label = windows               -> Bilgisayar açılınca menüde görülecek isim
  table = /dev/hda              -> Bu satır eğer açılacak sistem başka 
                                   bir diskte ise eklenir.
Bu satırlar eklendikten sonra "lilo" komutunun çalıştırılması gereklidir.
İnternet bağlantısı için X Window altında "kppp" programı kullanılabilir. Ancak servis sağlayıcının DNS IP numarasını da bilmelisiniz.
Red Hat'e www.redhat.com adresinden ulaşabilirsiniz.

Mandrake 7.0, 7.1

Kurulum tamamen grafik ortamda ve Türkçe yapılmaktadır. Kurulumdan sıra karşınıza gelen X Window penceresi de Türkçedir. Hemen hemen tüm ayarları Red Hat ile aynıdır. X Window'da çalışan lothar adında bir program sistemdeki mevcut cihazları tanıyarak gerekli yazılımları otomatik yükleme yeteneğine de sahiptir.
Mandrake Linux'a www.linux-mandrake.com web sayfasından ulaşılabilir. Bunun yanında Mandrake kullanıcılarına destek vermek amaçlı www.mandrakeuser.org adlı siteyi de mutlaka ziyaret etmenizi öneririz.

Corel Linux 1.1

Tüm kurulum grafik ortamında yapılıyor. Ancak eğer ekran kartı ile ilgili ciddi bir sorun yapılırsa, metin kurulum ortamı bulunmadığı için yapılacak hiç bir şey kalmıyor. Ayrıca kurulumun nereye yapılacağı sorusuna "Dos/Windows Partition" cevabı verilirse bu durum bazı sistemlerde kilitlenmelere, eksik kurulumlara ya da Windows bölümünün silinmesine sebep olmaktadır.
Ekran kartını yeterli olarak tanımazsa ve görüntü sürekli titrerse ekran kartını tanımlamak için xf86config programını kullanabilirsiniz.
Ses kartını tanıtmak için sndconfig komutu kullanılabilir. Ancak ESS18XX chipsetli ses kartları tanıtılamamaktadır.
LILO ayarları ve İnternet bağlantısı tıpkı Red Hat'te olduğu gibi yapılır. Corel Linux diğerlerine nazaran oldukça küçük bir paket olduğundan bir pencere yöneticisi olarak sadece KDE gelmektedir. Tüm paketler yüklendiği zaman kapladığı alan yaklaşık 600Mb kadardır.
Corel Linux'un ana web sayfası linux.corel.com
6.1 TCP/IP’ye giris ve Bazi Tanimlar
Raporumun basinda konu ile ilgili bazi terimlerin aciklanmasinin daha iyi olacagini dusundum. Bu yuzden ilk olarak tanimlari veriyorum.
Tanimlar :
6.1.1 SUNUCU:
Sunucu kullanicilara dosyalari, kaynaklari, servisleri saglayan bir makinadir. Kullanicinin makinasi client, bu makinanin dosya talep ettigi makina da serverdir. Ayni makina hem server ham client olabilir. Local area networklerde tum dosyalarin ve buyuk uygulamalarin bulundugu guclu bir server vardir. Buyuk network aglarinda birden fazla server bulunabilir. Ornegin file server, modem server, printer server gb.
6.1.2 client :
Serverin tanimindan da anlasilacagi gibi serverdan talepte bulunan makineye client denir.
6.1.3 node :
Bir network agina bagli olan herseye node denir. (PC, printer,...)
6.1.4 bridge :
Iki veya daha fazla network agini birbirine baglamaya yarayan makinadir. Tum aglarda ayni isletim sistem varsa bridge kullanilir.
6.1.5 router :
iki veya daha fazla network agini birbirine baglamaya yarayan makinadir. Aglarda farkli isletim sistemleri mevcut olabilir. Routerin bridgeden farki bundan kaynaklanir. Bir router bridgeden daha karmasiktir. Router bilgi paketlerini nasil ve nereye gonderecegine kendisi karar verir. Brouter bridge ve routerin yeteneklerinin birlesimini gercekleyen bir makinadir.
6.1.6 gateway :
Kucuk bir ag ile buyuk bir ag arasinda kopru vazifesini goren makinedir. Ornegin bir LAN ile internet agi arasinda kullanilir.
6.1.7 TCP/IP
Bazi tanimlar:
6.1.7.1 Transport protokolleri:
a- TCP (transmission control protocol): baglanti tabanli servis yani gonderen ve alan makinalar her zaman birbirleri ile irtibatli.
b- UDP (User datagram protocol): baglantisiz servis, gonderen ve alan makinalar birbirleri ile baglantili degil.
6.1.7.2 Routing protkolleri :
c- IP (intermet protocol): bilginin gonderilmesini yoneten protokol.
d- ICMP (internet control messsage protocol): IP icin mesajlari yonetir.
e- RIP (routing information protocol):bir mesaj icin en iyi gonderme protokollerinden birisi.
f- OSPF (open shortest path first): RIP gibi bir protokol
6.1.7.3 Ag Adres Protokolleri :
g- ARP (adsress resolution protocol): ag uzerindeki bilgisayarlarin numerik adreslerini belirleyen protokol.
h- DNS (domain name server):makine isimleri icin numerik adres belirler.
i- RARP (reverse address resolution protocol): arp yardimi ile agdaki makinelerin adreslerini belirler.
6.1.7.4 Kullanici servisleri :
j- BOOTP (boot protocol):server bootunu okuyarak kullanicinin networkunu baslatir.
k- FTP (file transfer protokol): dosya cekme ve gonderme protokolu.
l- TELNET :ag uzerindeki baska bir malineye baglanarak login yapmak.
6.1.7.5 Gateway protokolleri :
m- EGP (exterior gateway protocol): eksternal ag icin bilgileri transfer etme protokolu.
n- GGP (gateway to gateway protocol): gatewayler arasi transfer protokol.
o- IGP (internal gateway protocol): internal aglar icin transfer protokol.
6.1.7.6 Kategorisiz tanimlar :
p- NFS (network file system): bir makineye mount edilmis makinede mount edilen makinedeki dizinlerin kullanilmasini saglar.
r- NIS (network information service):ag icinde loginlerin dolasmasini saglar.
s- RPC (remote procedure call): uzak uygulamalarin basit sekilde calismasini saglar.
t- SMTP (simple mail transfer protocol):makineler arasi mail gonderen protokol.
u- SNMP(simple network management protocol):ag ve aygitlar hakkinda admine mesaj atan protokol.
6.2 NETWORK TİPLERİ
6.2.1 Local Area Networks (LAN)
a)Bus Network: Bu ag, bir iletisim kablosu ve bu kabloya bagli aygitlardan olusur. Bu tur agin bir avantaji hizli olusudur. Agi olusturan iletisim kablosunun hem basina hem sonuna sonlandirici takilarak kablonun direnci yariya dusurulur. (eger direnc 25 ohmdan buyuk olursa veri akisi zorlasir.) Bu tur agda kullanilan kablo coaxiel kablodur. Her aygit interface karttaki t-connector ile bus'a baglidir. Agin bitiminde elektrik iletisimini kesmesi icin t-connector'un bir tarafina sonlandirici eklenir. Bu agda kullanilan kablo fiber optikten cok daha yavastir ancak ondan ucuz oldugu icin coaxiel kullanilir. Gunumuze kadar bu tur bir agin hizi 10Mbps ile sinirlidir. Bu ag turunun bir avantaji basit ve masrafinin az olusudur. Ancak agda bir problem meydana geldiginde bir cok aygit ile iletisim kesilir. Bu tur agda coaxiel kablonun maksimum uzunlugu 185m. minimum uzunlugu 0.5m olabilir.
b) Ring Network: Ag adindan da anlasilasacagi gibi halka seklindedir. Node'lar (aga bagli aygitlar) bu halka seklindeki iletisim kablosuna baglidir.
c) Hub network: Tum makinalar hup'a baglidir. Birbirleri ile iletisimi hup aracili ile yaparlar. Bu agda kullanilan kablo UTP tipidir. Hup'daki port sayisindan daha fazla PC baglanacak ise bir diger hup kullanilabilir. Ilk hup'in bir portu diger hup'a baglanir. En fazla 3 hup kullanilabilir. (3'lu hup agi coaxiel kablo ile diger bir hup agina baglanabilir.) Port ile PC arasi en az 2,5m. en fazla 100m. olabilir. Hup networkun avantaji, her hangi bir makinede hata oldugu zaman diger makineler bundan etkilenmez.
6.2.2 Wide Area Network (WAN)
Cok genis bir bolge icindeki aglara denir. (Ornegin internet.) Wan ile Lan arasinda gateway ile baglanti kurulur. Bu isi bir router da gorur. Diger bir gateway turu de bridge' dir. Ancak bridge ayni tip protokol kulanan lan'lar arasi kullanilir.
6.2.3 Katmanlar (layers)
Acik sistemlerde bazi isleri yapan farkli gruplar vardir. Ornegin, data transferi yapan bir grup, mesajlari paketleyen bir grup,.. bu gruplarin her birine katman (layer) denir.
a) Application Layer: Kullanicinin bilgilerini alt katmanlara iletir ve alinan bilgileri gosterir.
b) The Presentation Layer: Bu katmanin gorevi application layer'in data formatini al katmanlarinkilerden ayirmaktir. Application katmaninin formatini alt katmanlarin anlayacagi sekilde degistirir.
c) Session Layer: Katmanlar arasi akisi ve zamanlamayi kontrol eden katmandir.
d) The Transport Layer: Datanin gonderilmesini, duzenini ve oncelik sirasini kontrol eder.
e) The Network Layer: Makineler arasi yola karar vererek datanin fiziksel royasini belirler.
f) Data Link Layer: Fiziksel katmanlari kontrol eder ve olusan hatalari duzeltir.
g) Physical Layer: En alt katmandir. Elektrik tertibati, data gonderilmesi icin gerekli donanimin bulundugu katmandir.
6.2.4 TCP/IP Bilesenleri
a) Telnet: Baska bilgisayarlara login yapmayi saglar. Eger kullanicinin hakki varsa dunya uzerinde networkle bagli her bilgisayara telnet yapabilir.
b) File Transfer Protocol (FTP): Bir dosyanin bir sistemden diger bir sisteme kopyalanmasini saglar. Kullanici gercekten diger sisteme tam bir kullanici olarak baglanmazlar ancak ftp programini kullanirlar.
c) Simple Mail Transfer Protocol: e-mail trabsferinde kullanilir.
d) Kerberos: Cok yaygin bir guvenlik protokoludur.
e) Domain Name System: DNS agdaki bir bilgisayarin ozel bir adi olmasini saglar.
f) Simple Network Management Protocol: Agdaki hatalari sistem admine ulasmasini saglayan protokol.
g) Network File System (NFS): Diger bilgisayarlardaki dizinlere ulasmayi saglayan bir sistem.
h) Remote Procedure Call: Bir uygulamayin diger bir makine ile (server) haberlesmesini saglar.
i) Trivial File Transfer Protocol: Guvenlikten yoksun deneyimsiz bir dosya transferi protokoludur.
j) Transmission Control Protocol (TCP): Data transferinin guvenli sekilde olmasini saglayan protokol.
k) User Datagram Protocol: Fazla guvenilir olmayan ama kendine ozgu gorevleri olan bir protokol.
l) Internet Protocol: Data paketlerinin gonderilmesinden sorumlu protokol. Agdaki her aygitin adresini ayarlar ve gidilecek yer ve rotaya karar verir.
m) Internet Control Message Protocol: Agdaki her aygit ile ilgili mesajlari kontrol eder.
6.2.5 OSI - TCP/IP
Aralarinda cok buyuk bir fark yoktur ancak OSI'de katman sayisi gaha fazladir (7). Bu yuzden OSI'nin katmanlari daha ozenli ve birbirinden daha bagimsizdir.
6.2.6 Ethernet
Veri baglantisini saglayan ve OSI modelin fiziksel katmanini olusturan donanim. En yayginlari 10base5, thick ethernet (10base2), twisted pair ethernet(10baseT)'dir.
6.2.7 IP Adresleri
TCP/IP bir agdaki bilgisayara ip adresi verirken 32bit adreslemeyi kullanir. Adreslemenin 4 formati vardir. Bu formatlar Class A, B, C, D diye siniflandirilir.
Class A -> local adres icin 24 bit,
Class B -> local adres icin 16 bit,
Class C -> local adres icin 8 bit,
Class D -> multicast adres icin 28 bit,
kullanir.
6.2.8 DNS
Bir cok network aginda 32 bitlik ip numaralari yerine makinelere anlamli isimler verilir. Bu DNS ile saglanir. Aglarin aldigi adlar alan agin ozelligine gore siniflandirilir. Ornegin .com, .mil,.org, .edu, vb..
6.3 INTERNET PROTOKOLU ( IP )
IP OSI modelinin ana protokoludur. IP’nin asil isi bilgi verilerinin adreslenmesi ve bu verilerin duzenli hale getirilmesidir. IP protokolunde dagitimda guvenlik garanti degildir. Bilgiler aktarim sirasinda kaybolabilir, parcalanabilir.
IP'nin tasiyabilecegi maksimum paket buyuklugu 65535 byte'dir. IP buyuk paketleri daha kucuk paketlere bolerek bilgi aktarimini saglar. Bolunen parcalar alici makineye ulastigi zaman makinenin IP layer'inda reassembly timer calismaya baslar. Reassembly timer onceden belirlenmis zamana ulastiginda hala ulasmayan paketler varsa ulasmis olanlar da atilir.
IP bilgi tasirken 32 bit internet adreslsmeyi kullanir. IP'nin yeni versiyonu Ipng (ip next generation) daha buyuk headerlari tasiyabilecek sekildedir.
IP Header Alanlarindan bazilari sunlardir:
Versiyon numarasi: 4 bitlik bir alandir. IP versiyon numarasini belirtir.
Header Length: 4 bitlik alandir. IP headerin uzunlugunu gosterir.
Type of Service: 8 bitliktir. Veriyi islemenin nasil olacagini belirtir.
Datagram Length: Verinin toplam buyuklugunu belirtir.
Identification: Gonderilen mesajin kimligini belirleyen alandir.
Flags: 3 bitlik bir bolumdur.
6.4 TCP NEDİR ?
Transmission Control Protokolu IP ve daha ust katmanlara cok sayida servis saglar. Bir yazilim parcasi degildir. O bir iletisim protokoludur. TCP'yi makinenizi koydugunuzda TCP katmanini ve onun icin gereken yazilimi yuklemis olursunuz. TCP, IP ve diger ust katmanlara veri akisini kontrol eder.
6.4.1 TCP/IP Konfigurasyonu ve Sistem Yonetimi Esaslari
6.4.1.1 Konfigurasyon Dosyalari
Buradaki dosyalar UNIX isletim sisteminin dosyalaridir. Farkli isletim sistemlerinde ayni gorevi yapan baska dosyalar vardir ancak isimleri farklidir.
6.4.1.1.1 sembolik makine isimleri: /etc/hosts
Bu dosya network adreslerinin tutuldugu dosyadir. Dosya birinde network adres digerinde sembolik ismin bulundugu iki sutundan olusur. Bir adrese aralarinda tab veya bosluk olmak sartiyla bir kac sembolik adres verilebilir. Ornek b?r dosya:
# network host addresses
127.0.0.1 localhost local tpci_server
157.40.40.1 tpci_sco1
157.40.40.2 tpci_sco2
157.40.40.3 tpci_hpws1
157.40.40.0 tpci_server tpci_main tpci
47.80.157.36 bnr.ca BNR bnr
191.13.123.4 kitty_cat
205.150.89.1 roy_maclean big_roy
6.4.1.1.2 Network isimleri: /etc/networks :
Networkler de makineler gibi bu dosyaya listelenebilir. Formati; network sembolik ismi, network adresi, alias seklindedir. B?r ornek dosya asagidadir:
# local network names
tpci 146.1 tpci_network tpci_local
bnr 47.80 BNR bnr.ca
tmn 123.2.21
unique 89.123.23 UNIQUE
sco 132.147 SCO
loopback 127 localhost
6.4.1.1.3 network protokolleri: /etc/protocols
Protokol numarasi alici makinenin bilgileri hangi protokoldan alacagini belirler. Unix'de bu protokol numaralari /etc/protocols dosyasinda yazilidir. Genelde bu dosya yonetici tarafindan degitirilmez veya guncellenmez, sistem otomatik olarak bu dosyay ayarlar. Bu dosya protokol adi, protokol numarasi ve istenirse bir alias'dan olusur. Ornek dosya:
# Internet (IP) protocols
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # internet group management protocol
ggp 3 GGP # gateway-gateway protocol
tcp 6 TCP # transmission control protocol
egp 8 EGP # Exterior-Gateway Protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
hello 63 HELLO # HELLO Routing Protocol
ospf 89 OSPF # Open Shortest Path First Routing Protocol
Burada IP protokolu 0, TCP protokolu de 6'dir.

6.4.1.1.4 Network Servisleri: /etc/services
Bu dosya da /etc/protocols dosyasi gibi sistem yoneticisi tarafindan ayarlanmaz. Sistem otomatik olarak bu dosyayi ayarlar. Bu dosya servis ismi, port numarasi ve protokol tipi bilgilerinin verildigi bir dosyadir. Port numarasi ve protokol tipi bir slash ile ayrilmistir. TCP protokolunu genelde baska ifadeler de izler. Ornek dosya:
# network services
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail mailx
tftp 69/udp
# specific services
login 513/tcp
ho 513/udp whod
6.4.1.2 Konfigurasyon Komutlari
hostname
Makinenize isim vermenizi verilmisse bunu gormenizi saglar.
# hostname
kardelen.felab.itu.edu.tr
# uname -n
kardelen
ifconfig
Bu komut ile yapilanlar soyledir,
bir interface aygitinin aktif veya deaftif yapmak, bir interface'deki ARP'i aktif veya deaktif yapmak, bir interface'deki debugging mode'u aktif veya deaktif yapmak, broadcast adresi eklemek, alt-network mask'i eklemek, routing metodu eklemek.
Ornegin ethernet kartina adres vermek icin
# ifconfig eth0 160.75.20.100
Bu komut sonrasinda route ile kernel route tablosuna yeni interface'i eklemek, yeni karta hangi agda oldugunu anlatmak icin:
# route add -net 160.75.20.0 netmask 255.255.255.0 eth0
komutu kullanilir.
routing tablosu route komutu ile gorulebilir. route -n komutu ile ip adreslerine gore tablo alinir.
Gateway'i tanitmak icin:
# route add default gw 160.75.20.11 netmask 0.0.0.0
komutu verilir.
Makine acilirken TCP/IP processlerini en iyi sekilde kontrol etmek icin /etc/inetd.conf dosyasi kullanilir.
Ornek:
# @(#)inetd.conf 5.2 Lachman System V STREAMS TCP source
# System V STREAMS TCP - Release 4.0
ftp stream tcp nowait NOLUID /etc/ftpd ftpd
telnet stream tcp nowait NOLUID /etc/telnetd telnetd
shell stream tcp nowait NOLUID /etc/rshd rshd
login stream tcp nowait NOLUID /etc/rlogind rlogind
exec stream tcp nowait NOLUID /etc/rexecd rexecd
finger stream tcp nowait nouser /etc/fingerd fingerd
comsat dgram udp wait root /etc/comsat comsat
ntalk dgram udp wait root /etc/talkd talkd
echo stream tcp nowait root internal
discard stream tcp nowait root internal
chargen stream tcp nowait root internal
daytime stream tcp nowait root internal
time stream tcp nowait root internal
echo dgram udp wait root internal
discard dgram udp wait root internal
chargen dgram udp wait root internal
daytime dgram udp wait root internal
time dgram udp wait root internal
Sutunlar servis ismini, (/etc/services dosyasindaki servislerle karsilastirilir.) soket tipini (stream, raw, datagram), protokol ismini, servis sahibi logini, server programin adini ve server program icin gerekli parametreleri icerir.
Netstat komutu
Bu komut local sistem ve TCP/IP uygulamalari hakkinda genis bilgi verir. Adminler TCP'deki bir problemi bu komut ile anlayabilirler. Verdigi bilgiler sunlardir; iletisim bitis noktalari, network interface istatistikleri, routing tablo bilgisi, protokol istatistiklerive data bufferlar uzerindeki bilgiler. Bazi opsitonlar:
-a: tum iletisim bitim noktalarini
-i: network interface istatistiklerini
-m: data buffer uzerindeki bilgilerini
-r: routing tablosunu
-s: protokol istatistiklerini
gormek icin kullanilir.
Ping komutu
Kullanilan makinenin agdaki herhangi bir makine ile ag baglantisinin olup olmadigini gosterir. Karsi bilgisayara paketler gonderir eger cevap gelirse baglantinin oldugu anlasilir. Ornegin;
# ping 160.75.20.10
komutu ile kullandigimiz makine ile 160.75.20.10 ip'li makine arasinda network baglantisi olup olmadigini kontrol edebilirsiniz.
(Network Information Service)
5.1 Çalışma ağı Bilgi Servisi
Bir ag icerisinde makinalarda birden cok tekrarlanan sistem yapilandirma dosyalari tek bir el altindan yonlendirerek, sistem yonetilerinin islerini kolaylastirmak icin SUN MicroSystem tarafindan gerceklestirilmistir. Ornegin elli makinanin bulundugu bir sisteme yeni bir makina daha eklenirse tum/etc/host dosyalarinda degisiklik yapmak gerekir. Ve gercekten cok zahmetli bir istir. Eger sisteme bir kullanici daha eklenecek ve bu kullanicinin tum makinalarda hesabin olmasi isteniyorsa, bu is icin tum makinalarin /etc/passwd dosyalarinda degisiklik yapmaniz gerekiyor. Bu islemleri tek tek yapmaya kalktiginiz zaman, hayatin hic de kolay olmadigini goreceksiniz. Iste NIS, ana sunucu makinasinda bilgileri tek bir el altinda toplayarak, calisma agi uzerindeki veri tabani yonetimini basitlestirir. Sunucu program olan ypserv, bu makinada calisarak gelen isteklere cevap verir. NIS in asil kullanimi, islemciler tarafindan istendiginde sorgulanabilecek olan merkezi veritabani ile lokal sistemde kullanilan ve her birinin ayri ayri guncellenmesi gereken yapilandirma dosyalarini degistirmektir.
5.2 NIS'e bir bakis ...
NIS i kullanan makinalari NIS bolgesi olarak tanimlayalim. Bu bolgede bulunan makinalarin temel ozelligi bilinen sistem yapilandirma bilgilerini ortak kullanmak istemleridir. Her bolge icin, ana bir sunucu secilmelidir ve bu makinada, /etc/service, /etc/passwd ve /etc/group gibi yapilandirma dosyalarinin birer kopyasi bulunmalidir. Fakat bu dosyalar dogrudan NIS bolgesinde kullanilmaz. Bu dosyalar map adi verilen indekslenmis veritabani sekline cevrilirler. Bu tur dosyalar iki sekilde saklenirlar. Ornegin, /etc/host dosyasi oconde iki tane map vardir. Istemde bulunan program bir adi ole bakar, bir de adresi ile bakar. Bunlar host.byname ve host.byaddr dir ve map dosyalari /var/yp/nismainname dizini altinda bulunurlar. (nisdomainname dizinin sistemin sunucu makinasina gore isim alir.) /var/yp/nisdomainname dizini altinda bulunan map dosyalarindan birkaci:
group.bygid group.byname
host.byddr host.byname
passwd.byname passwd.byuid
protocols.byname protokols.bynumber
rpc.byname rpc.bynumber
Bir NIS islemcinin, NIS bolge sunucusundan gidip bilgileri secme islemi "ypbind"dir. Her NIS islemcisinde bu bulunmaktadir, Bu islemci genelde ayni sunucu makinayi kullanir. Sistemin yavaslamasi veya o sunucuda bir sorun cikmasi durumunda diger bir sunucudaki bilgilere ulasir. Tabiki, bu sadece birden cok sunucunun bulundugu calisma aglarinda gecerlidir.
5.3 NIS SUNUCU TARAFI
NIS bolgesindeki istemcilerin yararlanacaklari harita (map) dosyalari /etc/yp dizini altinda tutulur. Bu NIS haritalari "makedbm" adi verilen program tarafindan olusturulur. Bunun icin makedbm programini kisaca inceleyelim: Kullanimi: makedbm infile outfile "infile" kisminda kullandigimiz standart yazilim dosyalaridir. /etc/passwd veya /etc/group gibi. Ornegin "/etc/hosts" dosyasini alalim. Bu dosyanin ciktisi makedbm ole alindiginda iki tur dosya olusur. Birincisi .pag uzantili ve verilerin tutuldugu dosya ve ikincisi .dir indekslenmis sekli ole tutuldugu dosyalardir. Iste bi iki dosyaya birden "hosts" dosyasinin haritasi adi verilir. Bu haritalar /var/yp/domainname dizini altinda bulunur. Domainname, NIS bolgesindeki sunucunun adidir. /var/yp/Makefile calistirilmasiyla birlikte makedbm programi genellikle /etc dizini altinda bulunan belli basli yapilandirma dosyalarini harita sekline donusturur ve / var/yp/domainname altina kopyalar. MakeFile dosyasi icinde cesitli sed, awk ve sell komutlari bulunur. Ayrica var/yp/binding altinda da NIS bolge adi ogrenilebilir. Haritalarin yaratilmasinin yanisira gelen isteklere karsilik verecek olan NIS sunucu programinin da calistirilmasi gerekir. Bu program "ypserv" dir. Ve /etc/rc.d/rc.inet2 acilis dosyasi icine konarak calistirilir. ypserv, RPC tabanli bir sunucudur.
5.4 NIS İŞLEMCİ TARAFI
    NIS islemci makinasi olusturmak icin gerekli asamalar:
1. Oncelikle NIS islemci programi olan ypbind programini /etc/rc.d/rc/inet2 dosyasina yerlestirmek ve ayni dosyaya
"domainname sunucu_adi"
satirini eklemek.
2. Kullanilacak olan dosyada, NIS sunucuda /var/yp/make yapilarak olusturulmus olan haritalara ulasmak icin gerekli kucuk degisiklikler yapmak gerekir.
Ornek,
Yapilandirma dosyalarindan biri olan /etc/passwd u alalim. Once islemci makinada ypbind programinin calistigindan emin olalim.
#rpcinfo-p
ile ypbind'in calistigini gordukten sonra
#domainname
sunucu_adi
Sunucu adini da gordukten sonra, daha oncedenbu iki satir /etc/rc.inet2 dosyasi icine yerlestirilmisti.
Simdi bu makinaya giris hakki olmayan ama hesap bilgileri NIS sunucusundaki "passwd" haritasinda olan bir kullanici dusunelim.
"ypbind" programina, bu passwd dosyasinda hesap yok ise NIS sunucusundaki haritalara bakmasi gerektigini anlatmak icin passwd dosyasinin en sonuna "+" koymamiz yeterlidir.
Bu bolumu uc kisimda inceleyebiliriz:
1. Haritalari komut satirindan sorgulayan programlar
2. Haritalarin sorgulanmasi icin ozel tasarlanmis "resolver" adi verilen kutuphane fonksiyonlari
3. Harita sorgulamasi icin dusuk duzeyli genel amacli fonksiyonlar
1)Islemci makinadan sunucudaki haritalari sorgulamak mumkun
#ypmatc trillian hosts.byname
Bir ve daha cok anahtar kelime ile harita uzerinde sorgulama yapar.
#ypcat passwd.byname
Sunucudaki passwd haritasini goruntuler.
veya
#ypcat passwd - grep "mustafa"
seklinde de kullanilabilir.
rpcinfo -u sunucu_adi ypserv
bu sunucu rpc programinin calisip calismadigini tespit eder.
#ypwhich
NSI bolgesinin sunucu adini bize verir.
2) NIS'in programcilar icin tasarlanmis orta duzeyli "resolver" adi verilen kutuphane fonksiyonlari vardir.
Ornek olarak "/etc/passwd" dosyasini ele alalim. "passwd" dosyasinin iki haritasi vardir:
passwd.byname ---- kullanici adlarini anahtar olarak alir.
passwd.byuid ---- Kullanici ID lerini anahtar olarak alirlar.
Kullanilan fonksiyonlar sunlardir:
1. getpwuid () fonksiyonu kullanici ID sini arguman olarak alir ve geriye passwd.byuid haritasindaki diger kayitlari dondurur.
2. getwnam () fonksiyonu kullanici adini arguman olarak alir ve geriye passwd.byname haritasindaki diger kayitlara dondurur.
3. getpwent () arguman almaz.
Butun bu fonksiyonlar geriye passwd yapisinin adresine gonderir ve boylece biz de diger gerekli verilere ulasiriz.
struct passwd {
char *pw_name: /*kullanici adi */
char *pw_passwd; /*kriptolanmis sifre */
uid_t pw_uid/* Kullanici ID si */
gid_t pw_gid;/*Grup ID si */
char *pw_age;
char *pw_comment;
char *pwgecos; /*Kisisel Bilgi */
char *pw_dir; /* Kullanici Yol Tanimi */
char *pw_shell; /*Kullanici Kabugu */
};
Simdi bu yapiyi kullanarak kucuk bir program yazalim. Bu program, kullanici ID si verilen bir kullanicinin adini bize verir. Programin adi getesername olsun.
#include <pwd.h>
main (int argc, char *argv )
{
struct passwd *pwp;
int id=atoi (argv (1));
pwd =getpwuid (id);
if(pwp !=0(
printf("Kullanici ID si %d olan %s dir", id, pwp ->pw_name);
else
printf ("Kullanici ID %d bilinmiyor !",id);
}
Simdi programi derleyip calistiralim:
%geturname 21
Kullanici ID si 21 olan ahmet dir.
bu fonksiyonlar sadece lokal /etc/passwd dosyasi uzerinde islem yapabilirler.
Oysaki NIS ag uzerinden calisan bir programdir. Oyleyse ag uzerinden haritalara ulasmak icin daha farkli tasarlanmis fonksiyonlara ihtiyacimiz var. Bunlar:
1. yp_get_default_domain () NIS bölgesinde sunucu olan makinanın adını bize verir.
2. yp_matc (), fonksiyonuna sirasiyla bolge adi, harita, anahtar uzunlugu, isaretcinin adresi ve adresin tam (integer) degerleri geri dondurulur.
5.5 NIS in HIZLI KURULUMU
5.5.1 Sunucu tarafı için yapılması gerekenler :
1. /etc/rc.inet2 acilis dosyasi icine "ypserv" programi yerlestirin.
2. /var/yp/make calistirarak harita dosyalarini yarat.
5.5.2 İşlemci tarafı için yapılması gerekenler :
1. /etc/rc.inet2 acilis dosyasina "ypbind" programini ekle.
2. /etc/rc.d/rc.inet2 acilis dosyasina
domainname sunucu_adi
satirini ekle.
5.6 SİSTEMİN KONTROL EDİLMESİ
1. Sunucu kurulduktan sonra,
#rpcinfo -p
ile programlarin calistigindan emin ol. (ypserv ve ypbind)
2. arkasindan istemcinin, sunucudaki haritalari gorup gormedigini
ypwhich, ypcat ile kontrol et.
3. Bazi NIS yapilandirma dosyalarinda degisiklik yapmak gerekir.
Ornegin islemcide bulunan
/etc/passwd dosyasi gibi... NFS                                             (Network File Service)
NIS kurmayi tamamladik , Simdi sira her kullaniciya bir alan vermekte. Bunun icin nfs kurulmali. Nfs kurulmasi icin rpc.portmap, rpc.mountd ve rpc.nfsd programlarinin calisir durumda olmasi gerekir. Bu programlar buyuk  ihtimalle zaten calisir durumdadir. Calisip calismadigi  "ps aux" komutu ile kontrol edilebilir. Bu programlarin calistigini gordukten sonra  kullanicilar icin hangi dizini ayiracagimiza karar vermeliyiz. Daha sonra ilgili dizini /etc/exports dosyasina yazarak diger bilgisayarlara bu dizini mount etme hakki verin. exports dosyasina "/users" yazmaniz yeterli. exports dosyasinda yaptiginiz degisikligin aktif olmasi icin ya bilgisayari reboot etmelisiniz veya rpc.mountd ve rpc.nfsd'nin pid'ini (process id) ogrenip "kill -HUP pid1 pid2" komutu ile rpc.mountd ve rpc.nfsd programlarinin yeniden baslamasini saglayabilirsiniz. (pid1->rpc.mountd'nin pid'i pid2->rpc.nfsd'nin pid'i)
"showmount -e makinaadi"
komutu ile "makinaadi" ile belirtilmis makinada
export edilmis dizin adlarini ogrenebilirsiniz. Bu komutu verdiginizde
Export list for makina adi:
/users (everyone)
seklinde bir ciktiyla karsilasacaksiniz. /users dizini sadece bizim lab'daki makinalardan erisilebilir duruma getirmek icin /etc/exports dosyasina
/users *.felab.itu.edu.tr
yazmaniz ve ilgili pid'leri yeniden baslatmaniz yeterli. Eger kullanici dizinlerini herkesin erisebilecegi durumda birakirsaniz bu sistem icin bazi  teklikelere sebep olur. export edilmis bir dizini kendi makinaniza mount etmek icin "mount makinaadi:/dizinadi /yereldizinadi"
komutunu vermelisiniz.
Her acilsta mount isleminin otomatik olarak yapilmasi icin /etc/fstab (file system table)
dosyasina;
(karbeyaz adli bir makine icin )
160.75.20.10:/users /users nfs defaults 1 1
yazmaniz yeterli.

 
        
 Linux da Türkçe Nasıl Yazılır
 
        1-) Konsolda nasıl yazılır?
        2-) X de nasıl yazılır?
        3-) StarOffice de nasıl yazılır?
 
        Birçok kişi tarafından Linux da Türkçe karakterleri kullanmak problem olarak görülse de aslında bu çok onceden aşılmıştır.
 
        Şimdi bunun nasıl yapıldığını açıklayalım. Ben 
SuSE tabanlı olarak açıklamaları yapacağım fakat hemen hemen bütün dağıtımlarda bunları uygulayabilirsiniz.
 
        1-) Konsolda nasıl yazılır?
 
        Herşeyden önce elimizde gerekli dosyaların bulunması gerekiyor. Türkçe yazabilmek için gereken bütün dosyaları 
 
        ftp://ftp.saneg.itu.edu.tr/pub/turkce
 
dizini altında bulabilirsiniz.
 
        
 
        Buradan dosyaları indirdikten sonra şunları yapmamız gerekiyor.
 
        trq.map adlı dosyayı
 
        /usr/lib/kbd/keymaps/i386/qwerty
 
dizini altına kopyalayın. Birçok dağıtımda bu zaten var olarak gelir eğer yoksa bu dosyayı buraya kopyalayın.
 
        İkinci olarak 
 
        lat5u-12.psf.gz   (80x33 çözünürlük için)
        lat5u-14.psf.gz   (80x28 çözünürlük için)
        lat5u-16.psf.gz   (80x25 çözünürlük için)
 
dosyalarını 
 
        /usr/lib/kbd/consolefonts
 
dizini altına kopyalayın. Default olarak kullanılan 80x25 oldugu için birçoğunuz lat5u-16.psf.gz adlı dosyayı kullanacaktır.
 
        Şimdi Türkçe yazmak için şu komutları vermeniz gerekmekte
 
 
 
 
$ loadkeys /usr/lib/kbd/keymaps/i386/qwerty/trq.map      
$ setfont /usr/lib/kbd/keymaps/consolefonts/lat5u-16.psf.gz
 
 
        Bu komutları verdikten sonra artık konsolda rahat rahat Türkçe yazabilirsiniz. Tekrar İngilizce yazmak için ise;
 
$loadkeys -d  (Default olarak İngilizce keymap tanımlı ise)
$setfont
 
        Bu komutlardan sonra ise tekrar İngilizce klavyeye dönmüş olursunuz.
 
        Eğer benim gibi sürekli bunları yapmak istemiyorsanız;
 
/bin dizini altında örneğin Türkçe için "t" İngilizce için ise "e" adli iki dosya oluşturursunuz. "t" adlı dosyanın içine Türkçe için yapılması gereken  komutları "e" adlı dosya içine ise İngilizce için yapılması gereken komutları yazar ve örneğin haklarını 755 yaparsınız. Böylece komut satırında "t" tuşuna bastığınızda Türkçe "e" tuşuna bastığınızda ise İngilizce yazarsınız. Ayrıca /etc/inittab dosyası ile oynayarak bazı tuş kombinasyonları ile de bu islemleri yaptırabilirsiniz. 
 
 
 
 
        
        2-) X de nasıl yazılır?
 
        X de yazmak için ise ISO8859-9 dizini altındaki dosyaları şu şekilde 
 
        /usr/X11R6/lib/X11/fonts
 
dizini altında ISO8859-9 adlı bır dizin oluşturarak kopyalayın.
 
xmodmap.trq adlı dosyayı ise
 
        /usr/X11R6/lib/X11/etc dizinine kopyalayın.
 
/etc/XF86Config dosyasında şu satırlara 
 
FontPath    "/usr/X11R6/lib/X11/fonts/local/"
FontPath    "/usr/X11R6/lib/X11/fonts/misc/:unscaled"
FontPath    "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
FontPath    "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
 
şu satırları ekleyin ve şu şekle getirin.
 
FontPath    "/usr/X11R6/lib/X11/fonts/local/"
FontPath    "/usr/X11R6/lib/X11/fonts/ISO8859-9/misc/:unscaled"
FontPath    "/usr/X11R6/lib/X11/fonts/ISO8859-9/75dpi/:unscaled"
FontPath    "/usr/X11R6/lib/X11/fonts/ISO8859-9/100dpi/:unscaled"
FontPath    "/usr/X11R6/lib/X11/fonts/misc/:unscaled"
FontPath    "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
FontPath    "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
 
Şimdi startx komutunu vererek X window a geçin.
 
 
 
        Burada bir xterm açip 
 
        $xmodmap /usr/X11R6/lib/X11/etc/xmodmap.trq
 
komutunu verdiğiniz zaman artık X de Türkçe yazabilirsiniz.
 
        Yine burada benim uyguladıgım bir yolu önermek istiyorum. KDE kullanıyorsanız.
/bin dizini altında Türkçe için "turkce" İngilizce için ise "ingilizce" adlı iki dosya oluşturun.
 
turkce adlı dosyanın içine yukarıdaki komutu ingilizce olanın içine ise 
 
xmodmap /usr/X11R6/lib/X11/etc/xmodmap.std
 
komutunu yazın ve haklarını örnegin 755 yapın. Daha sonra KDE de masaustune 
iki tane uygulama ekleyin. Bunlardan birine /bin/turkce digerine ise 
/bin/ingilizce dosyalarını belirtin. Böylece turkce olana tıkladığınızda 
Türkçe, ingilizce olana tıkladıgınızda İngilizce yazarsınız.
 
 
        
        3-) StarOffice de nasıl yazılır?
 
        Mustafa Başer tarafından hazırlanan bu fontlar
offıcefonts.tgz adlı dosyanın içinde bulunmaktadır.
Yapmanız gereken ilk şey bu dosyayı bir dizine açmak olacaktır. Actığınız zaman fonts adlı bir dizin oluşacak, bu dizinin içindeki afm adlı dizindekileri StarOffice ı kurmuş olduğunuz dizindeki xp3/fontmetrics/afm dizinine kopyalayın.
 
Eğer bütün yapılması gerekenleri şöyle yazarsak;
 
 
 
 
StarOffice i kurmuş olduğunuz dizin olarak 
/root/Office51alıyorum. 
 
office_fonts.tgz paketini çektiniz. Sırayla şunları yapmaya başlıyoruz.
 
#cd /tmp
#tar xvfz office_fonts.tgz
#cp fonts/afm/* /root/Office51/xp3/fontmetrics/afm
#cp fonts/pfb/* /root/Office51/xp3/pssoftfonts
#cp fonts/psstd.fonts /root/Office51/xp3/
#mkdir /usr/X11R6/lib/X11/fonts/ttf
#cp fonts/ttf/* /usr/X11R6/lib/X11/fonts/ttf
#cp fonts/ttf/xfsft /bin
#chmod 755 /bin/xfsft
 
Böylece kopyalanması gereken bütün dosyaları yerlerine kopyalamış olduk.
 
Şimdi yapmamız gereken birkaç ayar daha kaldı.
 
İlk önce açılırken font serverın açılışta çalışması için
şu satırı dağıtımınıza bağlı olarak /etc/rc.d dizinindeki gerekli dosyaya yazalım.
 
SuSe de 
/etc/rc.d/boot.local dosyasına yazabiliriz.
 
Yazacağımız satır şu;
 
/bin/xfsft -config /usr/X11R6/lib/X11/fonts/ttf/fonts.con &
 
 
 
şimdi önceden yarattığımız /bin/turkce adlı dosyaya şu satırı ekleyelim;
 
xset +fp tcp/localhost:7100
 
böylece artık StarOffice de Türkçe yazmaya başlayabiliriz.
 
Şimdi /etc/rc.d/boot.local dosyasına yazdığımız satırı komut satırında çaliştırın daha sonra startx ile X e geçin ve yarattığımız turkce linkine basın ve StarOffice i çalistırın. Artık Türkçe yazıyorsunuz.
 
Burada anlattıklarım benim Türkçe ve İngilizce klavyeler arasında sürekli geçiş yapmak zorunda kaldığım için kendimce geliştirdiğim yöntemler.
Bunlardan başka Türkçe yazmak için anlattıklarım
dışında çeşitli yöntemler uygulayabilirsiniz.
 
Her türlü öneri ve eleştiri için
muratkoc@linux.org.tr adresine mail atabilirsiniz.
 
                                                    MURAT KOÇ 
 
xxxxxx