Prerequisites: Basic Networking, Binary Numbers and Ethernet Fundamentals
Imagine a computer sending information to another computer through an Ethernet network.
The data travels through network cables, switches and other networking equipment.
During transmission, electrical interference, signal problems or hardware faults may cause one or more bits to change.
For example, a bit originally transmitted as 1 might be received as 0.
How can the receiving device identify that something went wrong?
One commonly used technique is Cyclic Redundancy Check (CRC).
CRC is an error-detection method that calculates a small value from a sequence of data bits.
The sender includes this value with the transmitted information.
The receiver checks the received information using the same CRC calculation.
If the result indicates a mismatch, the receiver knows that an error was detected.
CRC is widely used in Ethernet, Wi-Fi, storage technologies and other digital communication systems.
However, CRC cannot correct corrupted data by itself, and it cannot detect every possible error.
In this article, you will learn:
- What CRC is and why it is used
- How CRC detects accidental data corruption
- What generator polynomials and XOR mean
- How CRC is calculated step by step
- How Ethernet uses CRC-32 in its Frame Check Sequence
- The difference between CRC, checksums and cryptographic hashes
- What CRC-8, CRC-16 and CRC-32 mean
- How to understand CRC errors on network interfaces
- The benefits and limitations of CRC

What Is Cyclic Redundancy Check (CRC)?
Cyclic Redundancy Check is a method used to detect accidental changes in digital information.
It produces a fixed-length value from the data using a mathematical rule.
That value is commonly called a CRC value, CRC remainder or, informally, a CRC checksum.
CRC is especially useful in systems where data may be affected by transmission or storage errors.
Why Is Error Detection Necessary?
Computers represent data using bits.
Each bit has one of two values:
01
During communication, a problem may cause some bits to change.
For example:
What Does CRC Actually Check?
CRC checks whether the received data is consistent with the transmitted CRC information according to a specified algorithm.
A CRC algorithm typically defines:
- A generator polynomial
- The CRC width
- An initial value
- Whether bits are processed in reflected form
- Any final transformation, such as a final XOR value
For beginners, the most important part is understanding that the sender and receiver must use compatible CRC rules.
What Happens After a CRC Error?
The action depends on the communication technology.
A device may:
- Discard the corrupted data
- Record an error counter
- Report a receive error
- Rely on another protocol to recover the lost information
Some communication systems can retry the transmission.
Others simply discard the affected unit of data.
CRC itself does not request retransmission or repair the damaged bits.
Does a Matching CRC Guarantee Correct Data?
No.
A successful CRC check means no error was detected by that CRC calculation.
Certain changes can still produce the same CRC result.
Therefore, CRC offers strong error-detection capability for suitable applications, but not absolute certainty.
How CRC Works — Binary Data, XOR and Generator Polynomial
CRC is based on a special form of binary polynomial division.
You do not need advanced mathematics to understand the basic process.
Three concepts are important:
- Binary data
- XOR operation
- Generator polynomial
1. Binary Data
Digital information can be represented using bits.
For example:
1101
This is a sequence of four bits.
CRC calculations operate on a selected sequence of bits rather than on letters or numbers as people normally read them.
2. What Is XOR?
XOR stands for Exclusive OR.
It compares two bits.
The result is 1 when the bits are different and 0 when they are the same.
| First Bit | Second Bit | XOR Result |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
For example:
Unlike ordinary subtraction, XOR does not use borrowing.
This makes it useful in CRC calculations.
3. What Is a Generator Polynomial?
A generator polynomial is a fixed mathematical rule used to calculate the CRC.
It can be represented as a sequence of binary coefficients.
For example:
1011
This corresponds to the polynomial:
(x^3 + x + 1)
The four-bit representation has a highest power of three.
Therefore, this example produces a three-bit remainder.
The degree of the polynomial determines the width of the resulting CRC.
Why Are Polynomials Used?
CRC treats binary sequences as polynomials with coefficients of zero or one.
The mathematical operations take place over a system where addition and subtraction correspond to XOR.
For example, the binary sequence:
1101
represents:
(x^3 + x^2 + 1)
You do not need to manually convert every binary value into polynomial notation when learning CRC.
The practical concept is that CRC uses a fixed binary divisor and XOR-based division to calculate a remainder.
Basic CRC Calculation Process
In a simplified CRC calculation:
- Start with the original data.
- Choose the generator polynomial.
- Append zeros equal to the CRC width.
- Divide using XOR instead of ordinary subtraction.
- Keep the final remainder.
- Append the remainder to the original data.
- Let the receiver verify the resulting sequence using the same method.
This describes the basic mathematical idea. Real CRC implementations may also include initial values, bit reflection and final transformations.

