Fact-checked by Grok 2 weeks ago

Frame check sequence

A frame check sequence (FCS) is an error-detecting code appended to the end of a data frame in various communication protocols to verify the of transmitted by identifying bit errors introduced during . It functions as a trailer field, calculated over the frame's contents excluding delimiters and the FCS itself, allowing the receiver to recompute and compare it against the received value; mismatches indicate corruption, prompting frame discard without retransmission requests in most link-layer implementations. Commonly realized through a algorithm, the FCS employs division in modulo-2 arithmetic to generate a fixed-length , with the generator polynomial and bit length varying by protocol to balance detection efficacy and computational overhead. In the High-Level Data Link Control (HDLC) procedure standardized by ISO/IEC 3309, the FCS is typically 16 bits long, derived from the polynomial x^{16} + x^{12} + x^5 + 1, though a 32-bit variant using x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11} + x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1 is optional for enhanced protection. Protocols like Point-to-Point Protocol (PPP) in HDLC framing adopt a similar 16-bit FCS (polynomial x^{16} + x^{12} + x^5 + 1), covering address, control, protocol, information, and padding fields, with an initial register value of 0xFFFF and final complement for transmission. In Frame Relay, the FCS uses the same 16-bit CRC to check frames up to 4096 octets between opening and closing flags, ensuring reliable virtual circuit operation. For Ethernet as defined in , the FCS is a 32-bit field occupying 4 octets, computed per Clause 3.2.9 over the destination address through the data field, providing robust burst error detection up to 32 bits in length. This mechanism underpins error-free delivery in local area networks, where the verifies the FCS before processing; undetected errors are rare due to the high degree, though FCS alone does not correct errors or guarantee end-to-end integrity. Across these standards, the FCS enhances link-layer reliability without adding significant overhead, complementing higher-layer checks in layered network architectures.

Fundamentals

Definition and Basic Concept

A frame check sequence (FCS) is a sequence of redundant bits, typically 16 to 32 bits in length, appended to the end of a frame in communication protocols to facilitate detection. It is computed as a of the frame's header and , providing a that the receiving device can use to verify the integrity of the transmitted . In its basic operation, the FCS serves as a trailer within the structure, allowing the to independently recalculate the sequence using the same algorithm applied to the received header and . If the recomputed value matches the received FCS, the frame is deemed error-free; otherwise, it is discarded, prompting retransmission if necessary. This mechanism ensures data reliability without correcting errors, relying instead on higher-layer protocols for recovery. A generic data frame structure in the data link layer includes a preamble for synchronization, a header with addressing and control fields, the payload containing the user data, and the FCS trailer. This can be represented textually as: | Preamble | Header | Payload | FCS | The FCS is particularly effective at detecting burst errors up to the length of the FCS field and all single-bit errors across the frame, though it cannot guarantee detection of all possible multi-bit error patterns. In protocols like Ethernet, the FCS plays a critical role in maintaining frame integrity during transmission over local area networks.

Historical Development

The roots of frame check sequence (FCS) lie in early error-detecting and error-correcting codes developed during the 1940s and 1950s, such as the introduced by in 1950 for detecting and correcting single-bit errors in data transmission. A pivotal advancement came in 1961 when W. Wesley Peterson invented the (CRC), providing an efficient polynomial-based method for error detection that became the foundation for most FCS implementations. These foundational techniques addressed reliability challenges in early computing and , but FCS as a specific mechanism for frame integrity in packet-switched networks emerged in the 1970s alongside the development of , the precursor to the modern . ARPANET's packet-switching architecture, operational from 1969, incorporated error detection methods to handle noisy transmission lines, evolving toward (CRC)-based approaches by the mid-1970s to ensure robust data frame validation in distributed systems. A pivotal milestone occurred in 1975 when IBM adopted CRC for its Synchronous Data Link Control (SDLC) protocol, which used a 16-bit CRC polynomial to detect errors in synchronous data frames, marking a significant step in standardizing FCS for enterprise networking. This was followed by the formalization of Ethernet, where the Digital, Intel, and Xerox (DIX) consortium released Ethernet Version 2 in 1982, incorporating a 32-bit FCS based on CRC-32 to protect against transmission errors in local area networks. The IEEE 802.3 standard, ratified in 1983, further entrenched this 32-bit FCS in Ethernet frames, providing a vendor-neutral specification that became the basis for widespread adoption in wired networking. The saw a broader from rudimentary checks—limited to detecting single-bit errors—to polynomial-based methods in FCS, driven by escalating data rates and the need for higher detection reliability in emerging high-speed links. This shift was influenced by recommendations, notably G.706 published in 1991, which defined procedures for frame alignment and error monitoring in digital transmission systems, promoting across global infrastructures. Post-2000 developments focused on enhancements for high-speed networks while preserving legacy compatibility; for instance, the IEEE 802.3ae standard for , approved in 2002, retained the traditional 32-bit FCS in its frame structure to ensure seamless integration with existing Ethernet deployments, only adjusting specifications for faster rates. These updates emphasized , allowing incremental upgrades without overhauling established error detection paradigms.

