• Sonuç bulunamadı

Yeni web iletişim yöntemi Websocket protokolünün geleneksel yöntemlerle karşılaştırılması

N/A
N/A
Protected

Academic year: 2022

Share "Yeni web iletişim yöntemi Websocket protokolünün geleneksel yöntemlerle karşılaştırılması"

Copied!
5
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

158

Yeni web iletişim yöntemi Websocket protokolünün geleneksel yöntemlerle karşılaştırılması

Onur CÖMERT

1

Mahmut HEKİM

2

1

Gaziosmanpaşa Üniversitesi, Mekatronik Mühendisliği

2

Gaziosmanpaşa Üniversitesi, Elektrik-Elektronik Mühendisliği

1

onur.comert@gop.edu.tr

2

mahmut.hekim@gop.edu.tr

Özet

İnternet, hızlı büyüyen bilgi çağında insan hayatının vazgeçilmez bir parçası haline gelmiştir. Bu talebe cevap olarak web tabanlı uygulamaların sayısı da artmaktadır. Web tabanlı uygulamalar istemci ve sunucu tarafı olmak üzere iki birim halinde çalışmaktadır. İstemci tarafı genellikle bir web tarayıcısıdır. Sunucudan içerik talebinde bulunur. Sonuç olarak sunucu, istemciye gerekli bilgileri sağlar. Sunucu ile istemci arasındaki iletişimi gerçekleştirmek için genelde Polling, Long Polling ve Comet web iletişim yöntemleri kullanılmaktadır. Bu çalışmada yeni web iletişim yöntemi olan Websocket, Long Polling ile karşılaştırılmıştır. Bunun için bir web sunucusu ve bir istemci bilgisayar kullanılmıştır.

Sunucuda biri Websocket yöntemi ile diğeri ise Long Polling yöntemi ile bağlantıyı kabul eden iki ayrı web sayfası hazırlanmıştır. Bu web sayfalarını görüntülemek için bir tarayıcı kullanan istemci bilgisayar sunucu üzerinde bulunan veriyi farklı büyüklükte parçalar halinde ve belli aralıklarla kendi belleğine indirmektedir. Yapılan diğer deneylerde ise istemci bilgisayar, farklı büyüklüklerdeki veriyi belli aralıklarla sunucuya göndermektedir. Karşılaştırma, kullanılan bant genişliğine göre yapılmıştır. Elde edilen deney sonuçları karşılaştırılarak Websocket yönteminin Long Polling yöntemine göre avantaj ve dezavantajları sunulmuştur.

1. Giriş

Internet, hızlı büyüyen bilgi çağında insan hayatının vazgeçilmez bir parçası haline gelmiştir. Gittikçe daha fazla insan başkalarıyla iletişim kurmak, oyun oynamak, içerik sağlamak, bilgi edinmek vb. işlemler için interneti kullanmakta ve bu etkinliklere daha fazla vakit ayırmaktadır.

Oluşan bu talebe cevap olarak Web tabanlı uygulamaların sayısı da gittikçe artmaktadır.

Web tabanlı uygulamalar istemci ve sunucu tarafı olmak üzere iki birim halinde çalışmaktadır. İstemci tarafı genellikle bir Web tarayıcısıdır. Sunucudan içerik talebinde bulunur.

Sunucu cihaz üzerinde istemcilerin talep edeceği içerikler depolanır. Ayrıca mantıksal süreçler ve işlemlerin çoğu sunucu tarafında gerçekleşir. Sonuç olarak sunucu, istemciye gerekli bilgileri sağlar.

Web tabanlı uygulama geliştirmenin avantajları şöyle sıralanabilir: Birincisi platform bağımsızdır. Bir Web tarayıcı yeterlidir. İkincisi, geliştirmek kolaydır. Web tabanlı uygulamalar geliştirmek için temelde HTML (Hyper Text Markup Language) dili kullanılır. Üçüncüsü, yeni bir sürümün dağıtımı kolaydır. Kullanıcılar bir Web uygulamasının son çıkan sürümünü bilgisayarlarında çalıştırmak istediklerinde Web sunucuya bağlanarak onu kolayca elde edebilirler.

Web tabanlı uygulamaların yukarıda bahsedilen avantajlarının yanı sıra birçok dezavantajı da bulunmaktadır.