CRC Calculation Explained — Step-by-Step Worked Example
Now we will calculate a CRC using a small binary message.
This example preserves the data and generator from the original article.
Step 1 — Identify the Data and Generator
Original data:
11010011101100
Generator:
1011
The generator contains four bits and represents a polynomial of degree three.
Therefore, the CRC remainder will contain three bits.
Step 2 — Append Three Zeros
Because the CRC width is three bits, append three zeros to the original data.
Original Data:
11010011101100
Generator:
1011
CRC Width:
3 bits
Data After Appending Zeros:
11010011101100000
These three zeros reserve space for the remainder during the calculation.
Step 3 — Perform XOR-Based Division
The sender divides the expanded data by the generator using XOR operations.
Whenever the current leading bit is 1, the generator is XORed with the corresponding group of bits.
When the current leading bit is 0, no generator XOR is needed at that position.
The process continues through the data.
To understand the method, examine the first operation.
Step 4 — Continue the Division
The following table shows the nonzero XOR steps for this particular example.
The positions are counted from zero at the left of the expanded bit sequence.
| Bit Position | Current Four Bits | XOR with 1011 Produces |
|---|---|---|
| 0 | 1101 | 0110 |
| 1 | 1100 | 0111 |
| 2 | 1110 | 0101 |
| 3 | 1011 | 0000 |
| 7 | 1101 | 0110 |
| 8 | 1101 | 0110 |
| 9 | 1100 | 0111 |
| 10 | 1110 | 0101 |
| 11 | 1010 | 0001 |
Positions where the leading bit is zero do not require an XOR with the generator.
After completing the division, the final three bits are the remainder.
Step 5 — Obtain the CRC Remainder
Original Data:
11010011101100
Generator:
1011
Calculated CRC Remainder:
100
The CRC value is:
100
This result has been calculated from the supplied data and generator, not assumed.
Step 6 — Append the CRC to the Original Data
Now replace the three placeholder zeros with the actual remainder.
Original Data:
11010011101100
CRC:
100
Transmitted Bit Sequence:
11010011101100100
The resulting sequence can be checked by the receiver.
Step 7 — Verify at the Receiver
The receiver performs the same polynomial division using the agreed generator.
For this simplified example:
Received Sequence:
11010011101100100
Generator:
1011
Verification Remainder:
000
Result:
CRC Check Passed
The all-zero remainder means this example passes the CRC check.
It does not prove that every possible transmission error would be detected.
What If a Bit Changes?
Suppose a transmission error changes one bit in the protected sequence.
For this example generator, such a single-bit change produces a nonzero verification remainder.
The receiver can identify that the CRC check failed.
It may then discard the affected data, depending on the protocol.

