Основы понимания сетей для начинающего хакера. Часть 2. TCP/IP

Ну что, продолжим изучать работу сетей.

В прошлом уроке по этой теме мы уже обсудили что такой ip, dhcp, net. Если пропустил, он ЗДЕСЬ. А сегодня, давай, поговорим про протоколы. Ты ведь наверняка слышал или видел такое название как TCP/IP. И именно об этом мы сегодня будем разговаривать. Хочу заметить, что рассказать всё о TCP/IP в одном уроке невозможно физически, поэтому сегодня мы разберем основы, что это такое и как работает. Причем ты должен понимать, что именно эти знания лежат в основе искусства взлома, ну или теста на проникновение, называй как хочешь и именно эти знания дадут тебе возможность изучить и понять практически любую атаку, или придумать свою.

tcp-ip

В интернете используется очень много разных протоколов, но наиболее распространенные это IP и TCP. Теперь, как я уже говорил, давай, рассмотрим их более подробно.

TCP — Transmission Control Protocol — это протокол управления передачей, а IP — межсетевой протокол, но прежде чем разбирать их, давай, для начала разберемся что такое вообще протокол. На самом деле всё просто, протокол — это всего навсего согласованный способ общения, как, допустим, английский язык в международном сообществе. Т.е. по сути, протокол определяет способ связи со всеми его правилами. А правила определяются RFC, это Request for Comments, что можно перевести как запрос на отзывы — это документ, который содержит технические спецификации и стандарты применяемые в интернете.

IP или интернет-протокол, он же межсетевой протокол — это протокол, который используется для определения IP-адреса источника и получателя пакета при прохождении через Интернет. Так как он часто используется в сочетании с другими протоколами, такими как TCP, поэтому мы и видим название TCP / IP.

Теперь давай посмотрим на header, т.е заголовок IP-пакета и разберемся, какая информация в нем содержится:

ip header

1 ряд

  • version : определяет версию IP, v4 или v6.
  • IHL : определяет длину заголовка.
  • Type of Service (TOS) : определяет тип обслуживания этого пакета. К ним относятся минимизация задержки, максимизация пропускной способности, максимизация надежности и минимизация затрат.
  • Total Length : определяет общую длину дейтаграммы IP (включая данные) или фрагмента. Его максимальное значение составляет 65 535.

2 ряд

  • Identification : идентифицирует каждый пакет. Может иметь важное значение при повторной сборке фрагментированных пакетов.
  • IP  Flag: определяет, является ли пакет фрагментированным (M) или нет (D). Манипулирование этим полем может быть использовано для обхода межсетевых экранов.
  • Fragment Offset : это поле используется, когда пакеты фрагментированы. Определяет, где пакеты должны быть повторно собраны.

3 ряд

  • TTL : это «время жизни». Определяет, сколько прыжков до истечения срока действия пакета. Это зависит от операционной системы, что делает его полезным для определения ОС отправителя.
  • Protocol : это поле определяет, какой протокол используется с IP. Чаще всего это 6 т.е. TCP, 1 это ICMP, 17 это UDP.
  • Header checksum: это поле проверки ошибок, вычисляет контрольную сумму, чтобы определить целостность данных в заголовке.

4 и 5 ряд

  • Source / Destination . Эти строки заголовка IP, пожалуй, наиболее важная часть заголовка, потому что они содержат IP-адрес источника и получателя.

6 ряд

  • Options: Это поле переменной длины, и его использование не является обязательным

Теперь рассмотрим заголовок TCP пакета:

tcp header

1 ряд

  • Source Port / Destination Port : Это порт источника и порт назначения. Эти поля определяют, с какого порта пришло сообщение и куда оно идет.

Ряд 2

  • Sequence Number: Порядковый номер, генерируется стеком TCP исходного компьютера и используется для обеспечения того, чтобы пакеты располагались в правильной последовательности при поступлении.

Ряд 3

  • Acknowledgment Number : это эхо порядкового номера, отправленного обратно принимающей системой. Благодаря ему, отправитель знает, что пакет прибыл. Если отправитель не получает номер подтверждения обратно в фиксированный промежуток времени, он повторно отправит пакет, чтобы убедиться, что получатель получит пакет. Таким образом, TCP надежен (например, UDP не делает этого и поэтому ненадежен).

Ряд 4

  • Data offset указывает значение длины заголовка, измеренное в 32-битовых словах
  • CWR : Поле «Окно перегрузки уменьшено» — флаг установлен отправителем, чтобы указать, что получен пакет с установленным флагом ECE
  • ECE : Поле «Эхо ECN» — указывает, что данный узел способен на ECN (явное уведомление перегрузки) и для указания отправителю о перегрузках в сети

Четвертый ряд содержит очень важную информацию, а именно флаги. Эти флаги используются TCP для связи;

  • SYN : открытие нового соединения.
  • FIN : нормальное, мягкое закрытие соединения.
  • ACK : подтверждение пакета. У всех пакетов после трехстороннего рукопожатия должен быть установлен этот бит.
  • RST : аппаратное закрытие соединения, которое обычно используется для сообщения о том, что пакет поступил не на тот порт или IP.
  • URG : этот флаг указывает, что данные являются срочными.
  • PSH : протолкнуть данные за буфер в приложение.
  • Window Size : на некоторых диаграммах это просто описывается как поле окна . Его роль заключается в сообщении размера окна, которое стек TCP должен выполнять для буферизации пакетов. Именно так TCP управляет потоком. С точки зрения хакера, одного этого поля может быть достаточно для идентификации ОС, отправившей пакет.

Ряд 5

  • Checksum : в этом поле используется простой алгоритм проверки на наличие ошибок. По сути, это проверка целостности.
  • Urgent Pointer: в этом поле указывается последний байт порядкового номера срочных данных. Чтобы активировать это поле должен быть установлен флаг URG

Ряд 6

  • Options: Как и заголовок IP, заголовок TCP имеет поле параметров, которое можно использовать при необходимости, и его длина варьируется.
  • Padding: заполнение необходимо, чтобы заголовок TCP был кратным 32 битам.

Продолжение следует…..