İstemciler sunucu ile bağlantı kurmak için bir HTTP (Hyper Text Transfer Protocol) bağlantısı kurmak zorundadırlar.

Ama HTTP tek yönlü bir iletişim protokolüdür. Yani bu protokolde iletişim yalnızca bir istemcinin isteği ile meydana gelir. istemci için veri güncellemesi olup olmadığının sürekli olarak kontrol edilmesi nedeniyle çok sayıda gereksiz istek yapılmaktadır [1]. Bu dezavantajları ortadan kaldırmak amacıyla birçok yöntem geliştirilmiştir. AJAX tabanlı HTTP Long Polling ve Comet bunlardan en önemlileridir.

HTTP Long Polling yönteminde, istemcinin talep edeceği veride bir değişiklik olana kadar ya da belli bir zaman aşımı süresi dolana kadar bağlantı açık kalmaktadır. Böylece hem Web tarayıcısında sayfaları tekrar yüklemeden değişen

(2)

159 içerikler elde edilebilmekte hem de sunucu istemciye boş mesaj göndermemektedir. Bu tekniğin çekincesi, aynen HTTP Polling’te olduğu gibi birkaç saniyede bir veride değişiklik olup olmadığının sorgulanması gerekmektedir [1,2,3].

Websocket, W3C (World Wide Web Consortium) tarafından belirlenen JS API ve IETF protokollerini kapsamaktadır.

Websocket API henüz standartlaştırılmamıştır. Yine de birçok Web tarayıcısı onu son şekliyle bünyesine dâhil etmiştir. TCP (Transmission Control Protocol) üzerinde çalışan bir ağ protokolüdür. Web tarayıcılarında ve Web sunucularında çalıştırılmak için tasarlanmıştır ama başka amaçlar için de kullanılabilir. HTTP protokolünden bağımsız olmasına rağmen bir bağlantının başlatılması için gereken handshake (el sıkışma) işlemi yönünden benzerlikler arz eder.

Websocket sunucular HTTP ile aynı portu (TCP 80 ya da 443) kullanırlar [4,5,6].

Websocket, TCP Web uygulamaları olarak bilinir ve TCP bağlantı (three-way-handshake) ile çok fazla benzerliklere sahiptir. İlk önce istemci sunucuya bir HTTP isteğinde bulunur. Bu istek, “Upgrade Websocket” eklentili başlık bilgisine sahiptir. Bu, HTTP isteğinin Websocket’li bir handshake istek olduğu anlamına gelir. Sonra sunucu HTTP isteğini alır, istek içindeki bilgileri analiz eder ve o istemci için bir güvenlik anahtarı oluşturur. Bu noktaya değin Websocket bağlantısının oluşumu tamamlanır ve artık bu bağlantı aracılığıyla her iki taraf (sunucu ve istemci) birbirine veri iletebilir. Bağlantı oluşturulduktan sonra, sunucuya bir oturum numarası gönderilecektir. Bu numara yalnızca belli bir Socket’i belirtir. Sunucu, kendisiyle bağlantıya geçen bütün istemcileri yönetebilmek için bir oturum numara listesi muhafaza eder. İstemci tarafında tarayıcı kapatıldığında sunucu bir uyarı mesajı alır ve sonra tarayıcı ve ona bağlı kaynaklar sunucunun istemci listesinden silinmeye başlar [5,6].

Websocket’in ortaya çıkışının asıl amacı Comet ve HTTP Polling (ve HTTP Long Polling) in yerine geçmek ve gerçek zamanlı Web uygulamalarının vasat durumunu iyileştirmektir.

HTTP üzerindeki alışılmış iletişim yöntemi ile karşılaştırıldığında Websocket’in temel farkı geleneksel istek/cevap standardını takip etmemesidir. Websocket veri işlemek için daha düşük işletim kaynağına gereksinim duyar.

Periyodik olarak küçük verilerin taşınması gereken durumlarda Websocket daha az ağ trafiği gerektirir.

Websocket, sıradan HTTP yöntemi ile karşılaştırıldığında ağ trafiğini 500:1 oranına kadar düşürebilir [5,7]. Çünkü Websocket bağlantısında her bir çerçeve boyutu 2 bayttır.

Long Polling’te ise 1 KB’ı geçer. Websocket te, her bir HTTP mesajı göndermek amacıyla yeni bir TCP bağlantı kurulmaz.

Böylece bunun için gereken bir gecikme de olmaz [1].

