This commit is contained in:
Miloslav Ciz 2022-05-18 21:18:17 +02:00
parent eaa715af8c
commit f0c3f6aecf
14 changed files with 273 additions and 18 deletions

23
www.md
View file

@ -22,6 +22,29 @@ Between 2000 and 2010 there used to be a mobile alternative to the web called [W
Around 2005, the time when [YouTube](youtube.md), [Twitter](twitter.md), [Facebook](facebook.md) and other shit sites started to appear and become popular, so called [Web 2.0](web_20.md) started to form. This was a shift in the web's paradigm towards more [shittiness](shit.md) such as more [JavaScript](javascript.md), [bloat](bloat.md), interactivity, websites as programs, [Flash](flash.md), [social networks](social_network.md) etc. This would be the beginning of the web's downfall.
## How It Works
It's all pretty well known, but in case you're a nub...
Users browse the Internet using [web browsers](browser.md), programs made specifically for this purpose. Pages on the [Internet](internet.md) are addressed by their [URL](url.md), a kind of textual address such as `http://www.mysite.org/somefile.html`. This address is entered into the web browser, the browser retrieves it and displays it.
A webpage can contain text, pictures, graphics and nowadays even other media like video, audio and even programs that run in the browser. Most importantly webpages are [hypertext](hypertext.md), i.e. they may contain clickable references to other pages -- clicking a link immediately opens the linked page.
The page itself is written in [HTML](html.md) language (not really a [programming](programming.md), more like a file format), a relatively simple language that allows specifying the structure of the text (headings, paragraphs, lists, ...), inserting links, images etc. In newer browsers there are additionally two more important languages that are used with websites (they can be embedded into the HTML file or come in separate files): [CSS](css.md) which allows specifying the look of the page (e.g. text and font color, background images, position of individual elements etc.) and [JavaScript](js.md) which can be used to embed [scripts](script.md) (small [programs](program.md)) into webpages which will run on the user's computer (in the browser). These languages combined make it possible to make websites do almost anything, even display advanced 3D graphics, play movies etc. However, it's all huge [bloat](bloat.md), it's pretty slow and also dangerous, it was better when webpages used to be HTML only.
The webpages are stored on web [servers](server.md), i.e. computers specialized on listening for requests and sending back requested webpages. If someone wants to create a website, he needs a server to host it on, so called [hosting](hosting.md). This can be done by setting up one's own server -- so called [self hosting](self_hosting.md) -- but nowadays it's more comfortable to buy a hosting service from some company, e.g. a [VPS](vps.md). For running a website you'll also want to buy a web [domain](domain.md) (like `mydomain.com`), i.e. the base part of the textual address of your site (there exist free hosting sites that even come with free domains if you're not picky, just search...).
When a user enters a URL of a page into the browser, the following happens (it's kind of simplified, there are [caches](cache.md) etc.):
1. The [domain](domain.md) name (e.g. `www.mysite.org`) is converted into an [IP](ip.md) address of the server the site is hosted on. This is done by asking a [DNS](dns.md) server -- these are special servers that hold the database mapping domain names to IP addresses (when you buy a domain, you can edit its record in this database to make it point to whatever address you want).
2. The browser sends a request for given page to the IP address of the server. This is done via [HTTP](http.md) (or [HTTPS](https.md) in the encrypted case) protocol -- this protocol is a language via which web servers and clients talk (it can contain additional data like passwords entered on the site etc.). (If the encrypted HTTPS protocol is used, encryption is performed with [asymmetric cryptography](asymmetric_cryptography.md) using the server's public key whose digital signature additionally needs to be checked with some certificate authority.) This request is delivered to the server by the mechanisms and lower network layers of the [Internet](internet.md), typically [TCP](tcp.md)/[IP](ip.md).
3. The server receives the request and sends back the webpage embedded again in an [HTTP](http.md) response, along with other data such as the error/success code.
4. Client browser receives the page and displays it. If the page contains additional resources that are needed for displaying the page, such as images, they are automatically retrieved the same way.
[Cookies](cookie.md), small files that sites can store in the user's browser, are used on the web to implement stateful behavior (e.g. remembering if the user is signed in on a forum). However cookies can also be abused for tracking users, so they can be turned off.
Other programming languages such as [PHP](php.md) can also be used on the web, but they are used for server-side programming, i.e. they don't run in the web browser but on the server and somehow generate and modify the sites for each request specifically. This makes it possible to create dynamic pages such as [search engines](search_engine.md) or [social networks](social_network.md).
## See Also
- [teletext](teletext.md)