กลับไปหน้าบทความ

อ่าน 5 นาที

วีเอ็นซี

VNC ( Virtual Network Computing ) เป็นระบบแชร์เดสก์ท็อปแบบกราฟิกที่ใช้ โปรโตคอล Remote Frame Buffer ( RFB ) เพื่อควบคุมคอมพิวเตอร์เครื่อง อื่นจากระยะไกล โดยจะส่ง ข้อมูลอินพุตจาก

วีเอ็นซี

โลโก้การประมวลผลเครือข่ายเสมือน
VNC ในKDE 3.1

VNC ( Virtual Network Computing ) เป็นระบบแชร์เดสก์ท็อปแบบกราฟิกที่ใช้ โปรโตคอล Remote Frame Buffer ( RFB ) เพื่อควบคุมคอมพิวเตอร์เครื่อง อื่นจากระยะไกล โดยจะส่ง ข้อมูลอินพุตจาก แป้นพิมพ์และเมาส์จากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่ง พร้อมทั้งส่งต่อ การอัปเดต หน้าจอกราฟิก ผ่านเครือข่าย [ 1 ] การใช้งานเทคโนโลยีนี้ที่ได้รับความนิยม ได้แก่ การสนับสนุนทางเทคนิคจากระยะไกล และการเข้าถึงไฟล์ในคอมพิวเตอร์ที่ทำงานจากคอมพิวเตอร์ที่บ้าน หรือในทางกลับกัน

VNC เป็นอิสระจากแพลตฟอร์ม โดยมีทั้งไคลเอ็นต์และเซิร์ฟเวอร์สำหรับระบบปฏิบัติการ GUI หลายระบบและสำหรับJavaไคลเอ็นต์หลายรายสามารถเชื่อมต่อกับเซิร์ฟเวอร์ VNC ได้ในเวลาเดียวกัน มี VNC หลายเวอร์ชัน[ 2 ]ที่นำเสนอฟังก์ชันการทำงานเฉพาะของตนเอง เช่น บางเวอร์ชันได้รับการปรับให้เหมาะสมสำหรับMicrosoft Windowsหรือมีฟังก์ชันการถ่ายโอนไฟล์ (ซึ่งไม่ได้เป็นส่วนหนึ่งของ VNC หลัก) เป็นต้น หลายเวอร์ชันสามารถใช้งานร่วมกับ VNC หลักได้ (โดยไม่มีคุณสมบัติเพิ่มเติม) ในแง่ที่ว่าโปรแกรมดูเวอร์ชันหนึ่งสามารถเชื่อมต่อกับเซิร์ฟเวอร์อีกเวอร์ชันหนึ่งได้ ในขณะที่บางเวอร์ชันใช้โค้ด VNC แต่ไม่เข้ากันกับ VNC มาตรฐาน

VNC ถูกพัฒนาขึ้นครั้งแรกที่ห้องปฏิบัติการวิจัย Olivetti & Oracleในเมืองเคมบริดจ์ สหราชอาณาจักร ซึ่งต่อมานักพัฒนาได้ก่อตั้งบริษัท RealVNC Ltd และจดทะเบียนเครื่องหมายการค้า VNC และ RFB ในสหรัฐอเมริกาและประเทศอื่นๆโค้ดต้นฉบับของ VNC และเวอร์ชันที่พัฒนาต่อยอดในปัจจุบันหลายตัวเป็นโอเพนซอร์สภายใต้ สัญญาอนุญาต GNU General Public License

ประวัติศาสตร์