Websocket protokolünün iletişim performansını ve uygulanabilirliğini sınamak ve diğer iletişim metotlarıyla

karşılaştırmak amacıyla birçok çalışma yapılmıştır. Bu çalışmalarda genellikle çeşitli alanlarda Websocket tabanlı uygulamalar önerilmiş ve bunlar üzerinde deneyler yapılarak sonuçlar değerlendirilmiştir. Örneğin: Chen ve Xu, yaptıkları çalışmada, HTML5 ile Web tarayıcı tabanlı çok oyunculu oyunların real-time performansını ve uygulanabilirliğini araştırmak amacıyla WebGL (Web-based Graphics Library) ve Websocket kullanan oyun sistemleri için bir framework tasarlamışlardır. Sonuç olarak Websocket ve WebGL teknolojilerinin tarayıcı tabanlı çok oyunculu oyunların gelişimini kesinlikle destekleyeceğini vurgulamışlardır [8].

Yapılan bir diğer çalışmada Furukawa, Websocket kullanılan bir Web tabanlı kontrol yazılımı geliştirmiştir. Bu uygulamaya erişmek için hem bilgisayar hem de mobil ortamlarda farklı tarayıcılar kullanmıştır. Aldığı başarılı sonuçlar ile Websocket protokolünün Web uygulamalarında kullanılabileceği göstermiştir [4]. Swamy ve Mahadevan ise bir istemci/sunucu iletişim sistemi önermişler ve yaptıkları çalışmada Websocket protokolü kullanarak, ortalama gecikmenin 150ms den 50ms ye azaldığını ve Websocket’in, bant genişliği ve ölçeklenebilirlik açısından Long Polling’den çok daha iyi performans sergilediğini belirtmişlerdir [1].

Daha sonra Jiang ve Duan, Web iletişimine dayalı çalışan bir WTC (Web Tree Component) geliştirmişlerdir. Uygulamayı, HTTP Long Polling, Comet ve Websocket kullanılarak test etmişlerdir. Diğer iki yöntemle karşılaştırıldığında Websocket teknolojisine dayalı programın, sunucu yükünü azaltmada, ağ bağlantı kesintilerini düşürmede ve real-time bağlantıda büyük avantajlara sahip olduğunu vurgulamışlardır. Ayrıca, etkili bir WTC iletişimi sağladığını ve düğüm veri iletim miktarını düşürerek WTC’nin temeli olan ağaç yapısının genişleme hızını artırabileceğini belirtmişlerdir [2]. Yine Pimentel ve Nickerson, Websocket iletişiminin HTML Polling den daha hızlı olup olmadığını anlamak için, 4 Hz hızında gönderilen gerçek zamanlı rüzgar sensör verisinin tek yönlü iletim gecikmesini ölçmek için bir Web uygulaması gerçekleştirmiştir. Websocket gecikmesini HTTP Polling ve Long Polling ile karşılatırmışlardır. Sonuçta Polling metodundaki ortalama gecikmenin, Websocket veya Long Polling’e göre 2.3 ila 4.5 kat daha fazla olduğunu saptamışlardır. Sunucuya daha uzak mesafe bulunan istemcilerde ise Websocket’te, Long Polling’e göre 3.8 ila 4 kat daha az ortalama gecikeme olduğunu tespit etmişlerdir [3]. Bu sonuçlar da gösteriyor ki real-time internet bağlantılarında Websocket ortalamada daha mantıklı bir yöntemdir. Daha sonra Zhangling ve Mao, yaptıkları çalışmada Websocket tabanlı bir grup iletişim yazılımı önermişlerdir. Websocket tabanlı iletişim modülü, sistemin cevap verme yeteneğini artıran iki yönlü ve eş zamanlı olmayan bir şekilde istemci ile iletişim kurmaktadır.

Yaptıkları testlerde sunucuya sürekli olarak 100 baytlık mesaj göndermişlerdir. Toplamda 319 mesaj başarılı bir şekilde sunucuda işlenmiştir. Bu sonuçlar gösterdi ki bunun gibi bir Websocket tabanlı uygulama, düşük maliyetli bir sunucu donanımı üzerinde kolay bir şekilde çalışabilmektedir [7].

Chao ve ark. ise Web uygulamalarında real-time iletişim

(3)

