Internet

Методические указания к лабораторной работе по курсу «инфокоммуникационные системы и сети»

К рассмотрению предложен ряд протоколов, применяемых в современном Internet, в ряде их реализаций. Протокол HTTP осознанно обойден вниманием, поскольку рассмотрен в работе, посвященной Всемирной паутине. (Которая, в противном случае, была бы неполной.) Вопросам, связанным с применением протокола SSH, иных прикладных криптографических систем, и системы электронной почты (Internet email) также посвящены отдельные работы.

Номинальный вклад этой работы в оценку — 40 единиц.

Маршрутизация в Internet

  1. (2 ед.) Используя http://lg.he.net/ определите четыре маршрута до каких-либо двух хостов Internet с каких-либо двух маршрутизаторов — и соответствующие времена доставки. (Функция traceroute.) Опишите четыре промежуточных маршрутизатора (автономная система, владелец, географическое расположение — используя, например, данные системы Whois) — по одному для каждого маршрута.

    Обратите внимание, что для включения результата в «текстовый» отчет, может быть полезно применить опцию raw output (no tables).

  2. (1 ед.) Используя http://lg.he.net/ определите времена доставки ICMP echo-пакетов до каких-либо двух хостов Internet с каких-либо двух маршрутизаторов. («Каждый с каждым.» Функция ping.)

  3. (2 ед.) Определите глобально-маршрутизируемый IP-адрес используемой системы. Используя http://lg.he.net/ определите маршрут и времена доставки до нее с каких-либо четырех маршрутизаторов.

  4. (2 ед.) Соберите командой mtr статистику по временам доставки пакетов до какого-либо хоста Internet. Сбор статистики должен выполняться в течение четырех минут и включать порядка 64 циклов доставки.

Равноранговое распространение больших объемов данных; BitTorrent

  1. (2 ед.) Примите участие в законном распространении каких-либо данных с использованием протокола BitTorrent (например, обратившись к ресурсам из списка ниже.) Запишите сведения о распространяемых данных (infohash, общий объем, краткое описание) и семи участниках «torrent-роя» (swarm; IP-адрес, объем переданных и полученных данных, время соединения, использовалось ли шифрование), с которыми выполнялся обмен данными.

  2. (2 ед.) Сформируйте .torrent-файл для набора данных, состоящего из небольшого количества файлов, общим объемом порядка 4 ÷ 16 MiB. Распространите данные на две другие машины без использования torrent tracker (используя, например, local peer discovery, LPD, или DHT.)

Система доменных имен DNS