ห้องปฏิบัติการวิจัย Olivetti & Oracle (ORL) [ 3 ]ที่เคมบริดจ์ในสหราชอาณาจักรได้พัฒนา VNC ในช่วงเวลาที่OlivettiและOracle Corporationเป็นเจ้าของห้องปฏิบัติการ นักพัฒนาที่ทำงานเกี่ยวกับ VNC ขณะอยู่ที่ห้องปฏิบัติการวิจัย AT&T ได้แก่ Tristan Richardson (ผู้คิดค้น), Andy Harter (หัวหน้าโครงการ), Quentin Stafford-Fraser , James Weatherall และAndy Hopper [ 4 ] ชื่อ Virtual Network Computer/Computing (VNC) มีที่มาจากงานของ ORL เกี่ยวกับ ไคล เอนต์แบบบางที่เรียกว่า Videotile ซึ่งใช้โปรโตคอล RFB เช่นกัน Videotile มีจอ LCD พร้อมอินพุตปากกาและ การเชื่อมต่อ ATM ที่รวดเร็ว กับเครือข่าย ในขณะนั้นคอมพิวเตอร์เครือข่ายมักใช้เป็นคำพ้องความหมายสำหรับไคลเอนต์แบบบาง VNC โดยพื้นฐานแล้วเป็นคอมพิวเตอร์เครือข่ายแบบซอฟต์แวร์เท่านั้น (เช่น เสมือน)

ในปี 1999 AT&T ได้เข้าซื้อห้องปฏิบัติการ และในปี 2002 ได้ปิดการวิจัยของห้องปฏิบัติการลง หลังจากนั้น สมาชิกหลายคนของทีมพัฒนา (รวมถึง Richardson, Harter, Weatherall และ Hopper) ได้ก่อตั้ง RealVNC เพื่อดำเนินการพัฒนา ซอฟต์แวร์ VNC แบบ โอเพนซอร์สและเชิงพาณิชย์ต่อไปภายใต้ชื่อดังกล่าว ณ ปี 2013 RealVNC Ltd ได้อ้างสิทธิ์ในคำว่า "VNC" เป็นเครื่องหมายการค้าจดทะเบียนในสหรัฐอเมริกาและประเทศอื่นๆ[ 5 ]

ซอร์สโค้ดดั้งเดิมที่ได้รับอนุญาตภายใต้ GPL ได้ถูกนำไปใช้ใน VNC เวอร์ชันอื่นๆ อีกหลายเวอร์ชันการแยกโค้ด เช่นนี้ ไม่ได้ทำให้เกิดปัญหาด้านความเข้ากันได้ เนื่องจากโปรโตคอล RFBถูกออกแบบมาให้สามารถขยายได้ ไคลเอนต์และเซิร์ฟเวอร์ VNC จะเจรจาความสามารถระหว่างกันด้วยการจับมือ (handshaking)เพื่อเลือกใช้ตัวเลือกที่เหมาะสมที่สุดซึ่งรองรับได้ทั้งสองฝั่ง

การออกแบบและการดำเนินงาน

เซิร์ฟเวอร์ VNC คือโปรแกรมบนเครื่องที่แชร์หน้าจอ (และอาจไม่เกี่ยวข้องกับจอแสดงผลทางกายภาพ: เซิร์ฟเวอร์อาจเป็นแบบ"ไร้หน้าจอ" ) และอนุญาตให้ไคลเอนต์แชร์การควบคุมหน้าจอนั้นได้ไคลเอนต์ VNC (หรือโปรแกรมดู) คือโปรแกรมที่แสดงข้อมูลหน้าจอที่มาจากเซิร์ฟเวอร์ รับการอัปเดตจากเซิร์ฟเวอร์ และควบคุมหน้าจอโดยการแจ้งข้อมูลอินพุตที่รวบรวมได้จากเครื่องไปยังเซิร์ฟเวอร์โปรโตคอล VNC ( โปรโตคอล RFB ) นั้นง่ายมาก โดยอาศัยการส่งข้อมูลกราฟิกพื้นฐานหนึ่งอย่างจากเซิร์ฟเวอร์ไปยังไคลเอนต์ ("วางสี่เหลี่ยมผืนผ้าที่มี ข้อมูล พิกเซลที่ตำแหน่ง X,Y ที่กำหนด") และข้อความเหตุการณ์จากไคลเอนต์ไปยังเซิร์ฟเวอร์