160 üzerine yaptıkları çalışmada, Websocket ve Polling metotları üzerinde 8 farklı deney yapmışlardır. Sonuçta real-time gerektiren daha ileri koşullarda Websocket’in performansının genellikle daha iyi olduğunu saptamışlardır. Deneylerde, Websocket’in aynı veri iletimi için Polling’e göre 4.48 ila 44.77 kat daha az trafik oluşturduğunu göstermişlerdir [6].

Verilen bu örnekler, Websocket protokolünün real-time uygulamalarda diğer yöntemlere olan üstünlüğünü ortaya koymaktadır.

2. Materyal ve Metot

2.1. Materyal

Deneylerde kullanılan sunucu cihazın donanım ve yazılım özellikleri aşağıdaki gibidir.

İşletim Sistemi: Ubuntu 14.04.3

İşlemci: Intel(R) Xeon(R) CPU E7- 2850 @ 2.00GHz Bellek: 8 GB

Sunucu cihaz üzerinde Apache 2.8 Web Sunucu Hizmeti kullanılarak Web sayfaları üzerinden sunucuya erişim sağlanmıştır. Web sayfaları PHP, HTML ve JS dilleri kullanılarak hazırlanmıştır.

Deneyler sırasında oluşan bant genişliğinin ölçülmesi ve paketlerin izlenmesi amacıyla Wireshark programı kullanılmıştır.

2.2. Metot

Çalışmada hem sunucudan istemciye hem de istemciden sunucuya doğru veri gönderilmiş ve toplam 18 farklı deney yapılmıştır. Yapılan deneyler aşağıdaki gibidir:

Durum-1: Her saniyede bir 1 baytlık veri gönderilmiştir.

Durum-1-2: Her saniyede bir 100 baytlık veri gönderilmiştir.

Durum-1-3: Her saniyede bir 1 kilobaytlık veri gönderilmiştir.

Durum-2: Her 25 saniyede bir 1 baytlık veri gönderilmiştir.

Durum-2-2: Her 25 saniyede bir 100 baytlık veri gönderilmiştir.

Durum-2-3: Her 25 saniyede bir 1 kilobaytlık veri gönderilmiştir.

Durum-3: Her 60 saniyede bir 1 baytlık veri gönderilmiştir.

Durum-3-2: Her 60 saniyede bir 100 baytlık veri gönderilmiştir.

Durum-3-3: Her 60 saniyede bir 1 kilobaytlık veri gönderilmiştir.

Yapılan deneylerin sonuçları aşağıdaki grafiklerde görülmektedir.

Şekil 18: Sunucudan İstemciye Veri Gönderimi

Şekil 2: Sunucudan İstemciye Veri Gönderimi

Şekil 3: Sunucudan İstemciye Veri Gönderimi 0

200 400 600 800 1000 1200 1400

Websocket Polling

0 10 20 30 40 50 60

Websocket Polling

0 5 10 15 20 25 30

Websocket Polling

(4)

161 0

20 40 60 80 100 120

Websocket Polling

0 10 20 30 40 50

Websocket Polling Şekil 4: İstemciden Sunucuya Veri Gönderimi

Şekil 5: İstemciden Sunucuya Veri Gönderimi

Şekil 6: İstemciden Sunucuya Veri Gönderimi

Grafiklerde Y ekseni, bayt biriminden saniyede alınan ve gönderilen toplam veriyi göstermektedir. Şekil 1, Şekil 2 ve Şekil 3 teki grafiklerde de görüldüğü gibi yapılan deneylerde, kullanılan bant genişliği açısından Long Polling metodu

Websocket metoduna göre ortalama %39,92 daha verimli olmuştur.

Şekil 4, Şekil 5 ve Şekil 6 daki grafiklerde görüldüğü üzere, yapılan deneylerde, kullanılan bant genişliği açısından Websocket metodu Long Polling metoduna göre ortalama

%54,63 daha verimli olmuştur.

3. Sonuç

Bu çalışmada, geleneksel Long Polling metodu ile yeni bir yöntem olan Websocket yöntemini kullanılan bant genişliği açısından karşılaştırmak için bir dizi deney yapılmıştır.