Purpose and Mechanism

Error Detection Principles

The frame check sequence (FCS) operates on the principle of cyclic redundancy checking (CRC), a method that detects errors in transmitted data by appending a derived from polynomial division over the . In this arithmetic, addition and subtraction are performed using modulo-2 operations, equivalent to the exclusive-or (XOR) function, which is particularly suited to transmission because it eliminates carry-over issues inherent in standard integer arithmetic and aligns with the bit-level nature of digital signals. The data is represented as a where each bit corresponds to a (0 or 1), and the generator polynomial—chosen for its error-detection properties—divides a shifted version of this data ; the serves as the FCS, ensuring the entire transmitted frame is exactly divisible by the generator. At the receiver, re-division yields a zero only if no errors occurred, as any alteration introduces an error that, when added (modulo-2) to the original, disrupts divisibility unless the error is a multiple of the generator. This mechanism guarantees detection of certain error patterns. All single-bit errors are caught because the generator polynomial has at least degree 1, making any single-term polynomial non-zero and thus not divisible by the generator. Similarly, all odd-numbered bit errors are detected if the generator includes the factor (x + 1), as this evaluates to zero at x = 1, ensuring the of the error pattern mismatches. For burst errors—consecutive bit flips—FCS reliably identifies those up to the length equal to the degree of the generator polynomial; for instance, the 32-bit FCS in Ethernet standards detects all bursts of 32 bits or fewer. Despite these strengths, limitations exist due to the . go undetected if the error polynomial is divisible by the , such as multiples of the itself or specific patterns aligning with its in GF(2). For random error distributions, the probability of an undetected approximates 1/2^k, where k is the FCS , providing high reliability for large k but not absolute certainty against all possible corruptions. This probability underscores FCS as an efficient detector rather than a corrector, prioritizing low overhead in high-speed networks.

Integration in Data Frames

In data link layer protocols, the Frame Check Sequence (FCS) is appended as the final field in the frame structure, positioned after the header fields (such as addressing and control information) and the payload data (information field), but before any physical layer encoding or trailing flags. This placement ensures that the FCS covers the entire frame content susceptible to transmission errors, excluding delimiters like flags in HDLC-like framing schemes. For instance, in protocols using (CRC), the FCS typically consists of 16 or 32 bits, forming 2 or 4 bytes that are calculated to provide a remainder when the frame is divided by a generator polynomial. During transmission, the sending device computes the FCS over the frame's header and fields, appends it to form the complete , and then transmits the frame across the physical medium. The receiver, upon capturing the incoming frame, strips the FCS field, recomputes the check sequence using the same over the received header and , and compares it to the stripped value; if the two do not match, the frame is deemed erroneous and discarded to prevent propagation of corrupted data. This process occurs at the adapter, ensuring efficient error detection without involving higher layers unless necessary. The inclusion of the FCS introduces a fixed overhead of 2 to 4 bytes per , depending on the chosen length (e.g., 32 bits for stronger detection in high-speed links or 16 bits for lower overhead in constrained environments), which reduces effective throughput by a small that becomes more noticeable in short, variable- frames where the relative overhead is higher. In protocols supporting variable frame sizes, such as those up to 1500 bytes or more, this overhead is typically negligible for large payloads but can impact efficiency in scenarios with frequent small frames, prompting design considerations for optional longer FCS in noisy channels. An FCS mismatch at the triggers frame discard in connectionless protocols, where no immediate retransmission occurs at the , or prompts higher-layer mechanisms like acknowledgments and retransmissions in connection-oriented schemes to recover the lost data. This integration supports reliable frame delineation and across diverse communication links, balancing detection reliability with minimal added complexity.

Implementation Details

CRC Computation Process

