Tcpdump — это инструмент командной строки с открытым исходным кодом для мониторинга сетевого трафика. Пример: tcpdump работает, захватывая и отображая заголовки пакетов и сопоставляя их с набором критериев. Он понимает логические операторы поиска и может использовать имена узлов, IP-адреса, сетевые имена и протоколы в качестве аргументов.
История
Tcpdump был первоначально написан в 1988 году Ван Якобсоном, Салли Флойд, Верном Пакссон и Стивеном Макканном, которые в то время работали в Лаборатории лабораторных сетевых исследований Лоуренса Беркли [4]. К концу 1990-х годов было множество версий tcpdump по примеру портов, распространяемых как часть различных операционных систем и многочисленные исправления, которые не были нужным образом скоординированы. Майкл Ричардсон и Билл Феннер создали ресурс www.tcpdump.org в 1999 году.
Применение Tcpdump: примеры
Tcpdump печатает содержимое сетевых пакетов. Он может считывать пакеты с карты сетевого интерфейса или из ранее созданного сохраненного пакетного файла. Пример tcpdump — инструмент может записывать пакеты в стандартный вывод или файл.
Но это не все. Также возможно использовать tcpdump (на примере ubuntu) для конкретной цели перехвата и отображения сообщений другого пользователя или компьютера. Пользователь с необходимыми привилегиями в системе, действующей в качестве маршрутизатора или шлюза, через который незашифрованный трафик, такой как пропуски Telnet или HTTP, может использовать tcpdump для просмотра идентификаторов входа, паролей, URL-адресов и содержимого просматриваемых веб-сайтов или любой другой незашифрованной информации.
Пользователь может применять фильтр для ограничения количества пакетов, наблюдаемых в tcpdump на примере Mac. Это делает выход более удобным для использования в сетях с большим объемом трафика.
Привилегии пользователя в Unix
В некоторых Unix-подобных операционных системах рядовой пользователь должен иметь привилегии суперпользователя для использования tcpdump Linux, примером которых являются механизмы захвата пакетов в этих системах, которые требуют повышенных привилегий. Тем не менее опция -Z может использоваться для удаления привилегий определенному непривилегированному пользователю после того, как был установлен захват. В других Unix-подобных ОС механизм захвата пакетов может быть настроен так, чтобы позволить пользователям, не имеющим привилегий, использовать его. Если эти настройки выполнены, привилегии суперпользователя не требуются.
TCP
TCP — это фундаментальный протокол в пакете интернет-протоколов или набор стандартов, позволяющих системам общаться через Интернет. Он классифицируется как протокол «транспортного уровня», поскольку создает и поддерживает соединения между хостами.
TCP дополняет интернет-протокол (IP), который определяет IP-адреса, используемые для идентификации систем в Интернете. Интернет-протокол предоставляет инструкции для передачи данных, в то время как протокол управления передачей создает соединение и управляет доставкой пакетов из одной системы в другую. Эти два протокола обычно группируются вместе и называются TCP/IP.
Когда данные передаются по TCP-соединению, протокол делит его на индивидуально пронумерованные пакеты или «сегменты». Каждый пакет включает в себя заголовок, который определяет источник, пункт назначения и раздел данных. Поскольку пакеты могут путешествовать через Интернет с использованием нескольких маршрутов, они могут прибыть в пункт назначения в другом порядке, чем они были отправлены. Протокол управления передачей переупорядочивает пакеты в правильной последовательности на принимающей стороне.
Примеры Tcpdump и UDP
TCP также включает проверку ошибок, которая гарантирует, что каждый пакет доставляется по запросу. Это отличается от UDP, который не проверяет, успешно ли передан каждый пакет. Хотя встроенная проверка ошибок означает, что TCP более затратен и работает медленнее, чем UDP, данная технология обеспечивает точную доставку данных между системами. Также TCP используется для передачи большинства типов данных, таких как веб-страницы и файлы через Интернет. UDP идеально подходит для потоковой передачи мультимедиа, которая не требует доставки всех пакетов.
Основы функционала
TCP возник в первоначальной сетевой реализации, в которой он дополняет Интернет-протокол (IP). Обеспечивает надежную, упорядоченную и проверенную проверку доставки потока пакетов между приложениями, запущенными на хостах, обменивающихся по IP-сети. Основные интернет-приложения (Всемирная паутина, e-mail, удаленное администрирование, передача файлов), зависят от TCP. Приложения, не требующие надежной службы потока данных, используют только протокол пользовательских дейтаграмм (UDP), который предоставляет службу датаграмм без установления соединения, которая подчеркивает снижение параметров безопасности.
Предпосылки создания
В мае 1974 года Институт инженеров по электротехнике и радиоэлектронике (IEEE) опубликовал документ под названием «Протокол для межсетевого обмена пакетной сетью». Авторы статьи, Vint Cerf и Bob Kahn, описали протокол межсетевого обмена для совместного использования ресурсов, используя коммутацию пакетов между узлами, включая концепции французского проекта CYCLADES под руководством Луиса Пузина. Центральным компонентом управления этой модели была программа управления передачей, которая включала в себя как ориентированные на соединение ссылки, так и службы дейтаграмм между хостами. Затем монолитная программа управления передачей была разделена на архитектуру модулей, которая состояла из протокола управления передачей на уровне, ориентированном на соединение, и протокола Интернета на уровне межсетевого взаимодействия (датаграммы). Модель носила неофициальное название как TCP/IP, в дальнейшем получила наименование Internet Protocol Suite.
Функция сети
Протокол управления передачей предоставляет услугу связи на промежуточном уровне между прикладной программой и Интернет-протоколом. Он обеспечивает подключение между узлами на транспортном уровне модели Интернета. Приложению не нужно знать конкретные механизмы отправки данных по ссылке на другой хост, например, требуемую фрагментацию пакетов на носителе передачи. На транспортном уровне алгоритм обрабатывает все данные установления связи и передачи и представляет собой абстракцию сетевого подключения к приложению.
На нижних уровнях стека протоколов из-за перегрузки сети, балансировки нагрузки трафика или другого непредсказуемого поведения IP-пакеты данных могут быть утетеряны, продублированы или доставлены в ином порядке. TCP обнаруживает данные проблемы, запрашивает повторную передачу утерянных данных, изменяет данные из-за порядка и даже помогает минимизировать нагрузку на сеть, чтобы уменьшить риски возникновения других проблем. Если данные остаются недоставленными, источник уведомляется об этом сбое. После того как TCP-приемник повторно собрал последовательность изначально переданных пакетов, он передает их в принимающее приложение. Таким образом, TCP абстрагирует связь приложения с базовыми сетевыми данными.
Применение
TCP широко используется многими приложениями, доступными в Интернете, включая e-mail, протокол передачи файлов, совместное использование файлов одноранговых сетей и потоковые мультимедийные приложения.
TCP оптимизирован для точной, а не для своевременной доставки, и может провоцировать относительно длительные задержки (порядка секунд) во время ожидания сообщений о неполадке или повторных передач утерянных сообщений. Поэтому он не подходит для приложений реального времени, таких как Voice over IP. Для таких приложений обычно рекомендуются протоколы передачи данных в реальном времени (RTP), работающие по принципу пользовательских дейтаграмм.
Преимущества
TCP — это безопасная служба доставки потоков, которая гарантирует, что все полученные данные будут идентичны отправленным и в правильном порядке. Поскольку передача пакетов многими сетями ненадежна, для обеспечения защиты используется метод, известный как «положительное подтверждение с повторной передачей». Данная методика требует, чтобы получатель отвечал сообщением подтверждения, получая данные. Отправитель сохраняет запись каждого отправляемого пакета и поддерживает таймер с момента отправки пакета. Отправитель повторно передает данные, если истекает время до получения подтверждения сообщения. Таймер необходим, если пакет потерян или поврежден.
Нюансы
В то время как IP обрабатывает фактическую доставку данных, TCP отслеживает «сегменты» — отдельные единицы переданных данных, по которым сообщение разделено на эффективную маршрутизацию через сеть. Например, когда HTML-файл отправляется с веб-сервера, программный уровень TCP этого сервера делит последовательность пакетов файлов на сегменты и пересылает их индивидуально на программный уровень IP (Internet Layer). Internet Layer инкапсулирует каждый сегмент TCP в IP-пакет путем добавления заголовка, который включает (среди других данных) IP-адрес назначения. Когда клиентская программа на конечном компьютере получает их, уровень TCP (Transport Layer) повторно собирает отдельные сегменты и гарантирует, что они будут правильно упорядочены и безошибочны, когда данные передаются в приложение.