Deneylerin sonuçlarına göre, sürekli olarak sunucudan istemciye doğru veri gönderilmesi durumunda Long Polling metodunun daha verimli olduğu gözlenmiştir. Bunun nedeni Websocket metoduna göre daha performanslı bir Keep-Alive yönetimi kullanmasıdır. Keep-Alive mesajı, Long Polling yönteminde, 30 saniyeden daha az aralıklarla veri gönderilmesi durumunda hiç gönderilmemekte ve veri gönderilmesi durumunda da ötelemektedir. Bu sayede bağlantının hayatta kalması için daha az veri trafiği yapılmaktadır. Websocket yönteminde ise veri gönderilse de gönderilmese de sabit 25 saniye aralıklarla bu mesaj gönderilmektedir. Bu da fazladan bant genişliği demektir.

Sürekli olarak istemciden sunucuya veri gönderilmesi gereken durumlarda ise Websocket yöntemi, bant genişliği açısından Long Polling yöntemine göre daha fazla performans göstermiştir. Bunun nedeni, Long Polling metodunda istemcinin, veri göndermek için sürekli olarak sunucuya bağlantı isteği göndermek zorunda kalmasıdır. Bu da fazladan veri trafiği anlamına gelmektedir. Websocket yönteminde ise bant genişliği sabit kalmaktadır.

Sonuç olarak, Websocket yöntemi Long Polling metoduna göre ortalamada %14,71 ve en fazla %54,63 oranında daha yüksek performans göstermiştir. Bu da, henüz yeni bir yöntem olmasına rağmen Websocket yönteminin ileriki zamanlarda ve bazı uygulamalarda tercih edilebileceğini göstermiştir.

0 500 1000 1500 2000 2500

Websocket Polling

(5)

162

4. Kaynaklar

[1] Swamy R. ve Mahadevan G., 2011. Event Driven Architecture using HTML5 Web Sockets for Wireless Sensor Networks, Planetary Scientific Research Center.

[2] Jiang F. ve Duan H., 2012. Application Research of Websocket Technology on Web Tree Component, 2012, International Symposium on Information Technology in Medicine and Education (ITME 2012) IEEE, 978-1-4673-2108-2/12, sayfa:889-892.

[3] Pimentel V. ve Nickerson B., 2012. Communicating and Displaying Real-Time Data with Websocket, IEEE Computer Society, 1089-7801/12, sayfa:45-53.

[4] Furukawa Y., 2011. Web-based Control Application Using Websocket, Proceedings of ICALEPCS2011, Grenoble, France, WEMAU010, sayfa:673-675.

[5] Erkkilä J., 2012. Websocket Security Analysis, Aalto University T-110.5291 Seminar on Network Security.

[6] Chao Y., Ming L. ve Yan L., 2014. Review on Real- time Communications Technology in Web Application, Advanced Materials Research Vols. 1044-1045, safya:1309-1314.

[7] Zhangling Y. ve Mao D., 2012. A real-time Group Communication Architecture Based on Websocket, International Journal of Computer and Communication Engineering, Vol. 1, No. 4, sayfa:408-411.

[8] Chen B. ve Xu Z., 2011. A Framework for Browser- based Multiplayer Online Games using WebGL and Websocket, IEEE, 978-1-61284-774-0/11, sayfa:471- 474.

Referanslar

Benzer Belgeler

19 yaş ve üzeri öğrencilerde parazit görülme oranı 18 yaş altı öğrencilere göre daha yüksek bulunmakla birlikte, yaş ile parazit görülmesi arasındaki

Ebe veya hemşire, hastaya randevu verdiği saatte veya hasta görüşmek istediğinde işi çıktığı için.. görüşemeyecekse bunu hastaya açıkça söylemeli, ne zaman

Hasta, hemşirenin kişisel yaşamıyla ilgili sorular sorduğunda, hemşire önce bu sorunun nedenini araştırmalıdır.. Hemşire, soruyu kısaca

B undan 34 yıl kadar önce Ankara'nın Cebeci semtin­ de, mütevazi bir okul bi­ nasının şirin salonunda yine ay­ nı orkestra topluluğunu yönete­ rek ilk

Sabahattin Beyin idealist bir Türk vatanseveri sıfatıyle yarım asır kadar devam eden mücade­ lelerine alâkasız kalmayacak, uzak görüşlü ilim adamına karşı

Figure E.1 Comparison of Shear Stress Displacement Behavior of Sand, Used Tire Granulates and Sand and Used Granulates Mixtures (σ = 100 kN / m 2

臺北醫學大學今日北醫: 醫療主題故事巡迴展 白袍的故事特展 醫療主題故事巡迴展

[r]