The computation of a for the frame check sequence (FCS) involves treating the input as a binary and performing modulo-2 by a generator polynomial. The process begins by appending k zero bits to the , where k is the degree of the generator polynomial, effectively shifting the left by k bits. This augmented message is then divided by the generator polynomial using exclusive-or (XOR) operations for subtraction in modulo-2 arithmetic, yielding a of k bits. The serves as the FCS, which is appended to the original to form the transmittable frame. This method ensures that the entire frame, including the FCS, is divisible by the generator polynomial with no , allowing the to detect errors by recomputing the . In hardware implementations, CRC computation is typically realized using a (LFSR) configured with XOR gates at positions dictated by the generator 's coefficients. The LFSR processes the data serially or in parallel within application-specific integrated circuits () or field-programmable gate arrays (FPGAs), enabling high-speed operation suitable for real-time networking. For instance, in a 16-bit like CRC-16-ANSI, the LFSR consists of a 16-stage with taps connected via XOR gates to the 16th, 15th, and 2nd positions, corresponding to the x16 + x15 + x2 + 1. Data bits are fed into the register starting from the least significant bit, and the loop XORs the output with specific register bits before shifting, simulating the division iteratively. This structure allows of multiple bits per clock cycle in advanced designs, reducing in high-throughput systems. Software implementations of CRC computation balance efficiency and resource usage, often employing bit-by-bit or byte-by-byte to emulate the LFSR. The bit-by-bit method directly mirrors the hardware LFSR by shifting one bit at a time and XORing with the when the most significant bit of the current value is 1, suitable for simple systems but computationally intensive for large frames. Byte-by-byte optimizes this by handling 8 bits per , reducing the number of operations. For greater efficiency, table-driven methods precompute CRC values for all possible byte inputs against the current state, using a 256-entry to accelerate updates; this approach trades memory (typically 1 for 32-bit CRCs) for speed, achieving up to several times faster performance than bit-by-bit methods on general-purpose processors. A representative pseudocode for a table-driven 32-bit computation, such as the variant, initializes a and processes data bytes using a precomputed table:
uint32_t crc_table[256];  // Precomputed for [polynomial](/page/Polynomial) 0x04C11DB7
uint32_t compute_crc32(const uint8_t* data, size_t len) {
    uint32_t crc = 0xFFFFFFFF;  // Preset initial value
    for (size_t i = 0; i < len; ++i) {
        crc = (crc >> 8) ^ crc_table[(crc ^ data[i]) & 0xFF];
    }
    return crc ^ 0xFFFFFFFF;  // Final XOR for reflected [CRC](/page/CRC)
}
This implementation reflects the bit order common in networking, where the preset value of 0xFFFFFFFF enhances detection of certain error patterns, such as all-zero frames, by ensuring the initial register state is non-zero.

Polynomial Degrees and Selection

The degree of the generator polynomial in a frame check sequence (FCS), typically implemented as a cyclic redundancy check (CRC), determines the length of the check field and directly influences the error detection capability. Common degrees include 16 bits, as used in High-Level Data Link Control (HDLC) protocols for moderate frame sizes, where it provides sufficient protection against burst errors up to 16 bits while minimizing overhead on lower-bandwidth links. In contrast, Ethernet employs a 32-bit degree to handle longer frames, detecting all burst errors up to 32 bits and reducing the probability of undetected errors to approximately 2^{-32} for random error patterns in high-speed networks. Higher degrees, such as 64 bits, are selected for applications with very long data blocks or stringent reliability requirements, like certain storage protocols, as they further lower the undetected error probability, often to levels below 10^{-18} for frames exceeding thousands of bits, though at the cost of increased computational demands. Selection criteria for the generator emphasize mathematical properties that maximize detection effectiveness. Polynomials must be irreducible over the Galois GF(2) to ensure the code generates a maximal set of nonzero remainders, preventing systematic undetected from short bursts or single bit flips. Primitive polynomials, a of irreducible ones, are particularly preferred because they produce the longest possible period in (LFSR) implementations, enabling detection of all odd-weight and bursts up to the degree, while balancing detection performance against the risk of undetected multiple . This choice optimizes the of the code, typically achieving a minimum of 4 for degrees 16 and above, which guarantees detection of any 1-, 2-, or 3-bit . Additionally, the selection process weighs —higher-degree polynomials require more hardware gates or processing cycles—against performance needs, favoring shorter degrees (e.g., 8 bits) for low-speed links with short frames to limit overhead, and longer ones (e.g., 32 or 64 bits) for high-throughput environments where rates are higher due to or . Examples of degree usage illustrate these trade-offs: an 8-bit polynomial suits lightweight protocols like ATM cell headers on low-speed serial links, offering basic burst error detection up to 8 bits with minimal latency; 16-bit degrees are standard for legacy systems like HDLC over dial-up or moderate Ethernet variants, providing a undetected error probability around 2^{-16} suitable for frames under 1 KB; 32-bit degrees dominate modern networking, as in IEEE 802.3 Ethernet, for gigabit links where frame sizes reach 9 KB and higher detection (2^{-32} probability) justifies the added 4-byte overhead; and 64-bit degrees appear in high-reliability protocols like certain fiber channel extensions for data centers, ensuring near-perfect detection in multi-gigabit environments with frames over 10 KB. The computation of the FCS can employ reflected or non-reflected bit ordering, which affects the sequence in which bits are processed during division. In non-reflected mode, bits are fed most significant bit (MSB) first, aligning with hardware architectures that process data in natural byte order. Reflected mode reverses this, processing least significant bit (LSB) first, which simplifies serial hardware implementations using LFSRs by matching the natural flow of incoming serial data streams without additional bit reversal logic, though it requires adjusting the representation (e.g., reversing coefficients except the highest). This choice impacts hardware efficiency: reflected ordering reduces gate count and propagation delay in shift-register-based circuits for LSB-first serial interfaces common in networking, while non-reflected suits bus-oriented systems with MSB-first ism, potentially lowering power consumption in FPGAs or by 10-20% depending on the degree. The CRC computation using these polynomials is detailed separately.

