Готовый перевод Mastering Swoole PHP: Build High Performance Concurrent System with Async and Coroutines / Осваиваем Swoole PHP: построение высокопроизводительной конкурентной системы с асинхронностью и корутинами: Жизненный цикл TCP-соединения

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «идёт перевод»

Жизненный цикл TCP-соединения

TCP — это протокол, основанный на соединении, есть два важных процесса TCP-соединения: установка соединения и отключение:

Изображение 7.1 Жизненный цикл TCP-соединения

Как видно из процесса установления и отключения TCP-соединения, рукопожатия необходимы для установления нового соединения. Когда одна из сторон хочет инициировать процесс закрытия соединения, она переходит на определенное время в состояние TIMEWAIT. И мы можем увидеть множество подключений в состоянии TIMEWAIT на загруженном HTTP-прокси, если прокси-сервер заранее прерывает соединение.

Мы можем использовать команду CURL для отправки запроса HTTP HEAD на www.google.com:

curl http://www.google.com -I

HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Date: Thu, 12 Nov 2020 14:52:50 GMT
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked
Expires: Thu, 12 Nov 2020 14:52:50 GMT
Cache-Control: private
Set-Cookie: NID=204=DeE-KL8zAoQ16WXvHSwVQKgKCwH3-FtsIf5An9-fg7lhbIR1YahMKe4AlsNX5w2aAaf0YE3NCpRK7fVBhdzL80x6Ac527HGcDOxJ6DkuqIDh7fOBWze_rr8Cj0TF3GQf83yuRR8aNnl8A0AOkwUUCy4YQDA4-iI54wChGmjJcoE; expires=Fri, 14-May-2021 14:52:50 GMT; path=/; domain=.google.com; HttpOnly

CURL отображает только данные прикладного уровня, но как мы можем проверить шаги, происходящие на нижнем уровне TCP-соединения? Мы можем использовать Wireshark для проверки жизненного цикла TCP-соединений и данных, передаваемых по TCP-соединению.

Первым шагом является фильтрация интересующих нас данных TCP путем ввода фильтра tcpdump в поле фильтра:

http.host matches "google\.com"

В этом примере нас интересуют только данные, отправляемые и получаемые с google.com. Если хотите, вы также можете фильтровать данные по порту, IP-адресу и т. д. Затем, нажав кнопку «следить за TCP-потоком», мы можем увидеть полный цикл обмена данными между вашим HTTP-клиентом CURL и google.com.

-

Изображение 7.2 Использование Wireshark для проверки TCP-соединения

На изображении 7.2. мы можем видеть пакеты SYN, ACK, FIN. Локальный IP-адрес 192.168.1.6 — это ваш IP-адрес на стороне клиента, 216.58.206.132 — это IP-адрес сервера Google.

На практике мы можем использовать tcpdump для захвата пакетов уровня TCP на рабочем сервере в файл, а затем открыть и просмотреть его с помощью Wireshark. Это очень удобный рабочий процесс для отладки проблем на уровне сервиса TCP.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод

Переведено на Нотабеноиде
http://notabenoid.org/book/81342/496701

Переводчики: bubenok

Настройки

Готово:

100.00% КП = 1.0