write

Запишите пакетные данные о протоколе в PCAP или файл PCAPNG

    Описание

    write(pcapObj,packet,timestamp) пишут пакетные данные о протоколе в файл PCAP, заданный в объекте средства записи файла PCAP, pcapObj. Введите packet задает пакет протокола и вход timestamp задает пакетное время поступления.

    write(pcapngObj,packet,timestamp,interfaceID) пакетные данные о протоколе записей к файлу PCAPNG, заданному в объекте средства записи файла PCAPNG, pcapngObj. Введите packet, timestamp, и interfaceID задает пакет протокола, пакетное время поступления и интерфейсный идентификатор, соответственно.

    пример

    write(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к комбинациям входных аргументов от любого из предыдущих синтаксисов. Например, 'PacketFormat','bits' устанавливает формат пакетов протокола вдребезги.

    Примеры

    свернуть все

    Создайте объект средства записи файла PCAP, задав имя файла PCAP.

    pcapObj = pcapWriter('FileName','write5GNRpacket');
    timestamp = 300;                                           % Timestamp

    5G пакеты NR не имеет допустимого типа ссылок. Согласно Tcpdump, если допустимый тип ссылок не присутствует, задают тип ссылки пакета SLL.

    linkType = 113;

    Запишите глобальный заголовок в файл PCAP.

    writeGlobalHeader(pcapObj,linkType);

    5G пакеты NR непосредственно не поддерживается Wireshark. Чтобы позволить Wireshark проанализировать 5G пакеты NR, добавьте инкапсуляцию и метаданные к 5G пакет NR.

    payload = [59; 205];                                       % MAC subPDU (contains truncated buffer status report (BSR) control element)
    radioType = 1;                                             % Frequency division duplexing
    linkDir = 0;                                               % Uplink packet
    rntiType = 3;                                              % Cell-RNTI
    startString = [109; 97; 99; 45; 110; 114];                 % Tag to indicate start of NR MAC signature
    payloadTag = 1;                                            % Payload tag for NR packets
    signature = [startString; radioType; linkDir; rntiType];
    macNRInfoPacket = [signature; payloadTag; payload];

    Создайте заголовок пользовательского дейтаграммного протокола (UDP).

    udpPacketLength = 8 + length(macNRInfoPacket);             % Length of header (8 bytes) and payload
    udpHeader = [163; 76;                                      % Source port number
        39; 15;                                                % Destination port number
        fix(udpPacketLength/256); mod(udpPacketLength,256);    % Total length of UDP packet
        0; 0];                                                 % Checksum

    Создайте заголовок IPv4.

    ipPacketLength = 20 + udpPacketLength;                     % Length of header (20 bytes) and payload
    ipHeader = [69;                                            % Version of IP protocol and priority or traffic class
        0;                                                     % Type of service
        fix(ipPacketLength/256); mod(ipPacketLength,256);      % Total length of the IPv4 packet
        0; 1;                                                  % Identification
        0; 0;                                                  % Flags and fragmentation offset
        64;                                                    % Time to live in seconds
        17;                                                    % UDP protocol number
        0; 0;                                                  % Header checksum
        127; 0; 0; 1;                                          % Source IP address
        127; 0; 0; 1];                                         % Destination IP address

    Создайте заголовок SLL.

    sllHeader = [0; 0;                                         % Packet type
        3; 4;                                                  % Address resolution protocol hardware (ARPHRD) type
        0; 0;                                                  % Link layer address length
        0; 0; 0; 0; 0; 0; 0; 0;                                % Link layer address
        8; 0];                                                 % Protocol type

    Создайте 5G пакет NR путем добавления инкапсуляции и метаданных.

    packet = [sllHeader; ipHeader; udpHeader; macNRInfoPacket];

    Запишите 5G пакетные данные NR в файл PCAP.

    write(pcapObj,packet,timestamp);

    Создайте объект средства записи файла PCAPNG, задав имя файла PCAPNG.

    pcapngObj = pcapngWriter('FileName','write5GNRpacket');

    Запишите интерфейсный блок для Нового радио (NR) 5G. 5G пакеты NR не имеет допустимого типа ссылок. Согласно Tcpdump, если допустимый тип ссылок не присутствует, задают тип ссылки пакета SLL.

    interface = '5GNR';                                        % Interface name
    linkType = 113;                                            % Link type of SLL packet
    timestamp = 300;                                           % Timestamp
    interfaceID = writeInterfaceDescriptionBlock(pcapngObj,linkType,interface);

    5G пакеты NR непосредственно не поддерживается Wireshark. Чтобы позволить Wireshark проанализировать 5G пакеты NR, добавьте инкапсуляцию и метаданные к 5G пакет NR.

    payload = [59; 205];                                       % MAC subPDU (contains short truncated buffer status report (BSR) control element)
    radioType = 1;                                             % Frequency division duplexing
    linkDir = 0;                                               % Uplink packet
    rntiType = 3;                                              % Cell-RNTI
    startString = [109; 97; 99; 45; 110; 114];                 % Tag to indicate the start of NR MAC signature
    payloadTag = 1;                                            % Payload tag for NR packets
    signature = [startString; radioType; linkDir; rntiType];
    macNRInfoPacket = [signature; payloadTag; payload];

    Создайте заголовок UDP.

    udpPacketLength = 8 + length(macNRInfoPacket);             % Length of header (8 bytes) and payload
    udpHeader = [163; 76;                                      % Source port number
        39; 15;                                                % Destination port number
        fix(udpPacketLength/256); mod(udpPacketLength,256);    % Total length of UDP packet
        0; 0];                                                 % Checksum

    Создайте заголовок IPv4.

    ipPacketLength = 20 + udpPacketLength;                     % Length of header (20 bytes) and payload
    ipHeader = [69;                                            % Version of IP protocol and Priority or Traffic Class
        0;                                                     % Type of service
        fix(ipPacketLength/256);mod(ipPacketLength,256);       % Total length of the IPv4 packet
        0; 1;                                                  % Identification
        0; 0;                                                  % Flags and fragmentation offset
        64;                                                    % Time to live in seconds
        17;                                                    % UDP protocol number
        0; 0;                                                  % Header checksum
        127; 0; 0; 1;                                          % Source IP address
        127; 0; 0; 1];                                         % Destination IP address

    Создайте заголовок SLL.

    sllHeader = [0;0;                                          % Packet type
        3; 4;                                                  % Address resolution protocol hardware (ARPHRD) type
        0; 0;                                                  % Link layer address length
        0; 0; 0; 0; 0; 0; 0; 0;                                % Link layer address
        8; 0];                                                 % Protocol type

    Создайте 5G пакет NR путем добавления инкапсуляции и метаданных.

    packet = [sllHeader; ipHeader; udpHeader; macNRInfoPacket];

    Запишите 5G пакетные данные NR в файл PCAPNG.

    packetComment = 'This is 5G NR MAC packet';                % Packet comment
    write(pcapngObj,packet,timestamp,interfaceID,'PacketComment',packetComment);

    Входные параметры

    свернуть все

    Примечание

    pcapWriter и pcapngWriter объекты не перезаписывают существующий PCAP или файлы PCAPNG, соответственно. Во время каждого вызова этих объектов задайте уникальный PCAP или имя файла PCAPNG.

    Средство записи файла PCAP возражает в виде pcapWriter объект.

    Пакет протокола в виде одного из этих значений.

    • Вектор с бинарным знаком – Это значение представляет биты.

    • Вектор символов – Это значение представляет октеты в шестнадцатеричном формате.

    • Строковый скаляр – Это значение представляет октеты в шестнадцатеричном формате.

    • Числовой вектор с каждым элементом в области значений [0, 255] – Это значение представляет октеты в десятичном формате.

    • n-by-2 символьный массив – В этом значении, каждая строка представляет октет в шестнадцатеричном формате.

    Типы данных: char | string | double

    Пакетное время поступления с 1/1/1970 в виде неотрицательного целого числа. Это значение должно быть описано в микросекундах.

    Типы данных: double

    Средство записи файла PCAPNG возражает в виде pcapngWriter объект.

    Уникальный идентификатор для интерфейса в виде неотрицательного скаляра.

    Типы данных: double

    Аргументы в виде пар имя-значение

    Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

    Пример: 'PacketFormat','bits' задает формат пакета протокола как биты.

    Формат пакета протокола в виде разделенной запятой пары, состоящей из PacketFormat и 'octets' или 'bits'. Если это значение задано как 'octets', packet задан как одно из этих значений.

    • Вектор с бинарным знаком – Это значение представляет биты.

    • Вектор символов – Это значение представляет октеты в шестнадцатеричном формате.

    • Строковый скаляр – Это значение представляет октеты в шестнадцатеричном формате.

    • Числовой вектор с каждым элементом в области значений [0, 255] – Это значение представляет октеты в десятичном формате.

    • n-by-2 символьный массив – В этом значении, каждая строка представляет октет в шестнадцатеричном формате.

    Типы данных: char | string | double

    Прокомментируйте для пакета протокола в виде разделенной запятой пары, состоящей из PacketComment и вектор символов или строковый скаляр.

    Зависимости

    Чтобы включить этот аргумент пары "имя-значение", задайте pcapngObj входной параметр.

    Типы данных: char | string

    Ссылки

    [1] Tuexen, M. “Следующее поколение PCAP (Pcapng) Формат файла Получения”. 2020. https://www.ietf.org/.

    [2] Группа, Tcpdump. “Репозиторий Общественности Tcpdump/Libpcap”. Полученный доступ 20 мая 2020. https://www.tcpdump.org.

    [3] “Development/LibpcapFileFormat - Wiki Wireshark”. Полученный доступ 20 мая 2020. https://www.wireshark.org/.

    Расширенные возможности

    Генерация кода C/C++
    Генерация кода C и C++ с помощью MATLAB® Coder™.

    Смотрите также

    Функции

    Объекты

    Введенный в R2020b