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

อ่าน 8 นาที

โมเดลไคลเอ็นต์-เซิร์ฟเวอร์

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

โมเดลไคลเอ็นต์-เซิร์ฟเวอร์

แผนภาพเครือข่ายคอมพิวเตอร์แสดงการเชื่อมต่อระหว่างเครื่องลูกข่ายกับเซิร์ฟเวอร์ผ่านทางอินเทอร์เน็ต

รูปแบบ ไคลเอนต์-เซิร์ฟเวอร์เป็นรูปแบบการส่งข้อความใน โครงสร้าง แอปพลิเคชันแบบกระจายที่แบ่งงานหรือภาระงานระหว่างผู้ให้บริการทรัพยากรหรือบริการที่เรียกว่าเซิร์ฟเวอร์และผู้ร้องขอบริการที่เรียกว่าไคลเอนต์[ 1 ]บ่อยครั้งที่ไคลเอนต์และเซิร์ฟเวอร์สื่อสารกันผ่านเครือข่ายคอมพิวเตอร์บนฮาร์ดแวร์ที่แยกจากกัน แต่ทั้งไคลเอนต์และเซิร์ฟเวอร์อาจอยู่บนอุปกรณ์เดียวกัน โฮสต์เซิร์ฟเวอร์จะรันโปรแกรมเซิร์ฟเวอร์หนึ่งโปรแกรมขึ้นไป ซึ่งแบ่งปันทรัพยากรกับไคลเอนต์ ไคลเอนต์มักจะไม่แบ่งปันทรัพยากรการประมวลผล แต่จะร้องขอเนื้อหาหรือบริการจากเซิร์ฟเวอร์และอาจแบ่งปันเนื้อหาของตนเองเป็นส่วนหนึ่งของการร้องขอ ดังนั้น ไคลเอนต์จึงเริ่มต้นเซสชันการสื่อสารกับเซิร์ฟเวอร์ ซึ่งรอรับคำขอที่เข้ามา ตัวอย่างของแอปพลิเคชันคอมพิวเตอร์ที่ใช้รูปแบบไคลเอนต์-เซิร์ฟเวอร์ ได้แก่ อีเมล การพิมพ์ผ่านเครือข่าย และเวิลด์ไวด์เว็บ

บทบาทของไคลเอ็นต์และเซิร์ฟเวอร์

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

Whether a computer is a client, a server, or both, is determined by the nature of the application that requires the service functions. For example, a single computer can run a web server and file server software at the same time to serve different data to clients making different kinds of requests. The client software can also communicate with server software within the same computer.[2] Communication between servers, such as to synchronize data, is sometimes called inter-server or server-to-server communication.

Client and server communication

Generally, a service is an abstraction of computer resources and a client does not have to be concerned with how the server performs while fulfilling the request and delivering the response. The client only has to understand the response based on the relevant application protocol, i.e. the content and the formatting of the data for the requested service.

Clients and servers exchange messages in a request–responsemessaging pattern. The client sends a request, and the server returns a response. This exchange of messages is an example of inter-process communication. To communicate, the computers must have a common language, and they must follow rules so that both the client and the server know what to expect. The language and rules of communication are defined in a communications protocol. All protocols operate in the application layer. The application layer protocol defines the basic patterns of the dialogue. To formalize the data exchange even further, the server may implement an application programming interface (API).[3] The API is an abstraction layer for accessing a service. By restricting communication to a specific content format, it facilitates parsing. By abstracting access, it facilitates cross-platform data exchange.[4]

A server may receive requests from many distinct clients in a short period. A computer can only perform a limited number of tasks at any moment, and relies on a scheduling system to prioritize incoming requests from clients to accommodate them. To prevent abuse and maximize availability, the server software may limit the availability to clients. Denial of service attacks are designed to exploit a server's obligation to process requests by overloading it with excessive request rates. Encryption should be applied if sensitive information is to be communicated between the client and the server.

Example

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

ในแต่ละขั้นตอนของลำดับการแลกเปลี่ยนข้อความระหว่างไคลเอนต์และเซิร์ฟเวอร์ คอมพิวเตอร์จะประมวลผลคำขอและส่งข้อมูลกลับมา นี่คือรูปแบบการส่งข้อความแบบขอและตอบ เมื่อคำขอทั้งหมดได้รับการตอบสนองแล้ว ลำดับนั้นก็จะเสร็จสมบูรณ์

