ভার্চুয়াল নেটওয়ার্ক কম্পিউটিং
**ভার্চুয়াল নেটওয়ার্ক কম্পিউটিং** ( **VNC** ) হল একটি গ্রাফিক্যাল ডেস্কটপ-শেয়ারিং সিস্টেম যা দূরবর্তীভাবে অন্য কম্পিউটার নিয়ন্ত্রণ করতে রিমোট ফ্রেম বাফার প্রোটোকল (RFB) ব্যবহার করে। এটি কীবোর্ড এবং মাউস ইনপুট এক কম্পিউটার থেকে অন্য কম্পিউটারে প্রেরণ করে, একটি নেটওয়ার্কের মাধ্যমে গ্রাফিকাল -স্ক্রিন আপডেট রিলে করে।  VNC হল প্ল্যাটফর্ম-স্বাধীন - অনেক GUI-ভিত্তিক অপারেটিং সিস্টেম এবং Java এর জন্য ক্লায়েন্ট এবং সার্ভার রয়েছে। 

একাধিক ক্লায়েন্ট একই সময়ে একটি VNC সার্ভারের সাথে সংযোগ করতে পারে। এই প্রযুক্তির জনপ্রিয় ব্যবহারগুলির মধ্যে রয়েছে দূরবর্তী প্রযুক্তিগত সহায়তা এবং নিজের বাড়ির কম্পিউটার থেকে কারও কাজের কম্পিউটারে ফাইল অ্যাক্সেস করা, বা এর বিপরীতে। ভিএনসি মূলত ইউনাইটেড কিংডমের কেমব্রিজে অলিভেটি এবং ওরাকল রিসার্চ ল্যাবে তৈরি করা হয়েছিল। মূল ভিএনসি সোর্স কোড এবং অনেক আধুনিক ডেরিভেটিভগুলি জিএনইউ জেনারেল পাবলিক লাইসেন্সের অধীনে ওপেন সোর্স ।

ভিএনসি  এর বেশ কয়েকটি রূপ রয়েছে যা তাদের নিজস্ব বিশেষ কার্যকারিতা প্রদান করে; যেমন, কিছু মাইক্রোসফ্ট উইন্ডোজের জন্য অপ্টিমাইজ করা হয়েছে, অথবা ফাইল স্থানান্তর (উপযুক্ত VNC-এর অংশ নয়) অফার করছে। অনেকগুলি VNC-এর সাথে উপযুক্ত (তাদের যোগ বৈশিষ্ট্যগুলি ছাড়াই) এই অর্থে যে এক স্বাদের দর্শক অন্য একটি সার্ভারের সাথে সংযোগ করতে পারে। ; অন্যরা VNC কোডের উপর ভিত্তি করে কিন্তু মান VNC এর সাথে সামঞ্জস্যপূর্ণ নয়। VNC এবং RFB হল US এবং অন্যান্য কিছু দেশে RealVNC Ltd. এর নিবন্ধিত ট্রেডমার্ক ।

ইতিহাস
------

যুক্তরাজ্যের কেমব্রিজে অলিভেটি অ্যান্ড ওরাকল রিসার্চ ল্যাব (ওআরএল)  এমন সময়ে ভিএনসি তৈরি করেছিল যখন অলিভেটি এবং ওরাকল কর্পোরেশন ল্যাবটির মালিক ছিল। 1999 সালে, AT&T ল্যাবটি অধিগ্রহণ করে এবং 2002 সালে ল্যাবের গবেষণা প্রচেষ্টা বন্ধ করে দেয়। AT&T রিসার্চ ল্যাবে থাকাকালীন যারা VNC-তে কাজ করেছেন তাদের মধ্যে রয়েছে:

1. ট্রিস্টান রিচার্ডসন (আবিষ্কারক)
2. অ্যান্ডি হার্টার (প্রকল্প নেতা)
3. কোয়ান্টিন স্টাফোর্ড-ফ্রেজার
4. জেমস ওয়েদারাল
5. অ্যান্ডি হপার

