Опубликован: 26.07.2011 | Доступ: свободный | Студентов: 4265 / 1091 | Оценка: 4.36 / 4.16 | Длительность: 08:08:00
Лекция 7:

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

< Лекция 6 || Лекция 7: 12 || Лекция 8 >
Аннотация: Даны краткие сведения о взаимодействии систем на транспортном и прикладном уровнях модели сетевого взаимодействия. Приведены примеры использования команд ss и netstat для получения информации об активных сетевых соединениях, утилиты IPTraf для мониторинга сетевых подключений, утилиты iperf для тестирования производительности канала передачи между двумя системами. Приведен также пример использования утилиты telnet для диагностики работы протоколов прикладного уровня.

Содержание:

  1. Основы транспортного уровня
  2. Просмотр информации о текущих соединениях и открытых портах в Linux
  3. Мониторинг сетевых соединений с помощью утилиты IPTraf
  4. Тестирование производительности сети с помощью утилиты iperf
  5. Протоколы прикладного уровня

Основы транспортного уровня

Протоколы транспортного уровня [ 7 ] [ 30 ] реализуют разделение потоков данных между приложениями на одном компьютере, таким образом, что несколько приложений могут использовать одно и то же сетевое подключение. Разделение осуществляется с помощью портов ( числовых номеров ). Другими словами, для данного транспортного протокола на данном IP-адресе приложение резервирует порт для сетевого взаимодействия (другое приложение этот порт уже не может использовать). Нумерации портов различных протоколов транспортного уровня не пересекаются.

Взаимодействие между приложениями осуществляется посредством сокетов ( пара IP-адрес:порт ): на каждом из взаимодействующих узлов создается сокет, с которым связаны входной и выходной потоки для передачи данных (рис 7.1).

Пример клиент-серверного взаимодействия на основе сокетов

Рис. 7.1. Пример клиент-серверного взаимодействия на основе сокетов

Информация об используемых портах записывается в заголовок единицы передачи протокола транспортного уровня.

В качестве транспорта для IP используются два протокола:

  1. Протокол TCP (Transmission Control Protocol) — протокол транспортного уровня с установлением соединения, управлением потоком передачи и гарантированной доставкой данных. Единицы передачи обычно называются сегментами.
  2. Протокол UDP (User Datagram Protocol) — протокол транспортного уровня без установления соединения (не гарантирует доставку датаграмм — единиц передачи).

За наиболее популярными сетевыми службами номера портов закреплены стандартные значения. В Linux данная информация находится в файле /etc/services (пример 7.1).

$ cat /etc/services | grep "^http\|^ssh\|^www\|^pop3\|^smtp\|^ftp"
ftp-data               20/tcp
ftp    21/tcp
ssh    22/tcp        # SSH Remote Login Protocol
ssh    22/udp
smtp    25/tcp    mail
www    80/tcp    http    # WorldWideWeb HTTP
www    80/udp        # HyperText Transfer Protocol
pop3    110/tcp    pop-3    # POP version 3
pop3    110/udp  pop-3
https    443/tcp        # http protocol over TLS/SSL
https    443/udp
ftps-data  989/tcp        # FTP over SSL (data)
ftps    990/tcp
pop3s    995/tcp        # POP-3 over SSL
pop3s    995/udp
http-alt               8080/tcp  webcache  # WWW caching service
http-alt               8080/udp      # WWW caching service
Листинг 7.1. Фрагмент файла /etc/services

Содержимое файла /etc/services имеет рекомендательный характер, т. е. администратор системы может использовать нестандартные значения портов для сетевых служб. В Linux порты младше 1024 могут быть задействованы только суперпользователем. Для клиентских подключений используются порты со старшими номерами, выбираемые случайно из незанятых.

Максимальное количество портов, которое может использовать протокол определяется размером соответствующих полей в заголовке транспортного уровня (16 бит для TCP и UDP ).

Просмотр информации о текущих соединениях и открытых портах в Linux

Для получения информации о работе транспортного уровня на узле можно использовать утилиту ss из пакета iproute2 или утилиту netstat.

# ss -4antu
Netid  State      Recv-Q Send-Q     Local Address:Port        Peer Address:Port 
udp    UNCONN     0      0                         *:67                              *:*     
tcp     LISTEN         0      128                     *:22                              *:*     
tcp     ESTAB          0      0             192.168.1.1:55469           192.168.1.10:22    
tcp     ESTAB          0      0             192.168.56.102:22           192.168.56.1:50405
Листинг 7.2. Использование ss для вывода информации о текущих соединениях и открытых портах