ตัวอย่างนี้แสดงให้เห็นถึงรูปแบบการออกแบบที่สามารถนำไปใช้กับโมเดลไคลเอ็นต์-เซิร์ฟเวอร์ได้ นั่นคือการแยกส่วนของความรับผิดชอบ

ฝั่งเซิร์ฟเวอร์

ฝั่งเซิร์ฟเวอร์ หมายถึง โปรแกรมและกระบวนการทำงานที่ทำงานบนเซิร์ฟเวอร์ซึ่งแตกต่างจากฝั่งไคลเอนต์ คือ โปรแกรมและกระบวนการทำงานที่ทำงานบนไคลเอนต์

แนวคิดทั่วไป

“ซอฟต์แวร์ฝั่งเซิร์ฟเวอร์” หมายถึงแอปพลิเคชันคอมพิวเตอร์เช่นเว็บเซิร์ฟเวอร์ที่ทำงานบนฮาร์ดแวร์เซิร์ฟเวอร์ ระยะไกล ซึ่งสามารถเข้าถึงได้จากคอมพิวเตอร์สมาร์ทโฟนหรืออุปกรณ์อื่นๆของผู้ใช้[ 5 ] การดำเนินการอาจดำเนินการที่ฝั่งเซิร์ฟเวอร์ เนื่องจากจำเป็นต้องเข้าถึงข้อมูลหรือฟังก์ชันการทำงานที่ไม่มีอยู่ในฝั่งไคลเอนต์ หรือเนื่องจากการดำเนิน การดังกล่าวที่ฝั่งไคลเอนต์จะช้า ไม่น่าเชื่อถือ หรือไม่ปลอดภัย

โปรแกรมไคลเอ็นต์และเซิร์ฟเวอร์อาจเป็นโปรแกรมที่หาได้ทั่วไป เช่นเว็บเซิร์ฟเวอร์และเว็บเบราว์เซอร์ แบบฟรีหรือเชิงพาณิชย์ ซึ่งสื่อสารกันโดยใช้โปรโตคอล มาตรฐาน หรือโปรแกรมเมอร์ อาจเขียนเซิร์ฟเวอร์ ไคลเอ็นต์ และ โปรโตคอลการสื่อสารของตนเองซึ่งสามารถใช้งานได้เฉพาะร่วมกันเท่านั้น

การดำเนินการฝั่งเซิร์ฟเวอร์ประกอบด้วยการดำเนินการที่ดำเนินการเพื่อตอบสนองต่อคำขอของไคลเอ็นต์ และการดำเนินการที่ไม่มุ่งเน้นไคลเอ็นต์ เช่น งานบำรุงรักษา[ 6 ] [ 7 ]

ความปลอดภัยของคอมพิวเตอร์

ใน บริบทของ ความปลอดภัยทางคอมพิวเตอร์ช่องโหว่หรือการโจมตีฝั่งเซิร์ฟเวอร์หมายถึงช่องโหว่ที่เกิดขึ้นบนระบบคอมพิวเตอร์เซิร์ฟเวอร์ ไม่ใช่ฝั่งไคลเอนต์ หรือระหว่างทั้งสองฝั่งตัวอย่างเช่น ผู้โจมตีอาจใช้ช่องโหว่การโจมตีแบบSQL injectionในเว็บแอปพลิเคชันเพื่อเปลี่ยนแปลงหรือเข้าถึงข้อมูลในฐานข้อมูล ของเซิร์ฟเวอร์โดยไม่ได้รับอนุญาต หรืออีกทางหนึ่ง ผู้โจมตีอาจเจาะเข้าไปในระบบเซิร์ฟเวอร์โดยใช้ช่องโหว่ในระบบปฏิบัติการ พื้นฐาน จากนั้นจึงสามารถเข้าถึงฐานข้อมูลและไฟล์อื่นๆ ได้ในลักษณะเดียวกับผู้ดูแลระบบที่ได้รับอนุญาตของเซิร์ฟเวอร์[ 8 ] [ 9 ] [ 10 ]

ตัวอย่าง

