„Здрасти, Амиго!“

„Здравей, Билаабо!“

— Какво ново ще ми кажеш днес?

„Много неща. Но като начало, мисля, че ще обсъдим работата с мрежа и интернет. Интересувате ли се?“

"Да. Галактическият интернет е супер готин."

„Добре, но нека започнем с малко история. В началото на 21 век ситуацията беше следната…“

"Всеки компютър, свързан към Интернет, имаше уникален номер. Това беше обикновен 4-byteов номер. Нарича се IP address."

„Но хората имат слаба памет и им е трудно да запомнят нещо като 2108458776, така че често пишат всеки byte отделно.“

„Ако разделим четириbyteовото число 2108458776 на отделни byteове, получаваме 125.172.135.24. Както си спомняте, всеки byte се състои от 8 бита и може да съдържа числа от 0 до 255.“

"Значи, така пишем номера?"

"Да. Просто е по-лесно (за хората) да запомнят четириbyteови числа, когато са написани по този начин."

„Както се случи, изборът да използват само 4 byteа скоро им изигра жесток номер. Броят на устройствата, свързани с интернет, нарасна толкова бързо, че скоро им свършиха.“

— Как са заобиколor това?

"Те направиха това, което хората обикновено правят."

„Те излязоха с нов стандарт за IP addressи и гордо го нарекоха IPv6.“

„За разлика от нормалния IP address (наречен IPv4), който използва 4 byteа за формиране на уникален номер, новият стандарт използва 16.“

„Само си помислете, хората не можеха да запомнят 10 цифри в обикновено число (като 2108458776), така че трябваше да ги разделят на 4 части, но след това решиха да използват числа, състоящи се от 16 byteа.“

"Да, понякога хората са странни."

"Да. Хората са си хора."

„Това каза, те наистина се измъкнаха от затрудненото си положение.“

„Умориха се да помнят числата и решиха да ги заменят с думи.“

"Как така? Бихте ли ми дали пример?"

„Разбира се, web.mail.com , google.com , new.books.amazon.com , …“

„Този ​​вид име се нарича домейн.“

„За да може този интернет да работи правилно, те създадоха специална table, наречена Domain Name System (DNS), която съхранява IP address на всяко име на домейн.“

— Ето How става.

1)  Потребителят въвежда address в браузър, например web.mail.com .

2)  Браузърът осъществява достъп до DNS и използва името на домейна, за да получи IP address.

3)  На този IP address се изпраща заявка с необходимия URL address.

— Това не изглежда много просто.

„Но този подход има няколко предимства:“

" 1) Хората намират за лесно да запомнят имена, които могат да бъдат вербализирани."

" 2) Имената на домейни могат да бъдат изградени йерархично чрез добавяне на поддомейни в началото на името. Точно като име на пакет в Java."

" 3) Ако трябва да промените IP address на уеб сървъра, трябва само да промените DNS записа и всичко ще работи Howто преди - потребителите не трябва да запомнят нов address."

„DNS изглежда по следния начин:“

Име на домейн IP address
mail.com 128.35.36.189
web.mail.com 145.12.17.13
new.mail.com 192.155.15.3
google.com 92.117.151.100
google.com 193.168.0.1
docs.google.com 217.12.222.1

"Има смисъл."

„Както и да е, домейнът е името на компютър, но ние не се нуждаем от компютъра – имаме нужда от това, което е на компютъра. Ето за Howво служат URL addressите.“

„Първоначално URL addressът всъщност беше връзка към файл на друг компютър. Например:“

Пример
http :// info.codegym.cc / user/info/profile.html
Описание
http  е протоколът за комуникация клиент-сървър
info.codegym.cc  е името на домейна на компютъра
user/info/profile.html  е пътят до file на компютъра

„В самото начало на развитието на мрежата уеб сървърът можеше да използва само URL, за да обслужва файлове, които съхраняваше някъде. URL addressът всъщност беше глобален път към file: име на компютър + път.“

„По-късно, когато уеб сървърите започнаха сами да генерират файлове, URL addressите се промениха малко и станаха заявка към уеб сървъра. Бяха добавени и параметри на заявката.“

„Днес е рядкост да видите файлово разширение в края на URL. „Модерният URL е просто уникална връзка с параметри. По-скоро като извикване на метод, отколкото като глобален път към файл."

