Какво се случва, когато въведете URL адрес в браузъра и натиснете Enter?



Maneesha Wijesinghe

https://medium.com/@maneesha.wijesinghe1/what-happens-when-you-type-an-url-in-the-browser-and-press-enter-bb0aa2449c1a

Apr 26, 2017-7 мин.

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

Нека си представим, че искате да влезете в maps.google.com, за да проверите точното време, което ще ви е необходимо, за да стигнете от работа до резервацията си за вечеря.

1. Въвеждате maps.google.com в адресната лента на браузъра си.

2. Браузърът проверява кеша за DNS запис, за да намери съответния IP адрес на maps.google.com.

DNS(Domain Name System) е база данни, която поддържа името на уебсайта (URL) и конкретния IP адрес, към който той препраща. Всеки отделен URL адрес в интернет има уникален IP адрес, който му е присвоен. IP адресът принадлежи на компютъра, на който се намира сървърът на уебсайта, до който искаме да получим достъп. Например, www.google.com има IP адрес 209.85.227.104. Така че, ако желаете, можете да достигнете до www.google.com, като въведете http://209.85.227.104 в браузъра си. DNS е списък с URL адреси и техните IP адреси, както телефонният указател е списък с имена и съответните им телефонни номера.

Основната цел на DNS е удобната за хората навигация. Можете лесно да получите достъп до даден уебсайт, като въведете правилния IP адрес за него в браузъра си, но представете си, че трябва да помните различни набори от номера за всички сайтове, които редовно посещаваме? Затова е по-лесно да запомним името на уебсайта с помощта на URL и да оставим DNS да свърши работата вместо нас, като го съпостави с правилния IP адрес.

За да намери DNS записа, браузърът проверява четири кеша.

● Първо, той проверява кеша на браузъра. Браузърът поддържа хранилище на DNS записи за определен период от време за уебсайтове, които сте посещавали преди това. Така че това е първото място, където се изпълнява DNS заявка.

● Второ, браузърът проверява кеша на операционната система. Ако не се намира в кеша на браузъра, браузърът ще направи системно извикване (напр. gethostname в Windows) към операционната система на компютъра, за да изтегли записа, тъй като операционната система също поддържа кеш на DNS записи.

● Трето, проверява се кешът на маршрутизатора. Ако той не е на вашия компютър, браузърът ще се свърже с маршрутизатора, който поддържа собствен кеш на DNS записи.

● Четвърто, проверява кеша на интернет доставчика. Ако всички стъпки са неуспешни, браузърът ще премине към доставчика на интернет услуги. Вашият доставчик на интернет услуги поддържа собствен DNS сървър, който включва кеш на DNS записи, които браузърът ще провери с последната надежда да намери искания от вас URL адрес.

Може би се чудите защо има толкова много кешове, поддържани на толкова много нива. Въпреки че информацията, която се кешира някъде, не ни кара да се чувстваме много комфортно, когато става въпрос за неприкосновеност на личния живот, кешовете са от съществено значение за регулиране на мрежовия трафик и подобряване на времето за прехвърляне на данни.

3. Ако заявеният URL адрес не е в кеша, DNS сървърът на доставчика на интернет услуги инициира DNS заявка, за да намери IP адреса на сървъра, на който се намира maps.google.com.

Както беше споменато по-рано, за да може моят компютър да се свърже със сървъра, на който е разположен maps.google.com, ми е необходим IP адресът на maps.google.com. Целта на DNS заявката е да се претърсят множество DNS сървъри в интернет, докато се намери правилният IP адрес за уебсайта. Този тип търсене се нарича рекурсивно търсене, тъй като търсенето ще продължи многократно от DNS сървър към DNS сървър, докато не намери необходимия IP адрес или не върне отговор за грешка, че не е успял да го намери.

В тази ситуация бихме нарекли DNS сървъра на доставчика на интернет услуги DNS рекурсор, чиято отговорност е да намери правилния IP адрес на желаното име на домейн, като поиска отговор от други DNS сървъри в интернет. Другите DNS сървъри се наричат сървъри за имена, тъй като те извършват DNS търсене въз основа на архитектурата на домейна на уебсайта.

Без да ви обърквам допълнително, бих искал да използвам следната схема, за да обясня архитектурата на домейна.


https://webhostinggeeks.com/guides/dns/

Много URL адреси на уебсайтове, с които се сблъскваме днес, съдържат домейн от трето ниво, домейн от второ ниво и домейн от първо ниво. Всяко от тези нива съдържа свой собствен сървър за имена, който се запитва по време на процеса на търсене в DNS.

За maps.google.com първо DNS рекурсорът ще се свърже с основния сървър за имена. Коренният сървър за имена ще го пренасочи към сървъра за имена на домейна .com. Сървърът за имена в домейна .com ще го пренасочи към сървъра за имена в google.com. Сървърът за имена на google.com ще открие в своите DNS записи съответстващия IP адрес за maps.google.com и ще го върне на вашия DNS рекурсор, който ще го изпрати обратно на вашия браузър.

Тези заявки се изпращат с помощта на малки пакети данни, които съдържат информация като съдържанието на заявката и IP адреса, за който е предназначена (IP адрес на DNS рекурсора). Тези пакети преминават през множество мрежови съоръжения между клиента и сървъра, преди да достигнат до правилния DNS сървър. Това оборудване използва таблици за маршрутизация, за да определи кой е най-бързият възможен начин за достигане на пакета до местоназначението му. Ако тези пакети се изгубят, ще получите грешка за неуспешна заявка. В противен случай те ще достигнат до правилния DNS сървър, ще вземат правилния IP адрес и ще се върнат обратно в браузъра ви.