ในกรณีของ โครงการ ประมวลผลแบบกระจายเช่นSETI@homeและการค้นหาไพรม์เมอร์เซนน์ครั้งใหญ่บนอินเทอร์เน็ตแม้ว่าการทำงานส่วนใหญ่จะเกิดขึ้นที่ฝั่งไคลเอนต์ แต่เซิร์ฟเวอร์มีหน้าที่ประสานงานกับไคลเอนต์ ส่งข้อมูลให้ไคลเอนต์วิเคราะห์ รับและจัดเก็บผลลัพธ์ และจัดทำรายงานให้กับผู้ดูแลโครงการ เป็นต้น ในกรณีของแอปพลิเคชันผู้ใช้ที่ต้องพึ่งพาอินเทอร์เน็ต เช่นGoogle Earthแม้ว่าการสอบถามและแสดงข้อมูลแผนที่จะเกิดขึ้นที่ฝั่งไคลเอนต์ แต่เซิร์ฟเวอร์มีหน้าที่จัดเก็บข้อมูลแผนที่อย่างถาวร แปลงคำถามของผู้ใช้ให้เป็นข้อมูลแผนที่เพื่อส่งกลับไปยังไคลเอนต์ เป็นต้น

แอปพลิเคชันและบริการ บนเว็บ สามารถพัฒนาได้ด้วยภาษาโปรแกรมเกือบทุกภาษา ตราบใดที่สามารถส่งข้อมูลกลับไปยังเว็บเบราว์เซอร์ที่ใช้มาตรฐาน (อาจผ่านโปรแกรมตัวกลาง) ในรูปแบบที่เว็บเบราว์เซอร์สามารถใช้งานได้

ฝั่งไคลเอ็นต์

ฝั่งไคลเอ็นต์ หมายถึง การดำเนินการ ที่ไคลเอ็นต์กระทำในเครือข่ายคอมพิวเตอร์

แนวคิดทั่วไป

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

เมื่อเซิร์ฟเวอร์ให้บริการข้อมูลในรูปแบบที่ใช้กันทั่วไป เช่น ตามโปรโตคอล มาตรฐาน อย่างHTTPหรือFTPผู้ใช้สามารถเลือกโปรแกรมไคลเอ็นต์ได้หลายโปรแกรม (เช่น เว็บเบราว์เซอร์สมัยใหม่ส่วนใหญ่สามารถร้องขอและรับข้อมูลโดยใช้ทั้ง HTTP และ FTP) ในกรณีของแอปพลิเคชันที่เฉพาะเจาะจงมากขึ้นโปรแกรมเมอร์ อาจเขียนเซิร์ฟเวอร์ ไคลเอ็นต์ และ โปรโตคอลการสื่อสารของตนเองซึ่งสามารถใช้งานได้เฉพาะร่วมกันเท่านั้น

โปรแกรมที่ทำงานบนคอมพิวเตอร์ของผู้ใช้โดยไม่ส่งหรือรับข้อมูลผ่านเครือข่ายจะไม่ถือว่าเป็นไคลเอนต์ ดังนั้นการทำงานของโปรแกรมเหล่านั้นจึงไม่เรียกว่าการทำงานฝั่งไคลเอนต์

ความปลอดภัยของคอมพิวเตอร์

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

ตัวอย่าง

โครงการ ประมวลผลแบบกระจายเช่นSETI@homeและการค้นหาไพรม์เมอร์เซนน์บนอินเทอร์เน็ต รวมถึงแอปพลิเคชันที่ต้องพึ่งพาอินเทอร์เน็ต เช่นGoogle Earthอาศัยการทำงานฝั่งไคลเอ็นต์เป็นหลัก โดยจะเริ่มต้นการเชื่อมต่อกับเซิร์ฟเวอร์ (ไม่ว่าจะตอบสนองต่อคำขอของผู้ใช้ เช่น Google Earth หรือในลักษณะอัตโนมัติ เช่น SETI@home) และขอข้อมูลบางอย่าง เซิร์ฟเวอร์จะเลือกชุดข้อมูล ( การทำงาน ฝั่งเซิร์ฟเวอร์ ) และส่งกลับไปยังไคลเอ็นต์ จากนั้นไคลเอ็นต์จะวิเคราะห์ข้อมูล (การทำงานฝั่งไคลเอ็นต์) และเมื่อการวิเคราะห์เสร็จสิ้น จะแสดงผลให้ผู้ใช้เห็น (เช่น Google Earth) และ/หรือส่งผลลัพธ์ของการคำนวณกลับไปยังเซิร์ฟเวอร์ (เช่น SETI@home)