2002 সালে ওআরএল বন্ধ হওয়ার পর, উন্নয়ন দলের বেশ কয়েকজন সদস্য (রিচার্ডসন, হার্টার, ওয়েদারল এবং হপার সহ) সেই নামে ওপেন সোর্স এবং বাণিজ্যিক VNC সফ্টওয়্যারগুলিতে কাজ চালিয়ে যাওয়ার জন্য রিয়েলভিএনসি গঠন করেন। মূল GPLed সোর্স কোড VNC-র অন্যান্য সংস্করণে যোগ করা হয়েছে। এই ধরনের কাঁটাচামচ সামঞ্জস্যের সমস্যার দিকে পরিচালিত করে না কারণ RFB প্রোটোকলটি এক্সটেনসিবল হওয়ার জন্য ডিজাইন করা হয়েছে। VNC ক্লায়েন্ট এবং সার্ভার উভয় প্রান্তে সমর্থিত সবচেয়ে উপযুক্ত বিকল্পগুলি ব্যবহার করার জন্য হ্যান্ডশেকিংয়ের সাথে তাদের ক্ষমতা নিয়ে আলোচনা করে। ২০১৩-এর হিসাব অনুযায়ী[হালনাগাদ], RealVNC লিমিটেড "VNC" শব্দটিকে মার্কিন যুক্তরাষ্ট্র এবং অন্যান্য দেশে একটি নিবন্ধিত ট্রেডমার্ক হিসাবে দাবি করে৷.

ব্যুৎপত্তি
----------

*ভার্চুয়াল নেটওয়ার্ক কম্পিউটার/কম্পিউটিং* (ভিএনসি) নামটি ভিডিওটাইল নামক একটি পাতলা ক্লায়েন্টে ওআরএল-এর কাজ থেকে উদ্ভূত হয়েছে, যেটি আরএফবি প্রোটোকলও ব্যবহার করেছিল। ভিডিওটাইলে কলম ইনপুট সহ একটি এলসিডি ডিসপ্লে এবং নেটওয়ার্কে একটি দ্রুত এটিএম সংযোগ ছিল৷ সেই সময়ে, *নেটওয়ার্ক কম্পিউটার* সাধারণত একটি পাতলা ক্লায়েন্টের প্রতিশব্দ হিসাবে ব্যবহৃত হত; VNC মূলত একটি সফ্টওয়্যার (অর্থাৎ ভার্চুয়াল) নেটওয়ার্ক কম্পিউটার।[]

অপারেশন
-------

* VNC সার্ভার হল মেশিনে এমন একটি প্রোগ্রাম যা কিছু স্ক্রীন শেয়ার করে (এবং এটি একটি শারীরিক প্রদর্শনের সাথে সম্পর্কিত নাও হতে পারে – সার্ভারটি "হেডলেস" হতে পারে), এবং ক্লায়েন্টকে এটির নিয়ন্ত্রণ শেয়ার করার অনুমতি দেয়।
* VNC ক্লায়েন্ট (বা ভিউয়ার) হল এমন একটি প্রোগ্রাম যা সার্ভার থেকে উদ্ভূত স্ক্রীন ডেটা উপস্থাপন করে, এটি থেকে আপডেট গ্রহণ করে এবং সম্ভবত সংগৃহীত স্থানীয় ইনপুট সার্ভারকে জানিয়ে এটি নিয়ন্ত্রণ করে।
* VNC প্রোটোকল ( RFB প্রোটোকল ) খুবই সহজ, একটি গ্রাফিক আদিম সার্ভার থেকে ক্লায়েন্টে প্রেরণের উপর ভিত্তি করে ("নির্দিষ্ট X,Y অবস্থানে পিক্সেল ডেটার একটি আয়তক্ষেত্র রাখুন") এবং ক্লায়েন্ট থেকে সার্ভারে ইভেন্ট বার্তা ।