โดยปกติแล้ว ผู้ใช้งานจะเชื่อมต่อกับพอร์ตบนเซิร์ฟเวอร์ (พอร์ตเริ่มต้น: 5900) หรืออีกทางเลือกหนึ่ง (ขึ้นอยู่กับการใช้งาน) เบราว์เซอร์สามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ (พอร์ตเริ่มต้น: 5800) และเซิร์ฟเวอร์สามารถเชื่อมต่อกับผู้ใช้งานใน "โหมดรอรับข้อมูล" บนพอร์ต 5500 ข้อดีอย่างหนึ่งของโหมดรอรับข้อมูลคือ ฝั่งเซิร์ฟเวอร์ไม่จำเป็นต้องตั้งค่าไฟร์วอลล์เพื่ออนุญาตการเข้าถึงพอร์ต 5900 (หรือ 5800) หน้าที่นี้จะตกอยู่กับผู้ใช้งาน ซึ่งเป็นประโยชน์หากฝั่งเซิร์ฟเวอร์ไม่มีความเชี่ยวชาญด้านคอมพิวเตอร์ และผู้ใช้งานมีความรู้มากกว่า

เซิร์ฟเวอร์จะส่งสี่เหลี่ยมเล็กๆ ของเฟรมบัฟเฟอร์ไปยังไคลเอนต์ ในรูปแบบที่ง่ายที่สุด โปรโตคอล VNC สามารถใช้แบนด์วิดท์ ได้มาก ดังนั้นจึงมีการคิดค้นวิธีการต่างๆ เพื่อลดภาระการสื่อสาร ตัวอย่างเช่น มีการเข้ารหัส หลายแบบ (วิธีการกำหนดวิธีที่มีประสิทธิภาพที่สุดในการถ่ายโอนสี่เหลี่ยมเหล่านี้) โปรโตคอล VNC อนุญาตให้ไคลเอนต์และเซิร์ฟเวอร์เจรจาว่าจะใช้การเข้ารหัสแบบใด การเข้ารหัสที่ง่ายที่สุด ซึ่งรองรับโดยไคลเอนต์และเซิร์ฟเวอร์ทั้งหมด คือ การเข้ารหัสแบบดิบ (raw encoding ) ซึ่งส่งข้อมูลพิกเซลตามลำดับเส้น สแกนจากซ้ายไปขวาและหลังจากส่งหน้าจอเต็มต้นฉบับแล้ว จะส่งเฉพาะสี่เหลี่ยมที่เปลี่ยนแปลงเท่านั้น การเข้ารหัสนี้ทำงานได้ดีมากหากมีเพียงส่วนเล็กๆ ของหน้าจอเปลี่ยนแปลงจากเฟรมหนึ่งไปยังอีกเฟรมหนึ่ง (เช่น เมื่อตัวชี้เมาส์เคลื่อนที่ไปบนเดสก์ท็อป หรือเมื่อเขียนข้อความที่เคอร์เซอร์) แต่ความต้องการแบนด์วิดท์จะสูงมากหากมีพิกเซลจำนวนมากเปลี่ยนแปลงพร้อมกัน (เช่น เมื่อเลื่อนหน้าต่างหรือดูวิดีโอแบบเต็มหน้าจอ)

