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. 
Mustafa ATAKAN
ODTU Bilgi İşlem Daire Başkanlığı
Internet Teknolojileri Güvenliği
(security@metu.edu.tr 24/12/2001)
Bu haber 193020 defa okunmuştur.
ayrıca:  Bu kategorideki diğer haberler için tıklayınız...