অপারেশনের স্বাভাবিক পদ্ধতিতে একজন দর্শক সার্ভারের একটি পোর্টের সাথে সংযোগ করে (ডিফল্ট পোর্ট: 5900)। বিকল্পভাবে (বাস্তবায়নের উপর নির্ভর করে) একটি ব্রাউজার সার্ভারের সাথে সংযোগ করতে পারে (ডিফল্ট পোর্ট: 5800)। এবং একটি সার্ভার পোর্ট 5500 এ "লিসেনিং মোডে" একটি দর্শকের সাথে সংযোগ করতে পারে। লিসেনিং মোডের একটি সুবিধা হল যে সার্ভার সাইটটিকে পোর্ট 5900 (বা 5800) এ অ্যাক্সেসের অনুমতি দেওয়ার জন্য তার ফায়ারওয়াল কনফিগার করতে হবে না; দায়িত্বটি ভিউয়ারের উপর, যা কার্যকরী যদি সার্ভার সাইটের কোন কম্পিউটার দক্ষতা না থাকে এবং দর্শক ব্যবহারকারী আরও জ্ঞানী হয়।

সার্ভার ক্লায়েন্টকে ফ্রেমবাফারের ছোট আয়তক্ষেত্র পাঠায়। এর সহজতম আকারে, VNC প্রোটোকল প্রচুর ব্যান্ডউইথ ব্যবহার করতে পারে, তাই যোগাযোগের ওভারহেড কমাতে বিভিন্ন পদ্ধতি তৈরি করা হয়েছে। উদাহরণস্বরূপ, বিভিন্ন *এনকোডিং* রয়েছে (এই আয়তক্ষেত্রগুলি স্থানান্তর করার সবচেয়ে কার্যকর উপায় নির্ধারণের পদ্ধতি)। VNC প্রোটোকল ক্লায়েন্ট এবং সার্ভারকে তারা কোন এনকোডিং ব্যবহার করবে তা নিয়ে আলোচনা করতে দেয়। সহজতম এনকোডিং, 

সমস্ত ক্লায়েন্ট এবং সার্ভার দ্বারা সমর্থিত, হল *কাঁচা এনকোডিং*, যা বাম-থেকে-ডান স্ক্যানলাইন ক্রমে পিক্সেল ডেটা পাঠায়, এবং আসল পূর্ণ স্ক্রীন স্থানান্তরিত হওয়ার পরে, পরিবর্তন হওয়া আয়তক্ষেত্রগুলিকে স্থানান্তর করে। এই এনকোডিংটি খুব ভাল কাজ করে যদি স্ক্রীনের শুধুমাত্র একটি ছোট অংশ এক ফ্রেম থেকে অন্য ফ্রেমে পরিবর্তিত হয় (যেমন যখন একটি মাউস পয়েন্টার একটি ডেস্কটপে চলে যায়, বা যখন পাঠ্য কার্সারে লেখা হয়), তবে ব্যান্ডউইথের চাহিদা অনেক বেশি হয় পিক্সেল একই সময়ে পরিবর্তিত হয় (যেমন একটি উইন্ডো স্ক্রোল করার সময় বা পূর্ণ-স্ক্রীন ভিডিও দেখার সময়)।

VNC ডিফল্টভাবে TCP পোর্ট 5900+ *N* ব্যবহার করে,   যেখানে *N* হল ডিসপ্লে নম্বর (সাধারণত: 0 ফিজিক্যাল ডিসপ্লের জন্য)। জাভা অ্যাপলেট হিসাবে একটি VNC ভিউয়ার প্রদান করার জন্য বেশ কিছু বাস্তবায়ন পোর্ট 5800+ *N-* এ একটি মৌলিক HTTP সার্ভারও চালু করে, যে কোনো জাভা-সক্ষম ওয়েব-ব্রাউজারের মাধ্যমে সহজ সংযোগের অনুমতি দেয়। ক্লায়েন্ট এবং সার্ভার উভয়ই সেই অনুযায়ী কনফিগার করা হলে বিভিন্ন পোর্ট অ্যাসাইনমেন্ট ব্যবহার করা যেতে পারে। আধুনিক ব্রাউজারগুলির জন্য একটি HTML5 VNC ক্লায়েন্ট বাস্তবায়ন (কোনও প্লাগইন প্রয়োজন নেই) বিদ্যমান। 