Variations and Types

Standard CRC Polynomials

Standard CRC polynomials are those formally specified by international standards organizations such as the IEEE, , and ISO for error detection in frame check sequences across various communication protocols. These polynomials are selected for their balance of error-detection capabilities, computational efficiency, and compatibility with hardware implementations. A widely adopted 16-bit polynomial is x^{16} + x^{15} + x^2 + 1, with hexadecimal representation 0x8005 (normal form). This CRC-16-ANSI (also known as CRC-16-IBM) is used for data packet integrity in the Universal Serial Bus (USB) specification and for message validation in the Modbus protocol. The 32-bit CRC-32-IEEE polynomial, x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11} + x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1, has hexadecimal representation 0x04C11DB7. It serves as the frame check sequence in IEEE 802.3 Ethernet and is also applied in file archiving formats like ZIP. For applications requiring shorter checksums, such as header protection, the 8-bit CRC-8-ATM polynomial x^8 + x^2 + x + 1 (hex 0x07) is specified for header in (ATM) networks. Another common 16-bit variant is the CRC-16-CCITT polynomial x^{16} + x^{12} + x^5 + 1 (hex 0x1021), used in legacy telecommunication protocols including X.25 for detection. The following table compares these standard polynomials:
DegreeNameHex ValueUsesStandard Body/Source
8CRC-8-ATM0x07ATM header error controlITU-T I.432
16CRC-16-ANSI0x8005USB data packets, ModbusUSB-IF, Modbus specification
16CRC-16-CCITT0x1021X.25 and similar protocolsITU-T V.41
32CRC-32-IEEE0x04C11DB7Ethernet FCS, ZIP filesIEEE 802.3

Alternative Checksum Methods

While cyclic redundancy checks (CRCs) dominate as frame check sequences (FCS) in many networking applications due to their robust error detection, simpler checksum alternatives are employed in scenarios prioritizing computational efficiency over comprehensive error coverage. The , used in protocols like and , computes a 16-bit value via one's complement summation of 16-bit words from the , folding any carry bits back into the and taking the one's complement of the result. This method is straightforward to implement in or software, requiring only addition operations, which makes it faster than CRC polynomial division. However, it exhibits weaknesses in detecting burst errors longer than a few bits and has a (HD) of 2, allowing approximately 1/2^{16} undetected two-bit errors in the worst case. Fletcher's checksum and Adler-32 offer incremental computation suitable for , enhancing efficiency in software implementations. Fletcher's algorithm maintains two running sums—sum1 as the of bytes and sum2 as the sum of sum1 values—both using one's complement addition, with the final 16-bit or 32-bit formed by concatenating them. It achieves an HD of 3 for messages shorter than roughly half the modulus size, detecting all burst errors under half the checksum length, though it performs suboptimally compared to for longer bursts. Adler-32, a variant using modulo 65521 (a large prime) instead of one's complement, follows a similar structure: s1 accumulates the sum of bytes 65521, while s2 accumulates the sum of s1 values 65521, yielding the checksum as (s2 << 16) | s1. This design avoids carry propagation issues but detects bursts under 16 bits (except all-zero to all-one transitions) and is slightly inferior to Fletcher in overall error coverage. Parity bits provide the simplest FCS alternative, appending a single bit to achieve even or odd across the data frame, equivalent to an XOR over all bits or bytes. This detects all odd-numbered bit errors and bursts up to the parity length but fails against even-numbered errors, yielding an HD of 2 and poor performance for multi-bit bursts common in transmission channels. These alternatives are favored in resource-constrained environments, such as low-power embedded devices or systems, where their lower computational overhead—often 2-4 times faster than —outweighs reduced detection rates. In contrast, CRC's superior HD (≥3) and near-perfect burst error detection make it preferable for high-reliability links, though alternatives suffice when error rates are low and speed is paramount.

