İçeriğe atla

Uzaktan yordam çağrısı

Uzak yordam çağrısı (ya da uzak prosedür çağrısı; İngilizceRemote Procedure Call (RPC), bir diğer adres uzayı (genelde ağ paylaşımlı bilgisayarlar) üzerinde programcı açıkça bu uzaktan etkileşim detayları kodlama olmadan çalıştırmak için bir alt yordam veya prosedürü sağlayan bilgisayar programına izin veren süreçler arası iletişim teknolojisidir.[1]Sunucu üzerindeki servisleri kontrol ettiğimizde karşımıza çıkan RPC, arka plânda birçok şeyi gerçekleştiren bir servistir. RPC, temelde istemci ve sunucu arasında yapılan işlemlerin iletişimi için tasarlandı. Bir işlemin gerçekleşmesi için bir gönderici (sunucu) ve bir de istemci vardır..[2] Yani programcı, alt prosedür ister çalışan programın yerelinde ister uzağında olsun, temelde aynı kodu yazar. Bu bir tür istemci-sunucu etkileşimidir (çağıran istemci, çalıştıran sunucudur) ve tipik olarak bir istek-yanıt mesaj geçirme sistemi aracılığıyla uygulanır. Nesne yönelimli programlama modelinde, RPC'ler uzaktan yöntem çağırma (RMI) ile temsil edilir. RPC modeli bir konum şeffaflığı seviyesini ifade eder, yani çağrı prosedürleri yerel ya da uzak olsun büyük ölçüde aynıdır, ancak genellikle aynı değildirler, bu nedenle yerel çağrılar uzak çağrılardan ayırt edilebilir. Uzak çağrılar genellikle yerel çağrılardan çok daha yavaş ve daha az güvenilirdir, bu nedenle bunları ayırt etmek önemlidir.

RPC'ler süreçler arası iletişimin (IPC) bir şeklidir, çünkü farklı süreçler farklı adres alanlarına sahiptir: aynı ana makine üzerindeyseler, fiziksel adres alanı aynı olsa bile farklı sanal adres alanlarına sahiptirler; farklı ana makinelerdeyseler, fiziksel adres alanı farklıdır. Bu kavramı uygulamak için birçok farklı (genellikle uyumsuz) teknoloji kullanılmıştır.

Tarihi ve kökeni

İstek-yanıt protokolleri 1960'ların sonlarında bilgi işlemin ilk dönemlerine, ağ işlemleri modeli olarak uzaktan yordam çağrılarının teorik önerileri 1970'lere ve pratik uygulamaları 1980'lerin başlarına dayanmaktadır.[3] Bruce Jay Nelson genellikle 1981 yılında "uzaktan yordam çağrısı" terimini ortaya atmasıyla tanınır. Modern işletim sistemlerinde kullanılan uzak yordam çağrılarının kökleri, süreç senkronizasyonu için bir istek-yanıt iletişim protokolü kullanan RC 4000 çoklu programlama sistemine dayanmaktadır. Ağ işlemlerini uzak yordam çağrıları olarak ele alma fikri, en azından 1970'lerde ARPANET'in ilk belgelerine kadar uzanmaktadır. 1978'de Per Brinch Hansen, süreçler arasındaki yordam çağrılarından oluşan "harici isteklere" dayalı dağıtık bilgi işlem için bir dil olan Dağıtık Süreçleri önermiştir.

İlk pratik uygulamalardan biri 1982 yılında Brian Randell ve arkadaşları tarafından UNIX makineleri arasında Newcastle Connection için yapılmıştır.[4] Bunu kısa süre sonra Xerox PARC'daki Cedar ortamında Andrew Birrell ve Bruce Nelson tarafından yapılan "Lupine" takip etmiştir. Lupine otomatik olarak taslaklar oluşturmuş, tip açısından güvenli bağlar sağlamış ve iletişim için verimli bir protokol kullanmıştır. RPC'nin ilk iş kullanımlarından biri 1981 yılında Xerox tarafından "Courier" adı altında yapılmıştır. RPC'nin Unix üzerindeki ilk popüler uygulaması, Ağ Dosya Sistemi (NFS) için temel olarak kullanılan Sun'ın RPC'siydi (şimdi ONC RPC olarak adlandırılıyor).

1990'larda, nesne yönelimli programlamanın popülerleşmesiyle birlikte, Common Object Request Broker Architecture (CORBA, 1991) ve Java uzaktan yöntem çağırma gibi alternatif bir uzaktan yöntem çağırma (RMI) modeli yaygın olarak uygulanmıştır. RMI'lar ise internetin yükselişiyle birlikte, özellikle 2000'li yıllarda popülerliğini yitirmiştir.

Mesaj geçişi

RPC bir istek-yanıt protokolüdür. RPC, istemci tarafından başlatılır ve bu, sağlanan parametrelerle belirtilen bir yordamı yürütmek için bilinen bir uzak sunucuya bir istek mesajı gönderir. Uzaktaki sunucu istemciye bir yanıt gönderir ve uygulama işlemine devam eder. Sunucu çağrıyı İşlerken, istemci sunucuya eş zamansız bir istek göndermediği sürece, istemci engellenir (yürütmeye devam etmeden önce sunucu işlemeyi bitirene kadar bekler). Çeşitli uygulamalarda birçok varyasyon ve incelik vardır, bu da çeşitli farklı RPC protokolleriyle sonuçlanır.

Uzaktan prosedür ile yerel prosedürün en önemli farkı, yerel prosedürün öngörülemeyen ağ problemlerinde hatayla karşılaşmasıdır. Ayrıca, arayanlar genellikle uzaktan yordamın gerçekten çağrılıp çağrılmadığını bilmeden bu tür arızalarla ilgilenmelidir. İdempotent prosedürler (birden fazla çağrılırsa ek etkisi olmayanlar) kolayca ele alınır, ancak uzak prosedürleri çağırmak için kodun genellikle dikkatlice yazılmış düşük seviyeli alt sistemlerle sınırlı olması için yeterli zorluk kalır.

RPC yapımında temel adımların sırası

  1. İstemci, istemci sapmasını çağırır. Çağrı parametrelerin yığına normal şekilde itildiği yerel bir yordam çağrısıdır.
  2. İstemci taslağı parametreleri bir mesaja paketler ve mesajı göndermek için bir sistem çağrısı yapar. Paketlenmiş parametreler marshalling diye adlandırılır.
  3. İstemcinin yerel işletim sistemi, istemci makineden sunucu makineye mesajı yollar.
  4. Sunucu makinesindeki yerel işletim sistemi, gelen paketleri sunucu saplamasına geçirir.
  5. Sunucu saplaması, parametreleri iletiden açar. Parametrelerin açılmasına unmarshalling denir.
  6. Son olarak, sunucu saplaması sunucu yordamını çağırır. Yanıt, ters yönde aynı adımları izler.

Güvenlik

Dağıtılmış uygulamaların kullanımının artmasıyla beraber uygulamaların istemci-sunucu iletişiminde güvenliğin önemi de artmaktadır. Uzaktan Yordam Çağrısı (RPC)  çalışma zamanı kitaplığı, hem istemciler hem de sunucular için kimlik doğrulama hizmetlerine yönelik standartlaştırılmış bir arabirim sağlar.  Uygulamalar, tüm çağrıların yetkili istemcilerden geldiğinden emin olmak için kimliği doğrulanmış uzaktan yordam çağrıları kullanır.

Uygulanabilirlik

Uzaktan yordam çağrısı, Windows işletim sistemlerini temel alan tüm istemci/sunucu uygulamalarında kullanabilirsiniz. Unix ve Apple gibi işletim sistemlerini içeren heterojen ağ ortamları için istemci ve sunucu programları oluşturmak için de kullanılabilir.

Standart iletişim mekanizmaları

Sunucuya farklı istemcilerin erişmeleri için standart RPC sistemleri oluşturulmuş olmalıdır.

RPC, C/C++ programcıları tarafından kullanılmak üzere tasarlanmıştır. Microsoft Arabirim Tanım Dili (MIDL) ve MIDL derleyicisine aşinalık gereklidir.

Çoğunda arayüz tanımlama dili (interface description language (IDL)) kullanılır.

Arayüz tanımlama dili birçok platforma izin verir.

Arayüz tanımlama dili (IDL) istemci ve sunucu arasındaki arayüz kodunu düzeltmede kullanılabilir.

Bu iş için genelde RPCGEN kullanılır.

Avantajları ve dezavantajları

Uzaktan Yordam Çağrısının(RPC) avantajları aşağıdaki şekilde sıralanabilir.

  1. İstemcilerin sunucu ile her zamanki sistem çağrıları ve prosedürler ile iletişimde bulunmasına fayda sağlar.
  2. Dahili mesaj aktarımı işlemlerini kullanıcıdan gizli olarak yapar.
  3. Hem dağıtık hem de yerel sistemlerde kullanılır.
  4. Eş zamanlı olarak farklı programlar tarafından kullanılabilir.

Bu avantajların yanında belli dezavantajları da bulunmaktadır.

  1. RPC sistemleri büyük miktarda veri aktarımı için uygun değildir.
  2. RPC, bir iletişim sistemini, başka bir makineyi ve başka bir işlemi içerdiği için arızaya karşı oldukça savunmasızdır.
  3. RPC için tek tip bir standart yoktur; çeşitli şekillerde uygulanabilir.
  4. RPC yalnızca etkileşim tabanlıdır ve bu nedenle, donanım mimarisi söz konusu olduğunda herhangi bir esneklik sunmaz.

Kaynakça

  1. ^ "Remote Procedure Call Article". 10 Nisan 2023 tarihinde kaynağından arşivlendi. 
  2. ^ "Remote procedure Call(English Wikipedia)". 28 Mart 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 28 Mart 2023. 
  3. ^ "Remote Procedure Article 2". 10 Nisan 2023 tarihinde kaynağından arşivlendi. 
  4. ^ "Remote Procedure Call(English Wikipedia)". 27 Ocak 2004 tarihinde kaynağından arşivlendi. 

Ayrıca bakınız

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">HTTP</span> iletişim protokolü

HTTP bir kaynaktan dağıtılan ve ortak kullanıma açık olan hiperortam bilgi sistemleri için uygulama seviyesinde bir iletişim protokolüdür. HTTP, World Wide Web için veri iletişiminin temelidir; burada köprü metni belgeleri, örneğin bir fare tıklamasıyla veya bir web tarayıcısında ekrana dokunarak kullanıcının kolayca erişebileceği diğer kaynaklara köprüler içerir.

<span class="mw-page-title-main">Sunucu (bilişim)</span> bilgisayar ağlarında, diğer ağ bileşenlerinin (kullanıcıların) erişebileceği, kullanımına ve/veya paylaşımına açık kaynakları barındıran bilgisayar birimi

Sunucu, bilişim alanında "istemci" denilen diğer program ve cihazlara çeşitli işlevler sunan bilgisayar donanımları veya yazılımlarıdır. Bu mimariye istemci-sunucu modeli denir. Sunucular, istemciler arasında veri veya kaynak paylaşımı, bir istemci için hesaplama yapma gibi çeşitli işlevleri yerine getirebilirler. Bu işlevlere genellikle "servis" veya "hizmet" denir. Tek bir sunucu çok sayıda istemciye hizmet verebilir, tek bir istemci de çok sayıda sunucudan hizmet alabilir. İstemci ve sunucu aynı cihaz üzerinde çalışabileceği gibi, istemci ağ üzerinden farklı bir cihazdaki sunucuya da bağlanabilir. Tipik sunucular arasında veritabanı sunucuları, dosya sunucuları, e-posta sunucuları, yazdırma sunucuları, web sunucuları, oyun sunucuları ve uygulama sunucuları sayılabilir.

SMTP, bir e-posta göndermek için sunucu ile istemci arasındaki iletişim şeklini belirleyen protokoldür. Farklı işletim sistemleri için geliştirilmiş e-posta protokolleri bulunmaktadır. Bu e-posta protokollerinin SMTP'ye geçit yolu (gateway) vardır. SMTP, Aktarım Temsilcisi ve Kullanıcı Temsilcisi yazılımları arasındaki iletişimi sağlar. TCP'nin üst katmanında çalışır.

<span class="mw-page-title-main">DNS</span>

DNS, internet uzayını bölümlemeye, bölümleri adlandırmaya ve bölümler arası iletişimi organize etmeye yarayan, bilgisayar, servis, internet veya özel bir ağa bağlı herhangi bir kaynak için hiyerarşik dağıtılmış bir adlandırma sistemidir.

Amoeba Andrew S. Tanenbaum ve diğerleri tarafından Vrije Universiteit Amsterdam'da geliştirilen bir dağıtık işletim sistemi'dir. Amoeba projesinin amacı, tüm bir bilgisayar ağının kullanıcıya bir tek makine olarak görünmesini sağlayan bir zaman paylaşımı sistemi oluşturmaktı. Vrije Universiteit'teki geliştirme durduruldu: en son sürümün (5.3) kaynak kodu en son 30 Temmuz 1996'da değiştirildi.

Ağ Dosya Sistemi, Network file system, yani ağ dosya sistemi diğer bilgisayarlardaki dosyalara erişilebilmesini sağlayan bir yerel ağ işletim sisteminin parçasıdır. Bilgisayarlarda kullanılan programların network makinalarında kullanılmasını sağlar. Sun Microsystems tarafından 1984 yılında geliştirilmiş, ağdaki bilgisayarların ortak bir dosya sistemine, yerel diskleri kadar kolay ulaşmasını sağlayan, RPC temelli dağıtık dosya sistemi yapısıdır.

<span class="mw-page-title-main">SIP</span>

Oturum başlatma Protokolü (SIP), ses, video ve mesajlaşma uygulamalarını içeren gerçek zamanlı oturumları başlatmak, sürdürmek ve sonlandırmak için kullanılan bir sinyal protokolüdür. VoIP gibi IP üzerinden üzerinden ses, görüntü ve anlık mesaj iletişimi yanı sıra LTE (VoLTE) üzerinden cep telefonu araması için multimedya iletişim oturumlarını sinyalize etmek ve kontrol etmek için kullanılır. Günümüz IP Telefonlarının çoğunluğu SIP Protokolü ile çalışmaktadır. Cisco gibi bazı üreticiler SIP kullanmakla beraber bazı telefon modellerinde SCCP tercih etmektedir.

DirectPlay, DirectX'in çok kullanıcı oyunlar başta olmak üzere birçok kişinin aynı anda birçok mesaj yolladığı ortamların yaratılmasını kolaylaştırmak için geliştirdiği bir iletişim protokolüdür. DirectPlay, sunucu-istemci (server-client) veya peer to peer tipi bir organizasyonda asenkron mesajlaşma, mesaj öncelikleri, paket birleştirme, kayıpsız gönderim veya paket şifreleme gibi olanaklar sunar ve DirectPlay Voice modülü sayesinde ses iletimini de mümkün kılar.

<span class="mw-page-title-main">DHCP</span>

DHCP, ağda bulunan her bir bilgisayarın IP adresi, alt ağ maskesi, varsayılan ağ geçidi ve DNS sunucuları gibi ağ bağlantısı ayarlarının otomatik olarak atamasını sağlar. Bu sayede ağ yöneticileri, ağdaki her bir bilgisayarın IP adresi ve diğer ağ bağlantısı ayarlarını elle girerek zaman kaybetmek yerine, DHCP sunucusu üzerinden bu bilgileri otomatik olarak atayarak daha verimli ve güvenilir bir ağ yönetimi yapabilirler. Bu sayede sistem yönetim işlemi de kolaylaşmış olur. Ayrıca UDP, TCP'ye dayalı herhangi bir iletişim protokolünün ve DNS, NTP gibi ağ hizmetlerinin kullanımına olanak sağlar.

<span class="mw-page-title-main">Vekil sunucu</span>

Vekil sunucu veya yetkili sunucu, İnternet'e erişim sırasında kullanılan bir ara sunucudur. Bu durumda, örneğin bir ağ sayfasına erişim sırasında doğrudan bağlantı yerine:

IGMP, TCP/IP'de çoklu dağıtım (multicast) üyelerini yönetmek için kullanılan bir iletişim protokolüdür. Taşıma protokolü gibi davranmamasına rağmen, ağ katmanının üzerinde çalışması IP çokludağıtımın önemli bir özelliğidir. Tekli dağıtım(unicast) bağlantılardaki ICMP ye benzerdir. IGMP online streaming videolarda ve oyunlarda kullanılabilir. Bu tip uygulamaları desteklerken kaynaklarının daha verimli şekilde kullanılmasını sağlar.

RADIUS, Livingston Enterprise tarafından geliştirilmiş, daha sonra da IETF RFC 2865 ve RFC 2866 ile standartlaştırılmıştır. RADIUS istemci-sunucu modeli tabanlıdır ve mesaj değişimi UDP protokolü ile gerçekleşir. Network Access Storage (NAS), RADIUS kullanıcısı olarak davranır ve kullanıcı isteğini RADIUS server'a aktarır. Diğer RADIUS kullanıcıları kablosuz bağlantı noktaları, yönlendiriciler (Router) ve anahtarlayıcılar (Switch) olabilir. RADIUS sunucusu kullanıcılardan istek aldıktan sonra kimlik doğrulama (Authentication), yetkilendirme (Authorization) ve ücretlendirme (Accounting) yani AAA işlemlerini gerçekleştirir. Kullanıcı ile sunucu arasındaki iletişim özel anahtar ile şifrelendirilmiş şekilde gerçekleştirilir, bu sayede şifre asla ağ üzerinden gönderilmez. Kullanıcı ve sunucular iletişim olmadan önce bu güvenlik yöntemine göre ayarlanmıştır ve eğer şifreler uyuşmazsa bağlantı sonlandırılır.

<span class="mw-page-title-main">SOAP</span>

SOAP , Service-oriented Architecture felsefesini pratiğe uyarlayan iki interface'den biridir. Üzerinde bulunan Universal Description Discovery and Integration (UDDI) ile birlikte hizmet yönelimli mimarinin pratikte kullanılmasını mümkün kılar.

<span class="mw-page-title-main">Enterprise JavaBeans</span>

Enterprise JavaBeans (EJB) veya Türkçe karşılığı ile işe yönelik yeniden kullanılabilir Java elemanları iş uygulamalarının modüler bir şekilde kurulması için tasarlanmış yönetilebilir sunucu-yanı (server-side) eleman mimarisidir.

Bilgisayar ağları konusunda geçen Önyükleme Protokolü veya BOOTP, bir yapılandırma sunucusundan bir IP adresi almak için bir ağ istemcisi tarafından kullanılan bir ağ protokolüdür. BOOTP protokolü ilk olarak RFC 951 içerisinde tanımlanmıştı.

Bir iletişim ve iş birliği sistemi, bireylerin, çalışma gruplarının ve kurumların kendi içlerinde ya da birbirleri ile veri, enformasyon ve bilgi alışverişi için kullandıkları bir bilgisayar tabanlı bilişim sistemidir. Veri, enformasyon ve bilgi alışverişine mesajlaşma adı verilir. Mesajlaşma iki boyutta gerçekleşmektedir: Yer ve zaman. İletişim ve iş birliği sistemleri farklı yerlerde veya aynı yerde farklı zamanlarda bulunan birey ya da grupların mesajlaşma gereksinmelerini karşılamak için kullanılmaktadır. Mesajlaşma farklı zamanlarda gönderilen iletilerle gerçekleşebileceği gibi, iletileri eşzamanlı olarak paylaşma biçimini de alabilmektedir.

Diyaloguer (ingilizce) olarak da bilinen, ağ işletim sistemi, bir sunucu üzerinde çalışan ve verileri, kullanıcıları,grupları, güvenliği, uygulamaları ve ağ üzerinde koşan diğer çoğu ağ işlevlerinin yönetilmesine olanak sağlayan bir yazılımdır. Ağ işletim sistemleri, bir ağ içerisinde bulunan bilgisayarların ağ içerisindeki diğer bilgisayarlarla yazıcı paylaşımı, ortak dosya sisteminin ve veritabanının paylaşımı, uygulama paylaşımı gibi işlevleri yerine getirmek için tasarlanmıştır. En popüler olanları Novell NetWare, Linux, Windows Server 2003, Mac OS X tir.

<span class="mw-page-title-main">SoftEther VPN</span> Baymuhammet

SoftEther VPN, Tsukuba Üniversitesi'nden Daiyuu Nobori'nin yüksek lisans tezi araştırması kapsamında geliştirilen ücretsiz bir açık kaynak kodlu, çapraz platform, çoklu protokol destekli VPN çözümüdür. SoftEther VPN, SSL VPN, L2TP/IPsec, OpenVPN ve Microsoft Güvenli Yuva Tünel Protokolü gibi VPN iletişim kurallarını tek bir VPN sunucusundan verilecek şekilde desteklemektedir. 4 Ocak 2014 tarihinde GPLv2 lisansını kullanarak yayınlanmıştır.

Uzak Masaüstü Hizmetleri (RDS) ya da Terminal Hizmetleri Windows Server 2008 ve önceki sürümlerinde, kullanıcının bir uzak bilgisayar veya sanal makinenin bir bilgisayar ağı bağlantısı üzerinden kontrolünü ele geçirmesine olanak sağlayan Microsoft Windows bileşenlerinden biridir. Uzak masaüstü yazılımıdır. RDS, Microsoft'un Windows istemci yazılımı ve RDS çalıştıran bilgisayarın tüm masaüstünün Uzak Masaüstü Protokolü'nü (RDP) destekleyen bir uzak sanal makinesine erişebildiği ince istemci uygulamasıdır. RDS ile, yalnızca yazılım kullanıcı arayüzleri istemci sistemine aktarılır. İstemci sistemindeki tüm girdiler, yazılımın gerçekleştirildiği sunucuya iletilir. Bu, Microsoft App-V gibi, bilgisayar programlarının istemciye istek üzerine aktarıldığı ve istemci makinede yürütüldüğü uygulama akış sistemlerinden farklıdır.

Çap, Uzun Vadeli Evrim (LTE) ve IP Multimedya Sistemlerinde (IMS) kimlik doğrulama, yetkilendirme ve muhasebe (AAA) bilgilerini değiş tokuş etmek için kullanılan yeni nesil endüstri standardı bir protokoldür. Daha önceki RADIUS protokolünden evrimleşmiştir. RADIUS "Remote Authentication Dial-in User Service" tanımından alan ve uygulama katmanlı protokollerden biridir. İletişim yöntemi olarak Network UDP protokolünü kullanır. Server (Sunucu) / Client (İstemci) mimarisini kullanır.İnternet protokol paketindeki uygulama katmanı protokollerine aittir.