Продовжуйте уточнення заголовка


106

Мене попросили створити сайт, і один із співавторів сказав мені, що мені потрібно включити заголовок "Keep-Live".

Ну я читаю багато про це, і досі у мене є питання.

msdn ->

Відкрите з'єднання покращує продуктивність, коли клієнт робить кілька запитів на вміст веб-сторінок, оскільки сервер може швидше повертати вміст для кожного запиту. В іншому випадку сервер повинен відкрити нове з'єднання для кожного запиту

Дивлячись на

введіть тут опис зображення

  • Коли МПМ (F) посилає keep aliveзаголовок ( або користувач відправляє підтримки активності ), це означає , що ( E, C, B) , крім з'єднання , який призначений тільки для моєї сесії?
  • Де зберігається ця інформація ( "цей зв'язок належить до" Royi " )?
  • Чи означає це, що ніхто більше не може використовувати це з'єднання
  • Якщо так - це означає, що збереження в заголовку - зменшити кількість користувачів, що перекриваються з'єднаннями?
  • якщо так, то на який час зберігається з'єднання? (інакше кажучи, якщо я налаштую на те, щоб продовжувати жити - "тримати" до тих пір, коли?)

ps для тих, хто цікавиться:

натиснувши цю зразкову сторінку , повернетеся до заголовка


2
Pfff, я це бачив на лекції, але не зовсім впевнений. Я думав, що підтримка в живих є лише на сервері та користувачі. Зрештою, все між ними навіть не повинно знати, що це HTTP, не кажучи вже про заголовки.
Ноктуа

Заява, цитується з MSDN, є зміною. Саме клієнт повинен відкрити нове з'єднання, якщо не залишилося в живих.
Маркіз Лорн

І якщо ви створюєте сайт, а не веб-сервер чи клієнт, заголовок keepalive вже готовий для вас.
Маркіз Лорн

Відповіді:


145

Де зберігається ця інформація ("це з'єднання між комп'ютером Aта сервером F")?

TCP-з'єднання розпізнається за вихідним IP-адресом та портом і IP-адресою призначення та портом. Ваша ОС, усі пристрої проміжних сеансів і ОС сервера розпізнають це з'єднання.

HTTP працює з запитом-відповіддю: клієнт підключається до сервера, виконує запит і отримує відповідь. Без збереження життя з'єднання з сервером HTTP закривається після кожної відповіді. Завдяки підтримці HTTP-режиму залишається відкритим базове з'єднання TCP, поки не будуть виконані певні критерії.

Це дозволяє отримати кілька пар запит-відповідь через одне з'єднання TCP, усуваючи деякі відносно повільні запуски з'єднання TCP.

Коли IIS (F) надсилає живий заголовок (або користувач надсилає режим збереження), чи означає це, що (E, C, B) зберегти з'єднання

Ні. Маршрутизаторам не потрібно пам'ятати сеанси. Насправді, декілька пакетів TCP, що належать до одного і того ж сеансу TCP, не повинні всі проходити однакові маршрутизатори - тобто для управління TCP. Маршрутизатори просто вибирають найкращий IP-шлях та переадресацію пакетів. Продовжуйте жити лише для клієнтів, серверів та будь-яких інших пристроїв із проміжними сесіями.

що тільки для мого сеансу?

Чи означає це, що ніхто більше не може використовувати це з'єднання

Це намір TCP-з'єднань : це кінцеве з'єднання, призначене лише для цих двох сторін.

Якщо так - це означає, що збереження в заголовку - зменшити кількість користувачів, що перекриваються з'єднаннями?

Визначте "перекриті з'єднання". Див. Стійке з'єднання HTTP щодо деяких переваг та недоліків, таких як:

  • Зниження використання процесора та пам'яті (оскільки одночасно відкрито менше з'єднань).
  • Вмикає HTTP-конвеєризацію запитів та відповідей.
  • Зменшення перевантаженості мережі (менше TCP-з'єднань).
  • Зменшення затримки в наступних запитах (відсутність рукостискань).

якщо так, то на який час зберігається з'єднання? (інакше кажучи, якщо я налаштую на те, щоб продовжувати жити - "тримати" до тих пір, коли?)

Типова реакція на збереження життя виглядає приблизно так:

Keep-Alive: timeout=15, max=100

Дивіться, наприклад, заголовок Keep-Alive протоколу передачі гіпертексту (HTTP) (чернетка для HTTP / 2, де заголовок збереженого життя пояснюється більш детально, ніж 2616 та 2086 ):

  • Хост встановлює значення timeoutпараметра в той час, коли хост дозволить простоюче з'єднання залишатися відкритим до його закриття. З'єднання не працює, якщо хост не надсилає та не отримує даних.

  • maxПараметр вказує максимальну кількість запитів , які клієнт буде робити, або що сервер дозволить зробити на постійному зв'язку. Після того, як вказана кількість запитів та відповідей буде надіслана, хост, який включав параметр, міг перервати з'єднання.

Однак сервер може закрити з'єднання після довільного часу або кількості запитів (до тих пір, поки він поверне відповідь на поточний запит). Як це буде реалізовано, залежить від вашого HTTP-сервера.


Визначте "перекриті з'єднання" ----> я маю на увазі одночасно. (і я думаю, що кількість одночасних з'єднань зменшиться, тому що, як ви вже говорили: "з'єднання X зарезервоване для Джона, тому що він використовує заголовок" живого ". .... я прав?
Рой Намір

1
Тож, про що ви говорите, це те, що якщо сервер може одночасно обробляти 100 підключень, а всі ці з'єднання використовуються в режимі зберігання, тоді 101-е з'єднання буде скинуто ???
Рой Намір

1
@Royi ні, я не знаю, скільки підключень підтримує живий браузер до даного хоста, і я не хотів сказати, що браузер відкриє лише одне. Кількість запитів, що приймаються одночасно, обмежена і змінюється в залежності від браузера . Я мав на увазі, що якщо веб-переглядач використовує постійні підключення, він може замість того, щоб запускати Nзапити через Nз'єднання (як за замовчуванням, з'єднання закривається після кожної відповіді), наприклад, Nзапити на запуск через N / Mабо навіть просто Mз'єднання, оскільки він може запускати кілька запитів на кожне відкрите з'єднання, тому можна використовувати менше.
CodeCaster

1
Я знаю це. (:-)) Ви сказали у своєму коментарі: клієнт буде робити менше одночасних з'єднань при використанні режиму "live-Live", він записуватиме запити послідовно, а не паралельно . Я просто не розумію, як це стосується кепаліве.
Рой Намір

5
E, C, B не зберігають сеанси. Це маршрутизатори, у них немає жодної таблиці сеансів, і їм не потрібно, оскільки кілька пакетів з одного і того ж сеансу клієнт-сервер TCP можуть слідувати різними шляхами. Роль маршрутизатора полягає в тому, щоб вибрати найкращий IP-шлях і переадресувати пакет відповідно, щоб він не піднімався до транспортного рівня (TCP / UDP), а також не переходив на додаток шару, щоб побачити заголовок збереження в живих. Таким чином, в основному підтримка в режимі живого є явно між клієнтом і сервером, і це неявно дає змогу
відомим сеансам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.