„Класически модерен URL address изглежда така:“

Разбор на URL
http://codegym.cc/alpha/api/contacts ? _ _ _ _ userid=13&filter=none&page=3
Описание на части от URL address
codegym.cc  е името на домейна — уникалното име (address) на компютър в Интернет
http  е протоколът за комуникация клиент-сървър
alpha/api/contacts  е заявката за уеб сървър or заявка за уеб page на сървъра
userid=13 & filter=none & page=3  е низ с параметрите на заявката

„Да, спомням си. Наскоро ми казахте за URL addressи.“

— И за пристанищата също. Използвахте примера с жorщна сграда.

„Би било по-добре да ми кажете Howво е „http“. Виждам „протокол“ написано навсякъде, но не ми е ясно Howво е това.“

"Добре. Ще ви кажа без повече приказки."

IP-address, домейн, URL - 1

" HTTP означава H yper T ext T transport P protocol и е за прехвърляне на хипертекст."

„Какво е хипертекст?“

„Това е HTML.“

"Грубо казано, протоколът е набор от правила за комуникация. Той описва заявките, които могат да бъдат изпратени до уеб сървър и в Howъв формат, Howто и How уеб сървърът трябва да отговори."

"Накратко, ситуацията е следната. Обикновени текстови файлове or, ако желаете, големи парчета текст се изпращат между клиента и сървъра. "

Заявката идва до сървъра и сървърът предоставя отговор на всяка заявка.“

„Ето примери за такова искане и отговор:“

Заявка
GET alpha/api/contacts HTTP/1.1
Host: codegym.cc
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
Описание
GET – request subtype
alpha/api/contacts – request to the web server
HTTP/1.1 – protocol version – HTTP/1.1
Host: codegym.cc – domain name
User-Agent: Mozilla/5 – unique browser name
Accept: text/html – requested document type: HTML
Connection: close – close the server connection after processing the request.

„Първият ред е действителната заявка. Това, което следва, са допълнителни параметри на заявката, известни също като „заглавни полета“.“

„И ето пример за отговор:“

Отговор
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: en
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
<html><body><a href="http://ample.com/about.html#contacts">Click here</a></body></html>
HTTP/1.1 200 OK - «200 OK» means everything is okay.
Date: Wed, 11 Feb 2009 - Date on which the request was processed
Server: Apache - Name of the web server
X-Powered-By: PHP - The server uses PHP
Last-Modified: Wed, 11 Feb 2009 - The time of the last update of the requested file
Content-Language: en - The language of the file
Content-Type: text/html; charset=utf-8This is an HTML-file with UTF-8 encoding
Content-Length: 1234 - The response is 1234 bytes long
Connection: close - The connection will be closed after the request is handled
<html><body><a href="http://ample - The HTML file itself.

„Искам да обърна внимание на две неща:

„Първо, без meaning Howво поискате, то изглежда като заявка за файл към сървъра. Няма meaning дали файлът е на сървъра or сървърът го генерира в отговор на заявката.“

„Второ, самият файл се изпраща като част от HTTP отговора . С други думи, виждаме някои допълнителни данни в началото на отговора на сървъра и след това тялото на обслужвания файл.

„Колко интересно! Не съм сигурен, че разбрах всичко. Ще го прочета отново по-късно.“

„О, искам да ви разкажа за още едно малко, но интересно нещо: бисквитките.“

"Какви са тези?"

„Съгласно HTTP протокола бисквитките са малки части от информация, които сървърът изпраща на клиента за съхранение на клиента. И те се изпращат обратно на сървъра като част от последващи заявки.

— И Howъв е смисълът от това?

„Да предположим, че потребител влиза в началната page на уебсайт. Сървърът създава обект на сесия на сървъра за този потребител и уникален номер на сесия се изпраща на клиента като бисквитка. По време на следващата заявка от клиента към сървър, този номер на сесия, заедно с други бисквитки, ще бъдат изпратени обратно на сървъра. Това означава, че сървърът може да разпознае потребителя, изпратил новата заявка."

"Колко интересно!"

„Да. Когато напишете свои собствени сервлети, ще разгледаме по-отблизо тази тема. Но засега нека си дадем почивка.“

"Каквото кажеш."