โดยค่าเริ่มต้น VNC ใช้พอร์ต TCP 5900+ N [ 6 ] [ 7 ]โดยที่ N คือหมายเลขจอแสดงผล (โดยปกติคือ :0 สำหรับจอแสดงผลจริง) การใช้งานหลายอย่างยังเริ่มต้นเซิร์ฟเวอร์HTTP พื้นฐาน บนพอร์ต 5800+ Nเพื่อให้บริการ VNC viewer ในรูปแบบJava appletทำให้สามารถเชื่อมต่อได้ง่ายผ่านเว็บเบราว์เซอร์ที่รองรับ Java การกำหนดพอร์ตที่แตกต่างกันสามารถใช้งานได้ตราบใดที่ทั้งไคลเอ็นต์และเซิร์ฟเวอร์ได้รับการกำหนดค่าอย่างเหมาะสม นอกจากนี้ยังมีการใช้งานไคลเอ็นต์ VNC HTML5 สำหรับเบราว์เซอร์สมัยใหม่ (ไม่จำเป็นต้องใช้ปลั๊กอิน) อีกด้วย[ 8 ]

แม้ว่าจะสามารถใช้งานได้แม้ในแบนด์วิดท์ต่ำ การใช้ VNC ผ่านทางอินเทอร์เน็ตจะสะดวกยิ่งขึ้นหากผู้ใช้มี การเชื่อมต่อ บรอดแบนด์ทั้งสองฝั่ง อย่างไรก็ตาม อาจต้องใช้การแปลงที่อยู่เครือข่าย (NAT) ขั้นสูง การกำหนด ค่าไฟร์วอลล์และเราเตอร์เช่นการส่งต่อพอร์ตเพื่อให้การเชื่อมต่อสำเร็จ ผู้ใช้อาจสร้างการสื่อสารผ่าน เทคโนโลยี เครือข่ายส่วนตัวเสมือน (VPN) เพื่ออำนวยความสะดวกในการใช้งานผ่านทางอินเทอร์เน็ต หรือเป็นการเชื่อมต่อ LAN หากใช้ VPN เป็นพร็อกซี หรือผ่านตัวทวนสัญญาณ VNC (มีประโยชน์ในกรณีที่มี NAT) [ 9 ] [ 10 ]

นอกจากนี้ หน้าจอที่แสดงโดย VNC อาจไม่ใช่หน้าจอเดียวกับที่ผู้ใช้เห็นบนเซิร์ฟเวอร์ บนคอมพิวเตอร์ Unix/Linux ที่รองรับการใช้งาน X11 หลายเซสชันพร้อมกัน VNC สามารถตั้งค่าให้ใช้งานเซสชัน X11 ที่มีอยู่แล้ว หรือเริ่มต้นเซสชันของตัวเองก็ได้ นอกจากนี้ยังสามารถใช้งาน VNC หลายเซสชันจากคอมพิวเตอร์เครื่องเดียวกันได้ ส่วนบน Microsoft Windows เซสชัน VNC ที่แสดงจะเป็นเซสชันของผู้ใช้ปัจจุบันเสมอ

ในเดือนกรกฎาคม พ.ศ. 2557 RealVNC ได้เผยแพร่Wayland developer preview [ 11 ] [ 12 ]

ความปลอดภัย

โดยค่าเริ่มต้น RFB ไม่ใช่โปรโตคอลที่ปลอดภัย แต่ควรใช้กับการเชื่อมต่อที่เข้ารหัส เช่นIPsecหรือSSH (หรือบนเครือข่ายที่ปลอดภัย) แม้ว่ารหัสผ่านจะไม่ถูกส่งในรูปแบบข้อความธรรมดา (เช่นเดียวกับในtelnet ) แต่การถอดรหัสอาจประสบความสำเร็จได้หากทั้ง คีย์ การเข้ารหัสและรหัสผ่านที่เข้ารหัสถูกดักจับจากเครือข่าย[ 13 ]ด้วยเหตุนี้จึงแนะนำให้ใช้รหัสผ่านที่มีอย่างน้อย 8 ตัวอักษร ในทางกลับกัน บางเวอร์ชันของ VNC ก็มีข้อจำกัด 8 ตัวอักษรเช่นกัน[ 14 ]หากส่งรหัสผ่านที่เกิน 8 ตัวอักษร ตัวอักษรส่วนเกินจะถูกลบออก และสตริงที่ถูกตัดจะถูกเปรียบเทียบกับรหัสผ่าน[ 15 ]