4. Браузърът инициира TCP връзка със сървъра.

След като браузърът получи правилния IP адрес, той ще изгради връзка със сървъра, който съответства на IP адреса, за да прехвърли информация. Браузърите използват интернет протоколи за изграждане на такива връзки. Съществуват няколко различни интернет протокола, които могат да се използват, но TCP е най-често използваният протокол за много видове HTTP заявки.

За да се прехвърлят пакети с данни между вашия компютър(клиент) и сървъра, е важно да има изградена TCP връзка. Тази връзка се установява с помощта на процес, наречен TCP/IP тристранно ръкостискане. Това е процес от три стъпки, при който клиентът и сървърът си разменят съобщения SYN(синхронизиране) и ACK(потвърждение), за да установят връзка.

1. Клиентската машина изпраща SYN пакет до сървъра по интернет, като го пита дали е отворен за нови връзки.

2. Ако сървърът има отворени портове, които могат да приемат и инициират нови връзки, той ще отговори с ACKnowledgment (потвърждение) на SYN пакета, като използва SYN/ACK пакет.

3. Клиентът ще получи SYN/ACK пакета от сървъра и ще го потвърди, като изпрати ACK пакет.

След това се установява TCP връзка за предаване на данни!

5. Браузърът изпраща HTTP заявка към уебсървъра.

След като TCP връзката е установена, е време да започнете да предавате данни! Браузърът ще изпрати GET заявка с искане за уебстраницата maps.google.com. Ако въвеждате идентификационни данни или изпращате формуляр, това може да бъде POST заявка. Тази заявка ще съдържа и допълнителна информация, като например идентификация на браузъра (заглавие User-Agent), видове заявки, които ще приеме (заглавие Accept), и заглавия за връзка, с които се иска поддържане на TCP връзката за допълнителни заявки. Тя също така ще предаде информация, взета от "бисквитките", които браузърът съхранява за този домейн.

Примерна заявка GET (заглавията са подчертани):


(Ако сте любопитни какво се случва зад кулисите, можете да използвате инструменти като Firebug, за да разгледате HTTP заявките. Винаги е забавно да се види информацията, която се предава между клиентите и сървърите, без да знаем).

6. Сървърът обработва заявката и изпраща обратно отговор.

Сървърът съдържа уеб сървър (напр. Apache, IIS), който получава заявката от браузъра и я предава на обработчик на заявки, за да я прочете и да генерира отговор. Обработчикът на заявки е програма (написана на ASP.NET, PHP, Ruby и т.н.), която чете заявката, нейните заглавия и бисквитки, за да провери какво се иска, а също и да актуализира информацията на сървъра, ако е необходимо. След това тя ще състави отговор в определен формат (JSON, XML, HTML).

7. Сървърът изпраща HTTP отговор.

Отговорът на сървъра съдържа уебстраницата, която сте поискали, както и кода на състоянието, типа на компресия (Content-Encoding), начина на кеширане на страницата (Cache-Control), всички бисквитки, които трябва да се зададат, информация за поверителността и т.н.

Пример за HTTP отговор на сървъра:


Ако разгледате горния отговор, на първия ред се вижда код на състоянието. Той е доста важен, тъй като ни казва състоянието на отговора. Съществуват пет вида статуси, описани подробно с помощта на цифров код.

● 1xx показва само информационно съобщение

● 2xx показва някакъв вид успех

● 3xx пренасочва клиента към друг URL адрес

● 4xx показва грешка от страна на клиента

● 5xx показва грешка от страна на сървъра

Така че, ако сте се сблъскали с грешка, можете да погледнете HTTP отговора, за да проверите какъв тип код на състоянието сте получили.

8. Браузърът показва HTML съдържанието (за HTML отговорите, които са най-често срещаните).

Браузърът показва HTML съдържанието на етапи. Първо, той ще изобрази голия HTML скелет. След това ще провери HTML таговете и ще изпрати GET заявки за допълнителни елементи на уеб страницата, като например изображения, CSS стилове, JavaScript файлове и др. Тези статични файлове се кешират от браузъра, за да не се налага да ги извлича отново при следващото посещение на страницата. В крайна сметка ще видите, че maps.google.com се появява в браузъра ви.

Това е всичко!

Въпреки че това изглежда като много досаден продължителен процес, ние знаем, че отнема по-малко от секунди, за да се визуализира уеб страницата, след като натиснем Enter на клавиатурата си. Всички тези стъпки се случват в рамките на милисекунди, преди да успеем да ги забележим. Искрено се надявам тази статия да ви помогне да си отговорите на въпроса: "Какво се случва, когато въведете URL адрес в браузъра и натиснете Enter?".

Чувствайте се свободни да харесвате, коментирате или споделяте тази статия, ако ви е била полезна:)

Коментари

Популярни публикации от този блог

Конференция на патолозите – резултати от аутопсии и изследвания на ваксинирани хора

Как д-р Фаучи и други длъжностни лица са укривали информация за експериментите с коронавируси в Китай

Само няколко часа след публикуването на тайната на ваксината д-р Ноак е мъртъв