How CRC Is Used in Ethernet, Wi-Fi and Data Storage
CRC is used in many systems to detect accidental corruption.
The exact CRC algorithm and what happens after an error depend on the technology.
1. Ethernet Frame Check Sequence (FCS)
Ethernet uses a field called the Frame Check Sequence (FCS).
In common Ethernet frame formats, the FCS is four bytes long.
It contains the result of a CRC-32 calculation.
The FCS helps the receiving network interface detect corrupted Ethernet frames.
Simplified Ethernet Frame Structure
| Field | Purpose |
|---|---|
| Destination MAC Address | Identifies the intended Ethernet destination |
| Source MAC Address | Identifies the Ethernet sender |
| Type/Length | Identifies the payload type or length |
| Data and Padding | Carries the frame payload |
| FCS | Supports error detection |
The Ethernet CRC is calculated over the appropriate frame fields, not the physical-layer preamble.
How Ethernet CRC Verification Works
- A sending network interface prepares an Ethernet frame.
- The interface calculates the FCS.
- The frame is transmitted.
- The receiving interface checks the FCS.
- If an error is detected, the invalid frame is normally discarded.
An Ethernet switch does not use the CRC to repair damaged frames.
2. Wi-Fi Networks
Wi-Fi also uses frame error-detection mechanisms.
IEEE 802.11 frames commonly use a 32-bit FCS.
The receiver can detect certain transmission errors and handle them according to the relevant wireless protocol behavior.
Wi-Fi may use link-layer acknowledgments and retransmissions for eligible traffic.
Those mechanisms are separate from the CRC calculation itself.
3. Storage Systems
Some storage technologies use CRCs or related integrity codes to detect accidental corruption.
For example, a storage controller may verify data associated with a stored block or transmitted command.
However, not every storage system uses the same CRC algorithm, and not every storage block is simply appended with a CRC in the same manner as an Ethernet frame.
Storage integrity mechanisms depend on the device, interface and protocol.
4. File Formats and Data Integrity
Certain file formats use CRCs to detect accidental corruption.
For example, PNG image files use CRC fields in their chunk structure.
A program can check whether protected chunk data matches its stored CRC.
This helps identify accidental changes.
However, CRC should not be used to verify the authenticity of an untrusted file.
CRC Use Cases
| Technology | CRC Purpose |
|---|---|
| Ethernet | Detect corrupted frames |
| Wi-Fi | Detect frame errors |
| Selected Storage Protocols | Detect data or transmission corruption |
| PNG Files | Detect corruption in file chunks |
| Embedded Systems | Check data integrity |
| Communication Links | Detect selected transmission errors |

CRC vs Checksum vs Cryptographic Hash — Important Differences
CRC is sometimes described as a checksum or hash-like function.
However, it should not be confused with all other integrity-checking technologies.
CRC
CRC uses polynomial mathematics to detect accidental changes in data.
Its design is particularly useful for detecting many common transmission-error patterns.
Internet Checksum
The Internet checksum uses one’s-complement arithmetic.
It is used by protocols including TCP and UDP.
It is different from CRC.
For example, TCP does not use Ethernet’s CRC-32 algorithm as its TCP checksum.
An Ethernet frame carrying a TCP segment can have both:
- Ethernet FCS for link-layer error detection
- TCP checksum for transport-layer error detection
These are separate checks covering different information.
Cryptographic Hash
A cryptographic hash function, such as SHA-256, produces a digest intended to have strong cryptographic properties.
Cryptographic hashes are useful when a system needs stronger resistance to deliberate manipulation and collisions than CRC provides.
However, a plain hash value downloaded from the same untrusted location as a file does not independently establish that the file is authentic.
Authenticity requires a trusted reference, digital signature, MAC or another suitable mechanism.
CRC vs Internet Checksum vs SHA-256
| Feature | CRC | Internet Checksum | Cryptographic Hash |
|---|---|---|---|
| Main Purpose | Detect accidental corruption | Detect selected data errors | Produce a cryptographic digest |
| Main Method | Polynomial division | One’s-complement addition | Cryptographic algorithm |
| Example | Ethernet FCS | TCP checksum | SHA-256 |
| Suitable Against Deliberate Tampering | No | No | Requires appropriate trusted verification design |
| Typical Output | CRC-8, CRC-16, CRC-32 and others | Commonly 16 bits in TCP/UDP | SHA-256 produces 256 bits |
Why Can’t CRC Provide Authentication?
CRC is not designed to resist deliberate manipulation.
Someone who can modify the data may also be able to calculate a matching CRC for the modified content.
The receiver would then see a valid CRC even though the content had been deliberately altered.
Therefore, CRC cannot prove the identity of the sender or protect against an attacker intentionally changing information.
CRC-8, CRC-16, CRC-32 and CRC Errors in Networking
Different applications use different CRC algorithms.
One way to describe them is by the width of their CRC remainder.
Common CRC Widths
| CRC Family | CRC Width | Important Note |
|---|---|---|
| CRC-8 | 8 bits | Used in selected protocols and devices |
| CRC-16 | 16 bits | Several different algorithms exist |
| CRC-32 | 32 bits | Used by common Ethernet FCS calculations |
| CRC-64 | 64 bits | Used in selected data-integrity applications |
Does CRC-32 Always Use the Same Algorithm?
No.
The name CRC-32 describes a 32-bit remainder but does not completely identify the algorithm.
Different CRC-32 variants can use different polynomials and processing parameters.
For example, Ethernet CRC-32 and CRC-32C are not interchangeable merely because both produce 32-bit results.
To calculate or verify a CRC correctly, both endpoints must use matching algorithm parameters.
What Are CRC Errors on a Network Interface?
Network switches and routers commonly expose error counters for their physical interfaces.
Depending on the device and platform, these counters may include:
- FCS errors
- CRC errors
- Alignment errors
- Input errors
An increasing FCS or CRC error counter can indicate that a device is receiving frames that fail integrity checks.
Possible causes include:
- Damaged copper cabling
- Poor connectors
- Signal-quality problems
- Faulty network interfaces
- Optical signal issues
- Hardware faults
- Incorrect physical interface settings
However, the meaning and grouping of interface counters vary by vendor.
A CRC error counter alone does not identify the exact root cause.
Practical Troubleshooting Example
Can Wireshark Show Ethernet FCS Errors?
Sometimes, but not always.
Many network interface cards validate the Ethernet FCS in hardware and remove it before passing captured data to the operating system.
Corrupted frames may also be discarded before packet-capture software receives them.
As a result, Wireshark often does not display the original Ethernet FCS.
If FCS information is needed, the capture equipment and driver must support providing it.
For ordinary network troubleshooting, device interface counters are often more useful for detecting physical-layer and link-layer error trends.

