<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article">
 <front>
  <journal-meta>
   <journal-id journal-id-type="publisher-id">
    ijcns
   </journal-id>
   <journal-title-group>
    <journal-title>
     International Journal of Communications, Network and System Sciences
    </journal-title>
   </journal-title-group>
   <issn pub-type="epub">
    1913-3715
   </issn>
   <issn publication-format="print">
    1913-3723
   </issn>
   <publisher>
    <publisher-name>
     Scientific Research Publishing
    </publisher-name>
   </publisher>
  </journal-meta>
  <article-meta>
   <article-id pub-id-type="doi">
    10.4236/ijcns.2025.183003
   </article-id>
   <article-id pub-id-type="publisher-id">
    ijcns-141692
   </article-id>
   <article-categories>
    <subj-group subj-group-type="heading">
     <subject>
      Articles
     </subject>
    </subj-group>
    <subj-group subj-group-type="Discipline-v2">
     <subject>
      Computer Science 
     </subject>
     <subject>
       Communications
     </subject>
    </subj-group>
   </article-categories>
   <title-group>
    TCP and UDP Control Bits Coded to Reduce Errors and/or Retransmissions
   </title-group>
   <contrib-group>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Chrislin Martial
      </surname>
      <given-names>
       Lélé
      </given-names>
     </name>
    </contrib>
   </contrib-group> 
   <aff id="affnull">
    <addr-line>
     aGET, ENSP Yaoundé, Yaoundé, Cameroon
    </addr-line> 
   </aff> 
   <pub-date pub-type="epub">
    <day>
     31
    </day> 
    <month>
     03
    </month>
    <year>
     2025
    </year>
   </pub-date> 
   <volume>
    18
   </volume> 
   <issue>
    03
   </issue>
   <fpage>
    27
   </fpage>
   <lpage>
    38
   </lpage>
   <history>
    <date date-type="received">
     <day>
      13,
     </day>
     <month>
      December
     </month>
     <year>
      2024
     </year>
    </date>
    <date date-type="published">
     <day>
      28,
     </day>
     <month>
      December
     </month>
     <year>
      2024
     </year> 
    </date> 
    <date date-type="accepted">
     <day>
      28,
     </day>
     <month>
      March
     </month>
     <year>
      2025
     </year> 
    </date>
   </history>
   <permissions>
    <copyright-statement>
     © Copyright 2014 by authors and Scientific Research Publishing Inc. 
    </copyright-statement>
    <copyright-year>
     2014
    </copyright-year>
    <license>
     <license-p>
      This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/
     </license-p>
    </license>
   </permissions>
   <abstract>
    This article is about TCP and UDP transport layer control bits. The aim is to encode some control bits in TCP and UDP headers in order to improve their reliability. This will ensure that some packets that arrive at the receiving side with only bit errors in the header part can be corrected and thus be delivered to the application layer without problem instead of being retransmitted or discarded. This is done by suggesting an adaptive scaling of the source port number and destination port number fields. In the case of TCP, this will provide in some cases, enough bits that will be added to the bits of the Urgent pointer field, Data-offset part, and the reserved field on a quest of a good coding rate.
   </abstract>
   <kwd-group> 
    <kwd>
     TCP
    </kwd> 
    <kwd>
      UDP
    </kwd> 
    <kwd>
      Reliability
    </kwd> 
    <kwd>
      Control data
    </kwd> 
    <kwd>
      Coding
    </kwd>
   </kwd-group>
  </article-meta>
 </front>
 <body>
  <sec id="s1">
   <title>1. Introduction</title>
   <p>As defined in the OSI (Open System Interconnection) model, the transport layer aims at providing communication between two processes on two different end-systems. Two main transport layer protocols are the subject of this paper: TCP (Transmission Control Protocol) and UDP (User Datagram Protocol). Reliability often plays an important role in communication between processes. On one hand, in order to provide reliability TCP <xref ref-type="bibr" rid="scirp.141692-1">
     [1]
    </xref>-<xref ref-type="bibr" rid="scirp.141692-5">
     [5]
    </xref> has some mechanisms such as checksum and retransmissions. In such an approach the control information i.e. data of the header part of TCP segment are very important. The goal of this article is to use the structure of TCP header bits in order to encode the control data in such a way that its reliability improves and, therefore, the performance of the checksum mechanism. On the other hand, UDP <xref ref-type="bibr" rid="scirp.141692-3">
     [3]
    </xref> <xref ref-type="bibr" rid="scirp.141692-5">
     [5]
    </xref>-<xref ref-type="bibr" rid="scirp.141692-7">
     [7]
    </xref> doesn’t provide reliability but the destination and source port numbers are critical parameters in order for the data to be delivered to the right processes. Improving the reliability of source and destination port numbers will certainly improve the transmission process of the overall data. This article aims to provide an approach for improving transport layer communication. We also make use of the habits of users when they go to the Internet. For many users, there is a quite significant probability that they will not have more than 4 or 16 TCP or UDP connections open at the same time, therefore the number of bits assigned for port numbers appears to be high. Based on this observation we derive an algorithm for the mentioned purpose. This paper is divided in four sections. Section II presents UDP and the steps used to derive an algorithm to encode critical control information. Then, section III deals with TCP, its control information and the algorithm used to encode some control data. After that, the section Results and Discussion, gives an example of coding gain we can obtain with a convolutional code then some relevant issues from this result are detailed. At the end, a section entitled conclusion summarizes the main ideas and results of the article. Now, we start with the UDP protocol.</p>
  </sec><sec id="s2">
   <title>2. UDP</title>
   <p>This section is about UDP. Firstly, we are going to present the control information in UDP header, then we give details of the algorithm that we are suggesting to improve reliability of some control information.</p>
   <sec id="s2_1">
    <title>2.1. Control Information in UDP Header</title>
    <p>The purpose of this sub-section is to sort UDP control information in two parts: critical (sensitive) and non-critical for the communication procedure. This part focuses on UDP header and the impact of undetected errors in the header part of its segment. <xref ref-type="fig" rid="fig1">
      Figure 1
     </xref> illustrates the different fields which appear in a UDP packet. The first step is to discriminate between critical (sensitive) control information for successful communication and those that are not.</p>
    <p>Sensitive control information:</p>
    <p>Below is a list of UDP header fields that we consider to be sensitive information for transport layer transmission:</p>
    <p>
     <xref ref-type="bibr" rid="scirp.141692-"></xref>Let us describe briefly the importance of these critical parameters. We start with the Destination port number. The destination port number is a critical parameter because an error in this field will result in the data either being delivered to the wrong process or the process not being able to exist. The process doesn’t exist in other words, it is as if the data is lost. The fact that the data can be delivered to a wrong process makes this field a very important one to protect. Concerning the source port number, it is also important as it corresponds to the sender’s address, which is useful when sending back replies. Finally, the Checksum field is for important usage because it helps to perform the error detection functionality of the UDP protocol. Therefore, we can imagine that improving its reliability will improve the performance of the error-detection step. What can we say about non-sensitive control information?</p>
    <fig id="fig1" position="float">
     <label>Figure 1</label>
     <caption>
      <title>Figure 1. UDP segment.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/9702617-rId14.jpeg?20250331103447" />
    </fig>
    <p>Non-sensitive control information of UDP:</p>
    <p>
     <xref ref-type="bibr" rid="scirp.141692-"></xref>In this sub-section we are going to talk about UDP header fields that we consider to be non-sensitive with regard to communication between processes while explaining the reason of our choice. The field that we consider as non-sensitive is the Length field. The Length field data determines the length of the segment but if we use a principle similar to TCP by setting a MSS (Maximum Segment Size) then this field becomes useless and therefore it can be used for encoding. In this paper, we are making the suggestion to set a maximum size for UDP and then used the Length field for encoding. If fact, if the stream of bits to be sent is of size M bits, then we will have 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         n 
       </mi> 
       <mo> 
       </mo> 
       <mo>
         = 
       </mo> 
       <mo> 
       </mo> 
       <mo> 
       </mo> 
       <mrow> 
        <mo>
          ⌊ 
        </mo> 
        <mrow> 
         <mrow> 
          <mi>
            M 
          </mi> 
          <mo>
            / 
          </mo> 
          <mrow> 
           <mi>
             M 
           </mi> 
           <mi>
             S 
           </mi> 
           <mi>
             S 
           </mi> 
          </mrow> 
         </mrow> 
        </mrow> 
        <mo>
          ⌋ 
        </mo> 
       </mrow> 
      </mrow> 
     </math> segments ( 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mrow> 
        <mo>
          ⌊ 
        </mo> 
        <mi>
          y 
        </mi> 
        <mo>
          ⌋ 
        </mo> 
       </mrow> 
      </mrow> 
     </math> represents the integer part of y) and the last segment will have a size equal to 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         n 
       </mi> 
       <mn>
         1 
       </mn> 
       <mo>
         = 
       </mo> 
       <mi>
         M 
       </mi> 
       <mo>
         − 
       </mo> 
       <mi>
         n 
       </mi> 
       <mo>
         × 
       </mo> 
       <mi>
         M 
       </mi> 
       <mi>
         S 
       </mi> 
       <mi>
         S 
       </mi> 
       <mo>
         &lt; 
       </mo> 
       <mi>
         M 
       </mi> 
       <mi>
         S 
       </mi> 
       <mi>
         S 
       </mi> 
      </mrow> 
     </math> bits therefore we propose using 2 bits (for example the first two bits) of the Length field to distinguish between the 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mo> 
       </mo> 
       <mi>
         n 
       </mi> 
      </mrow> 
     </math> packets of size MSS and the only packet of size 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mo> 
       </mo> 
       <mi>
         n 
       </mi> 
       <mn>
         1 
       </mn> 
       <mo>
         &lt; 
       </mo> 
       <mi>
         M 
       </mi> 
       <mi>
         S 
       </mi> 
       <mi>
         S 
       </mi> 
      </mrow> 
     </math>. This last packet can be handled by using the remaining bits of the Length field to specify its length. This means that this last packet will be processed as what normally happens in UDP. As the two first bits are concerned an example of possible assignment is given by:</p>
    <p>In this paper, we will not care about the case where the size is less than MSS since the manner of dealing with that is straightforward. We plan to use this field for coding and we do not plan to protect non-sensitive control information with a coding. However, one must derive from this work an algorithm that also includes this field. <xref ref-type="table" rid="table1">
      Table 1
     </xref> summarizes the classification and assumption we are using for the rest of the paper. In this table “not-used” means that we will use this field for encoding. Having identified the critical fields in the header part of UDP, the next step is to improve their reliability.</p>
    <table-wrap id="table1">
     <label>
      <xref ref-type="table" rid="table1">
       Table 1
      </xref></label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.141692-"></xref>Table 1. Summary of the classification and assumption.</title>
     </caption>
     <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Sensitive control data</p></td> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Non-sensitive control data</p></td> 
      </tr> 
      <tr> 
       <td class="custom-bottom-td custom-top-td aleft pli" width="17.09%"><p style="text-align:left">Source port number</p><p style="text-align:left">Destination port number</p><p style="text-align:left">Checksum</p></td> 
       <td class="custom-bottom-td custom-top-td acenter" width="17.09%"><p style="text-align:center">Length (not-used)</p></td> 
      </tr> 
      <tr> 
       <td class="custom-top-td acenter" width="17.09%" colspan="2"><p style="text-align:center">Size of the UDP header 8 bytes</p></td> 
      </tr> 
     </table>
    </table-wrap>
   </sec>
   <sec id="s2_2">
    <title>2.2. Algorithm for Coding Some Control Data of UDP</title>
    <p>This sub-section deals with the algorithm that we propose in order to encode source and destination port numbers as well as the checksum. We assume that a principle similar to MSS in TCP is used, therefore the Length field will be used for encoding process. Moreover by analysis users’ habits, we realized that a great portion of users will not have at the same time more than 4 or 16 TCP and UDP sockets open at the same time. That is why we suggest re-scaling the bits used for source and destination port numbers in an adaptive way. As an illustration, we choose to use 4 states:</p>
    <p>In order to distinguish these four states, we need 2 bits, which can be taken from the Length field (let us used the two last bits). An example is given in <xref ref-type="table" rid="table2">
      Table 2
     </xref>:</p>
    <table-wrap id="table2">
     <label>
      <xref ref-type="table" rid="table2">
       Table 2
      </xref></label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.141692-"></xref>Table 2. Example of assignment between state and bits.</title>
     </caption>
     <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">State</p></td> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Bits of the state</p></td> 
      </tr> 
      <tr> 
       <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">State 1</p></td> 
       <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">00</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="17.09%"><p style="text-align:center">State 2</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">01</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="17.09%"><p style="text-align:center">State 3</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">10</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="17.09%"><p style="text-align:center">State 4</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">11</p></td> 
      </tr> 
     </table>
    </table-wrap>
    <p>However, since states are linked to the fact that 00 are the two first bits of the Length field, we suggest combining bits of states and bits to distinguish size (either less or equal than MSS) by 5 Cases where we use 6 bits (of the Length field) to discriminate between then as described by <xref ref-type="table" rid="table3">
      Table 3
     </xref>. The assignment of bits is done in order for any two sequences of 6 bits to differ by at least 3 bits. That is, the Hamming distance is at least 3. This will add robustness on the transmitted sequence since 3 bits difference provides a self-ability to correct 1 bit error at the receiving side. It means that 10 bits will remain for the encoding procedure. The six bits will be sent by both parts of the communication to reflect their current state in a similar manner as information is carried by the window field in TCP header for flow control. Any change in one part will be reported to the other part so that both sides move to the same state throughout the communication. The part with the higher number of opened sockets determines the state of the communication.</p>
    <table-wrap id="table3">
     <label>
      <xref ref-type="table" rid="table3">
       Table 3
      </xref></label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.141692-"></xref>Table 3. Example of assignment between size-state and bits.</title>
     </caption>
     <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td class="custom-bottom-td acenter" width="27.65%"><p style="text-align:center">6 bits used</p></td> 
       <td class="custom-bottom-td acenter" width="72.35%"><p style="text-align:center">purpose</p></td> 
      </tr> 
      <tr> 
       <td class="custom-top-td acenter" width="27.65%"><p style="text-align:center">000101</p></td> 
       <td class="custom-top-td acenter" width="72.35%"><p style="text-align:center">The size of the data field is MSS and the state is 1</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="27.65%"><p style="text-align:center">001011</p></td> 
       <td class="acenter" width="72.35%"><p style="text-align:center">The size of the data field is MSS and the state is 2</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="27.65%"><p style="text-align:center">011100</p></td> 
       <td class="acenter" width="72.35%"><p style="text-align:center">The size of the data field is MSS and the state is 3</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="27.65%"><p style="text-align:center">110001</p></td> 
       <td class="acenter" width="72.35%"><p style="text-align:center">The size of the data field is MSS and the state is 4</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="27.65%"><p style="text-align:center">111111</p></td> 
       <td class="acenter" width="72.35%"><p style="text-align:center">The size of the data field is less than MSS</p></td> 
      </tr> 
     </table>
    </table-wrap>
    <p>When a state 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        i 
      </mi> 
     </math> is used it leaves a given amount of bits (as the number of bits of the port number is concerned ) that are not used and this amount of bits adds to the remaining 10 bits of the Length field to give the total number of bits which are available for the encoding procedure. <xref ref-type="table" rid="table4">
      Table 4
     </xref> gives the details of what we obtain from each state while providing the coding rate of each state. Remember that the data to be encoded are the port numbers and the checksum.</p>
    <table-wrap id="table4">
     <label>
      <xref ref-type="table" rid="table4">
       Table 4
      </xref></label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.141692-"></xref>Table 4. UDP: states and coding rate.</title>
     </caption>
     <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">States</p></td> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Length of control data to encode</p></td> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Length of header field</p></td> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Coding rate</p></td> 
      </tr> 
      <tr> 
       <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">1</p></td> 
       <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">4 + 16</p></td> 
       <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">64</p></td> 
       <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">20/58</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="17.09%"><p style="text-align:center">2</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">8 + 16</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">64</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">24/58</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="17.09%"><p style="text-align:center">3</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">16 + 16</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">64</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">32/58</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="17.09%"><p style="text-align:center">4</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">32 + 16</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">64</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">48/58</p></td> 
      </tr> 
     </table>
    </table-wrap>
    <p>Then an appropriate coding scheme such convolutional codes, turbo codes, linear block codes <xref ref-type="bibr" rid="scirp.141692-8">
      [8]
     </xref> <xref ref-type="bibr" rid="scirp.141692-9">
      [9]
     </xref> can be used. It is worth mentioning that the scaling of the port numbers in states can be modified in many ways. That is instead of 4 states we can decide to have 8 states and so forth. After presenting the UDP protocol and our method to improve the reliability of its critical control data, let us focus on TCP.</p>
   </sec>
  </sec><sec id="s3">
   <title>3. TCP</title>
   <p>This section is about TCP. We starts by presenting the control information in TCP header, after that, we give details of the algorithm that we are suggesting to improve reliability of some control information</p>
   <sec id="s3_1">
    <title>3.1. Control Information in TCP Header</title>
    <p>This sub-section aims to sort TCP control information in two parts: critical (sensitive) and non-critical for reliability procedure. It focuses on TCP header and the impact of undetected errors in the header part of its segment. <xref ref-type="fig" rid="fig2">
      Figure 2
     </xref> illustrates the different fields which appear in a TCP packet. As in the previous section, the first step is to discriminate between critical (sensitive) control information for reliable process and those which are not.</p>
    <fig id="fig2" position="float">
     <label>Figure 2</label>
     <caption>
      <title>Figure 2. TCP segment.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/9702617-rId27.jpeg?20250331103448" />
    </fig>
    <p>Sensitive control information:</p>
    <p>Below is a list of TCP header fields that we consider to be sensitive information for reliable procedure:</p>
    <p>Let us describe briefly the importance of these critical parameters. Here, the Source port number, the Destination port number, the Checksum fields have almost the same purpose as in UDP. One thing that we can add is to stress the importance of the Checksum field which performance impacts the reliability of TCP. Therefore is very critical here. Talking about the Sequence number field, we can say that this field is critical in the sense that if helps to site the receive data in the flow of information, any undetected error in this field means that the flow of information may be altered or the data will be discarded if error leads to a smaller sequence number than the one expected. Finally the bits ACK, RST, SYN, FIN are critical since they concern the management of the communication process. Let us look at non-sensitive control information.</p>
    <p>Non-sensitive control information:</p>
    <p>In this sub-section, we are going to talk about TCP header fields that we consider to be non-sensitive with regard to reliability and we will explain the reason of our choice. One field that, we consider as non-sensitive is the window one. The window’s data is important for flow control but we choose to consider it as non-critical information for the good functioning of the reliable protocol. Indeed an error in this field will not be harmful for the reliable process, it will influence mostly the flow control procedure. Moreover, this error can be alleviated by subsequent transmissions which can provide error-free information. Another non-critical field for reliability is the acknowledgment number field. Again, the acknowledgment number field determines the way the information will be sent back by the recipient. However, the acknowledgment number is not consider as a critical parameter since TCP used cumulative acknowledgment, an error in this field will not be harmful for the functioning of the reliability process. Indeed, subsequent packets with correct acknowledgment number field will restore the information sent or needed. In addition to these non-sensitive information, we consider in this paper that the bits PSH, URG are not used and that throughout the transmission the size of the header field remains constant i.e. 20 bytes. As for UDP, we do not plan to protect non-sensitive control information with a coding. However one can derive from this work an algorithm which may include some of these bits or fields. <xref ref-type="table" rid="table5">
      Table 5
     </xref> summarizes the classification and assumption we are using for the rest of the paper. Having identified the critical fields in the header part of TCP the next step is to improve their reliability.</p>
    <table-wrap id="table5">
     <label>
      <xref ref-type="table" rid="table5">
       Table 5
      </xref></label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.141692-"></xref>Table 5. Summary of the classification and assumption for TCP.</title>
     </caption>
     <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Sensitive control data</p></td> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Non-sensitive control data</p></td> 
      </tr> 
      <tr> 
       <td rowspan="2" class="custom-top-td aleft pli" width="17.09%"><p style="text-align:left">Source port number</p><p style="text-align:left">Destination port number</p><p style="text-align:left">Sequence number </p><p style="text-align:left">Checksum</p><p style="text-align:left">A</p><p style="text-align:left">R</p><p style="text-align:left">S</p><p style="text-align:left">F</p></td> 
       <td class="custom-bottom-td custom-top-td aleft pli" width="17.09%"><p style="text-align:left">acknowledgment number </p><p style="text-align:left">Receiving window</p></td> 
      </tr> 
      <tr> 
       <td class="custom-bottom-td custom-top-td aleft pli" width="17.09%"><p style="text-align:left">Data-offset (not-used)</p><p style="text-align:left">Not-used (not-used)</p><p style="text-align:left">U (not-used)</p><p style="text-align:left">P (not-used)</p><p style="text-align:left">Urgent pointer (not-used)</p><p style="text-align:left">Options (not-used)</p></td> 
      </tr> 
      <tr> 
       <td class="custom-top-td acenter" width="17.09%" colspan="2"><p style="text-align:center">Size of the TCP header 20 bytes</p></td> 
      </tr> 
     </table>
    </table-wrap>
   </sec>
   <sec id="s3_2">
    <title>3.2. Algorithm for Coding Some Control Data for TCP</title>
    <p>This section deals with the algorithm we are suggesting. The idea is to encode the sensitive data of TCP header. We also make use of habits of users when they go to the Internet as mentioned earlier in section 2. Based on this observation we decide to rescale the number of bits use for source port number and destination port number in the same way as for UDP (see section 2). The bits of the PSH and URG are used for coding. Remember that the data that we are encoding are: source port number, destination port number, sequence number, RST, SYN, FIN, ACK and checksum. To distinguish between the four states we suggest in this case to use 5 bits sequences with a minimum Hamming distance of 3 as presented in <xref ref-type="table" rid="table6">
      Table 6
     </xref></p>
    <table-wrap id="table6">
     <label>
      <xref ref-type="table" rid="table6">
       Table 6
      </xref></label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.141692-"></xref>Table 6. Example of assignment between size-state and bits.</title>
     </caption>
     <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td class="custom-bottom-td acenter" width="30.81%"><p style="text-align:center">5 bits used</p></td> 
       <td class="custom-bottom-td acenter" width="69.19%"><p style="text-align:center">purpose</p></td> 
      </tr> 
      <tr> 
       <td class="custom-top-td acenter" width="30.81%"><p style="text-align:center">00010</p></td> 
       <td class="custom-top-td acenter" width="69.19%"><p style="text-align:center">The size of the data field is MSS and the state is 1</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="30.81%"><p style="text-align:center">00101</p></td> 
       <td class="acenter" width="69.19%"><p style="text-align:center">The size of the data field is MSS and the state is 2</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="30.81%"><p style="text-align:center">11000</p></td> 
       <td class="acenter" width="69.19%"><p style="text-align:center">The size of the data field is MSS and the state is 3</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="30.81%"><p style="text-align:center">11111</p></td> 
       <td class="acenter" width="69.19%"><p style="text-align:center">The size of the data field is MSS and the state is 4</p></td> 
      </tr> 
     </table>
    </table-wrap>
    <p>From this table, we have derived <xref ref-type="table" rid="table7">
      Table 7
     </xref>, which gives the details of what we obtain from each state while providing the coding rate of each state. Let us make the remark that a possibility of including the checksum in the decoding process may exist since a first decoding provides the checksum result. Then, any error detected by the checksum can be used again in a second decoding process in order to improve the reliability of bits (principle similar to turbo code). This procedure could have the effect similar to having smaller code rate.</p>
    <table-wrap id="table7">
     <label>
      <xref ref-type="table" rid="table7">
       Table 7
      </xref></label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.141692-"></xref>Table 7. TCP: states and coding rate.</title>
     </caption>
     <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">States</p></td> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Length of control data to encode</p></td> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Length of header field Except acknowledgment number, receive window, option</p></td> 
       <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Coding rate</p></td> 
      </tr> 
      <tr> 
       <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">1</p></td> 
       <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">4 + 52</p></td> 
       <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">112</p></td> 
       <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">56/107</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="17.09%"><p style="text-align:center">2</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">8 + 52</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">112</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">60/107</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="17.09%"><p style="text-align:center">3</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">16 + 52</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">112</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">68/107</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="17.09%"><p style="text-align:center">4</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">32 + 52</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">112</p></td> 
       <td class="acenter" width="17.09%"><p style="text-align:center">84/107</p></td> 
      </tr> 
     </table>
    </table-wrap>
    <p>Let us sum up the method which captures the proposed algorithm.</p>
    <p>METHODOLOGY:</p>
    <p>1) Discriminate between sensitive and non-sensitive control data</p>
    <p>2) Select amongst the non-sensitive control data those which are usually not-used or which functionalities can be handled by another mechanism (example Length field replaced by MSS)</p>
    <p>3) Use the fields selected in 2. to code sensitive fields.</p>
    <p>Having presented the algorithm we are using to encode some control data in TCP and UDP header let us see which potential gain we can have with such code rate.</p>
   </sec>
  </sec><sec id="s4">
   <title>4. Results and Discussion</title>
   <p>This section is indented for illustrating the gain that we can obtain in terms of BER (Bit error rate) while using our algorithm. It worth noticing that this gain concerns only the sensitive control data. As subsection 2.2 and subsection 3.2 show the coding rate can be less or close 1/2. Thus we choose to exemplify the gain by using a convolutional code [10] with the following characteristics:</p>
   <p>The goal here is to have an estimate of the potential gain we can have by coding the sensitive control data bit error rate. Moreover, we model the Transport layer channel as Binary Symmetric Channel [11] with a probability of error p. It is the probability that a given bit sent 0 or 1 is reversed by the channel. <xref ref-type="fig" rid="fig3">
     Figure 3
    </xref> illustrates this logical view of the transmission of data between transport layer entities. The logical channel physically represents all the transfer and processing that occur between the moment a TCP segment is created and the point where it is received on the recipient side. This includes host processing (on both end systems involved in the communication) by network layer, data link layer, physical layer and the different processing by the packet switches on the path followed by the packet containing the segment. As far as burst errors are concerned techniques such as bit-interleaving can be used to convert a channel prone to burst errors into a channel which follows a binary symmetric law. Moreover we will also keep in mind that there is a link between packet error and bit errors.</p>
   <fig id="fig3" position="float">
    <label>Figure 3</label>
    <caption>
     <title>Figure 3. Transport layer channel model.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/9702617-rId28.jpeg?20250331103449" />
   </fig>
   <fig id="fig4" position="float">
    <label>Figure 4</label>
    <caption>
     <title>Figure 4. Sensitive control information bit rate.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/9702617-rId29.jpeg?20250331103449" />
   </fig>
   <p>Then, <xref ref-type="fig" rid="fig4">
     Figure 4
    </xref> displays two curves corresponding to the result of our simulation. The dash line one corresponds to the sensitive control data bit error rate as a function of the channel bit error rate without coding (uncoded). The solid line is the result of the sensitive control data bit error rate as a function of the channel bit error rate with coding (coded). As we can notice the coding of the sensitive control data yields a factor of around 10<sup>−</sup><sup>2</sup> in terms of bit error rate between coded and uncoded data. Another remark one can draw up from this plot is that, the performance of the uncoded data follows the channel bit error values which is consistent. The improvement in the sensitive control data means for example that for packets arriving at the recipient side with errors in their destination port number, the coding will be able to correct in many cases all these errors therefore the packets will be delivered to the right process instead of being discarded. This will avoid some retransmissions mainly the case of TCP or loss of packets in the case of UDP. Let us recall that avoiding retransmission means saving power as sending bits requires energy. Moreover, it will improve the welfare of networks by reducing the load processed by the core of networks. This last point suggests a positive impact in terms of alleviating congestion in the network.</p>
  </sec><sec id="s5">
   <title>5. Conclusions</title>
   <p>In this paper, we developed an approach in order to encode some fields of the header part of TCP and UDP segments. To achieve that: Firstly, we classified the header fields in two classes according to fact that they are more or less relevant:</p>
  </sec>
 </body><back>
  <ref-list>
   <title>References</title>
   <ref id="scirp.141692-ref1">
    <label>1</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Postel, J. (1981) ISI. Request for Comments 793, Transmission Control Protocol, Darpa Internet Program Protocol Specification, September.
    </mixed-citation>
   </ref>
   <ref id="scirp.141692-ref2">
    <label>2</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Duke, M., Braden, R., Eddy, W., Blanton, E. and Zimmermann, A. (2015) IETF. Request for Comments 7414—A Roadmap for Transmission Control Protocol (TCP) Specification Documents, February.
    </mixed-citation>
   </ref>
   <ref id="scirp.141692-ref3">
    <label>3</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Kurose, J.F. and Ross, K.W. (2000) Computer Networking—A Top-Down Approach Featuring the Internet. Addison-Wesley.
    </mixed-citation>
   </ref>
   <ref id="scirp.141692-ref4">
    <label>4</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Stevens, W.R. (1994) TCP/IP Illustrated, Volume 1: The Protocols. Addison-Wesley.
    </mixed-citation>
   </ref>
   <ref id="scirp.141692-ref5">
    <label>5</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Comer, D.E. (1991) Internetworking with TCP/IP: Principles, Protocols, and Architecture, Volume I. 2nd Edition, Prentice-Hall. 
    </mixed-citation>
   </ref>
   <ref id="scirp.141692-ref6">
    <label>6</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Postel, J. (1980) ISI. Request for Comments 768—User Datagram Protocol, 28 August.
    </mixed-citation>
   </ref>
   <ref id="scirp.141692-ref7">
    <label>7</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Eggert, L., Fairhurst, G. and Shepherd, G. (2017) IETF. Request for Comments 8085—UDP Usage Guidelines, March. 
    </mixed-citation>
   </ref>
   <ref id="scirp.141692-ref8">
    <label>8</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Blahut, R.E. (1983) Theory and Practise of Error Control Codes. Addison-Wesley. 
    </mixed-citation>
   </ref>
   <ref id="scirp.141692-ref9">
    <label>9</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Lin, S. and Costello, D.J. (1983) Error Control Coding: Fundamentals and Applications. Prentice-Hall.
    </mixed-citation>
   </ref>
   <ref id="scirp.141692-ref10">
    <label>10</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Proakis, J.G. and Salehi, M. (2001) Communication Systems Engineering. 2th Edition, Eastern Economy Edition.
    </mixed-citation>
   </ref>
   <ref id="scirp.141692-ref11">
    <label>11</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Cover, T.M. and Thomas, J.A. (1991) Elements of Information Theory. Wiley Series in Telecommunications.
    </mixed-citation>
   </ref>
  </ref-list>
 </back>
</article>