যদিও কম ব্যান্ডউইথের ক্ষেত্রেও সম্ভব, যদি ব্যবহারকারীর উভয় প্রান্তে ব্রডব্যান্ড সংযোগ থাকে তবে ইন্টারনেটের মাধ্যমে VNC ব্যবহার করা সহজ হয়। যাইহোক, সংযোগের মাধ্যমে যাওয়ার জন্য এটির জন্য উন্নত নেটওয়ার্ক ঠিকানা অনুবাদ (NAT), ফায়ারওয়াল এবং রাউটার কনফিগারেশন যেমন পোর্ট ফরওয়ার্ডিং প্রয়োজন হতে পারে। ব্যবহারকারীরা ভার্চুয়াল প্রাইভেট নেটওয়ার্ক (VPN) প্রযুক্তির মাধ্যমে যোগাযোগ স্থাপন করতে পারে ইন্টারনেটে ব্যবহার সহজ করতে, অথবা একটি LAN সংযোগ হিসাবে যদি VPN একটি প্রক্সি হিসাবে ব্যবহার করা হয়, বা VNC রিপিটারের মাধ্যমে (NAT-এর উপস্থিতিতে দরকারী)।  

*Xvnc* হল Unix VNC সার্ভার, যা একটি আদর্শ X সার্ভারের উপর ভিত্তি করে। অ্যাপ্লিকেশনগুলির জন্য, Xvnc একটি X "সার্ভার" হিসাবে উপস্থিত হয় (অর্থাৎ, এটি ক্লায়েন্ট উইন্ডো প্রদর্শন করে), এবং দূরবর্তী VNC ব্যবহারকারীদের কাছে এটি একটি VNC সার্ভার। অ্যাপ্লিকেশানগুলি Xvnc-এ নিজেদের প্রদর্শন করতে পারে যেন এটি একটি সাধারণ X ডিসপ্লে, তবে সেগুলি একটি ফিজিক্যাল স্ক্রিনের পরিবর্তে যেকোনো সংযুক্ত VNC ভিউয়ারে প্রদর্শিত হবে।  বিকল্পভাবে, স্ক্রীন, কীবোর্ড এবং মাউস সহ একটি মেশিন (যা একটি ওয়ার্কস্টেশন বা একটি নেটওয়ার্ক সার্ভার হতে পারে) একটি পরিষেবা বা ডেমন হিসাবে VNC সার্ভারকে বুট এবং চালানোর জন্য সেট আপ করা যেতে পারে, তারপর স্ক্রীন, কীবোর্ড এবং মাউস সরানো যেতে পারে। এবং মেশিনটি বাইরের জায়গায় সংরক্ষিত।

উপরন্তু, VNC দ্বারা পরিবেশিত ডিসপ্লেটি সার্ভারে ব্যবহারকারীর দ্বারা দেখা একই ডিসপ্লে নয়। ইউনিক্স/লিনাক্স কম্পিউটারগুলিতে যেগুলি একাধিক একযোগে X11 সেশন সমর্থন করে, VNC একটি নির্দিষ্ট বিদ্যমান X11 সেশন পরিবেশন করতে বা নিজস্ব একটি শুরু করার জন্য সেট করা হতে পারে। একই কম্পিউটার থেকে একাধিক VNC সেশন চালানোও সম্ভব। Microsoft Windows-এ পরিবেশিত VNC সেশন সর্বদা বর্তমান ব্যবহারকারী সেশন।[]

