Bilgisayar ve telekomünikasyon dünyasında, 'port' denildiği zaman akla
ilk gelen genellikle fiziksel bağlantıda kullanılan ara birimlerdir. Bu
tür 'port' lar üzerinden bağlanmış herhangi bir makinaya 'data'
gönderilebilir ve bu makinanın işleyişi kontrol edilebilir. Örneğin,
tipik bir bilgisayarda bir veya birden fazla 'seri port' bir tane de
'paralel port' bulunur. Adından da anlaşılacağı gibi 'seri port' dan
bilgiler seri (her defasında bir bit) olarak gönderilir ve bu tür 'port'
lara genellikle tarayıcı (scanner) gibi cihazlar takılır. Her defasında
birden çok bit göndermek içinse 'paralel port' kullanılır. Bu tip
'port' lara da yazıcı (printer) veya 'paralel port' bağlantısı olan
herhangi bir cihaz takılabilir.
Bizi ilgilendiren ve çoğunlukla
İnternet dünyasında kullanılan 'port' kavramı ise yukardaki tanımdan
biraz daha soyut bir kavramdir. Bu anlamda 'port' (ki dokümainin sonuna
kadar 'port' bu anlamda kullanılacaktir) herhangi bir fiziksel bağlantı
yeri değil, mantıksal bir bağlanma şeklidir. Şöyle ki:
Günümüz
dünyasında birçok işletim sistemi birden fazla programın aynı anda
çalışmasına izin vermektedir. Bu programlardan bazıları dışarıdan gelen
istekleri (istemci-client/request) kabul etmekte ve uygun gördüklerine
cevap (sunucu-server/response) vermektedir. Sunucu programları çalışan
bilgisayarlara birer adres verilir (bknz. IP adresleri) ve bu adresler
kullanılarak istenilen bilgisayarlara ulaşılır. Peki, ulaşılan bir
bilgisayar üzerindeki hangi sunucu programdan hizmet alınmak istendiği
nasıl belirtilir?
Bunun için bilgisayarlar üzerinde birtakım
soyut bağlantı noktaları tanımlanır ve herbirine, adresleyebilmek için
positif bir sayı verilir (port numarası). Bazı sunucu programları, daha
önce herkes tarafından bilinen 'port' lardan hizmet verirken (örn:
telnet->23. port) bazıları da sunucu programını çalıştıran kişinin
türüne ve isteğine göre değişik 'port' lardan hizmet verir.
Dolayısıyla,
ağ üzerindeki herhangi bir sunucu programa bağlanmak istenildiğinde,
programın çalıştığı bilgisayarın adresinin yanında istekleri kabul
ettiği 'port' numarasını da vermek gerekir. Örnek verecek olursak:
144.122.156.104
'IP' adresine sahip makinada (orca) çalışan 'telnet' sunucu programına
(23. 'port' dan hizmet veren) bağlanmak için aşağıdaki satır yazılır.
telnet 144.122.156.104 23
Daha
önce de belirttiğimiz gibi bazı sunucu programların belirli 'port'
lardan hizmet verdiği bilindiği için, bu sunuculara bağlanmak
istediğimizde, 'port' numarasını vermeye gerek kalmaz. Bu durumda
yukardaki satır
telnet 144.122.156.104
şeklinde de yazılabilir.
Bilgisayar
ilk açıldığında üzerinde çalışan sunucu programlar otomatik olarak
açılış dosyalarından çalıştırılabildiği gibi genel kullanım biraz daha
farklıdır.
Değişik 'port' ları dinleyen birçok sunucu programın,
hiçbir istemciye cevap vermediği durumda bile, birçok sistem kaynağını
gereksiz yere kullandığı düşünülerek, 'inetd' adında istemcilerle diğer
sunucu programlar arasında koordinasyonu sağlayan bir sunucu program
düşünülmüştür. Açılış dosyalarından da başlatılabilen bu sunucu tek
başına bütün 'port' ları dinler ve herhangi birisine istek geldiği zaman
aşağıdaki prosedürü takip eder:
1- /etc/services dosyasından ilgili 'port' a hizmet veren servis ismini bulur.
2-
konfigürasyon dosyası olan '/etc/inetd.conf' dan bu servis için gelen
isteğe nasıl cevap vereceğini belirler ve gerekli programı çalıştırır.
3- bir istek geldiği zaman tekrar 1`e döner.
23. 'port' a bir istek geldiğinde,
'inetd' '/etc/services' dosyasına bakarak bu 'port' numarasına denk
gelen servis ismini ('telnet') bulur. Daha sonra '/etc/inetd.conf'
dosyasına bakarak bu servise denk gelen sunucu programı
('/usr/sbin/in.telnetd') çalıştırır.
Herhangi bir 'port' u
dinleyen program bir iş yaparken, başka bir deyişle dinlediği 'port' a
gelen bilgileri almaya hazır değilken, eğer bu 'port' 'buffered' ise
gelen bilgiler kaybolmaz. İşletim sistemi içerisine yerleştirilen
programlar sayesinde kapasitesi sınırlı kuyruklara yerleştirilerek
ilgili sunucu programın alması için bekletilirler.
Internet
üzerinde herhangi bir IP adresi üzerindeki 'port' dan hizmet veren
sunucu programa bağlantı yapmak isteyen istemci program, sunucu
programın cevaplarını (reply) yollamak için bağlantı kuracağı kendi
üzerindeki 'port' numarasını da sunucu programa gönderir.
'Port'
numarası genellikle 2 'byte' olarak tutulur. Bu nedenle 65536 adet
'port' numaralamak mümkündür. Genellikle 1024`den küçük olan 'port'
numaraları özel hakları olan kullanıcılar (root) tarafından
kullanılırken, büyük olanlar
genel kullanıma açıktır.
Hiç yorum yok:
Yorum Gönder