Applications in Protocols

Ethernet and IEEE 802.3

In the IEEE 802.3 standard for Ethernet, the frame check sequence (FCS) is a 32-bit field appended to the end of the Ethernet frame to detect transmission errors. It is computed over the destination address (6 octets), source address (6 octets), length/type field (2 octets), and the data field (including any padding, ranging from 46 to 1500 octets for standard frames). The preamble (7 octets of alternating 1s and 0s) and start frame delimiter (SFD, 1 octet) are excluded from this calculation, as they serve synchronization purposes at the physical layer rather than data integrity. The FCS in Ethernet employs a CRC-32 algorithm using the polynomial x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11} + x^{10} + x^{8} + x^{7} + x^{5} + x^{4} + x^{2} + x + 1 (binary representation 0x104C11DB7). Computation begins with the CRC register preset to 0xFFFFFFFF, and the frame data is processed in bit-reversed order (least significant bit first). After polynomial division, the resulting 32-bit remainder is complemented (XORed with 0xFFFFFFFF) and bit-reversed before transmission as the FCS. This specific method ensures robust detection of burst errors up to 32 bits and odd numbers of bit errors, aligning with the requirements for reliable local area network operation. At the receiver, the first synchronizes using the and SFD, then passes the to the media access control () sublayer. The MAC sublayer recalculates the -32 over the same fields (destination/source addresses, length/type, and ) and compares it against the received FCS. If a mismatch occurs, the frame is discarded without notification to higher layers, preventing corrupted from propagating. tools track FCS errors as a key statistic; for instance, excessive FCS errors (often labeled as CRC errors) indicate issues like electrical noise, faulty cabling, or problems, with counters accessible via commands like show interfaces on devices to quantify error rates and guide . The FCS mechanism has remained consistent across Ethernet's evolution, maintaining its 32-bit size from the original 10 Mbps specification in IEEE 802.3-1985 to modern high-speed variants up to 800 Gbps or higher as of 2024, defined in amendments like IEEE 802.3df-2024. This uniformity preserves in the MAC frame format, allowing seamless between and advanced implementations while relying on (FEC) at higher layers for enhanced reliability in faster links.

Other Networking Standards

