<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Investigation of the computational complexity of the formation of checksums for the Cyclic Redundancy Code algorithm depending on the width of the generating polynomial</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Odilzhan A. Turdiev</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Vladimir A. Smagin</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Vladimir N. Kustov</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>International Academy of Informatization St. Petersburg</institution>
          ,
          <addr-line>Saint Petersburg, 190031, Russian Federation</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Petersburg State Transport University</institution>
          ,
          <addr-line>9 Moskovsky pr, Saint Petersburg, 190031, Russian Federation</addr-line>
        </aff>
      </contrib-group>
      <fpage>129</fpage>
      <lpage>135</lpage>
      <abstract>
        <p>Formulation of the problem: The need to ensure the integrity of data transmitted in communication networks makes the issue of ensuring the formation of checksums actual. At the same time, it is advisable to reduce the complexity of algorithms for generating checksums to improve data integrity. The well-known CRC (Cyclic Redundancy Code) checksum generation algorithm has high computational complexity. The aim of the work is to perform search studies to substantiate the fundamental possibility of reducing the computational complexity of the algorithm for generating CRC checksums and searching for possible ways of practical implementation. The novelty of the work lies in the fact that in order to achieve the goal of the work, the computational complexity of the CRC algorithm is investigated depending on various generating polynomials and their bit width. Result: on the basis of the conducted search studies, the possibility of reducing the computational complexity of the algorithm for generating CRC checksums for data transmitted in communication networks was confirmed. Additionally, a set of programs is presented for assessing the complexity of the CRC checksum generation algorithm depending on the length of the polynomial, as well as the analysis of the computational complexity of the CRC-based data integrity check algorithm. Practical relevance: The research results can be applied to reduce the computational complexity of the algorithm for generating CRC checksums in protocols of data transmission networks, as well as to substantiate promising ways for further research in this direction.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;computational complexity</kwd>
        <kwd>generator polynomial</kwd>
        <kwd>cyclic redundancy code</kwd>
        <kwd>CRC</kwd>
        <kwd>burst errors</kwd>
        <kwd>bit errors</kwd>
        <kwd>data integrity</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>One of the important tasks in modern
communication networks is to ensure data
integrity. The most common algorithm for
determining the integrity of transmitted data is the
CRC (Cyclic Redundancy Check) algorithm.1.</p>
      <p>Turdiev);</p>
      <p>
        The CRC algorithm is based on the theory
of cyclic error correction codes. This algorithm
was first proposed by V.V. Peterson and D.T.
Brown, in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The CRC algorithm computes a
short binary sequence that has a certain constant
length, known as a check value or CRC algorithm
code. The CRC is calculated for each individual
block of data to be transmitted over the network
and added to the block to form a codeword. When
a codeword is received on the receiving side, one
of two things is done. Either the received CRC
check value is compared with the value of the
CRC that is generated anew for the transmitted
data on the receiving side, or the CRC is generated
again on the receiving side for the entire received
129
codeword and the resulting CRC check value is
compared with the expected residual constant. If
the control values do not match, then the
transmitted data contains an error and the
receiving device can take actions to correct them,
such as re-reading the block or sending it again.
      </p>
      <p>
        The theoretical provisions of the functioning
of the CRC algorithm are given in [
        <xref ref-type="bibr" rid="ref2 ref3 ref4 ref5">2-5</xref>
        ]. It is
assumed that when a data block and its check CRC
are received correctly, integrity is ensured for that
data block. The process of generating and
checking the CRC can be quite laborious when
using network devices with low speed or high data
transfer rates. In this regard, reducing the
computational complexity of the CRC algorithm is
an urgent scientific and practical task.
      </p>
      <p>
        In addition, in real transmission conditions,