Основным инструментом в данном разделе является программа dig пакета BIND.

  1. (1 ед.) Выполните четыре запроса к DNS используя dig. Используйте не менее двух различных типов ресурсных записей; имена должны принадлежать по меньшей мере двум различным доменам второго уровня.

  2. (1 ед.) Получите из DNS две различные MX-записи. Объясните их назначение и действие.

  3. (2 ед.) Получите из DNS три различные SRV-записи. Объясните их назначение и действие.

    Обратите внимание, что SRV-записи сравнительно редки. Несколько помочь в их поиске могут, например, следующие ресурсы. (Следует отметить, впрочем, что подобно тому, как MX-записи не являются необходимыми для SMTP, SRV-записи не являются необходимыми для XMPP. Кроме того, организации, использующие Kerberos и LDAP могут считать их частью «внутренней» инфраструктуры и скрывать такие записи при запросах «извне».)

    _kerberos
    _ldap (возможно)
    http://sources.debian.org/src/kerberos-configs/2.6/krb5.conf.template/
    _xmpp-client
    _xmpp-server
    http://list.jabber.at/
    http://xmpp.net/directory.php
    http://search.jabber.network/
  4. (2 ед.) Выполните проверку цифровых подписей трех различных наборов записей (RRset) DNS используя dig +sigchase. Укажите, какие именно наборы были проверены и была ли проверка успешной в каждом случае.

  5. (1 ед.) Выполните проверку цифровых подписей трех различных наборов записей используя http://dnsviz.net/.

  6. (1 ед.) Опубликуйте в DNS три «осмысленных» записи для двух различных имен. Удостоверьтесь в их работоспособности.

    (Здесь можно воспользоваться, например, http://freedns.afraid.org/.)

Текстовые конференции в реальном времени; IRC

  1. (1 ед.) Подключитесь к какому-либо серверу IRC (Freenode, или же локальному); например, используя sic. Найдите «проверочную» конференцию и отправьте в нее сообщение. Получите ответ.

  2. (2 ед.) Подключитесь к серверу «диагностическим» TCP-клиентом (socat, PuTTY, etc.) Отправьте сообщение в «проверочную» конференцию и получите ответ.

  3. (2 ед.) Запустите собственный IRC-сервер (например, ngircd.) Проверьте работоспособность, создав не менее двух каналов и подключив не менее трех клиентов.

Kerberos

  1. (1 ед.) Используя kinit, аутентицируйтесь в домене (realm) Kerberos. Сравните вывод klist до и после аутентикации. Удостоверьтесь в действительности полученного ticket успешно обратившись к какому-либо серверу, аутентицировавшись используя GSSAPI.

  2. (1 ед.) Измените собственный пароль в домене Kerberos используя kpasswd.

Сетевая файловая система NFS

  1. (1 ед.) Выясните, какие сетевые файловые системы подключены к используемой системе (например, выполнив df -t nfs4 — или же обратившись к /proc/mounts непосредственно.) Прочитайте пять файлов с удаленного сервера, включая по меньшей мере один обычный.

  2. (1 ед.) Разместите на NFS-сервере три файла, включая по меньшей мере одну новую директорию. Удостоверьтесь в их доступности с удаленного клиента.

  3. (1 ед.) Используя exportfs сделайте какую-либо директорию доступной через NFS. Удостоверьтесь в работоспособности, подключив ее.

    Обратите внимание, что без использования Kerberos, содержащиеся в NFS-запросах идентификаторы пользователя и группы тривиально подделать, поэтому крайне желательно применять опцию all_squash (и, видимо, ro.)

Телеконференции; NNTP

  1. (1 ед.) Подключитесь к какому-либо серверу NNTP (например, nntp://news.aioe.org/) используя какой-либо пользовательский агент телеконференций (netnews user agent; Alpine, Neomutt, etc.) Отправьте сообщение в какую-либо «проверочную» конференцию (news:alt.test, news:relcom.test, etc.) Получите ответ.

  2. (1 ед.) Зарегистрируйтесь на каком-либо NNTP-сервере, требующем регистрации (например, Eternal September.) Отправьте сообщение в «проверочную» конференцию. Получите ответ.

  3. (2 ед.) Подключитесь к серверу «диагностическим» TCP-клиентом (socat, PuTTY, etc.) Отправьте сообщение в «проверочную» конференцию и получите ответ.

Синхронизация времени; NTP

  1. (1 ед.) Изучите состояние локального NTP-сервера, выполнив ntpq -pn. Объясните вывод команды.

  2. (2 ед.) Изучите состояние двух удаленных серверов NTP.

  3. (1 ед.) Составьте список общедоступных NTP-серверов Internet, отвечающих на запросы ntpq (в частности — ntpq -p.)

Синхронизация директорий; Rsync

  1. (2 ед.) Получите доступ к какому-либо из общедоступных Rsync-серверов Internet. Найдите на сервере директорию с небольшим (1 ÷ 16 MiB) общим объемом содержащихся файлов (или же ограничьте данные большей по объему директории таким объемом используя опции ряда --filter=.) Выполните рекурсивную синхронизацию локальной директории с содержимом найденной, сохраняя кроме того времена последнего изменения файлов (например, -rOt.) Через некоторое время (не менее 30 мин) выполните повторную синхронизацию. В обоих случаях, запишите список переданных файлов, объемы переданных данных и время синхронизации (-v.)

  2. (2 ед.) Выполните синхронизацию директорий между двумя хостами используя Rsync поверх SSH. Измените один из файлов директории-источника и удостоверьтесь в том, что при повторной синхронизации этот и только этот файл был обновлен.

  3. (1 ед.) Выполните синхронизацию небольшой (1 ÷ 16 MiB) выборки из большой (не менее 64 MiB) директории используя фильтр команды rsync (например, --filter=, --include=, --exclude=.) Измените настройки фильтра так, чтобы в выборку вошел еще один небольшой файл и удостоверьтесь в том, что при повторной синхронизации этот файл был добавлен к копии.

  4. (1 ед.) Измените поведение команды rsync используя одну из опций ниже. Объясните изменения.

    • -c
    • -H
    • -L
    • -u
    • -x

Internet-телефония (VoIP)

  1. (1 ед.) Установите равноранговое VoIP-соединение между машинами программой Linphone или Twinkle. Выявите используемые программой Internet-соединения (например, командой lsof.)

  2. (2 ед.) Установите VoIP-соединение через SIP-коммутатор.

Мгновенные сообщения; XMPP

  1. (2 ед.) Получите (санкционированный) доступ к серверу XMPP. Создайте новую конференцию; удостоверьтесь, что к ней подключились три участника. Запишите протокол какого-либо обсуждения (не менее пяти комментариев от каждого из участников.)

    Вероятно, что для выполнения этого задания потребуется зарегистрироваться на каком-либо сервере XMPP; списки таких серверов можно найти, например, на следующих ресурсах.

  2. (1 ед.) Удостоверьтесь в том, что созданная конференция проиндексирована поисковой системой http://search.jabber.network/.

  3. (1 ед.) Используя «отладочные» средства пользовательского агента получите две различных стансы (англ. stanzas) XMPP, переданных от клиента к серверу, и две, переданные в обратном направлении. Объясните их назначение и действие.

Оформление отчета

  1. (1 ед.) Оформите отчет в виде документа HTML.

    Обратите внимание на то, что документ должен не только корректно воспроизводится соответствующим программным обеспечением, но и успешно проходить формальную проверку с использованием http://html5.validator.nu/ и (или) иных подобных средств. Элементы и атрибуты HTML должны быть использованы семантически-обоснованно — сообразно смыслу, которым их наделяет текущая практика и актуальные спецификации.

  2. (1 ед.) Опубликуйте отчет на сервере NNTP.

    Обратите внимание, что если правилами конференции и сервера явно не указано иного, размещаемые материалы должны иметь «текстовый» (основанный на ASCII и соответствующий MIME-типу text/plain) формат. Кроме того, допускается использование единственной MIME-части; другими словами, сообщение не должно содержать «прикрепленных» файлов.