In the IEEE 802.11 standard for wireless local area networks (Wi-Fi), the frame check sequence (FCS) is a 32-bit cyclic redundancy check (CRC-32) appended to the MAC protocol data unit (MPDU), providing error detection for the MAC header and payload fields. This FCS is computed using the same polynomial as in Ethernet (x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11} + x^{10} + x^{8} + x^{7} + x^{5} + x^{4} + x^{2} + x + 1), but the MPDU undergoes additional scrambling with a length-127 maximal-length sequence generator to randomize the data and reduce the likelihood of long runs of identical bits that could cause interference. The scrambling applies to the PSDU (which includes the MPDU), but the FCS is verified after descrambling at the receiver to ensure integrity against transmission errors in the wireless medium. In Frame Relay, the FCS is a 16-bit CRC using the HDLC polynomial x^{16} + x^{12} + x^{5} + 1, computed over the frame contents up to 4096 octets between opening and closing flags, ensuring reliable virtual circuit operation. The Point-to-Point Protocol (PPP), which often uses HDLC-like framing, supports both 16-bit and 32-bit FCS options for error detection, with the default being a 16-bit CRC computed using the polynomial x^{16} + x^{12} + x^{5} + 1 (CRC-16-CCITT). The FCS covers the address, control, protocol, information, and padding fields of the frame, excluding the opening and closing flag sequences (0x7E), the FCS field itself, and any inter-frame fill or transparency-inserted bits/octets to account for byte stuffing. The 32-bit option, using CRC-32 with the polynomial x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11} + x^{10} + x^{8} + x^{7} + x^{5} + x^{4} + x^{2} + x + 1, can be negotiated via the Link Control Protocol (LCP) for environments requiring stronger error detection, such as high-speed links. Fibre Channel, a high-speed serial interface standard for storage area networks, incorporates a 32-bit as the frame check sequence in each frame to detect errors across the start-of-frame , header, , and end-of-frame , using the CRC-32 polynomial for compatibility with Ethernet-derived error detection. This enables robust integrity checking in multi-gigabit environments, with the frame structure designed to support interleaving of CRC computations in advanced implementations for localizing burst errors without full frame retransmission. Similarly, in (SONET) and Synchronous Digital Hierarchy (SDH) systems, protocols such as Multiple Access Protocol over SONET/SDH (MAPOS) employ a configurable 16-bit or 32-bit FCS, defaulting to 16 bits but recommending 32 bits for enhanced detection in optical transport, where the FCS is appended after the and computed over the frame contents excluding overhead. Interleaving in SONET or layers further aids error localization by distributing checks across tributaries, complementing the FCS for high-reliability serial links. In basic rate/enhanced data rate (BR/EDR) mode, ACL data packets include a 16-bit as the FCS, computed over the packet header and using a generator of x^{16} + x^{15} + x^{2} + 1 (excluding control packets like NULL and POLL), to balance error detection with limited . In networks, built on the physical and layers, the FCS is a mandatory 16-bit field appended to each MAC frame, covering the MAC header and with the ITU-T x^{16} + x^{12} + x^{5} + 1, ensuring reliable transmission in low-data-rate personal area networks while minimizing overhead.