the communication channel can be affected by
various kinds of interference, which appear in the
process under study in the form of erroneous bits,
which lead to a violation of data integrity [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. In
the work of V.V. Yakovlev [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] proposed the
choice of the generating polynomial to increase
the probability of error recognition when
generating checksums in the transmitted data.
      </p>
      <p>Summarizing the above, it can be noted that
the purpose of the work is to perform search
studies to substantiate the fundamental possibility
and possible ways to reduce the computational
complexity of the CRC checksum generation
algorithm used to control the integrity of the
transmitted data.</p>
      <p>To find ways to reduce the computational
complexity in the work, a study of the
computational complexity of the formation of
CRC checksums was carried out depending on
various generating polynomials and their bit
width. To assess the computational complexity of
the CRC, we simulated the process of transmitting
binary data over a symmetric channel.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Basic concepts characteristics of CRC codes and</title>
      <p>
        Cyclic redundancy codes CRC are a
subclass of block codes and are used in HDLC,
Token Ring, Token Bus protocols, Ethernet
protocol families and other link layer protocols
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Computing resources mean memory,
processor power, and the number of shift registers.
      </p>
      <p>One of the ways to represent a cyclic code is to
represent it in the form of a generating polynomial
- the set of all polynomials of degree (r – code-1),
containing some fixed polynomial G (x) as a
common factor. The polynomial G (x) is called the
generating polynomial of the code. For example,
 4+  +1, here r-code = 5, since the binary
sequence looks like 10011. The standardized and
recommended generator polynomials for the CRC
algorithm are given in Table 1, where the name of
the standard and the generator polynomial are
shown: for example, the notation  4+  + 1 is
equivalent to 1∙  4 + 0∙  3 + 0∙  2 + 1∙ + 1∙  0 =
10011 (in binary).</p>
      <p>Generating polynomials
CRC-15-CAN  15 +  14 +  10 +  8 +  7 +  4 +  3 + 1</p>
      <p>CRC-16-IBM  16 +  15 +  2 + 1 (Bisync, Modbus, USB, ANSI X3.28,)
CRC-16-CCITT  16 +  12 +  5 + 1 (X.25, HDLC, XMODEM, Bluetooth, SD и др.)
CRC-16-T10-DIF  16 +  15 +  11 +  9 +  8 +  7 +  5 +  4 +  2 + 1 (SCSI DIF)
CRC-16-DNP  16 +  13 +  12 +  11 +  10 +  8 +  6 +  5 +  2 + 1 (DNP, IEC 870,</p>
      <p>M-Bus)
CRC-24  24 +  22 +  20 +  19 +  18 +  16 +  14 +  13 +  11 +  10 +  8 +
 6 +  3 +  + 1 (FlexRay)
CRC-24-Radix-64  24 +  23 +  18 +  17 +  14 +  11 +  10 +  7 +  6 +  5 +  4 +
 3 +  + 1 (OpenPGP)
CRC-30  30 +  29 +  21 +  15 +  13 +  12 +  11 +  8 +  7 +  6 +  2 +  +
1 (CDMA)
CRC-32-IEEE 802.3  32 +  26 +  23 +  22 +  16 +  12 +  10 +  8 +  7 +  5 +  4 +
 2 +  + 1 (V.42, MPEG-2, PNG, POSIX cksum)
CRC-32C (Castagnoli)  32 +  28 +  27 +  26 +  25 +  23 +  22 +  20 +  19 +  18 +  14 +
 13 +  11 +  10 +  9 +  8 +  6 + 1
CRC-32K (Koopman)  32 +  28 +  27 +  26 +  25 +  23 +  22 +  20 +  19 +  18 +  14 +
 13 +  11 +  10 +  9 +  8 +  6 + 1</p>
      <p>CRC-32Q  32 +  31 +  24 +  22 +  16 +  14 +  8 +  7 +  5 +  3 +  + 1
CRC-64-ISO  64 +  4 +  3 +  + 1 (HDLC — ISO 3309)
CRC-64-ECMA  64 +  62 +  57 +  55 +  54 +  53 +  52 +  47 +  46 +  45 +  40 +
 39 +  38 +  37 +  35 +  33 +  32 +  31 +  29 +  27 +  24 +  23 +
 22 +  21 +  19 +  17 +  13 +  12 +  10 +  9 +  7 +  4 +  + 1</p>
      <sec id="sec-2-1">
        <title>The value of the result of the</title>
        <p>implementation of the CRC algorithm is the
remainder of dividing the binary sequence M (x)
corresponding to the input data by the generating
binary sequence G (x) of degree r.</p>
        <p>Each final sequence of bits is one-to-one
associated with a binary polynomial, the
sequence of which is the original sequence. For
example, bit sequence 1011010 corresponds to
the binary polynomial M(x) = 1· x6 + 0· x5 + 1·
x4 + 1· x3 + 0· x2 + 1· x1 + 0· x0 = x6 +
x4 + x3 + x.</p>
        <p>Let's consider examples in which addition
and subtraction are performed without carrying
the digits in accordance with the "exclusive OR"
operation, which corresponds to the addition
modulo 2 of binary arithmetic.</p>
      </sec>
      <sec id="sec-2-2">
        <title>Polynomial division is performed in the</title>
        <p>binary system, with the difference that the
subtraction is performed modulo 2.</p>
        <p>
          The use of polynomial codes during
transmission is as follows. The sender and the
receiver pre-select the same generator
polynomial G (x), whose coefficients at the
higher term and at the lower term must be equal
to 1. When calculating the checksums of a block
of m bits in size, the following condition m &gt; r
must be met. Further, implementing the CRC
calculation algorithm, the sender adds the
checksum to the transmitted block, considered as
a polynomial M (x), so that the transmitted block
with the checksum is a multiple of G (x). When
the recipient receives the checksum block, he
divides it by G (x). If a nonzero remainder is
formed, then this indicates the occurrence of an
error during transmission [
          <xref ref-type="bibr" rid="ref10 ref11">10,11</xref>
          ].
        </p>
        <p>Checksum calculation algorithm:
1. Add r zeros to the end of the block so that it
contains m + r digits, the result is a polynomial
xrM (x).
2. Divide the polynomial xrM (x) by G (x)
modulo 2, the quotient is ignored.
3. Subtract modulo 2 the remainder (its length
does not exceed r bits) from the string
corresponding to xrM (x). The result is a block
with a checksum.</p>
      </sec>
      <sec id="sec-2-3">
        <title>Currently, most network technologies most often use the following three types of generating polynomials G (x) [12]:</title>
        <p>CRC-12 =  12 +  11 +  3 +  2 +  + 1
CRC-16-IBM =  16 +  15 +  2 + 1
CRC-16-CCITT =  16 +  12 +  5 + 1</p>
        <p>CRC-12 is used to transmit 6-bit
characters. The other two are for 8-bit. CRC-16
and CRC-CCITT detect all single and all double
errors, an odd number of isolated errors, single
bursts of errors less than 16 in length, and many
burst errors greater than 16 with a 99.997%
probability.</p>
        <p>After getting acquainted with the basic
concepts and characteristics of CRC codes, let
us consider an example of calculating the
remainder of cyclic redundancy codes and
estimate the computational complexity of this
process.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. An example of calculating the remainder for constructing a CRC code word and estimating the computational complexity</title>
      <sec id="sec-3-1">
        <title>Calculation of CRC. Information frame - 1101011011 Generator polynomial - 10011 Frame with additional zeros – 11010110110000</title>
      </sec>
      <sec id="sec-3-2">
        <title>CRC codeword (transmitted 11010110111110 [13-15]. frame)</title>
        <p>Thus, the example shows that with the
generator polynomial CRC-4-TU (10011) and
the bit length of the information frame equal to
10 bits, 10 divisions and 50 modulo 2 additions
are required. In the general case, the relationship
between the computational complexity (the
number of additions and divisions), the size of
the generating polynomial and the size of the
information polynomial.</p>
        <p>For the best understanding of the number
of divisions and additions in the CRC algorithm
with various generator polynomials and
information frames, software has been created to
assess the computational complexity of the CRC
algorithm.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. A program for evaluating the</title>
      <p>computational complexity of the</p>
    </sec>
    <sec id="sec-5">
      <title>CRC algorithm</title>
      <p>
        The program is designed to estimate the
complexity of the CRC algorithm by the width
of the polynomial using the CRC checksum
method, which is shown in the example of cyclic
redundancy codes. By estimating the
complexity of the implementation of the CRC
algorithm by performing additions according to
the width of the polynomial, we obtain an
approximate number of additions (shift into
cells). This study opens up possible ways to
reduce the computational complexity of the
CRC checksum generation algorithm used to
control the integrity of transmitted data [
        <xref ref-type="bibr" rid="ref16 ref17">16,17</xref>
        ].
      </p>
      <p>For the considered CRC generation
method, the "CRC calculation" application was
written in Java, presented in Appendix 1, which
allows for a user-specified frame size and
generating polynomial to estimate the required
number of additions and divisions to obtain the
final CRC checksum. The javaFX library was
used to write the application. The CRC and
TableData classes are used from this library.
There are three operations in the CRC class:
1. Operation (calculation) - it calculates the CRC
code.
2. Operation (initialize).
3. Operation (xor).</p>
      <sec id="sec-5-1">
        <title>The initialize operation processes the bit</title>
        <p>sequence array and passes it to the table, the xor
operation emulates the operations of logical
addition of the bits of the input code and the
CRC code to the input and gives two parameters
X and Y - a binary code, 1 and 1, or 1 and 0, or
0 and 1, or 0 and 0.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>5. Analysis of the results of evaluating the computational complexity of the CRC algorithm</title>
      <p>The calculation of the number of
additions, which is one of the important
components of the CRC algorithm, is carried out
in accordance with formula 1. Note that the
value obtained as a result of the calculations
should not be small, as this will lead to the need
to retransmit the data. In this case, the
transmission algorithm is repeated, which leads
to secondary calculations. Polynomials are
chosen so that there is no downtime in the data
transmission channels.</p>
      <p>The calculation of the number of additions
is carried out according to the formula:</p>
      <p>= ( ∙  ) mod 2, (1)
here R is the number of addition operations
modulo 2;
P - packet size;
N - is the length of the polynomial.</p>
      <p>Let us consider an example in which the
digit capacity of 8 polynomials has 48 divisions,
therefore the number of additions according to
the formula (1) R = 48 ∙ 8 = 384. The results of
evaluating the computational complexity of the
CRC generation algorithm, expressed in the
number of operations, are shown using the graph
in Fig. 1 and are confirmed a simulation model.</p>
    </sec>
    <sec id="sec-7">
      <title>Conclusions</title>
      <sec id="sec-7-1">
        <title>The article investigates the computational</title>
        <p>CRC algorithm. It is shown that with an increase
in the number of bits of generating polynomials,
the number of operations increases, while the
number of division operations remains
unchanged. With an increase in the number of
digits and division operations, the generating
polynomials remain unchanged, but the number
of additions increases.</p>
        <p>It is shown that a possible way to reduce
the computational complexity of the CRC
checksum generation algorithm used to control
the integrity of the transmitted data is to reduce
the number of addition operations while
maintaining the number of division operations in
the algorithm under consideration.</p>
        <p>As a result of this work, on the basis of
research on generating polynomials and the
number of division operations, an expression for
calculating the number of addition operations
was obtained. The research results pave the way
for further research to reduce the computational
complexity of the operation of cyclic
redundancy codes.</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>Appendix 1.</title>
      <sec id="sec-8-1">
        <title>By the logic of the method, the logical</title>
        <p>operator "or" is emulated, that is, xor, as shown
in Listing 1.</p>
        <p>Listing 1: Emulation of the logical operator
"or".</p>
      </sec>
      <sec id="sec-8-2">
        <title>The CRC class contains fields with the</title>
        <p>original message, that is, a variable that stores a
bit sequence of a certain length, as shown in
Listing 2.</p>
        <p>Listing 2: Variable storing a bit sequence of a
certain length.</p>
        <p>Next, a polynomial of a certain bit depth is
generated and the CRC code is calculated in the
calculation method.</p>
        <p>The program simulates the process of data
transfer between the source and the receiver
(Fig. 2), and also provides the following
functions:
1. Specifying the initial data in the specified
table ("polynomial" and "information frame",
Fig. 2) creates a number generator using a
unique seed.
2. Calculation of the initial data is displayed in
the program window (button "Calculation", Fig.
2).
3. As a result of the initial data, the number of
additions and the formation of CRC checksums
of cyclic redundancy codes (“parameters and
data” field, Fig. 2) is calculated.
4. Additionally, at the discretion of the user, you
can reset and start the calculation over again (the
"Reset" button, Fig. 2).</p>
        <p>After the simulation of the data
calculation process, the number of addition of
the CRC checksum algorithm of cyclic
redundancy codes is calculated again, which are
then compared with those previously calculated
to reveal the fact of calculating the addition of
the checksum algorithm of the transmitted data
(Fig. 2); field "CRC calculation".</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Peterson</surname>
            ,
            <given-names>W. W.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Brown</surname>
          </string-name>
          , D. T. (
          <year>January 1961</year>
          ).
          <article-title>"Cyclic Codes for Error Detection"</article-title>
          .
          <source>Proceedings of the IRE</source>
          <volume>49</volume>
          :
          <fpage>228</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Ritter</surname>
          </string-name>
          ,
          <string-name>
            <surname>Terry</surname>
          </string-name>
          (
          <year>February 1986</year>
          ).
          <article-title>"The Great CRC Mystery"</article-title>
          .
          <source>Dr. Dobb's Journal</source>
          <volume>11</volume>
          (
          <issue>2</issue>
          ): http://www.ciphersbyritter.com/ARTS/CR CMYST.
          <source>HTM. Retrieved 21 May</source>
          <year>2009</year>
          26-
          <fpage>34</fpage>
          ,
          <fpage>76</fpage>
          -
          <lpage>83</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>N.</given-names>
            <surname>Cam-Winget</surname>
          </string-name>
          , Nancy;
          <string-name>
            <given-names>R.</given-names>
            <surname>Housley</surname>
          </string-name>
          , Russ;
          <string-name>
            <given-names>D.</given-names>
            <surname>Wagner</surname>
          </string-name>
          , David; J.
          <string-name>
            <surname>Walker</surname>
          </string-name>
          , Jesse (May
          <year>2003</year>
          ).
          <article-title>"Security Flaws in 802.11 Data Link Protocols"</article-title>
          .
          <source>Communications of the ACM</source>
          <volume>46</volume>
          (
          <issue>5</issue>
          ):
          <fpage>35</fpage>
          -
          <lpage>39</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Stigge</surname>
          </string-name>
          , Martin; Plötz, Henryk; Müller, Wolf; Redlich,
          <string-name>
            <surname>Jens-Peter</surname>
          </string-name>
          (May
          <year>2006</year>
          ).
          <source>Reversing CRC - Theory and Practice</source>
          (http://sar.informatik.huberlin.de/research/publications/SAR-PR2006-05/SAR-PR-2006-
          <volume>05</volume>
          _.pdf). Berlin: Humboldt University Berlin. p.
          <fpage>17</fpage>
          .
          <issue>Retrieved 4 February 2011</issue>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Anachriz</surname>
          </string-name>
          (30
          <source>April</source>
          <year>1999</year>
          ).
          <article-title>"CRC and how to Reverse it" Retrieved 21 January 2010</article-title>
          .
          <article-title>Online essay with example x86 assembly code</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <article-title>[6] "Eurocontrol - FAQ: Technologies"</article-title>
          (http://www.eurocontrol.int/aim/public/fa q/chain faq3.
          <source>html)</source>
          .
          <source>European Organisation for the Safety of Air Navigation. 29 April</source>
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Yakovlev</surname>
            <given-names>V.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fedorov</surname>
            <given-names>R.F. Stochastic computers. L.</given-names>
          </string-name>
          ,
          <article-title>"</article-title>
          <source>Mechanical Engineering"</source>
          ,
          <year>1974</year>
          ,
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Ross</surname>
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Williams</surname>
          </string-name>
          <article-title>Элементарное руководство по CRC - алгоритмам обнаружения ошибок</article-title>
          .
          <string-name>
            <surname>Copyright (C) Ross Williams</surname>
          </string-name>
          ,
          <year>1993</year>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Cyclic</surname>
            <given-names>redundant code</given-names>
          </string-name>
          [Electronic resource]. - Internet
          <string-name>
            <surname>page</surname>
          </string-name>
          . - Access mode: https://ru.wikipedia.org/wiki/Cyclic_Redu ndant_code, free
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Yakovlev</surname>
            <given-names>VV</given-names>
          </string-name>
          <article-title>Assessment of the influence of interference on the performance of the channel level protocols / VV Yakovlev</article-title>
          , FI Kushnazarov // Izv. Petersburg.
          <article-title>state unthat ways of communication</article-title>
          . - SPb .: PGUPS,
          <year>2015</year>
          . - Issue.
          <volume>1</volume>
          (
          <issue>42</issue>
          ). - S.
          <fpage>133</fpage>
          -
          <lpage>138</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Halsall</surname>
            <given-names>F.</given-names>
          </string-name>
          <article-title>Fifth edition, computer networks</article-title>
          and the Internet /
          <string-name>
            <given-names>F.</given-names>
            <surname>Halsall</surname>
          </string-name>
          . -
          <string-name>
            <surname>Addison-Wesley: Pearson Education</surname>
          </string-name>
          ,
          <year>2005</year>
          . ‒
          <fpage>803</fpage>
          р.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Lin</surname>
            <given-names>S.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Costello</surname>
            <given-names>D.J.</given-names>
          </string-name>
          <string-name>
            <surname>Jr. Error Control</surname>
          </string-name>
          <article-title>Coding: Fundamentals and Applications</article-title>
          . Prentice-Hall, Inc., EnglewoodCliffs,
          <string-name>
            <surname>N. J.</surname>
          </string-name>
          ,
          <year>1983</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Halsall</surname>
            <given-names>F</given-names>
          </string-name>
          .
          <article-title>Data communications, computer networks</article-title>
          and open systems / F. Halsall. -
          <string-name>
            <surname>Addison-Wesley: Pearson Education</surname>
          </string-name>
          ,
          <year>1996</year>
          . ‒
          <fpage>907</fpage>
          р.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Olifer</surname>
            <given-names>V. G.</given-names>
          </string-name>
          <article-title>Computer networks</article-title>
          . Principles, technologies, protocols / V. G. Olifer,
          <string-name>
            <given-names>N. A.</given-names>
            <surname>Olifer</surname>
          </string-name>
          . - SPb .: Peter,
          <year>2008</year>
          .- - 958 p.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>A.</given-names>
            <surname>Romashchenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Rumyantsev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Shen</surname>
          </string-name>
          .
          <source>NOTES ON THE THEORY OF CODING. Notes on coding theory. | 2nd ed., Rev. and add. | M .: MTsNMO</source>
          ,
          <year>2017</year>
          . | 88 p.
          <source>ISBN 978-5-4439-0689-8</source>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Turdiev</surname>
            <given-names>O.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yakovlev</surname>
            <given-names>V.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klimenko</surname>
            <given-names>S.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boltaev</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Kh</surname>
          </string-name>
          .
          <article-title>Investigation of the formation of the block checksum (BCC) of the transmitted data</article-title>
          .
          <source>Izvestia ETU "LETI"</source>
          Issue No.
          <volume>6</volume>
          <fpage>2019</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Turdiev</surname>
            <given-names>O.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klimenko</surname>
            <given-names>S.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tukhtakhodzhaev</surname>
            <given-names>A</given-names>
          </string-name>
          .B.
          <article-title>Evaluations of the efficiency of detecting checksum errors (CRC) of transmitted data Izvestia ETU "LETI" Issue No. 8</article-title>
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>