UltraVNC รองรับการใช้ปลั๊กอินการเข้ารหัสแบบโอเพนซอร์สซึ่งเข้ารหัสเซสชัน VNC ทั้งหมด รวมถึงการตรวจสอบรหัสผ่านและการถ่ายโอนข้อมูล[ 16 ]นอกจากนี้ยังอนุญาตให้ทำการตรวจสอบสิทธิ์โดยอิงตามบัญชีผู้ใช้NTLMและActive Directory [ 17 ]อย่างไรก็ตาม การใช้ปลั๊กอินการเข้ารหัสดังกล่าวทำให้ไม่สามารถใช้งานร่วมกับโปรแกรม VNC อื่นๆ ได้ RealVNC นำเสนอการเข้ารหัส AES ที่มีความแข็งแกร่งสูง[ 18 ]ซึ่งเป็นส่วนหนึ่งของแพ็คเกจเชิงพาณิชย์ พร้อมกับการผสานรวมกับ Active Directory [ 19 ]ตามที่ TightVNC ระบุ TightVNC ไม่ปลอดภัยเนื่องจากข้อมูลรูปภาพถูกส่งโดยไม่มีการเข้ารหัส เพื่อหลีกเลี่ยงปัญหานี้ ควรส่งข้อมูลผ่านการเชื่อมต่อ SSH [ 20 ] (ดูด้านล่าง)

VNC อาจถูกส่งผ่าน การเชื่อมต่อ SSHหรือVPNซึ่งจะเพิ่มชั้นความปลอดภัยพิเศษด้วยการเข้ารหัสที่แข็งแกร่งยิ่งขึ้น[ 21 ]

ข้อกังวลด้านความปลอดภัยเพิ่มเติมสำหรับการใช้ VNC คือการตรวจสอบว่าเวอร์ชันที่ใช้ต้องการการอนุญาตจากเจ้าของคอมพิวเตอร์ระยะไกลก่อนที่ใครบางคนจะควบคุมอุปกรณ์ของพวกเขาหรือไม่ วิธีนี้จะช่วยหลีกเลี่ยงสถานการณ์ที่เจ้าของคอมพิวเตอร์ที่ถูกเข้าถึงตระหนักว่ามีใครบางคนควบคุมอุปกรณ์ของตนโดยไม่ได้รับแจ้งล่วงหน้า ฟังก์ชันสำหรับคุณลักษณะด้านความปลอดภัยนี้ได้รับการนำไปใช้ในเซิร์ฟเวอร์ VNC บางตัว เช่น RealVNC และ UltraVNC [ 17 ] [ 22 ]

การนำไปใช้

Xvncคือเซิร์ฟเวอร์ VNC ของ Unix ซึ่งใช้เซิร์ฟเวอร์ X มาตรฐาน สำหรับแอปพลิเคชัน Xvnc จะปรากฏเป็น "เซิร์ฟเวอร์" X (เช่น แสดงหน้าต่างไคลเอ็นต์) และสำหรับผู้ใช้ VNC ระยะไกล มันคือเซิร์ฟเวอร์ VNC แอปพลิเคชันสามารถแสดงตัวเองบน Xvnc ได้ราวกับว่าเป็นจอแสดงผล X ปกติ แต่จะปรากฏบนโปรแกรมดู VNC ที่เชื่อมต่ออยู่ แทนที่จะแสดงบนหน้าจอจริง[ 23 ]หรืออีกทางหนึ่ง เครื่อง (ซึ่งอาจเป็นเวิร์กสเตชันหรือเซิร์ฟเวอร์เครือข่าย) ที่มีหน้าจอ คีย์บอร์ด และเมาส์ สามารถตั้งค่าให้บูตและเรียกใช้เซิร์ฟเวอร์ VNC เป็นบริการหรือเดมอน จากนั้นสามารถถอดหน้าจอ คีย์บอร์ด และเมาส์ออก และเก็บเครื่องไว้ในที่ที่ไม่เกะกะได้

