Derinlemesine C Fundamentals ve Functional Programming
By Onder Teker
3/5
()
About this ebook
Bu kitapta C dilinin temel konularının yanı sıra, orta ve ileri düzey konular da işlenmektedir. İşlevsel programlamanın temelini anlatması nedeniyle C dışındaki diller için de temel kaynak niteliğindedir. Öğrencilere sık verilen ödevlerin çözümleri ve sınavlarda çok çıkan soruların yanıtları bulunmaktadır. Yazılım geliştirme piyasasında Sistem Programlama ve Oyun Programlama yapılması için gerekli programlama
bilgisi ve altyapısı okura verilmektedir.
Aşağıdaki konuları içerir:
- Introduction to C
- Functions & Headers
- C Libraries
- C Compilers & Development Environments
- ODBC, OpenGL
Read more from Onder Teker
Derinlemesine İngilizce Dilbilgisi Rating: 5 out of 5 stars5/5Derinlemesine Java Object-Oriented Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Python Rating: 0 out of 5 stars0 ratingsDerinlemesine Android Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Spring Boot Fundamentals Rating: 0 out of 5 stars0 ratingsDoğrudan Database Back-End Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine HTML & CSS Rating: 0 out of 5 stars0 ratingsDerinlemesine SQL Rating: 0 out of 5 stars0 ratingsDerinlemesine C ++ ve Object-Oriented Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Python AI Machine Learning Rating: 0 out of 5 stars0 ratingsDerinlemesine Spring Boot Web Rating: 0 out of 5 stars0 ratingsDerinlemesine Python Data Science Rating: 0 out of 5 stars0 ratingsDerinlemesine Python AI Natural Language Processing Rating: 0 out of 5 stars0 ratingsDerinlemesine JavaScript Rating: 5 out of 5 stars5/5Derinlemesine PHP Fundamentals Web Database Services Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - MVC, JSF & Primefaces Rating: 0 out of 5 stars0 ratingsDerinlemesine Java Web Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine NoSQL Rating: 0 out of 5 stars0 ratingsDerinlemesine Android Data Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - ORM, JPA & Hibernate Rating: 0 out of 5 stars0 ratingsDerinlemesine Python AI Computer Vision Rating: 0 out of 5 stars0 ratingsDerinlemesine Android UI Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine JavaScript UI Rating: 0 out of 5 stars0 ratingsDerinlemesine React Rating: 0 out of 5 stars0 ratingsDerinlemesine Java Desktop Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine JavaScript Language Rating: 0 out of 5 stars0 ratings
Related to Derinlemesine C Fundamentals ve Functional Programming
Related ebooks
Doğrudan C#.NET Rating: 0 out of 5 stars0 ratingsInternet Nasıl Çalışır?: Education Rating: 0 out of 5 stars0 ratingsPython'a Giriş, Veri Yapıları ve Nesne Yönelimli Programlama Rating: 0 out of 5 stars0 ratingsDerinlemesine SQL Rating: 0 out of 5 stars0 ratingsHerkes İçin TCP/IP Rating: 3 out of 5 stars3/5Derinlemesine Java Database Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine NoSQL Rating: 0 out of 5 stars0 ratingsDerinlemesine Java Web Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine C ++ ve Object-Oriented Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - Patterns, CDI ve Spring Rating: 0 out of 5 stars0 ratingsDoğrudan Java Fundamentals Database Desktop Programming Rating: 0 out of 5 stars0 ratingsDoğrudan Database Back-End Programming Rating: 0 out of 5 stars0 ratingsDoğrudan Java Web Enterprise Mobile Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - ORM, JPA & Hibernate Rating: 0 out of 5 stars0 ratingsDoğrudan Java Eclipse Rating: 0 out of 5 stars0 ratingsBilişim Teknolojileri Ekonomisi Toplumu Rating: 5 out of 5 stars5/5Derinlemesine PHP Fundamentals Web Database Services Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - EJB, JMS ve Web Services Rating: 0 out of 5 stars0 ratingsMakinelerin Evrimi: 4. Sanayi Devrimi Rating: 0 out of 5 stars0 ratingsİşletmelerde Bilişim Sistemleri Yönetimi Rating: 5 out of 5 stars5/5Derinlemesine JavaScript Rating: 5 out of 5 stars5/5Python İle Makine Öğrenmesi: Education, #277 Rating: 0 out of 5 stars0 ratingsDerinlemesine Python Data Science Rating: 0 out of 5 stars0 ratingsDerinlemesine Java Desktop Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - MVC, JSF & Primefaces Rating: 0 out of 5 stars0 ratingsYazılım Gereksinim Analizi Soruları Rating: 1 out of 5 stars1/5Derinlemesine Python AI Computer Vision Rating: 0 out of 5 stars0 ratingsEğitim ve Gelişim Amaçlı Uygulamalar İçin Yazılım Proje Fikirleri 1 Rating: 0 out of 5 stars0 ratingsDoğrudan Web Front-End Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine HTML & CSS Rating: 0 out of 5 stars0 ratings
Reviews for Derinlemesine C Fundamentals ve Functional Programming
2 ratings0 reviews
Book preview
Derinlemesine C Fundamentals ve Functional Programming - Onder Teker
Derinlemesine
C
Fundamentals
&
Functional Programming
Önder Teker
Godoro Yayıncılık
GODORO YAYINCILIK
Yayıncı Sertifikası No: 18531
Kitabın Adı:
Derinlemesine C Fundamentals & Functional Programming
Copyright © 2017 Godoro Yayıncılık
Kitabın Yazarı:
Önder Teker
Birinci Basım, Nisan 2017, İstanbul
ISBN:
978-605-61424-6-8
Kapak Tasarımı ve Mizanpaj:
Önder Teker
Baskı ve Ciltleme:
NET COPY CENTER
Özel Baskı Çözümleri
İnönü Cd. Beytülmalcı Sk. No:23/A
Gümüşsuyu, Taksim 34427 İstanbul TR.
GODORO YAYINCILIK
Selahaddin Pınar Cad. Naci Kasım Sok.
Tekin Apt. No:10 D:4 Mecidiyeköy
Şişli / İstanbul
Telefon/Fax : (212) 213-0275
http://www.godoro.com
Derinlemesine
C
Fundamentals
&
Functional Programming
Önder Teker
Godoro Yayıncılık
Yazılım Geliştirme
Bilgisayar
Donanım (Hardware)
Bilgisayar ve benzeri aygıtların hesaplama, ses, görüntü, baskı alma gibi türlü işlevler gerçekleştiren parçalarından oluşan bütüne donanım (hardware) denir. Donanım sözcüğüyle denmek istenen, bir bilgisayar düzeninin fiziksel, yani elle dokunulabilen, gözle görülebilen bileşenleridir. Temel işlemleri gerçekleştiren işlemci (processor); bilgileri bilgisayar kullanıldığı sırada tutmak için bellek (memory); bilgileri kullanılmadan önce veya kullanıldıktan sonra, bilgisayar kapalıyken de tutmaya yarayan disk (disk); bilgileri renkle ve biçimlerle insanlara göstermek için kullanılan monitör (monitor); insanların yazıları girmesini sağlayan klavye (keyboard); ekranda konumlarına göre belli işlemleri seçmeye yarayan fare (mouse) bilgisayarın temel bileşenlerindendir. Bunun dışında bilgileri kağıda basmak için yazıcı (printer); bilgileri kağıttan okumak için tarayıcı (scanner); bilgisayarlar arasında görüntü alışverişi için kamera (camera) da yardımcı donanım birimleridir.
İşlemci (Processor)
Bilgisayarın gerçekleştirdiği işlemleri asıl yapan birime CPU (Central Processing Unit - Ortalık İşleme Birimi ) veya kısaca işlemci (processor) denir. Bilgisayarın beyni işlevini gören bu birim, bellekten bilgileri okur, işlemlerini yapar ve belleğe geri yazar. İşlemler, toplama çıkarma gibi aritmetik, karşılaştırma gibi mantıksal nitelikte olabilir. Bunların dışında bilgisayarın işleyişiyle ilgili bir çok işlem, işlemci tarafından gerçekleştirilir. Bir işlemin en küçük birimi, bilgisayar saatinin bir adımı anlamına gelen devir (cycle) olarak adlandırılır. Her işlem, türüne göre farklı devirlerde yapılır. Örneğin toplama 10 devir sürerken çarpma 100 devir sürebilir. İşlemcilerin hızı saniyede kaç devir yaptıklarına göre ölçülür. Örneğin 1000 Hz, saniyede 1000 devir anlamına gelir.
Bellek (Memory)
Bilgisayarın çalışması esnasında kullandığı verilerin tutulduğu birime bellek (memory) denir. İçindeki bilgilere herhangi bir sırada erişim sağlamaya yarayan RAM (Read Only Memory - Rastgele Erişimli Bellek), yalnızca okuma yapmaya yarayan ROM (Read-Only Memory - Salt Okunur Bellek) gibi türleri bulunmaktadır. Bellek, elektrikle çalışan geçici bir veri saklama birimidir. Yani bilgisayar açılırken yüklenir ve kapandığında veya elektrik kesildiğinde yok olur. O yüzden bellek, işlemcinin bir işlemi yapmak için girdi olarak kullanacağı bilgilerin okunduğu veya işlem sonunda oluşacak çıktıların yazıldığı geçici bir alan olarak işlev görür.
Disk
Bilgisayarda kalıcı veri saklamak için kullanılan, çoğunlukla manyetik veya optik olarak veri saklayan birimlere disk (disk) denir. Hemen her bilgisayara takılı, işletim düzeni ve programlara ait bilgileri tutan sabit disk (hard disk) adında bir birim bulunur. Bu birim genellikle bilgisayar kasası içinde yer alır ve taşınamaz. Taşınabilir olan, disket gibi manyetik CD ve DVD gibi optik esaslara dayanan diskler de bulunur.
Eğretim (Instruction)
Bilgisayar donanımı, diğer mekanik ve elektronik aygıtların tersine, sayısal (digital) kodlarla çalışır. Başka bir deyişle, bilgisayar parçaları, belli bir işlemi yapmak için gerekli bilgileri sayı olarak alırlar. Örneğin bir donanım parçası 01: aygıtı aç; 02: veri almaya hazırlan; 03: veriyi al; 04: veri alımını bitir; 05: işlemi yapmaya başla; 06 işlemi bitir; 07: kapat gibi sayılarla çalışır. Sayısal bir aygıta yapacağı işlemlerle ilgili olarak verilen sayısal bilgiye eğretim (instruction) denir.
İkilik Düzen (Binary System)
Bilgisayarlar sayısal aygıtlardır ve sayılar insanların anladığı biçimde onluk düzen değil ikilik düzen (binary system) kullanılarak saklanır. İkilik düzen yalnızca 0 ve 1 rakamından oluşur ve bu rakama bilişim alanında bit (bit) denir. Bitin kısaltması olarak küçük ‘b’ kullanılır. Örneğin 13 sayısı 1101 olarak yazılır. 8 bitten oluşan, 0 ile 255 arasında değer tutabilen sayıya bayt (byte) denir. Baytın kısaltması olarak büyük ‘B’ kullanılır. Genellikle bilişim teknolojisi (information technology) ve iletişim düzenleri (communication systems) sayısal bilgi birimi olarak bit değerini kullanır. Ancak bilgisayar alanında bayt, bitten sonra verilerin tanımlamasında temel birim olarak kabul edilir. Hem bit hem de bayt için sayılar onluk tabandaki gibi binle değil, 2 sayısının 10 üzeri olan 1024 şeklinde katlanır. 1024 bir kilo (K), 1024 K bir mega (M), 1024 M bir giga (G), 1024 G de bir tera (T) eder. 1 KB örneğin 1024 bayt, 1 Mb ise 1024*1024 = 1048576 bit eder.
Onaltılık Düzen (Hexadecimal System)
İkilik sayı düzeni insanların okuması için çok zor olduğundan, onluk sayı düzeninin de bilgisayarın ikili düzenine hiç uymaması nedeniyle hem ikili düzene uyan hem de onluk düzene yakın olan onaltlık düzen (hexadecimal system) kullanılır. Onaltılık düzen 4 bitten oluşur ve bir bayt iki onaltılık rakamla gösterilebilir. Onaltılık düzende on altı rakam olduğu için onluk düzendeki on rakama ek olarak batılı Latin alfabelerinin ilk altı imcesi A, B, C, D, E ve F rakam olarak kullanılır. A imcesi 10 anlamına gelir, F imcesi de 15. Buna göre 13 rakamı D olarak gösterilir. Genellikle bilgisayar alanında bayt kullanıldığı için bir sayı kodlanması gerektiğinde XY şeklinde iki rakamlı ifadeler kullanılır. XY biçimindeki sayının onluk düzendeki karşılığı 16*X+Y biçimindedir. Örneğin onaltılık tabanda 0D sayısı onluk tabanda 13, A3 sayısı 163, DF sayısı 223, 23 sayısı 35 anlamına gelir.
Program (Program)
Bilgisayar ve bilgisayara bağlı aygıtların belli bir işlevi yapmaları için gerekli eğretim (instruction) birimlerinden oluşan bütüne program (program) denir. Kullanıcılara doğrudan veya dolaylı olarak yararlı olabilecek işlemler, bir veya daha fazla donanım parçasının bir arada ve doğru sırada çalışmasıyla gerçekleştirilir. Örneğin bir yazının yazıcıdan çıktı olarak alınması; dosyanın disk aygıtından belleğe aktarılması; işlemciye getirilmesi yazıcıya gönderilmesi gibi işlemler programları oluşturur. Tüm bu işlemlerde her donanımım özelliklerine göre çeşitli eğretimler oluşur. Örneğin yazıcıdan çıktı alınması için bu aygıta basmaya başla; yeni dizeye geç; yeni yaprağa geç; basmayı bitir gibi bir çok eğretim gönderilir. Tüm aygıtlarla ilgili tüm eğretimlerinin toplamı programı oluşturur.
Yazılım (Software)
Kullanıcının doğrudan veya dolaylı bir biçimde, belli bir işlevi gerçekleştirmelerine yarayan programlardan oluşan bütüne yazılım (software) adı verilir. Donanım, nasıl çeşitli aygıtlardan oluşuyorsa yazılım da çeşitli programlardan veya modüllerden oluşur. Yazılım terimi, kendisini oluşturan programlar dışında, yazılımın çalışması için yapılan türlü işleri de içerir. Örneğin istek çözümleme, görsel ve mantıksal tasarım, sınama ve kullanıcıların kullanımına açılması gibi bir çok kavram da yazılım geliştirmenin bir parçasıdır.
İşletim Düzeni (Operating System)
Bir bilgisayardaki donanım parçalarının işletilmesiyle ilgili programlara ve bu programların uyumlu ve karşılıklı etkileşim içinde çalışmasını sağlayan yazılıma işletim düzeni (operating system) denir. Bilgisayarın açılmasını; kullanıcının isteklerini algılayabilir ve kullanıcıya belli bilgileri sunabilir duruma gelmesini işletim düzeni sağlar. Başlangıçta, yalnızca donanımın çalıştırılması ile ilgili olan işletim düzeni kavramı, giderek kullanıcılara türlü yararlar sağlayan bir çok programlar eklenerek oldukça gelişmiş duruma getirilmiştir. Örneğin yalın bir yazı işlemci, hesap makinesi, genelağ tarayıcısı gibi uygulamalar bir çok işletim düzeniyle birlikte gelmektedir. Başka bir deyişle işletim düzeni, donanımı çalıştıran temel yazılım ve üzerine eklenmiş bir çok yararlı yazılımlardan oluşmaktadır.
İşletim Düzenleri Çeşitliliği
Türlü bilgisayarlarda kullanılan, çeşitli kurumlar tarafından geliştirilmiş çok sayıda işletim düzeni bulunmaktadır. Bunlardan kimileri, örneğin Windows temel işlemler ve kişisel kullanım için yaygın olarak kullanılırken; Mac OS zengin çoklu ortam özellikleri içeren bilgisayarlarda kullanılmaktadır. UNIX işletim düzeni büyük kurumların geniş ağları için kullanılırken; bunun kişisel bilgisayarlara uyarlanmış bir versiyonu olarak LINUX işletim düzeni bulunmaktadır. Yazılım dünyasındaki ilerlemeler sonucu işletim düzenleri giderek ötekilerin özellikleri alacak biçimde gelişmektedir. Örneğin Windows işletim düzeninin hem çoklu ortam hem de büyük şirketlerin gelişmiş ağları için kullanılan sürümleri bulunmaktadır. Öte yandan LINUX hem kişisel kullanım hem de çoklu ortam alanında giderek daha da gelişmektedir.
Uygulama (Application)
Kullanıcının işiyle veya özel yaşamıyla ilgili belirli işlemleri yapması için yapılan programlara (yazılımlara) uygulama (application) denir. Uygulama programları, bire bir sıradan kullanıcılar tarafından kullanılır. Bunun karşıtı olarak, sıradan kullanıcıların kullanmadığı, hatta kullanamadığı ve göremediği, ancak bir bilgisayar düzeninin çalışması için gerekli programlara düzen programları (systems programs) denir.
Konsol (Console)
İşletim düzenini kullanmak; başka bir deyişle işletim düzeninde bulunan veya işletim düzeni üzerine kurulu programları çalıştırmak, onlara yapılması gereken işlemlerle ilgili bilgi ve istekleri aktarmak ve program tarafından üretilen sonuçları görmek için yazı tabanlı (text-based), yani her işlemin yazılar aracılığıyla yapıldığı ortama konsol (console) denir. Bu sözcük yerine uç (terminal) ya da buyruk istemci (command prompt) gibi adlar da verilir. Tek başına bir program olmayan, işletim düzeninde tanımlanmış, konsola yazıldığında belli bir işlev gören sözcük veya kısaltmalara komut (command) denir. Konsol kullanarak komutları çalıştırmak veya programları kullanmak, yalnızca uzman kişilerin yapabildiği, standart kullanıcıların yapmakta zorlanabileceği bir iştir. Çünkü konsol uygulamalarını kullanmak için programa aktarılacak bilgilerin, tam programın istediği biçimde, yazıyla yapılması gerekmektedir. Programın neyi nasıl yapacağını belirlemek için de o programla çeşitli sözcük, harf veya sembollerden oluşan yazılar biçiminde girdileri aktarmak gerekmektedir. Örneğin Windows işletim düzeninde bir klasör altındaki dosyaları, alt klasörler de dahil olacak bir biçimde, isme göre sıralı olarak ve sayfa sayfa listelemek için ‘dir /s /on c:\myfolder | more’ şeklinde bir metin yazılmalıdır.
Masaüstü (Desktop)
Kullanıcıların, bir bilgisayarda işletim düzenindeki temel işlemleri yapmak; yararlı programları veya özel bir iş için yapılmış uygulamaları çalıştırmak gibi görevleri kolay bir biçimde gerçekleştirmesini sağlayan ortama masaüstü (desktop) denir. Masaüstünde kullanıcı, bilgisayarın yapmasını istediği işlemleri fare kullanarak, ekranda bazı noktaları tıklayarak bildirir. Buna göre her uygulama, üzerinde adının ve sembolü olan resmin bulunduğu bir alan tıklanarak başlatılır. Ekrana uygulamanın çeşitli işlemlerinin yapılabildiği pencere (window) denilen dikdörtgen biçiminde bir alan gelir. Masaüstü uygulamaları; menü, düğme, diyalog kutusu, onay kutusu, liste ve seçenek kutusu gibi, kullanıcının yapılmasını istediği işlemleri, bir kaç tıklamayla yapmasına izin veren çeşitli bileşenlerden oluşur.
Dosya (File)
Disk türü veri depolama cihazlarında işletim düzeni, bilgileri dosya (file) denilen birimlerde tutar. İşletim düzeninin kendisi, diskin üzerine yüklenmiş programlar olarak dosyalarda tutulur. Hem işletim düzeninin hem de onun üzerine yüklenmiş programların kullandığı bilgiler de dosyalarda tutulur. İşletim düzeni disklerde bulunan bilgileri dosya düzeni (file system) denen bir yapıda tutar. Buna göre her diske veya diskin bir bölümüne bir sürücü (drive) adı verilir. Dosyaları gruplamak için klasör (folder) veya dizin (directory) denilen yapılar kullanılır. Bazı işletim düzenleri sürücüleri ayrı bir biçimde değerlendirirken bazıları sürücüleri bir klasör olarak kabul eder. Klasörlerin bir ağaç biçiminde iç içe açılarak yapılandırıldığı, diskteki dosyaların belli bir düzen içinde saklandığı bir düzen bulunur. Dosyaların içinde bulunan verinin türünü; yani program mı, yazı mı, resim mi olduğunu belirlemek için dosya adlarının sonunda uzantı (extension) adı verilen bir kısaltma bulunmaktadır. Örneğin exe çalıştırılabilir bir programı gösterirken, txt bir metin dosyasını bildirir. Her dosyanın bulunduğu sürücü, klasör, dosya adı ve uzantısı bulunur. Disk düzeninde bir dosyanın konumunu gösteren, yani sürücüsü, klasörü, adı ve uzantısını içeren yazısal ifadeye yol (path) denir. Örneğin Windows işletim düzeninde bir dosya C:\Programs\MyProgram\MyFiles\MyFile.txt biçiminde gösterilebilir.
Ağ
Ağ (Network)
Birden çok bilgisayarın birbirine bağlanması sonucu oluşan düzene ağ (network) denir. Bu terim birbirine bağlanan aygıtlar ve kablolardan oluşan donanıma karşılık gelir. Ancak bir ağın çalışması için gerekli işletim düzeni programları ve bunların üzerine geliştirilmiş düzen programları da ağın bir parçasıdır. Ağ, küçük bir işletmede veya evde bir kaç bilgisayardan oluşabileceği gibi büyük bir şirketin veya kurumun çeşitli coğrafi bölgelere dağılmış bilgisayarlarından da oluşabilir. Bir ağ, birden çok ağın bir araya gelmesinden oluşabilir.
İstemci-Sunucu (Client-Server)
Bir ağ üzerindeki bilgisayar donanımı veya yazılımlarından bazıları kullanıcıların doğrudan kullanımı için, bazıları da kullanıcıların kullandığı bilgisayarlardaki donanım veya yazılımın yararlanması için yapılmıştır. Bireysel amaçla değil de diğer bilgisayarlara hizmet vermek için kullanılan donanım veya yazılıma sunucu (server) adı verilir. Buna karşılık bir sunucudan hizmet alan donanım veya yazılıma istemci (client) denir. Genellikle sunucu olarak kullanılan donanımlar ve yazılımlardan oluşan ‘ana’ veya ‘düzen’ bilgisayarları, sunucu bilgisayar veya sunucu makine olarak adlandırılır. Buna karşın genellikle sunucuların verdiği hizmeti kullanan yazılımların yüklü olduğu bilgisayarlara istemci bilgisayar veya istemci makine denir. Ancak sunucu ve istemci kavramları duruma göre değişebilir. Bir makine diğer makineye bağlanırken istemci durumundayken başka bir makine kendisine bağlandığında sunucu durumunda olabilir. İstemci ve sunucu kavramları yalnızca bilgisayarlar için değil programlar için de kullanılır. Başka programlara hizmet eden yazılıma sunucu programı denirken; yapacağı işlemi bir sunucu yazılımdan faydalanarak yapan programa istemci programı denir. Bir yazılım düzeninin tek bilgisayarda çalışması yerine, bir kısmının sunucuda ve diğer kısmının bu sunucuya bağlanan istemcilerde çalışması tarzı yapılara istemci-sunucu (client-server) mimarisi denir.
Genelağ (Internet)
Dünya çapında bir çok ağın bir araya gelmesinden oluşan ‘ağlar ağı’ durumundaki büyük ağa Genelağ (İnternet) ya da küçük imcelerle genelağ (internet) denir. Hemen hemen bütün işletim düzenlerinin genelağı desteklemesi ve bütün ağların genelağla bağlantısının yapılması sonucunda genelağ, neredeyse bütün bilgisayarlardan oluşan büyük bir ağ olarak ortaya çıkmıştır. İnternet üzerinden birbirine bağlanan bir çok bilgisayar, hem donanım özellikleri hem de işletim düzeni olarak çeşitlilik gösterdikleri için bir arada çalışmalarının sağlanması için belli ilkelerde anlaşılması gerekmiştir.
Aktarım Protokolleri ve TCP/UDP
Genelağda bilgisayarların birbirleriyle bilgi alışverişinde bulunmasını sağlayan yollayıcı (router), kapıyolu (gateway), açkı (switch) ve göbek (hub) gibi bir çok aygıt bulunmaktadır. Bilgisayar ve ağda veri iletiminde kullanılan aygıtların birbirlerine sayısal olarak tanımlanmış bilgilerin aktarımında ortak bir çok ağ standardı bulunmaktadır. Bu tür standartlara protokol (protocol) denir. Protokoller içinde, aktarım protokolü (transfer protocol) deyimi bir verinin ağ içinde bir noktadan diğerine aktarımı ile ilgili standartları belirler. Bunlardan en yaygın kullanılanı TCP (Transfer Control Protocol – Aktarım Denetim Protokolü) adı verilen protokoldür. Ağda her birim, ayrı ayrı aktarımı ve bir veri aktarıldıktan sonra karşı taraftan aktarımın başarılı olduğuna dair bir bilgi gelmesini bekler. Buna alternatif olarak protokollerden biri olarak UDP (User Datagram Protocol – Kullanıcı Veriölçü Protokolü) bir noktadan çok noktaya aynı anda gönderim sağlamakta ancak verinin doğru olarak gidip gitmediğine dair bir geri dönüş beklememektedir.
Ağ Protokolleri ve IP
Veri aktarımında kullanılan protokole ağ protokolü (network protocol) denir. TCP ve UDP aktarım protokolleri ile birlikte IP (Internet Protocol – İnternet Protokolü) adlı ağ protokolü kullanılır. IP protokolünde ağdaki her noktaya bir numara verilir ve bu numaraya IP adresi (IP address) veya IP numarası (IP number) denir. IP protokolünü destekleyen ağlarda ve genalağda her makinenin bir IP adresi olmalıdır. IP protokolünün 4. versiyonunda adresler 123.23.34.56 gibi bir numaradır. Bu numaralar genelağın giderek daha çok kullanılmasıyla yetersiz hale gelmiştir. IP protokolünün son sürümü olan 6. sürümde daha büyük adresler yavaş yavaş kullanılmaya başlanmıştır.
Alan (Domain)
İnternet, bir bilgisayardan diğerine bağlanmak için IP adresi kullanımına dayanır. Ancak bir makinenin yalnızca sayılardan oluşan IP adresini kullanıcıların hatırlaması çok zor olduğu için alan adı (domain name) kavramı ortaya çıkmıştır. Buna göre sunucu makineleri için bir alan adı belirlenir. Örneğin http://www.godoro.com ifadesindeki godoro.com bir alan adıdır. Alan adlarına karşılık gelen IP numaralarını bulan DNS (Domain Name Server - Alan Adı Sunucu) adı verilen sunucular bulunmaktadır. Bir sunucuya bağlanmak isteyen uygulama, kullanıcıdan alan adı bilgisini alır, DNS sunucusundan alan adına karşılık gelen IP numarasını edinir ve uygulamanın asıl işlemini yapacağı sunucuya bağlanma işlemini aldığı bu IP numarasıyla gerçekleştirir.
Uygulama Protokolü (Application Protocol)
Bilgisayar programlarının belli bir konuda birbirleriyle anlaşmasını sağlamak için oluşturulmuş kurallar bütününe uygulama protokolü (application protocol) denir. Birden çok işletim düzeninde çalışacak programlar arasında, örneğin sunucu bir işletim düzenindeyken istemciler diğer işletim düzenlerinde olacak şekilde kurulan yapılarda, sunucu ve istemcinin hangi sözcüklerle anlaşacakları konusunda uzlaşı sağlanır. Daha sonra bu kurallara uyan değişik sunucu ve istemci programları yapılır. En çok bilinen internet protokolleri arasında; bir bilgisayarı başka bilgisayardan kullanmaya yarayan Telnet; bir bilgisayardan diğerine dosya aktarımı için kullanılan FTP; bir bilgisayarın diğerindeki dosyaları, birbiriyle bağlantılarını izleyerek görmesi için HTTP; posta göndermek, posta almak ve postaları dizinlerde toplamak için