ประวัติศาสตร์ยุคแรก

รูปแบบแรกเริ่มของสถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์คือการป้อนงานจากระยะไกลซึ่งมีมาอย่างน้อยตั้งแต่OS/360 (ประกาศในปี 1964) โดยคำขอคือการเรียกใช้งานและการตอบสนองคือผลลัพธ์

ในขณะที่กำลังกำหนดรูปแบบไคลเอนต์-เซิร์ฟเวอร์ในช่วงทศวรรษ 1960 และ 1970 นักวิทยาศาสตร์คอมพิวเตอร์ที่สร้างARPANET (ที่สถาบันวิจัยสแตนฟอร์ด ) ได้ใช้คำว่าserver-host (หรือserving host ) และuser-host (หรือusing-host ) และคำเหล่านี้ปรากฏในเอกสาร RFC 5 [ 11 ]และ RFC 4 [ 12 ]การใช้งานนี้ยังคงดำเนินต่อไปที่Xerox PARCในช่วงกลางทศวรรษ 1970

บริบทหนึ่งที่นักวิจัยใช้คำศัพท์เหล่านี้คือในการออกแบบ ภาษา การเขียนโปรแกรมเครือข่ายคอมพิวเตอร์ที่เรียกว่า Decode-Encode Language (DEL) [ 11 ]วัตถุประสงค์ของภาษานี้คือการรับคำสั่งจากคอมพิวเตอร์เครื่องหนึ่ง (โฮสต์ผู้ใช้) ซึ่งจะส่งรายงานสถานะกลับไปยังผู้ใช้ในขณะที่เข้ารหัสคำสั่งในแพ็กเก็ตเครือข่าย คอมพิวเตอร์อีกเครื่องหนึ่งที่สามารถใช้งาน DEL ได้ (โฮสต์เซิร์ฟเวอร์) จะรับแพ็กเก็ต ถอดรหัส และส่งข้อมูลที่จัดรูปแบบแล้วกลับไปยังโฮสต์ผู้ใช้ โปรแกรม DEL บนโฮสต์ผู้ใช้จะรับผลลัพธ์เพื่อนำเสนอต่อผู้ใช้ นี่คือธุรกรรมแบบไคลเอนต์-เซิร์ฟเวอร์ การพัฒนา DEL เพิ่งเริ่มต้นในปี 1969 ซึ่งเป็นปีที่กระทรวงกลาโหมของสหรัฐอเมริกาได้ก่อตั้ง ARPANET (ซึ่งเป็นต้นกำเนิดของอินเทอร์เน็ต )

ไคลเอนต์โฮสต์และเซิร์ฟเวอร์โฮสต์

คำว่า ไคลเอนต์-โฮสต์และเซิร์ฟเวอร์-โฮสต์มีความหมายแตกต่างจากไคลเอนต์และเซิร์ฟเวอร์ เล็กน้อย โฮสต์คือคอมพิวเตอร์ใดๆ ที่เชื่อมต่อกับเครือข่าย ในขณะที่คำว่าเซิร์ฟเวอร์และไคลเอนต์อาจหมายถึงคอมพิวเตอร์หรือโปรแกรมคอมพิวเตอร์ก็ได้ แต่เซิร์ฟเวอร์-โฮสต์และไคลเอนต์-โฮสต์จะหมายถึงคอมพิวเตอร์เสมอ โฮสต์เป็นคอมพิวเตอร์อเนกประสงค์ที่ ทำงานได้หลายฟังก์ชัน ส่วน ไคลเอนต์และเซิร์ฟเวอร์เป็นเพียงโปรแกรมที่ทำงานบนโฮสต์ ในโมเดลไคลเอนต์-เซิร์ฟเวอร์ เซิร์ฟเวอร์มักจะทำหน้าที่ให้บริการเป็นหลัก