Key Takeaways
Core Concepts
- CRC stands for Cyclic Redundancy Check.
- It is used to detect accidental data corruption.
- CRC calculations use polynomial division and XOR operations.
- The CRC width is based on the degree of the generator polynomial.
- CRC can detect many errors but cannot detect every possible change.
How CRC Works
- The sender calculates a remainder from protected data.
- The CRC value is included with that data.
- The receiver checks the received sequence.
- A failed check indicates detected corruption.
- CRC itself does not repair data or request retransmission.
Networking Applications
- Ethernet uses CRC-32 in its Frame Check Sequence.
- Wi-Fi also uses frame error-detection mechanisms.
- Storage technologies may use CRCs for integrity checks.
- TCP uses a different checksum algorithm.
- Different CRC variants require matching calculation parameters.
Security and Troubleshooting
- CRC is not a cryptographic signature.
- A valid CRC does not establish sender authenticity.
- Increasing interface CRC errors may indicate link problems.
- Physical cables, connectors, optics and interfaces should be investigated.
- Packet captures may not include Ethernet FCS information.
Cyclic Redundancy Check is an important error-detection technique in digital communication.
It uses binary polynomial division and XOR operations to calculate a remainder that can help identify accidental changes to data.
In Ethernet, CRC-32 is used as part of the Frame Check Sequence to detect corrupted frames.
Other technologies, including Wi-Fi and certain storage systems, also use CRC-based integrity checks.
CRC is efficient and useful, but it has clear limitations.
A successful check does not guarantee that every possible error has been detected.
CRC also cannot correct corrupted data or protect against deliberate tampering.
For beginners, the most important concepts are understanding why CRC is required, how the remainder is calculated and how a receiving device uses it to detect errors.
These fundamentals also make it easier to understand Ethernet FCS, interface error counters and practical network troubleshooting.
Next in This Series: Ethernet FCS Explained — CRC-32, Frame Structure, Interface Errors and Troubleshooting.
Useful Links and References
SanchitGurukul Static Resources
Official External References
Your feedback matters
Was this post helpful?
Discussion
0 approved comments
No approved comments yet. You can start the discussion below.
Leave a Comment
No login is required. Name and email are used for moderation/security. Your email is never displayed publicly. All comments require administrator approval.
Discover more from SanchitGurukul
Subscribe to get the latest posts sent to your email.
