Третья часть с сайтом

This commit is contained in:
2025-04-02 11:05:22 +03:00
parent e79202c319
commit cb14beb558

View File

@@ -429,5 +429,55 @@
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
\end{lstlisting} \end{lstlisting}
\subsection{Открытие сайта в браузер}
Для выполнения последней задачи необходимо было открыть сайт \url{mega.cl} в браузере с включённым windump, для запуска которого использовалась команда \texttt{windump -i 2 -v host mega.cl}.
Первые три пакета (листинг~\ref{lst:first-three}) используются для установки TCP соединения между клиентом и сервером.
\begin{lstlisting}[caption={Первые три пакета.}, label={lst:first-three}]
19:41:58.828210 IP (tos 0x0, ttl 128, id 20148, offset 0, flags [DF], proto: TCP (6), length: 52) artem.61628 > as5300-c4-139.cpc.entelchile.net.443: S, cksum 0xee91 (correct), 1029066177:1029066177(0) win 8760 <mss 1460,nop,wscale 8,nop,nop,sackOK>
19:41:59.074184 IP (tos 0x0, ttl 238, id 5828, offset 0, flags [DF], proto: TCP (6), length: 52) as5300-c4-139.cpc.entelchile.net.443 > artem.61628: S, cksum 0x889f (correct), 1631908201:1631908201(0) ack 1029066178 win 14000 <mss 1400,nop,wscale 0,sackOK,eol>
19:41:59.074345 IP (tos 0x0, ttl 128, id 20150, offset 0, flags [DF], proto: TCP (6), length: 40) artem.61628 > as5300-c4-139.cpc.entelchile.net.443: ., cksum 0xfebb (correct), ack 1 win 34
\end{lstlisting}
Рассмотрим каждый пакет по отдельности:
\begin{enumerate}
\item Клиент (ноутбук artem) с порта 61628 отправляет TCP-пакет (упакованный в IP пакет) с флагом S (SYN) для инициализации соединения с сервером as5300-c4-139.cpc.entelchile.net по порту 443 (HTTPS). Отправляется также номер последовательности -- 1029066177.
\item Сервер отвечает пакетом с флагом S (SYN) и ACK (windump не выводит его явно, но можно понять, что он передаётся по наличию поля ack). В поле ack сервер указывает 1029066178, то есть увеличенный на единицу номер последовательности, который передал клиент при установке соединения. Также сервер отправляет новый номер последовательности -- 1631908201.
\item Клиент отправляет пакет с флагом ACK (выводится как .), подтверждая получения SYN-ACK пакета.
\end{enumerate}
После установки соединения начинается передача данных. В листинге~\ref{lst:request} видно, как клиент отправляет пакет с флагом P (PUSH) и передаёт 317 байт данных. Клиент указывает диапазон переданных байтов -- 1401:1718. За ним следует ответ от сервера с флагом ACK (.). В поле ack сервер указывает конец диапазона байтов, получение которых он подтверждает (ack 1718). Скорее всего в этом пакете клиент делает HTTP запрос.
\begin{lstlisting}[caption={Клиент делает запрос.}, label={lst:request}]
19:41:59.075165 IP (tos 0x0, ttl 128, id 20152, offset 0, flags [DF], proto: TCP (6), length: 357) artem.61628 > as5300-c4-139.cpc.entelchile.net.443: P 1401:1718(317) ack 1 win 34
19:41:59.336245 IP (tos 0x0, ttl 238, id 6571, offset 0, flags [DF], proto: TCP (6), length: 40) as5300-c4-139.cpc.entelchile.net.443 > artem.61628: ., cksum 0xbac3 (correct), ack 1718 win 15717
\end{lstlisting}
Затем сервер начинает передавать клиенту ответные данные (листинг~\ref{lst:response}). Клиент отвечает и подтверждает, что принял данные. Последний пакет сервер отправляет с флагом P (PUSH), чтобы клиент начал обработку пришёдших данных. На этот пакет клиент также отвечает подтверждением.
\begin{lstlisting}[caption={Сервер отвечает.}, label={lst:response}]
19:41:59.341484 IP (tos 0x0, ttl 238, id 6602, offset 0, flags [DF], proto: TCP (6), length: 206) as5300-c4-139.cpc.entelchile.net.443 > artem.61628: . 1:167(166) ack 1718 win 15717
19:41:59.341647 IP (tos 0x0, ttl 238, id 6603, offset 0, flags [DF], proto: TCP (6), length: 1440) as5300-c4-139.cpc.entelchile.net.443 > artem.61628: . 167:1567(1400) ack 1718 win 15717
19:41:59.341683 IP (tos 0x0, ttl 128, id 20154, offset 0, flags [DF], proto: TCP (6), length: 40) artem.61628 > as5300-c4-139.cpc.entelchile.net.443: ., cksum 0xf1e8 (correct), ack 1567 win 34
19:41:59.341727 IP (tos 0x0, ttl 238, id 6604, offset 0, flags [DF], proto: TCP (6), length: 1440) as5300-c4-139.cpc.entelchile.net.443 > artem.61628: . 1567:2967(1400) ack 1718 win 15717
19:41:59.341757 IP (tos 0x0, ttl 238, id 6605, offset 0, flags [DF], proto: TCP (6), length: 1268) as5300-c4-139.cpc.entelchile.net.443 > artem.61628: P 2967:4195(1228) ack 1718 win 15717
19:41:59.341771 IP (tos 0x0, ttl 128, id 20155, offset 0, flags [DF], proto: TCP (6), length: 40) artem.61628 > as5300-c4-139.cpc.entelchile.net.443: ., cksum 0xe7a4 (correct), ack 4195 win 34
\end{lstlisting}
Завершение соединения (листинг~\ref{lst:finish}) происходит в три этапа:
\begin{itemize}
\item Посылка серверу от клиента флага FIN на завершение соединения.
\item Сервер посылает клиенту флаги ответа ACK , FIN, что соединение закрыто.
\item После получения этих флагов клиент закрывает соединение и в подтверждение отправляет серверу ACK , что соединение закрыто.
\end{itemize}
\begin{lstlisting}[caption={Закрытие соединения.}, label={lst:finish}]
19:43:04.183260 IP (tos 0x0, ttl 128, id 20206, offset 0, flags [DF], proto: TCP (6), length: 40) artem.61651 > as5300-c4-139.cpc.entelchile.net.443: F, cksum 0xe3cf (correct), 1786:1786(0) ack 4195 win 34
19:43:04.452987 IP (tos 0x0, ttl 238, id 45873, offset 0, flags [DF], proto: TCP (6), length: 40) as5300-c4-139.cpc.entelchile.net.443 > artem.61651: ., cksum 0xa648 (correct), ack 1787 win 15785
19:43:04.453042 IP (tos 0x0, ttl 238, id 45874, offset 0, flags [DF], proto: TCP (6), length: 40) as5300-c4-139.cpc.entelchile.net.443 > artem.61651: F, cksum 0xa647 (correct), 4195:4195(0) ack 1787 win 15785
19:43:04.453067 IP (tos 0x0, ttl 128, id 20208, offset 0, flags [DF], proto: TCP (6), length: 40) artem.61651 > as5300-c4-139.cpc.entelchile.net.443: ., cksum 0xe3ce (correct), ack 4196 win 34
\end{lstlisting}
\end{document} \end{document}