การใช้คำว่าclient ในยุคแรกๆ ปรากฏในบทความเรื่อง "Separating Data from Function in a Distributed File System" ซึ่งเป็นบทความปี 1978 โดยนักวิทยาศาสตร์คอมพิวเตอร์ของ Xerox PARC ได้แก่ Howard Sturgis, James Mitchell และ Jay Israel ผู้เขียนได้ระบุความหมายของคำนี้อย่างระมัดระวังสำหรับผู้อ่าน และอธิบายว่าพวกเขาใช้คำนี้เพื่อแยกแยะระหว่างผู้ใช้และโหนดเครือข่ายของผู้ใช้ (client) [ 13 ]ภายในปี 1992 คำว่าserverได้เข้ามาใช้กันอย่างแพร่หลาย[ 14 ] [ 15 ]

การประมวลผลแบบรวมศูนย์

แบบจำลองไคลเอ็นต์-เซิร์ฟเวอร์ไม่ได้กำหนดว่าโฮสต์เซิร์ฟเวอร์จะต้องมีทรัพยากรมากกว่าโฮสต์ไคลเอ็นต์ แต่จะช่วยให้คอมพิวเตอร์อเนกประสงค์ใดๆ สามารถขยายขีดความสามารถได้โดยใช้ทรัพยากรที่ใช้ร่วมกันของโฮสต์อื่นๆ อย่างไรก็ตาม การประมวลผลแบบรวมศูนย์จะจัดสรรทรัพยากรจำนวนมากให้กับคอมพิวเตอร์จำนวนน้อยโดยเฉพาะ ยิ่งมีการถ่ายโอนการคำนวณจากโฮสต์ไคลเอ็นต์ไปยังคอมพิวเตอร์ส่วนกลางมากเท่าใด โฮสต์ไคลเอ็นต์ก็จะยิ่งเรียบง่ายมากขึ้นเท่านั้น[ 16 ]มันพึ่งพาทรัพยากรเครือข่าย (เซิร์ฟเวอร์และโครงสร้างพื้นฐาน) อย่างมากสำหรับการคำนวณและการจัดเก็บโหนดที่ไม่มีดิสก์จะโหลดแม้กระทั่งระบบปฏิบัติการจากเครือข่าย และเทอร์มินัลคอมพิวเตอร์ไม่มีระบบปฏิบัติการเลย มันเป็นเพียงอินเทอร์เฟซอินพุต/เอาต์พุตไปยังเซิร์ฟเวอร์ ในทางตรงกันข้ามไคลเอ็นต์ที่มีประสิทธิภาพสูงเช่นคอมพิวเตอร์ส่วนบุคคลมีทรัพยากรมากมายและไม่พึ่งพาเซิร์ฟเวอร์สำหรับฟังก์ชันที่จำเป็น

เนื่องจากราคาของไมโครคอมพิวเตอร์ ลดลงและประสิทธิภาพเพิ่มขึ้นตั้งแต่ช่วงทศวรรษ 1980 ถึงปลายทศวรรษ 1990 องค์กรหลายแห่งจึงเปลี่ยนการประมวลผลจากเซิร์ฟเวอร์ส่วนกลาง เช่น เมนเฟรมและมินิคอมพิวเตอร์ไปยังไคลเอ็นต์ที่มีประสิทธิภาพสูง[ 17 ] ซึ่งทำให้สามารถควบคุมทรัพยากรคอมพิวเตอร์ได้มากขึ้นและ เป็นรายบุคคลมากขึ้น แต่ก็ทำให้การจัดการเทคโนโลยีสารสนเทศ ซับซ้อนขึ้น [ 16 ] [ 18 ] [ 19 ]ในช่วงทศวรรษ 2000 แอปพลิเคชันบนเว็บมีความสมบูรณ์มากพอที่จะแข่งขันกับซอฟต์แวร์แอปพลิเคชันที่พัฒนาขึ้นสำหรับสถาปัตยกรรมไมโคร เฉพาะ ความสมบูรณ์นี้ พื้นที่ จัดเก็บข้อมูลขนาดใหญ่ที่ราคาไม่แพงมากขึ้นและการเกิดขึ้นของสถาปัตยกรรมที่เน้นบริการเป็นปัจจัยหนึ่งที่ทำให้เกิด กระแส การประมวลผลแบบคลาวด์ในช่วงทศวรรษ 2010 [ 20 ]