References

  1. [1]
    RFC 1549: PPP in HDLC Framing
    Frame Check Sequence (FCS) Field The Frame Check Sequence field is normally 16 bits (two octets). The use of other FCS lengths may be defined at a later ...
  2. [2]
    RFC 3133 - Terminology for Frame Relay Benchmarking
    Frame Check Sequence (FCS) Definition: The standard 16-bit cyclic redundancy check used for HDLC and frame relay frames. The FCS detects bit errors ...
  3. [3]
    Ethernet frame format - IBM i
    The Frame Check Sequence (FCS) is a part of the frame put in place to verify that the information each frame contains is not damaged during transmission.
  4. [4]
    [PDF] ISO-IEC-3309-1993.pdf - iTeh Standards
    Dec 15, 1993 · It defines the relative positions of the various components of the basic frame and the bit combination for the frame delimiting sequence (flag).
  5. [5]
    Errata to IEEE Standard for Ethernet
    Jun 28, 2013 · Frame check sequenced. dThe frame check sequence may be calculated using the method described in 3.2.9. 4. As required by frame. As required by ...<|separator|>
  6. [6]
    Understand Cyclic Redundancy Check Errors on Nexus Switches
    Nov 10, 2021 · Ethernet frames have a 32-bit Frame Check Sequence (FCS) field at the end of the frame (immediately after the payload of the frame) where a 32- ...
  7. [7]
    Frame Check Sequence || FCS in Networking - PyNet Labs
    Feb 10, 2025 · A frame check sequence (FCS) is an error-detecting technique that is added to a frame in a communication protocol to ensure data integrity.Missing: standards | Show results with:standards
  8. [8]
    [PDF] Selection of Cyclic Redundancy Code and Checksum Algorithms to ...
    The CRCs have some error-detection properties that are worth noting. Error ... Cyclic Redundancy Check: See Cyclic Redundancy Code (equivalent term in ...
  9. [9]
    CS 336 Lecture Notes -- The Cyclic Redundancy Check
    The Cyclic Redundancy Check · include just enough redundancy to make it possible to detect errors and then arrange for the retransmission of damaged frames, or.
  10. [10]
    [PDF] A History of the ARPANET: The First Decade - DTIC
    Apr 1, 1981 · In fiscal year 1969 a DARPA program entitled "Resource Sharing Computer Networks" was initiated. The research carried out under this program ...
  11. [11]
    [PDF] Synchronous Data Link Control Concepts - Bitsavers.org
    This book describes IBM Synchronous Data Link Control (SDLC). It includes a brief communications overview, a basic description to familiarize the reader with ...Missing: adoption 1973
  12. [12]
    1. The Evolution of Ethernet - Ethernet: The Definitive Guide [Book]
    History of Ethernet. On May 22, 1973, Bob Metcalfe (then at the Xerox Palo Alto Research Center, PARC, in California) wrote a memo describing the Ethernet ...
  13. [13]
    Learn About Cyclic Redundancy Checks - | Nuts & Volts Magazine
    Parity check and checksum are two ways, but they have limitations. Another method is a code called Cyclic Redundancy Check (CRC). CRC is a popular and powerful ...Missing: 1980s | Show results with:1980s
  14. [14]
    G.706 : Frame alignment and cyclic redundancy check (CRC ... - ITU
    Home : ITU-T : Publications : Recommendations : G Series : G.706 : G.706 ... G.704. Recommendation G.706 (04/91). Approved in 1991-04-05. Status : In force ...
  15. [15]
    10 Gigabit Ethernet
    Nov 23, 1999 · This paper briefly overviews the next generation 10-Gigabit Ethernet Standard and highlights several technical issues like Physical Layer ...Missing: post- | Show results with:post-
  16. [16]
    [PDF] Cyclic Redundancy Check Computation: An Implementation Using ...
    CRC codes are a subset of cyclic codes and use a binary alphabet, 0 and 1. Arithmetic is based on GF(2), for example, modulo-2 addition (logical XOR) and modulo ...
  17. [17]
    Cyclic Codes for Error Detection | IEEE Journals & Magazine
    Abstract: Cyclic codes are defined and described from a new viewpoint involving polynomials. The basic properties of Hamming and Fire codes are derived.
  18. [18]
    [PDF] 32-Bit Cyclic Redundancy Codes for Internet Applications
    For CRC polynomials divisible by. (x+1), all odd numbers of bit inversions are detected, but all even numbers of bit inversions suffer an undetected error rate ...
  19. [19]
    Double Burst Error Detection Capability of Ethernet CRC
    Jul 16, 2012 · IEEE 802.3 CRC code can detect any single burst error up to a length of 32 bits per frame [9]. code C has the capability of correcting any ...
  20. [20]
    RFC 1662: PPP in HDLC-like Framing
    PPP uses the HDLC Frame Check Sequence for error detection. This is commonly available in hardware implementations, and a software implementation is ...
  21. [21]
    [PDF] Lesson 5 - The Data Link Layer
    The data link layer transfers datagrams from one node to an adjacent node, encapsulating them into frames for transmission over a link.
  22. [22]
    [PDF] CRC Generating and Checking - Microchip Technology
    The theory of a CRC calculation is straight forward. The data is treated by the CRC algorithm as a binary num- ber. This number is divided by another binary ...
  23. [23]
    [PDF] AN1817 Using a Hardware or Software CRC with Enhanced Core ...
    Mar 25, 2014 · The most common hardware implementation of a CRC is the Linear Feedback Shift Register (LFSR). The. LFSR for CRC-16-ANSI is shown in Figure 2.
  24. [24]
    [PDF] A Systematic Approach to Building High Performance, Software ...
    Sarwate, which is one of the fastest software-based, table-driven CRC generation algorithms used today. The. Sarwate algorithm is shown in Figure 3. The length ...
  25. [25]
    Study of Undetected Error Probability of IEEE 802.3 CRC-32 code ...
    IEEE 802.3 CRC CODE (1/4). • According to the IEEE Ethernet Standard 802.3, a 32-bit CRC is calculated and appended to an Ethernet frame prior to transmission.
  26. [26]
    [PDF] Cyclic Redundancy Code (CRC) Polynomial Selection For ...
    Perhaps the most commonly used 8-bit polynomial is “CRC-8”, which is 0xEA = x8+x7+x6+x4+x2+1. Figure 2 shows that this polynomial provides HD=4 up to length 85.
  27. [27]
    Primitive Polynomial - an overview | ScienceDirect Topics
    An irreducible polynomial having a primitive element as a zero is called a primitive polynomial. ... CRC polynomials are simply known 'good' field ...
  28. [28]
    [PDF] A tutorial on CRC computations - IEEE Micro
    We describe the on-the-fly algorithm here: 1) Initialize the CRC register to 0000 hex. 2) EXOR the input byte (bộ, b₁,...,. • $15) to form (to, tj, 17). b₁ ...
  29. [29]
    [PDF] Application Note - eSi-RISC
    Nov 1, 2010 · In this paper we examine computing a 16-bit CRC in its non-reflected form and a 32-bit CRC in its reflected form to cover the two typical ...
  30. [30]
    [PDF] CRC - USB-IF
    The USB spec lists two generator polynomials - one for tokens and the other for data packets. The generator polynomial for tokens is x5 + x2 + x0 while the ...
  31. [31]
    Modbus Protocol Overview with Examples
    The Modbus CRC is calculated using this polynomial: x16 + x15 + x2 + 1. To calculate a Modbus CRC efficiently, use lookup tables. An example c++ class ...
  32. [32]
    [PDF] CRC32 Clarifications - IEEE 802
    Jul 22, 2005 · The CRC32 shall be calculated using the following standard generator polynomial of degree 32: G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 ...<|separator|>
  33. [33]
    CRC-CCITT -- 16-bit
    This page presents accurate implementations (long-hand and programmed) of the 16-bit CRC-CCITT specification.
  34. [34]
    [PDF] The Effectiveness of Checksums for Embedded Control Networks
    Mar 24, 2009 · Of all the checksum algorithms in this study, the Fletcher checksum has the next-best overall error detection capability after CRC, except for ...
  35. [35]
    RFC 1071 - Computing the Internet checksum - IETF Datatracker
    This memo discusses methods for efficiently computing the Internet checksum that is used by the standard Internet protocols IP, UDP, and TCP.
  36. [36]
  37. [37]
    [PDF] IEEE 802.3 Ethernet
    IEEE Std 802.3 Frame format. MAC. Client Data. SA. DA. Size (Octets). 6. 6. 2 ... FCS – Frame check sequence. PAD. Extension. FCS. Length/Type. Frame. Packet ...
  38. [38]
    [PDF] IEEE 802.3 Cyclic Redundancy Check v1.0 (3/01)
    Mar 23, 2001 · The cyclic redundancy check or CRC is a widely used parity bit based error detection scheme in serial data transmission applications. This ...
  39. [39]
    [PDF] ANSI/IEEE Std 802.11, 1999 Edition (ISO/IEC 8802-11 ... - PDOS-MIT
    Aug 20, 1999 · This standard provides an overview to the family of IEEE 802 Standards. ANSI/IEEE Std 802.1B and 802.1k [ISO/IEC 15802-2] LAN/MAN Management.
  40. [40]
    [PDF] NIST SP 800-97, Establishing Wireless Robust Security Networks
    contains the result of applying a 32-bit cyclic redundancy check (CRC-32) on the data. Because of this, the FCS is often called the CRC. The FCS calculation is ...
  41. [41]
    RFC 1662 - PPP in HDLC-like Framing - IETF Datatracker
    This specification provides for framing over both bit-oriented and octet-oriented synchronous links, and asynchronous links with 8 bits of data and no parity.
  42. [42]
  43. [43]
  44. [44]
    [PDF] Fibre Channel Interface Product Manual - Seagate Technology
    Jan 8, 2000 · ... Fibre Channel Interface Manual, Rev. B. 3. 2.0. Introduction to Fibre Channel ... Frame Check Sequence. FCSI. Fibre Channel Systems Initiative.
  45. [45]
    RFC 2171 - Multiple Access Protocol over SONET/SDH Version 1
    Frame Check Sequence (FCS) By default, the frame check sequence (FCS) field is 16-bits long. Optionally, 32 bit FCS may be used instead. The FCS is ...
  46. [46]
    RFC 2615 - PPP over SONET/SDH - IETF Datatracker
    The 32-bit FCS is required except for operation with STS-3c-SPE/VC-4, in which case the 16-bit FCS is allowed (but the 32-bit FCS is still recommended). The ...
  47. [47]
    [PDF] health device profile
    Jun 26, 2008 · Per the Bluetooth Core Specification [1], it should be less than 200 characters in length. 2 For implementations prior to 2.1 + EDR, ...<|separator|>
  48. [48]
    [PDF] ZigBee™ IEEE 802.15.4™ Radio Transceiver AT86RF230 ... - Farnell
    Indicates bit errors. •. Contains a CRC of length 16 bit. •. Uses International Telecommunication Union (ITU) CRC polynomial. 8.2.1 Overview. The FCS is ...<|control11|><|separator|>