Какво точно се случва, когато потребителят въведе в адресната лента, част 2
TLS ръкостискане
Клиентският компютър изпраща ClientHello съобщение до сървъра, където посочва версията на TLS, списък с алгоритми за криптиране и налични методи за компресиране. Сървърът отговаря със съобщение ServerHello, съдържащо същите данни, плюс публичния сертификат на сървъра. Сертификатът съдържа публичния ключ, с който клиентът ще шифрова останалата част от поздрава. Клиентът проверява дали сертификатът е подписан от някой от списъка с доверени CA (Сертифициращ орган). Ако проверката е успешна, клиентът генерира псевдослучайна последователност от байтове и я криптира с публичния ключ на сървъра. Тази последователност се използва за създаване на симетричен ключ. Сървърът декриптира последователността с частния си ключ и създава собствено копие на симетричния ключ въз основа на него. Клиентът изпраща съобщение Finished, криптиращо хеша на цялото предаване със симетричен ключ. Сървърът създава свой собствен хеш и дешифрира хеша от клиента, за да ги провери. Ако те са идентични, той изпраща своето съобщение Готово, което също е криптирано със симетричен ключ.
От този момент нататък TLS сесията предава данни по HTTP протокола, криптирани със симетричен ключ.
HTTP протокол
Ако потребителят използва браузър от Google, тогава вместо HTTP заявка за съдържанието на страницата, ще му бъде изпратена заявка за надграждане на протокола от HTTP към SPDY. Ако клиентът не поддържа HTTP протокола, той изпраща заявка до сървъра във формата:
Останалите заглавки съдържат двойки ключ-стойност, разделени с двоеточие. Всяка двойка е отделена от останалите със знак за нов ред. Ако клиентът използва протоколи, по-стари от HTTP/1.1, тогава заявката няма да съдържа хедъра Host и версията в първия ред ще бъде различна - 1.0 или 0.9
Протоколът HTTP/1.1 има способността да затвори връзката следполучаване на отговор. Заглавката изглежда така:
Ако даден клиент не поддържа постоянни връзки, той трябва да включва такова заглавие във всяка заявка.
След изпращане на заявката и заглавките, браузърът изпраща празен низ, сигнализиращ края на съдържанието на заявката. Сървърът отговаря с код, указващ статуса на заявката, последван от заглавки на отговора:
Те са последвани от празен ред, след което HTML съдържанието на страницата www.google.com изпада на клиента. След това сървърът затваря връзката или я оставя отворена, в зависимост от заявките на клиента.
Ако заглавките на HTTP заявката от клиента съдържат информация, която може да се използва, за да се определи, че след като файлът е бил записан в кеша на браузъра, той не се е променил на сървъра (например браузърът е включил ETag заглавката), сървърът може да отговори по следния начин:
и да не включват съдържанието на файла в отговора. След това браузърът зарежда файла от кеша.
Манипулатор на заявка за HTTP сървър
HTTPD сървърът (HTTP Daemon) обработва заявки от страната на сървъра. Най-популярните сървъри са Apache или nginx за Linux и IIS за Windows. Когато сървърът получи заявка, той я анализира според следните параметри:
- Метод на HTTP заявка (GET, POST, HEAD, PUT или DELETE). В нашия случай това ще бъде GET - домейна, в нашия случай google.com. - път / страница, в нашия случай / (път по подразбиране)
Ако сървърът има модул за превод на пътя (mod_rewrite за Apache или URL Rewrite за IIS), той се опитва да съпостави заявката с едно от посочените правила. Ако правилото бъде намерено, сървърът трансформира заявката според него.
След това сървърът чете файла, който съответства на заявката. Ако, например, Google работи на PHP, тогава сървърът използва PHP, за да интерпретира индексния файл и връща резултата от интерпретацията на клиента.
Зад сценатабраузър
След като браузърът получи всички ресурси (HTML, CSS, JS, изображения и т.н.), браузърът анализира текстовите ресурси (HTML, CSS, JS) и започва да изобразява страницата. За целта се изгражда DOM дърво, след което се обработва, изчислява се местоположението на елементите и те се показват.
Функцията на браузъра е да предостави избрания уеб ресурс, като го поиска от сървъра и го покаже в прозореца. Обикновено това е HTML документ, но може да бъде и PDF, изображение или друго съдържание. Местоположението на ресурса се определя от URI.
Как браузърът интерпретира и показва HTML файл е посочено в спецификациите за HTML и CSS, поддържани от World Wide Web Consortium (W3C).
Структура на браузъра на високо ниво
Анализ на HTML (парсер)
Алгоритъм за анализатор
HTML не може да бъде анализиран от нормални анализатори отгоре надолу или отдолу нагоре. Маркирането е твърде либерално, браузърите допускат определени грешки в маркирането и скриптовете понякога принуждават процеса на анализиране да се върне на вече преминати места. Поради това процесът на анализ понякога променя входните данни. Алгоритъмът за анализиране е описан по-подробно в спецификацията на HTML5.