การเปรียบเทียบกับสถาปัตยกรรมแบบเพียร์ทูเพียร์

นอกเหนือจากโมเดลไคลเอ็นต์-เซิร์ฟเวอร์แล้ว แอปพลิเคชัน การประมวลผลแบบกระจายมักใช้สถาปัตยกรรมแอปพลิเคชันแบบเพียร์ทูเพียร์ (P2P)

ในโมเดลไคลเอ็นต์-เซิร์ฟเวอร์ เซิร์ฟเวอร์มักถูกออกแบบมาให้ทำงานเป็นระบบส่วนกลางที่ให้บริการไคลเอ็นต์จำนวนมาก กำลังประมวลผล หน่วยความจำ และความต้องการพื้นที่จัดเก็บของเซิร์ฟเวอร์จะต้องได้รับการปรับขนาดให้เหมาะสมกับปริมาณงานที่คาดการณ์ไว้ ระบบ การกระจายโหลดและการทำงานสำรองมักถูกนำมาใช้เพื่อปรับขนาดเซิร์ฟเวอร์ให้เกินกว่าเครื่องทางกายภาพเพียงเครื่องเดียว[ 21 ] [ 22 ]

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

ใน เครือข่าย แบบเพียร์ทู เพีย ร์ คอมพิวเตอร์สองเครื่องขึ้นไป ( เพียร์ ) จะรวมทรัพยากรของตนและสื่อสารกันในระบบแบบกระจายศูนย์ เพียร์เป็น โหนดที่เท่าเทียมกันหรือมีศักยภาพเท่ากันในเครือข่ายที่ไม่เป็นลำดับชั้น แตกต่างจากไคลเอนต์ในเครือข่ายไคลเอนต์-เซิร์ฟเวอร์หรือไคลเอนต์-คิว-ไคลเอนต์ เพียร์จะสื่อสารกันโดยตรง[ 23 ]ในเครือข่ายแบบเพียร์ทูเพียร์อัลกอริทึมในโปรโตคอลการสื่อสารแบบเพียร์ทูเพียร์จะปรับสมดุลภาระและแม้แต่เพียร์ที่มีทรัพยากรน้อยก็สามารถช่วยแบ่งเบาภาระได้[ 24 ]หากโหนดใดโหนดหนึ่งไม่สามารถใช้งานได้ ทรัพยากรที่ใช้ร่วมกันของโหนดนั้นจะยังคงใช้งานได้ตราบใดที่เพียร์อื่น ๆ เสนอให้ ในอุดมคติแล้ว เพียร์ไม่จำเป็นต้องมีความพร้อมใช้งานสูงเนื่องจาก เพียร์ สำรอง อื่น ๆ จะชดเชยเวลาที่ ทรัพยากรหยุดทำงาน เมื่อความพร้อมใช้งานและความสามารถในการรับภาระของเพียร์เปลี่ยนแปลง โปรโตคอลจะเปลี่ยนเส้นทางการร้องขอ

ทั้งระบบไคลเอนต์-เซิร์ฟเวอร์และมาสเตอร์-สเลฟถือเป็นหมวดหมู่ย่อยของระบบแบบกระจายตัวแบบเพียร์ทูเพียร์[ 25 ]

ดูเพิ่มเติม

