CRC is an error-detection code used at Layer 2 to verify frame integrity. Ethernet uses CRC-32 in the Frame Check Sequence (FCS) trailer. CRC detects burst errors up to 32 bits long with 99.99% probability. NICs that receive frames with bad CRC discard them silently – incrementing an interface error counter.
Cyclic Redundancy Check computes a fixed-size polynomial remainder over frame data. Ethernet uses CRC-32 (polynomial 0x04C11DB7) computed over the entire frame excluding the preamble and FCS itself. The sender appends the 4-byte CRC as the Frame Check Sequence. The receiver computes CRC over the received data – if the remainder is not the expected constant, the frame is dropped. CRC-32 guarantees detection of: all single-bit errors, all double-bit errors, all odd-number-of-bit errors, any burst error up to 32 bits, and 99.99997% of longer burst errors. CRC is computed in hardware by the NIC at line rate. Frames with CRC errors appear as interface rx_crc_errors in ethtool statistics – persistent CRC errors indicate physical layer problems: bad cables, failing transceivers, electromagnetic interference, or dirty fiber connectors.
Frame
A frame is a Layer 2 (data link) unit of data that includes a header with MAC addresses, the payload (an IP packet), and a trailer with error-checking CRC. Ethernet frames have a maximum size of 1518 bytes. Frames are addressed by MAC, not IP – they do not cross router boundaries.
Checksum
A checksum is a value computed from packet data used to detect transmission errors. TCP, UDP, and IP headers include checksums. The receiver recomputes the checksum on arrival – if it does not match, the packet is silently discarded. Checksums detect accidental corruption but not malicious tampering (use HMAC for that).