Skip to content

Latest commit

 

History

History
106 lines (76 loc) · 13.3 KB

README.md

File metadata and controls

106 lines (76 loc) · 13.3 KB

1) Необязательное задание: можно посмотреть целый фильм в консоли telnet towel.blinkenlights.nl :)

Хост не отвечает

vagrant@vagrant:~$ telnet towel.blinkenlights.nl
Trying 213.136.8.188...
^C

2) Узнайте о том, сколько действительно независимых (не пересекающихся) каналов есть в разделяемой среде WiFi при работе на 2.4 ГГц. Стандарты с полосой 5 ГГц более актуальны, но регламенты на 5 ГГц существенно различаются в разных странах, а так же не раз обновлялись. В качестве дополнительного вопроса вне зачета, попробуйте найти актуальный ответ и на этот вопрос.

В среде 2.4ГГц независимых каналов всего 3: 1, 6 и 11 канал. Более того, в случае если данные каналы заняты, наиболее оптимально использовать их же в силу Clear Channel Assesment стандарта 802.11.
Что касается 5ГГц (рассматриваем 802.11ac для России), здесь фактор пересечения зависит не только от частоты несущей, но и от выбора полосы 20, 40, 80 или 160Мгц. И в случае с полосой 160Мгц, непересекающийся блок может быть всего один, это с 36 по 64. В случае с полосой 80Мгц непрерывных блоков 4. В случае с полосой 40Мгц (наиболее популярны режим имхо) непрерывнях блоков уже 8.

3) Адрес канального уровня – MAC адрес – это 6 байт, первые 3 из которых называются OUI – Organizationally Unique Identifier или уникальный идентификатор организации. Какому производителю принадлежит MAC 38:f9:d3:55:55:79?

Имя компании: Apple, Inc.

4) Каким будет payload TCP сегмента, если Ethernet MTU задан в 9001 байт, размер заголовков IPv4 – 20 байт, а TCP – 32 байта?

Ethernet MTU = IPv4header + TCPheader + Payload Соответсвенно максимальный payload TCP исходящего пакета 9001-20-32 = 8949 байт.

5 Может ли во флагах TCP одновременно быть установлены флаги SYN и FIN при штатном режиме работы сети? Почему да или нет?

При штатном режиме работы сети такие флаги установлены быть не могут, т.к. отвечают за установление и завершение TCP соединения.
Тем не менее сгенерировать такой пакет не представляет труда (scapy).

6) ss -ula sport = :53 на хосте имеет следующий вывод (см. источник на github). Почему в State присутствует только UNCONN, и может ли там присутствовать, например, TIME-WAIT?

В команде используется ключ -u, что говорит о том, что мы смотрим udp сокет. Соответсвенно состояния TIME-WAIT быть не может, т.к. оно характерно только для TCP соединений. UNCONN присутсвует в выводе по этой же причине, т.к. протокол UDP без установления соединения по своей природе.

7) Обладая знаниями о том, как штатным образом завершается соединение (FIN от инициатора, FIN-ACK от ответчика, ACK от инициатора), опишите в каких состояниях будет находиться TCP соединение в каждый момент времени на клиенте и на сервере при завершении. Схема переходов состояния соединения вам в этом поможет.

Инициатор отправляет FIN, переходит в состояние FIN-WAIT-1
Ответчик принимает FIN, отправляет ACK, переходит в состояние CLOSE_WAIT
Инициатор получает ACK, переходит в состояние FIN-WAIT-2
Ответчик отправляет FIN-ACK, переходит в состояние LAST-SACK
Инициатор получает FIN-ACK, отправляет ACK, переходит в состояние TIME-WAIT
Ответчик получает ACK, переходит в состояние CLOSED.
Инициатор ждет таймаут (2MSL, по RFC 793 MSL = 2 минуты) и переходит в состояние CLOSED

8) TCP порт – 16 битное число. Предположим, 2 находящихся в одной сети хоста устанавливают между собой соединения. Каким будет теоретическое максимальное число соединений, ограниченное только лишь параметрами L4, которое параллельно может установить клиент с одного IP адреса к серверу с одним IP адресом? Сколько соединений сможет обслужить сервер от одного клиента? А если клиентов больше одного?

Теоритически максимальное значение TCP сессий от клиента до сервера 2^64, т.е. все комбинации значений source_port и destination_port.
Реальное же ограничение кроется на самом сервере. Каждому TCP соединению присваивается файловый дескриптор, поэтому ограничением является количество файловых дескрипторов, которые система настроила для разрешения (и ресурсами для обработки конечно).

9) Может ли сложиться ситуация, при которой большое число соединений TCP на хосте находятся в состоянии TIME-WAIT? Если да, то является ли она хорошей или плохой? Подкрепите свой ответ пояснением той или иной оценки.

Да, это возможно. Технически ситуация штатная, но 2MSL это 4 минуты. Соответсвенно 4 минуты после фактического закрытия TCP сессии, сессия еще висит в памяти, занимая при этом дескриптор/память.