หมายเหตุ

  1. "สถาปัตยกรรมแอปพลิเคชันแบบกระจาย" (PDF) . Sun Microsystem. เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 6 เมษายน 2554 . เรียกดูเมื่อ วันที่ 16 มิถุนายน 2552 .
  2. ระบบ X Window Systemเป็นตัวอย่างหนึ่ง
  3. Benatallah, B.; Casati, F.; Toumani, F. (2004). "การสร้างแบบจำลองการสนทนาบริการเว็บ: รากฐานสำคัญสำหรับการทำงานอัตโนมัติของธุรกิจอิเล็กทรอนิกส์" IEEE Internet Computing . 8 : 46– 54. doi : 10.1109/MIC.2004.1260703 . S2CID 8121624 . 
  4. ดัสท์ดาร์, ส.; ชไรเนอร์ ดับเบิลยู. (2005) “แบบสำรวจองค์ประกอบบริการเว็บ” (PDF ) วารสารนานาชาติของบริการเว็บและกริด . 1 : 1. CiteSeerX 10.1.1.139.4827 . ดอย : 10.1504/IJWGS.2005.007545 . 
  5. "ฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์หมายความว่าอย่างไร? ฝั่งไคลเอ็นต์เทียบกับฝั่งเซิร์ฟเวอร์" . Cloudflare . สืบค้นเมื่อ17 เมษายน 2025 .
  6. "บทนำสู่ฝั่งเซิร์ฟเวอร์ - เรียนรู้การพัฒนาเว็บ | MDN" . developer.mozilla.org . 2023-11-05 . สืบค้นเมื่อ2023-11-13 .
  7. "การเขียนโปรแกรมเว็บไซต์ฝั่งเซิร์ฟเวอร์ - เรียนรู้การพัฒนาเว็บ | MDN" . developer.mozilla.org . 30 มิถุนายน 2023 . สืบค้นเมื่อ13 พฤศจิกายน 2023 .
  8. 1 2 Lehtinen, Rick; Russell, Deborah; Gangemi, GT (2006). พื้นฐานความปลอดภัยของคอมพิวเตอร์ ( ฉบับที่ 2). O'Reilly Media . ISBN  9780596006693สืบค้นข้อมูลเมื่อ2017-07-07
  9. 1 2 JS (2015-10-15). "สัปดาห์ที่ 4: มีความแตกต่างระหว่างฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์หรือไม่?" . n3tweb.wordpress.com . สืบค้นเมื่อ2017-07-07 .
  10. 1 2เอสปิโนซา, คริสเตียน (2016-04-23). ​​"ถอดรหัสการแฮ็ก" (PDF) . alpinesecurity.com . สืบค้นเมื่อ2017-07-07 .
  11. 1 2 Rulifson, Jeff (มิถุนายน 1969). DEL . IETF . doi : 10.17487/RFC0005 . RFC 5 . สืบค้นเมื่อ 30 พฤศจิกายน 2013 .
  12. Shapiro, Elmer B. (มีนาคม 1969). ตารางเวลาเครือข่าย IETF doi : 10.17487 /RFC0004 RFC 4 สืบค้นเมื่อ 30 พฤศจิกายน 2013
  13. Sturgis, Howard E.; Mitchell, James George; Israel, Jay E. (1978). "การแยกข้อมูลออกจากฟังก์ชันในระบบไฟล์แบบกระจาย" . Xerox PARC .
  14. ฮาร์เปอร์, ดักลาส. "เซิร์ฟเวอร์" . พจนานุกรมรากศัพท์ออนไลน์ . สืบค้นเมื่อ30 พฤศจิกายน 2013 .
  15. "การแยกข้อมูลออกจากฟังก์ชันในระบบไฟล์แบบกระจาย" GetInfo หอสมุดวิทยาศาสตร์และเทคโนโลยีแห่งชาติเยอรมันเก็บถาวรจากต้นฉบับเมื่อวันที่ 2 ธันวาคม 2013 เรียกดูเมื่อวันที่ 29 พฤศจิกายน 2013
  16. 1 2 Nieh, Jason; Yang, S. Jae; Novik, Naomi (2000). "การเปรียบเทียบสถาปัตยกรรมคอมพิวเตอร์แบบ Thin-Client" . Academic Commons . doi : 10.7916/D8Z329VF . สืบค้นเมื่อ28 พฤศจิกายน 2018 .
  17. d'Amore, MJ; Oberst, DJ (1983). "Microcomputers and mainframes". Proceedings of the 11th annual ACM SIGUCCS conference on User services - SIGUCCS '83 . p. 7. doi : 10.1145/800041.801417 . ISBN  978-0897911160. S2CID 14248076 . 
  18. Tolia, Niraj; Andersen, David G.; Satyanarayanan, M. (มีนาคม 2549). "การวัดปริมาณประสบการณ์ผู้ใช้แบบโต้ตอบบน Thin Clients" (PDF) . Computer . 39 (3). IEEE Computer Society : 46– 52. doi : 10.1109/mc.2006.101 . S2CID 8399655 . 
  19. Otey, Michael (22 มีนาคม 2011). "คลาวด์เป็นเพียงการกลับมาของการประมวลผลแบบเมนเฟรมจริงหรือ?" . SQL Server Pro . Penton Media . เก็บถาวรจากต้นฉบับเมื่อ 3 ธันวาคม 2013 . สืบค้นเมื่อ1 ธันวาคม 2013 .
  20. Barros, AP; Dumas, M. (2006). "การเติบโตของระบบนิเวศบริการเว็บ" IT Professional . 8 (5): 31. doi : 10.1109/MITP.2006.123 . S2CID 206469224 . 
  21. Cardellini, V.; Colajanni, M.; Yu, PS (1999). "การปรับสมดุลโหลดแบบไดนามิกบนระบบเว็บเซิร์ฟเวอร์" IEEE Internet Computing . 3 (3). สถาบันวิศวกรรมไฟฟ้าและอิเล็กทรอนิกส์ (IEEE): 28– 39. doi : 10.1109/4236.769420 . ISSN 1089-7801 . 
  22. "การโหลดบาลานซ์คืออะไร? ตัวโหลดบาลานซ์ทำงานอย่างไร" . NGINX . 1 มิถุนายน 2014 . สืบค้นเมื่อ21 มกราคม 2020 .
  23. Alharbi, A.; Aljaedi, A. (2004). "ปัญหาและการวิเคราะห์ความปลอดภัยของเครือข่ายแบบ Peer-to-Peer: บทวิจารณ์". IJCSNS International Journal of Computer Science and Network Security . doi : 10.1007/978-3-540-45172-3_6 .
  24. Rao, A.; Lakshminarayanan, K.; Surana, S.; Manning Karp, R. (2020). "การกระจายโหลดในระบบ P2P ที่มีโครงสร้าง". IJCSNS International Journal of Computer Science and Network Security . 20 : 74– 88.
  25. Varma, Vasudeva (2009). "1: คู่มือเบื้องต้นเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์" . สถาปัตยกรรมซอฟต์แวร์: แนวทางตามกรณีศึกษา . เดลี: Pearson Education India. หน้า29. ISBN  9788131707494สืบค้นเมื่อ 2017-07-04 ระบบเพียร์ทูเพียร์แบบกระจาย [...] นี่เป็นรูปแบบทั่วไปซึ่งรูปแบบที่นิยมคือรูปแบบไคลเอนต์-เซิร์ฟเวอร์และรูปแบบมาสเตอร์-สเลฟ
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Client–server_model&oldid=1362519904 "

