Port Nedir?
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ğin-
de, 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.
INETD (Süper Sunucu):
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.
Bir örnekle anlatmadan önce tipik bir "/etc/services" ve "/etc/inetd.conf"
dosyasının içeriğine bakalım.
<"/etc/services">
tcpmux 1/tcp
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
telnet 23/tcp
ktelnet 1023/tcp #Added by AS 5/5/98
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
name 42/udp nameserver
whois 43/tcp nicname # usually to sri-nic
.
.
.
<"/etc/inetd.conf">
# Ftp and telnet are standard Internet services.
#
ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd
telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd
#
# Shell, login, exec, comsat and talk are BSD protocols.
#
shell stream tcp nowait root /usr/sbin/tcpd in.rshd
login stream tcp nowait root /usr/sbin/tcpd in.rlogind
exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
comsat dgram udp wait root /usr/sbin/in.comsat in.comsat
talk dgram udp wait root /usr/sbin/in.talkd in.talkd
.
.
.
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.
BUFFERED PORTS:
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ştiri- len 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 çevapları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.
|