ব্যবহারকারীরা সাধারণত একটি ক্রস-প্ল্যাটফর্ম রিমোট ডেস্কটপ সিস্টেম হিসাবে VNC স্থাপন করে। উদাহরণস্বরূপ, Mac OS X- এর জন্য Apple Remote Desktop (এবং কিছু সময়ের জন্য, 'Leopard'-এ "ব্যাক টু মাই ম্যাক "- Mac OS X 10.5 এর মাধ্যমে 'High Sierra' - macOS 10.13) VNC এর সাথে ইন্টারঅপারেটিং করে এবং একটি ইউনিক্স ব্যবহারকারীর সাথে সংযোগ স্থাপন করবে। বর্তমান ডেস্কটপ যদি x11vnc এর সাথে পরিবেশন করা হয়, অথবা একটি পৃথক X11 সেশনে যদি একটি TightVNC এর সাথে পরিবেশিত হয়। ইউনিক্স থেকে, TightVNC অ্যাপল রিমোট ডেস্কটপ দ্বারা পরিবেশিত একটি Mac OS X সেশনের সাথে সংযোগ করবে যদি VNC বিকল্পটি সক্রিয় থাকে, অথবা Microsoft Windows এ চলমান VNC সার্ভারের সাথে।  জুলাই 2014 সালে RealVNC একটি ওয়েল্যান্ড ডেভেলপার পূর্বরূপ প্রকাশ করেছে।

নিরাপত্তা
---------

ডিফল্টরূপে, RFB একটি সুরক্ষিত প্রোটোকল নয়। যদিও পাসওয়ার্ডগুলি প্লেইন-টেক্সটে পাঠানো হয় না ( টেলনেটের মতো), এনক্রিপশন কী এবং এনকোড করা পাসওয়ার্ড উভয়ই নেটওয়ার্ক থেকে শুঁকে থাকলে ক্র্যাকিং সফল হতে পারে। এই কারণে কমপক্ষে 8 অক্ষরের একটি পাসওয়ার্ড ব্যবহার করার পরামর্শ দেওয়া হচ্ছে৷ অন্যদিকে, VNC-এর কিছু সংস্করণে একটি 8-অক্ষরের সীমাও রয়েছে; যদি একটি পাসওয়ার্ড 8 অক্ষরের বেশি পাঠানো হয়, অতিরিক্ত অক্ষরগুলি সরানো হয় এবং কাটা স্ট্রিংটিকে পাসওয়ার্ডের সাথে তুলনা করা হয়।

UltraVNC একটি ওপেন-সোর্স এনক্রিপশন প্লাগইন ব্যবহার সমর্থন করে যা পাসওয়ার্ড প্রমাণীকরণ এবং ডেটা স্থানান্তর সহ সম্পূর্ণ VNC সেশন এনক্রিপ্ট করে। এটি NTLM এবং অ্যাক্টিভ ডিরেক্টরি ব্যবহারকারী অ্যাকাউন্টের উপর ভিত্তি করে প্রমাণীকরণ করার অনুমতি দেয়। যাইহোক, এই ধরনের এনক্রিপশন প্লাগইনগুলির ব্যবহার এটিকে অন্যান্য VNC প্রোগ্রামগুলির সাথে বেমানান করে তোলে। রিয়েলভিএনসি অ্যাক্টিভ ডিরেক্টরির সাথে একীকরণ সহ তার বাণিজ্যিক প্যাকেজের অংশ হিসাবে উচ্চ-শক্তির AES এনক্রিপশন অফার করে। ওয়ার্কস্পট VNC এর জন্য AES এনক্রিপশন প্যাচ প্রকাশ করেছে। TightVNC অনুসারে,  TightVNC সুরক্ষিত নয় কারণ ছবি ডেটা এনক্রিপশন ছাড়াই প্রেরণ করা হয়। এটি এড়াতে, এটি একটি SSH সংযোগের মাধ্যমে টানেল করা উচিত (নীচে দেখুন)।

