Content deleted Content added
No edit summary Tags: Reverted Mobile edit Mobile web edit |
Reverting edit(s) by 2601:1C0:847F:7A40:41BA:C9C0:6C4B:1464 (talk) to rev. 1243055472 by PEPSI697: Vandalism (UV 0.1.5) |
||
Line 24:
This example illustrates a [[design pattern]] applicable to the client–server model: [[separation of concerns]].
==Server-side==
{{See also|Backend (computing)|Server-side scripting|Server Side Includes|label 3=Server Side Includes (SSI)}}
{{More citations needed|section|small=y|date=December 2016}}
Server-side refers to programs and operations that run on the [[server (computing)|server]]. This is in contrast to client-side programs and operations which run on the [[client (computing)|client]].<ref name="stackexchange" /> (See below)
=== General concepts ===
"Server-side software" refers to a [[computer application]], such as a [[web server]], that runs on remote [[server (computing)#Hardware|server hardware]], reachable from a [[user (computing)|user]]'s local [[computer]], [[smartphone]], or other device. Operations may be performed server-side because they require access to information or functionality that is not available on the [[client (computing)|client]], or because performing such operations on the [[client-side|client side]] would be slow, unreliable, or [[computer security|insecure]].
Client and server programs may be commonly available ones such as free or commercial [[web server]]s and [[web browser]]s, communicating with each other using standardized [[protocol (computing)|protocols]]. Or, [[programmer]]s may write their own server, client, and [[communications protocol]] which can only be used with one another.
Server-side operations include both those that are carried out in response to client requests, and non-client-oriented operations such as maintenance tasks.<ref>{{Cite web |date=2023-11-05 |title=Introduction to the server side - Learn web development {{!}} MDN |url=https://developer.mozilla.org/en-US/docs/Learn/Server-side/First_steps/Introduction |access-date=2023-11-13 |website=developer.mozilla.org |language=en-US}}</ref><ref>{{Cite web |date=2023-06-30 |title=Server-side website programming - Learn web development {{!}} MDN |url=https://developer.mozilla.org/en-US/docs/Learn/Server-side |access-date=2023-11-13 |website=developer.mozilla.org |language=en-US}}</ref>
=== Computer security ===
In a [[computer security]] context, server-side vulnerabilities or attacks refer to those that occur on a server computer system, rather than on the client side, or [[Man-in-the-middle attack|in between the two]]. For example, an attacker might exploit an [[SQL injection]] vulnerability in a [[web application]] in order to maliciously change or gain unauthorized access to data in the server's [[database]]. Alternatively, an attacker might break into a server system using vulnerabilities in the underlying [[operating system]] and then be able to access database and other files in the same manner as authorized administrators of the server.<ref name=oreilly>{{cite book |url=https://books.google.com/books?id=DyrLV0kZEd8C&q=client-side+OR+server-side&pg=PT17 |title=Computer Security Basics |edition=2nd |last1=Lehtinen |first1=Rick |last2=Russell |first2=Deborah |last3=Gangemi |first3=G. T. |publisher=[[O'Reilly Media]] |isbn=9780596006693 |date=2006 |access-date=2017-07-07}}</ref><ref name=n3tweb>{{cite web |url=https://n3tweb.wordpress.com/2015/10/15/week-4-is-there-a-difference-between-client-side-and-server-side/ |title=Week 4: Is There a Difference between Client Side and Server Side? |author=JS |website=n3tweb.wordpress.com |date=2015-10-15 |access-date=2017-07-07}}</ref><ref name=alpinesecurity>{{cite web |url=https://www.alpinesecurity.com/s/Alpine-Security-Decoding-the-Hack-Presentation-22-April-16.pdf |title=Decoding the Hack |last=Espinosa |first=Christian |website=alpinesecurity.com |date=2016-04-23 |access-date=2017-07-07 }}{{Dead link|date=March 2023 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>
=== Examples ===
In the case of [[distributed computing]] projects such as [[SETI@home]] and the [[Great Internet Mersenne Prime Search]], while the bulk of the operations occur on the client side, the servers are responsible for coordinating the clients, sending them data to analyze, receiving and storing results, providing reporting functionality to project administrators, etc. In the case of an Internet-dependent user application like [[Google Earth]], while querying and display of map data takes place on the client side, the server is responsible for permanent storage of map data, resolving user queries into map data to be returned to the client, etc.
In the context of the [[World Wide Web]], commonly encountered server-side computer languages include:<ref name=stackexchange>{{cite web|url=http://softwareengineering.stackexchange.com/questions/171203/what-are-the-differences-between-server-side-and-client-side-programming|title=What are the differences between server-side and client-side programming?|website=softwareengineering.stackexchange.com|access-date=2016-12-13}}</ref>
* [[C Sharp (programming language)|C#]] or [[Visual Basic]] in [[ASP.NET]] environments
* [[Java (programming language)|Java]]
* [[Perl]]
* [[PHP]]
* [[Python (programming language)|Python]]
* [[Ruby (programming language)|Ruby]]
* [[Node.js]]
* [[Swift (programming language)|Swift]]
However, web applications and [[web service|services]] can be implemented in almost any language, as long as they can return data to standards-based web browsers (possibly via intermediary programs) in formats which they can use.
[[Category:Servers (computing)]]
==Client side==
{{refimprove|section|small=y|date=December 2016}}{{See also|Client-side prediction|Front-end (computing)|Pagination# In web browsers|label 3=Pagination § In web browsers}}
Client-side refers to operations that are performed by the [[Client (computing)|client]] in a [[computer network]].
=== General concepts ===
Typically, a client is a [[computer application]], such as a [[web browser]], that runs on a [[user (computing)|user]]'s local [[computer]], [[smartphone]], or other device, and connects to a [[server (computing)|server]] as necessary. Operations may be performed client-side because they require access to information or functionality that is available on the client but not on the server, because the user needs to observe the operations or provide input, or because the server lacks the processing power to perform the operations in a timely manner for all of the clients it serves. Additionally, if operations can be performed by the client, without sending data over the network, they may take less time, use less [[Bandwidth (computing)|bandwidth]], and incur a lesser [[Computer security|security]] risk.
When the server serves data in a commonly used manner, for example according to standard [[Protocol (computing)|protocols]] such as [[HyperText Transfer Protocol|HTTP]] or [[File Transfer Protocol|FTP]], users may have their choice of a number of client programs (e.g. most modern web browsers can request and receive data using both HTTP and FTP). In the case of more specialized applications, [[programmer]]s may write their own server, client, and [[communications protocol]] which can only be used with one another.
Programs that run on a user's local computer without ever sending or receiving data over a network are not considered clients, and so the operations of such programs would not be termed client-side operations.
=== Computer security ===
In a [[computer security]] context, client-side vulnerabilities or attacks refer to those that occur on the client / user's computer system, rather than on the [[server-side|server side]], or [[Man-in-the-middle attack|in between the two]]. As an example, if a server contained an [[encryption|encrypted]] file or message which could only be decrypted using a [[Key (cryptography)|key]] housed on the user's computer system, a client-side attack would normally be an attacker's only opportunity to gain access to the decrypted contents. For instance, the attacker might cause [[malware]] to be installed on the client system, allowing the attacker to view the user's screen, record the user's keystrokes, and steal copies of the user's encryption keys, etc. Alternatively, an attacker might employ [[cross-site scripting]] vulnerabilities to execute malicious code on the client's system without needing to install any permanently resident malware.<ref name=oreilly /><ref name=n3tweb /><ref name=alpinesecurity />
=== Examples ===
[[Distributed computing]] projects such as [[SETI@home]] and the Great Internet Mersenne Prime Search, as well as Internet-dependent applications like [[Google Earth]], rely primarily on client-side operations. They initiate a connection with the server (either in response to a user query, as with Google Earth, or in an automated fashion, as with SETI@home), and request some data. The server selects a data set (a [[server-side]] operation) and sends it back to the client. The client then analyzes the data (a client-side operation), and, when the analysis is complete, displays it to the user (as with Google Earth) and/or transmits the results of calculations back to the server (as with SETI@home).
In the context of the [[World Wide Web]], commonly encountered computer languages which are evaluated or run on the client side include:<ref name=stackexchange />
* [[Cascading Style Sheets|Cascading Style Sheets (CSS)]]
* [[HTML]]
* [[JavaScript]]
==Early history==
Line 32 ⟶ 87:
One context in which researchers used these terms was in the design of a [[computer network programming]] language called Decode-Encode Language (DEL).<ref name="rulifson"/> The purpose of this language was to accept commands from one computer (the user-host), which would return status reports to the user as it encoded the commands in network packets. Another DEL-capable computer, the server-host, received the packets, decoded them, and returned formatted data to the user-host. A DEL program on the user-host received the results to present to the user. This is a client–server transaction. Development of DEL was just beginning in 1969, the year that the [[United States Department of Defense]] established ARPANET (predecessor of [[Internet]]).
===Client-host and server-host===
''Client-host'' and ''server-host'' have subtly different meanings than ''client'' and ''server''. A host is any computer connected to a network. Whereas the words ''server'' and ''client'' may refer either to a computer or to a computer program, ''server-host'' and ''client-host'' always refer to computers. The host is a versatile, multifunction computer; ''clients'' and ''servers'' are just programs that run on a host. In the client–server model, a server is more likely to be devoted to the task of serving.
An early use of the word ''client'' occurs in "Separating Data from Function in a Distributed File System", a 1978 paper by Xerox PARC computer scientists Howard Sturgis, James Mitchell, and Jay Israel. The authors are careful to define the term for readers, and explain that they use it to distinguish between the user and the user's network node (the client).<ref>{{Cite web| title=Separating Data from Function in a Distributed File System |last1 = Sturgis |first1 = Howard E. |last2 = Mitchell |first2 = James George |last3 = Israel | first3 = Jay E. |publisher=[[PARC (company)|Xerox PARC]] |url=http://ip.com/IPCOM/000128883 |year = 1978}}</ref> By 1992, the word ''server'' had entered into general parlance.<ref>{{OEtymD|server|accessdate=30 November 2013}}</ref><ref>{{cite web |url=https://getinfo.de/app/Separating-data-from-function-in-a-distributed/id/TIBKAT%3A509976956 |title=Separating data from function in a distributed file system |author=<!--Staff writer(s); no by-line.--> |website=[[GetInfo]] |publisher=[[German National Library of Science and Technology]] |access-date=29 November 2013 |archive-url=https://web.archive.org/web/20131202233729/https://getinfo.de/app/Separating-data-from-function-in-a-distributed/id/TIBKAT%3A509976956 |archive-date=2 December 2013 |url-status=dead }}</ref>
==Centralized computing==
|