Лекція 15. Сервери та TCP/IP. HTTP-запити
1. Сервери та TCP/IP
У широкому сенсі, IP це Інтернет протокол, який насправді тільки означає, що кожний комп’ютер (і телефон, і планшет) в Інтернеті слідують визначеному набору правил.
IP адреса це унікальна адреса, яка визначає ці пристрої в Інтернеті. Зараз у нас фактично закінчилися адреси, але про це за секунду.
IP адреса це як поштова адреса. Будівля Максвелла Дворкіна у кампусі має таку адресу: Оксфорд Стрит 33, Кембрідж, Массачусетс, 02138, США. Це унікальна адреса у світі, подібно унікальним адресам комп’ютерів.
IP адреса має форму #.#.#.#, де кожна цифра знаходиться у діапазоні від 0 до 255.
Кожна цифра, відповідно, використовує 8 біт, і в цілому адреса займає 32 біта, що дає приблизно 4 мільярди можливих адрес.
Хоча 4 мільярди це достатньо велике число, ми маємо велику кількість серверів та пристроїв, що стає проблематичним.
Певні діапазони також зарезервовані для певних організацій або провайдерів. Як приклад, більшості комп’ютерів в Гарварді буде надано IP адресу, яка починається з 140.247.#.# або 128.103.#.#, у сусіднім МІТ (Массачусетскому технологічному інституті) є також свій діапазон. Провайдери, таки як Comcast, також мають свій префікс.
Адреси, які починаються з 10.#.#.#, 172.16.#.# - 172.31.#.#, або 192.168.#.# є приватними адресами, які ми встановлюємо окремо для використання у певній мережі, але не в Інтернеті в цілому. (Віртуальна лабораторія CS50 вірогідно має приватну IP адресу, яка починається з 192.168. #.#, для того щоб ваша операційна система могла з нею зв’язатися).
Зауважимо, що лептоп підключений через безпровідний зв’язок до AP (access point, точки доступу), яка зазвичай поставляється з антенами. Ця точка доступу дозволяє пристроям спілкуватися з іншою мережею, використовуючи радіоканал. Вдома, цей пристрій може називатися маршрутизатором (роутером), виробленим D-Link’ом або Linksys’ом або подібними виробниками.
Ця точка доступу підключена до комутатора (світча), який підключений до маршрутизатора та далі до іншого обладнання між маршрутизатором та хмарою праворуч, що представляє собою увесь світ.
Комутатор це простий пристрій з багатою кількістю портів, для підключення пристроїв через кабель.
Ми також маємо принаймні два інших сервера: DHCP та DNS сервери.
Вдома, комутатор (світч), маршрутизатор (роутер), DHCP та DNS сервера замінюються кабелем модему, який підключається до обладнання Інтернет провайдера, наприклад Verizon або Comcast.
DHCP розшифровується як Dynamic Host Configuration Protocol (Протокол динамічного налаштування вузла), який відповідає за динамічне надання ІР адреси. DHCP сервер, отже, просто надає вашому комп’ютеру ІР адресу.
DNS трошки цікавіший, розшифровується як Domain Name System (Система доменних імен). Ці сервери перетворюють URL (Uniform Resource Locator, єдиний вказівник ресурсів) адреси веб-сайту в ІР адресу та навпаки.
Наведемо аналогію: більшість компаній купують номери 1-800 із словами у кінці, наприклад 1-800-COLLECT, так, що людям не потрібно пам’ятати ці номери, потрібно лише одне слово.
Ім’я вузла (hostname) або повністю визначене ім’я домену (FQDN), дозволяє нам робити дещо подібне, відвідувати сервера за їх ім’ям, а не за номером.
Ось що відбувається «за лаштунками», коли ви вводите ім’я веб-сайту: ваша операційна система запитує DNS сервер, яка адреса цього веб-сайту.
Кінцевий пристрій на малюнку, маршрутизатор, відповідає за маршрутизацію: передачу пакетів, або конвертів цифрової інформації від відправника до отримувача.
Комп’ютери, замість використовування імені «Ден», будуть використовувати його ІР адресу. Ми візьмемо конверт і напишемо ІР адресу Дена на ньому у графі «Кому», та також напишемо мою ІР адресу у графі «Від».
Маршрутизатори у мережі Інтернет побачать цей конверт і знають, із початкових налаштувань, що якщо ІР адреса починається з певної цифри, конверт повинен слідувати у певному напрямку (тут є деяке спрощення, але суть та сама).
Маршрутизатори також забезпечують «гарантовану» доставку. TCP (Transmission Control Protocol, протокол керування передачею) це інша технологія, яка використовується у мережі Інтернет, часто разом з ІР (ви могли бачити TCP/IP).
У мережі Інтернет, сервера здатні губити або пропускати пакети, але ми хочемо запобігти цього.
Але перед тим як відправити це, давайте згадаємо, що існує достатня кількість служб у мережі Інтернет, крім звичайного веб-серфінгу. Наприклад, електронна пошта, чат та файлові сховища, і сервери здатні виконувати будь-яку із цих задач. Нам необхідно якимось чином повідомити Дена про тип повідомлення, яке ми відправляємо йому в конверті, так він зможе відкрити її у правильній програмі.
З ТСР, у нас є набір стандартних номерів зв’язаних з певними службами:
- 21 FTP
- 25 SMTP
- 53 DNS
- 80 HTTP
- 443 HTTPS
Наприклад, FTP, протоколу передачі файлів, декілька років тому було надано унікальний ідентифікатор (номер порту) – 21.
SMTP (Simple Mail Transfer Protocol, простий протокол передачі пошти), для вихідної пошти – 25.
DNS використовує порт 53 для запитів або для визначення адреси сайту.
Ви могли бачити, що HTTP, веб-трафік, і HTTPS, захищений веб-трафік, використовують 80 та 443 порти відповідно.
Номер порту для HTTPS може бути більшим ніж 255 тому, що він працює з TCP, а не ІР (у якому 4 цифри, 0-255). Номер порту у ТСР це окреме 16-бітове ціле, так що теоретично він може бути дуже великим, але на практиці використовується кілька тисяч.
На конверті який ми хочемо відправити Дену, ми можемо написати «ІР адреса Дена:80», таким чином повідомляє, що це веб-сторінка, у даному випадку веб-сторінка містить фотографію Роба.
Тепер ми можемо роздати кожний із конвертів навіть окремим маршрутизаторам і в теорії вони повинні пройти свій власний шлях у кінець аудиторії.
Потім Ден зможе знову скласти фотографію та побачить, що там повинно бути чотири частини.
Але, що якщо один маршрутизатор несправний або відключений, і пакет не дійшов до Дена? ТСР повідомить комп’ютер відправити пакет назад – повідомлення від Дена до Девіда – повідомляючи йому які пакети із оригінального повідомлення були втрачені, оскільки усі вони були пронумеровані.
Існують інші протоколи і технології на які ми покладаємось, але ТСР та ІР частіше за все використовуються для більшості популярних служб.
2. HTTP запити
Клієнт - це ваша машина, яка робить запит, та сервер - це машина, яка відправляє на запит у відповідь інформацію.
GET - це ключове слово за допомогою якого комп’ютери отримують інформацію. Вони роблять запит у формі текстового повідомлення, яке дослівно звучить так:
GET / HTTP/1.1
Host: www.google.com
...
Це просте повідомлення буде відкрито сервером на іншій стороні і на яке буде дана відповідна відповідь.
/ одразу після GET запитує кореневу директорію або найвищу директорію. Для того, щоб правильно зайти на сторінку, ми повинні насправді ввести http://www.facebook.com/ з / в кінці, який означає, що ми бажаємо кореневу директорію жорсткого диску або сторінку за замовчування.
Наступна частина, HTTP/1.1, означає, що ми використовуємо версію HTTP 1.1 для спілкування з сервером.
Тепер ми отримуємо назад таку відповідь:
HTTP/1.1 200 OK
Content-Type: text/html
...
Перший рядок це підтвердження, що ми використовуємо версію НТТР 1.1 для зв’язку, та 200 – код стану, який означає ОК: у сервера є сторінка, яку ми запитали.
Другий рядок повідомляє, що браузер отримує назад веб-сторінку типу text/html (може бути ще відео або зображення).
І потім … це повідомлення, яким відповідає сервер.
Якщо коротко, роками, кожен раз коли ви заходите на веб-сторінку, ви відправляєте запити та отримуєте відповіді, і назовні кожного повідомлення, яке ви відправляли, була ваша ІР адреса.
Хтось десь буде знати, хто саме має конкретну IP адресу. І, зрештою, відслідковуючи записи в журналах, можна дістатись і до вас, що, очевидно, зменшує вашу приватність.
Тут наведені деякі можливі коди станів:
- 200 OK (Добре)
- 301 Moved Permanently (Переміщено назавжди)
- 302 Found (Знайдено)
- 401 Unauthorized (Неавторизовано)
- 403 Forbidden (Заборонено)
- 404 Not Found (Не знайдено)
- 500 Internal Server Error (Внутрішня помилка сервера)
Як мінімум, ви бачили 404, що означає файл не існує.