В данном примере локальный порт UDP/67 используется некоторой службой на всех IP-адресах узла (первая строка); локальный порт TCP/22 ожидает ( LISTEN ) подключений на всех IP-адресах (вторая строка); с удаленного адреса 192.168.56.1 установлено соединение ( ESTAB ) со службой, использующей локальный порт TCP/22 (последняя строка); с локальной системы также установлено клиентское подключение с удаленной службой на узле 192.168.1.10, использующей удаленный порт TCP/22 (третья строка).

Ключ -4 указывает выводить сведения по протоколу IPv4, -a — выводить всю информацию, -n -выводить узлы и порты в числовом виде; -t — протокол TCP, -u — протокол UDP. Для того, чтобы узнать какие процессы используют сетевые соединения в команде ss следует использовать ключ -p. Ключ -l отображает только слушающие порты. Более подробную информацию о команде ss можно получить на странице руководства ( man ss ).

# netstat -4antu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp         0      0 0.0.0.0:22                    0.0.0.0:*                      LISTEN     
tcp         0      0 192.168.1.1:55469      192.168.1.10:22         ESTABLISHED
tcp         0      0 192.168.56.102:22      192.168.56.1:50405   ESTABLISHED
udp        0      0 0.0.0.0:67                     0.0.0.0:*
Листинг 7.3. Использование netstat для вывода информации о текущих соединениях и открытых портах

Используемые в данном примере ключи netstat аналогичны ключам ss в предыдущем примере. Более подробную информацию о команде netstat можно получить на странице руководства ( man netstat ).

Мониторинг сетевых соединений с помощью утилиты IPTraf

Утилита IPTraf представляет собой интерактивное средство отображения постоянно обновляемой сетевой статистики с текстовым интерфейсом на основе библиотеки ncurses [ 31 ] . IPTraf способна отображать различные данные, включая информацию по TCP, счетчики UDP и ICMP, загрузку сети Ethernet, статистику узла и т. д.

Для установки IPTraf из стандартных репозиториев Debian можно использовать команду:

# apt-get install iptraf

Для использования IPTraf необходимы полномочия суперпользователя. IPTraf запускается в интерактивном режиме. После приветственного сообщения при нажатии любой клавиши открывается меню, в котором можно выбрать режим просмотра статистики, установить фильтры или изменить настройки программы.

Доступны следующие режимы просмотра:

  1. Мoнитор IP-трафика ( IP Traffic Monitor ). Для выбранного интерфейса (всех интерфейсов) включает списки TCP -соединений и статистику по ним, а также монитор UDP -датаграмм.
  2. Общая статистика интерфейсов ( General interface statistics ). Для каждого интерфейса отображает статистику пакетов.
  3. Детальная статистика интерфейса ( Detailed interface statistics ). Для выбранного интерфейса отображает количество переданных и полученных единиц передачи (IP-пакетов, TCP -сегментов и UDP -датаграмм и прочих) и объем данных в байтах, а также текущую скорость передачи пакетов и байт, объемы широковещательного трафика и количество ошибок в IP-пакетах.
  4. Статистический анализ ( Statistical breakdowns ). Для данного интерфейса отображает распределение трафика по размеру пакетов или распределение трафика по портам.
  5. Монитор станции локальной сети ( LAN station monitor ). Для выбранного интерфейса (всех интерфейсов) показывает статистику уровня сетевых интерфейсов.

Соответствующий режим отображения может быть установлен с помощью параметров, передаваемых IPTraf при старте. Например, для показа детальной статистики интерфейса eth0 (рис 7.2) следует использовать ключ -d:

# iptraf -d eth0

Подробную информацию о ключах можно получить из руководства пользователя ( man iptraf ).

Детальная статистика интерфейса в IPTraf

Рис. 7.2. Детальная статистика интерфейса в IPTraf
Примечание. Существует и другие программы, подобные IPTraf [ 32 ] , [ 33 ] .
< Лекция 6 || Лекция 7: 12 || Лекция 8 >
Нияз Сабиров
Нияз Сабиров

Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей.

Елена Сапегова
Елена Сапегова

для получения диплома нужно ли кроме теоретической части еще и практическую делать? написание самого диплома требуется?