ผู้ใช้มักใช้ VNC เป็น ระบบเดสก์ท็อประยะไกล แบบข้ามแพลตฟอร์มตัวอย่างเช่นApple Remote DesktopสำหรับMac OS X (และ " Back to My Mac " ในเวอร์ชัน 10.5 ถึง 10.13) สามารถทำงานร่วมกับ VNC และจะเชื่อมต่อกับเดสก์ท็อปปัจจุบันของผู้ใช้ Unix หากมีการให้บริการด้วย x11vnc หรือเชื่อมต่อกับเซสชัน X11 แยกต่างหากหากมีการให้บริการด้วย TightVNC จาก Unix นั้น TightVNC จะเชื่อมต่อกับเซสชัน Mac OS X ที่ให้บริการโดย Apple Remote Desktop หากเปิดใช้งานตัวเลือก VNC หรือเชื่อมต่อกับเซิร์ฟเวอร์ VNC ที่ทำงานบน Microsoft Windows [ 24 ]

โปรแกรมหรือไลบรารีโอเพ น ซอร์สที่ใช้งาน VNC ได้แก่KRDC , Krfb , Libvncserver , Remmina , TigerVNC , TightVNC , TurboVNC , UltraVNC , Veyon , Vinagre , VirtualGL , x11vncและxpra

ดูเพิ่มเติม

  • มาตรฐานโปรโตคอล RFB 3.8
  • เว็บไซต์AT&T VNC ฉบับดั้งเดิม ( เก็บถาวรเมื่อวันที่ 16 ตุลาคม 2551 ในWayback Machine) :

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=VNC&oldid=1357860970 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ วีเอ็นซี

VNC ( Virtual Network Computing ) เป็นระบบแชร์เดสก์ท็อปแบบกราฟิกที่ใช้ โปรโตคอล Remote Frame Buffer ( RFB ) เพื่อควบคุมคอมพิวเตอร์เครื่อง อื่นจากระยะไกล โดยจะส่ง ข้อมูลอินพุตจาก

ประวัติศาสตร์

ห้องปฏิบัติการวิจัย Olivetti & Oracle (ORL) [ 3 ] ที่เคมบริดจ์ในสหราชอาณาจักรได้พัฒนา VNC ในช่วงเวลาที่ Olivetti และ Oracle Corporation เป็นเจ้าของห้องปฏิบัติการ นักพัฒนาที่ทำงานเกี่ยวกับ VNC ขณะอยู่ที่ห้องปฏิบัติการวิจัย AT&T ได้แก่ Tristan Richardson...

การออกแบบและการดำเนินงาน

เซิร์ฟเวอร์ VNC คือโปรแกรมบนเครื่องที่แชร์หน้าจอ (และอาจไม่เกี่ยวข้องกับจอแสดงผลทางกายภาพ: เซิร์ฟเวอร์อาจเป็นแบบ "ไร้หน้าจอ" ) และอนุญาตให้ไคลเอนต์แชร์การควบคุมหน้าจอนั้นได้ ไคลเอนต์ VNC (หรือโปรแกรมดู) คือโปรแกรมที่แสดงข้อมูลหน้าจอที่มาจากเซิร์ฟเวอร์...

ความปลอดภัย

โดยค่าเริ่มต้น RFB ไม่ใช่โปรโตคอลที่ปลอดภัย แต่ควรใช้กับการเชื่อมต่อที่เข้ารหัส เช่น IPsec หรือ SSH (หรือบนเครือข่ายที่ปลอดภัย) แม้ว่า รหัสผ่าน จะไม่ถูกส่งในรูปแบบข้อความธรรมดา (เช่นเดียวกับใน telnet ) แต่การถอดรหัสอาจประสบความสำเร็จได้หากทั้ง คีย์...