10) Чем особенно плоха фрагментация UDP относительно фрагментации TCP?

В UDP невозможно перезапросить пакет. В случае потери фрагмента UDP, весь пакет можно считать потерянным без возможности перезапроса.

11) Если бы вы строили систему удаленного сбора логов, то есть систему, в которой несколько хостов отправяют на центральный узел генерируемые приложениями логи (предположим, что логи – текстовая информация), какой протокол транспортного уровня вы выбрали бы и почему? Проверьте ваше предположение самостоятельно, узнав о стандартном протоколе syslog.

Я бы выбрал TCP из-за гарантированной доставки пакетов. Syslog работает поверх TCP (есть информация, что ранее использовался UDP).

12) Сколько портов TCP находится в состоянии прослушивания на вашей виртуальной машине с Ubuntu, и каким процессам они принадлежат?

Это можно узнать с помощью утилиты ss (см.ниже). Порты TCP в состоянии прослушивания 111 (процесс rpcbind и systemd), 53 (процесс systemd-resolve) и 22 (процесс sshd).

vagrant@vagrant:~$ sudo ss -t -l -p -n
State      Recv-Q     Send-Q         Local Address:Port         Peer Address:Port     Process
LISTEN     0          4096                 0.0.0.0:111               0.0.0.0:*         users:(("rpcbind",pid=554,fd=4),("systemd",pid=1,fd=35))
LISTEN     0          4096           127.0.0.53%lo:53                0.0.0.0:*         users:(("systemd-resolve",pid=556,fd=13))
LISTEN     0          128                  0.0.0.0:22                0.0.0.0:*         users:(("sshd",pid=653,fd=3))
LISTEN     0          4096                    [::]:111                  [::]:*         users:(("rpcbind",pid=554,fd=6),("systemd",pid=1,fd=37))
LISTEN     0          128                     [::]:22                   [::]:*         users:(("sshd",pid=653,fd=4))

13) Какой ключ нужно добавить в tcpdump, чтобы он начал выводить не только заголовки, но и содержимое фреймов в текстовом виде? А в текстовом и шестнадцатиричном?

Да, это флаг -A (вывод в текстовом виде) и -x (вывод в шестнадцатеричном) и -X (вывод обоих форматах)

vagrant@vagrant:~$ sudo tcpdump -xni eth0 -c 1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
20:28:14.995043 IP 10.0.2.15.22 > 10.0.2.2.57476: Flags [P.], seq 2424939485:2424939521, ack 6629363, win 64032, length 36
    0x0000:  4510 004c 2ad2 4000 4006 f7b9 0a00 020f
    0x0010:  0a00 0202 0016 e084 9089 a3dd 0065 27f3
    0x0020:  5018 fa20 184f 0000 d83c f8e2 cd02 dfc0
    0x0030:  5181 5c66 544a cb54 9df0 e42e ea1b 4503
    0x0040:  f589 572f ed06 f452 4974 55cc
1 packet captured
40 packets received by filter
7 packets dropped by kernel
vagrant@vagrant:~$ sudo tcpdump -Xni eth0 -c 1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
20:28:17.784278 IP 10.0.2.15.22 > 10.0.2.2.57476: Flags [P.], seq 2424941081:2424941117, ack 6629939, win 64032, length 36
    0x0000:  4510 004c 2afb 4000 4006 f790 0a00 020f  E..L*.@.@.......
    0x0010:  0a00 0202 0016 e084 9089 aa19 0065 2a33  .............e*3
    0x0020:  5018 fa20 184f 0000 cb36 b4c7 e0d2 58af  P....O...6....X.
    0x0030:  00fb 0ede 8be3 2562 b16a 8741 9857 7079  ......%b.j.A.Wpy
    0x0040:  0cfc 15cb 34e8 53ab a2d7 45f1            ....4.S...E.
1 packet captured
42 packets received by filter
10 packets dropped by kernel

14) Попробуйте собрать дамп трафика с помощью tcpdump на основном интерфейсе вашей виртуальной машины и посмотреть его через tshark или Wireshark (можно ограничить число пакетов -c 100). Встретились ли вам какие-то установленные флаги Internet Protocol (не флаги TCP, а флаги IP)? Узнайте, какие флаги бывают. Как на самом деле называется стандарт Ethernet, фреймы которого попали в ваш дамп? Можно ли где-то в дампе увидеть OUI?

Ethernet на самом деле называется Ethernet II. OUI (ORGANIZATIONALLY UNIQUE IDENTIFIER) моно увидеть в заголовке L2, а именно в мак адресе (первые 3 байта). Wireshark автоматически интерпретирует первые 3 байта.
В IP заголовки флаг используется для контроля на фрагментацией пакетов. Фактически используется два, это первый и второй. Первый DF или Don't Fragment, это бит запрещающий фрагментацию пакета (обычно устанавливается если включен PMTUD). Второй это MF или More Fragments, указывает что пакет фрагментирован и что стоит подождать, когда придут оставшиейся фрагменты.