VNC একটি SSH বা VPN সংযোগের মাধ্যমে টানেল করা যেতে পারে যা শক্তিশালী এনক্রিপশন সহ একটি অতিরিক্ত সুরক্ষা স্তর যুক্ত করবে। SSH ক্লায়েন্ট অধিকাংশ প্ল্যাটফর্মের জন্য উপলব্ধ; ইউনিক্স ক্লায়েন্ট, মাইক্রোসফ্ট উইন্ডোজ ক্লায়েন্ট, ম্যাক ক্লায়েন্ট (ম্যাক ওএস এক্স এবং সিস্টেম 7 এবং পরবর্তী সহ) – এবং আরও অনেকগুলি থেকে এসএসএইচ টানেল তৈরি করা যেতে পারে। এছাড়াও ফ্রিওয়্যার অ্যাপ্লিকেশন রয়েছে যা কম্পিউটারের মধ্যে তাত্ক্ষণিক ভিপিএন টানেল তৈরি করে।

VNC ব্যবহারের জন্য একটি অতিরিক্ত নিরাপত্তা উদ্বেগের বিষয় হল যে কেউ তাদের ডিভাইসের নিয়ন্ত্রণ নেওয়ার আগে ব্যবহৃত সংস্করণটির জন্য দূরবর্তী কম্পিউটার মালিকের কাছ থেকে অনুমোদনের প্রয়োজন আছে কিনা তা পরীক্ষা করা। এটি এমন পরিস্থিতি এড়াবে যেখানে অ্যাক্সেস করা কম্পিউটারের মালিক বুঝতে পারেন যে কেউ পূর্বের বিজ্ঞপ্তি ছাড়াই তাদের ডিভাইসের নিয়ন্ত্রণে রয়েছে।

তথ্যসূত্র
---------

1. ↑  Richardson, T.; Stafford-Fraser, Q. (১৯৯৮)। "Virtual network computing" (পিডিএফ): 33–38। ডিওআই:10.1109/4236.656066। সাইট সিয়ারX 10.1.1.17.5625 অবাধে প্রবেশযোগ্য।
2. ↑  "The VNC family of Remote Control Applications: a list of VNC variants"। ৭ ডিসেম্বর ২০২৩ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ১৫ ডিসেম্বর ২০২৩।
3. ↑  "VNC Frequently Asked Questions (FAQ)"। ১৯৯৯। ২০০০-০৮-১৫ তারিখে মূল থেকে আর্কাইভ করা।
4. ↑  "RealVNC Executive Profiles"। ১৫ মে ২০১৬ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ১৫ ডিসেম্বর ২০২৩।
5. ↑  Copyright and trademarks RealVNC. Accessed Feb 23, 2018.
6. ↑  "RealVNC - Frequently asked questions"।
7. ↑  "UltraVnc Configuration"। ৩ জুলাই ২০১১ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ১৫ ডিসেম্বর ২০২৩।
8. ↑  "noVNC"।
9. ↑  "OpenWRT VNC repeater"।
10. ↑  "uVNC repeater"।
11. ↑  AT&T Laboratories Cambridge (১৯৯৯)। "X-based VNC server"। *Virtual Network Computing*। ২০০৭-০৩-১৯ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০০৭-০৩-২৪।
12. ↑  "OnlineVNC Server for Windows OSes"।
13. ↑  "VNC® Wayland Developer Preview"। ২০১৪-০৭-০৮। ২০১৪-০৭-১৪ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৪-০৭-১০।
14. ↑  "RealVNC Wayland developer preview email"। freedesktop.org। ২০১৪-০৭-০৯।
15. ↑  How secure is TightVNC? TightVNC Frequently Asked Questions. TightVNC.com Accessed Feb 23, 2018