Mastering Swoole PHP: Build High Performance Concurrent System with Async and Coroutines / Осваиваем Swoole PHP: построение высокопроизводительной конкурентной системы с асинхронностью и корутинами: Жизненный цикл TCP-соединения
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Жизненный цикл TCP-соединения bubenok 09.02.22 в 13:41 |
|
|
TCP — это протокол, основанный на соединении, есть два важных процесса TCP-соединения: установка соединения и отключение: bubenok 09.02.22 в 13:42 |
||
|
Изображение 7.1 Жизненный цикл TCP-соединения bubenok 09.02.22 в 13:42 |
||
|
Как видно из процесса установления и отключения TCP-соединения, рукопожатия необходимы для установления нового соединения. Когда одна из сторон хочет инициировать процесс закрытия соединения, она переходит на определенное время в состояние TIMEWAIT. И мы можем увидеть множество подключений в состоянии TIMEWAIT на загруженном HTTP-прокси, если прокси-сервер заранее прерывает соединение. bubenok 09.02.22 в 13:47 |
||
|
Мы можем использовать команду CURL для отправки запроса HTTP HEAD на www.google.com: bubenok 09.02.22 в 13:47 |
||
|
curl http://www.google.com -I bubenok 09.02.22 в 13:47 |
||
|
HTTP/1.1 200 OK bubenok 09.02.22 в 13:47 |
||
|
CURL отображает только данные прикладного уровня, но как мы можем проверить шаги, происходящие на нижнем уровне TCP-соединения? Мы можем использовать Wireshark для проверки жизненного цикла TCP-соединений и данных, передаваемых по TCP-соединению. bubenok 09.02.22 в 13:48 |
||
|
Первым шагом является фильтрация интересующих нас данных TCP путем ввода фильтра tcpdump в поле фильтра: bubenok 09.02.22 в 13:49 |
||
|
http.host matches "google\.com" bubenok 09.02.22 в 13:49 |
||
|
В этом примере нас интересуют только данные, отправляемые и получаемые с google.com. Если хотите, вы также можете фильтровать данные по порту, IP-адресу и т. д. Затем, нажав кнопку «следить за TCP-потоком», мы можем увидеть полный цикл обмена данными между вашим HTTP-клиентом CURL и google.com. bubenok 09.02.22 в 13:50 |
||
|
- bubenok 09.02.22 в 13:50 |
||
|
Изображение 7.2 Использование Wireshark для проверки TCP-соединения bubenok 09.02.22 в 13:50 |
||
|
На изображении 7.2. мы можем видеть пакеты SYN, ACK, FIN. Локальный IP-адрес 192.168.1.6 — это ваш IP-адрес на стороне клиента, 216.58.206.132 — это IP-адрес сервера Google. bubenok 09.02.22 в 13:51 |
||
|
На практике мы можем использовать tcpdump для захвата пакетов уровня TCP на рабочем сервере в файл, а затем открыть и просмотреть его с помощью Wireshark. Это очень удобный рабочий процесс для отладки проблем на уровне сервиса TCP. bubenok 09.02.22 в 13:52 |