สรุปเนื้อหา

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

ข้อมูลสำคัญเกี่ยวกับ โมเดลไคลเอ็นต์-เซิร์ฟเวอร์

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

บทบาทของไคลเอ็นต์และเซิร์ฟเวอร์

ส่วนประกอบของเซิร์ฟเวอร์ทำหน้าที่หรือให้บริการแก่ไคลเอนต์หนึ่งรายหรือหลายราย ซึ่งเป็นผู้เริ่มต้นร้องขอรับบริการดังกล่าว เซิร์ฟเวอร์ถูกจำแนกประเภทตามบริการที่ให้บริการ ตัวอย่างเช่น เว็บเซิร์ฟเวอร์ ให้บริการ เว็บเพจ และ ไฟล์เซิร์ฟเวอร์ ให้บริการ ไฟล์คอมพิวเตอร์...

Client and server communication

Generally, a service is an abstraction of computer resources and a client does not have to be concerned with how the server performs while fulfilling the request and delivering the response.

Example

เมื่อ ลูกค้า ธนาคาร เข้าใช้ บริการ ธนาคารออนไลน์ ผ่าน เว็บเบราว์เซอร์ (ไคลเอ็นต์) ไคลเอ็นต์จะเริ่มต้นการร้องขอไปยังเว็บเซิร์ฟเวอร์ของธนาคาร ข้อมูล การเข้าสู่ระบบ ของลูกค้า จะถูกเปรียบเทียบกับ ฐานข้อมูล และเว็บเซิร์ฟเวอร์จะเข้าถึง ฐานข้อมูล นั้น ในฐานะ...