EDC (Error Detection and Correction, phát hiện và sửa lỗi) là một dịch vụ mạng được tầng data link (Data Link Layer) sử dụng trong các lần nhận và gửi gói tin.
Dữ liệu của gói tin D gửi đi sẽ đính kèm thêm các bit EDC được dùng để phát hiện và sửa lỗi sai. Gói tin bao gồm hai phần này sẽ được chuyển đến bên nhận. Gói tin ở bên nhận cũng bao gồm hai phần là D' và EDC' (chúng có thể sai khác với gói tin gửi đi). Công việc của bên nhận là xác nhận xem D' có trùng khớp với dữ liệu ban đầu hay không. Việc xác định này có thể dựa vào D' và EDC' mà bên nhận nhận được.
Có thể thấy, cơ chế này giống với phương pháp Checksum.

Lưu ý rằng
- Việc phát hiện lỗi không phải lúc nào cũng hiệu quả 100%, đôi khi giao thức có thể bỏ sót một vài bit lỗi.
- Sử dụng trường EDC lớn hơn có thể tăng hiệu quả của việc phát hiện và sửa lỗi.
- Có nhiều phương pháp phát hiện và sửa lỗi, tuy nhiên chúng đều có ưu điểm và khuyết điểm riêng. Người thiết kế hệ thống cần lựa chọn phương pháp phù hợp để tỉ lệ bỏ sót các lỗi là nhỏ nhất.
Có ba phương pháp phát hiện và sửa lỗi phổ biến là kiểm tra chẵn lẻ (parity checking), kiểm tra checksum (thường được dùng ở tầng vận chuyển) và kiểm tra CRC (Cyclic Redundancy Check) thường được cài đặt ở tầng liên kết tại các bộ giao tiếp mạng.
Parity Checking
Single Bit Parity
Phương pháp kiểm tra chẵn lẻ sử dụng một bit (single bit parity) dựa trên số lượng bit của dữ liệu mà đặt giá trị của parity bit là 0 hoặc 1.
- Trong mô hình kiểm tra chẵn, nếu gọi
dlà số bit 1 trong dữ liệu cần gửi đi, thì parity bit sẽ có giá trị sao cho tổngd + 1(dlà tổng số bit 1 và1là parity bit) có giá trị là một số chẵn. - Trong mô hình kiểm tra lẻ, giá trị của parity bit sẽ được chọn sao cho tổng số bit 1 là một số lẻ.
Ví dụ bên dưới sử dụng mô hình kiểm tra chẵn, dữ liệu có 9 bit 1 nên parity bit sẽ có giá trị là 1, tổng số bit 1 của dữ liệu gửi đi là 10 bit (một số chẵn). Nếu theo mô hình kiểm tra lẻ, do tổng số bit 1 là 9 (một số lẻ) nên parity bit sẽ có giá trị là 0.

Bên nhận khi nhận thấy số bit là một số lẻ, bao gồm cả parity bit, thì biết được đã có lỗi xảy ra trong quá trình truyền tin. Lúc đó, nó sẽ phát hiện ra được một bit bị lỗi, nhưng không biết bit nào bị lỗi.
Two - Dimensional Bit Parity
Phương pháp kiểm tra chẵn lẻ hai chiều dùng một mảng hai chiều để lưu các dữ liệu gửi đi kèm theo các parity bit cho các dòng và cột.
Bất cứ khi nào có một bit vi phạm tính chất chẵn (hoặc lẻ) của tổng hàng và tổng cột thì sẽ bị đánh dấu là bit lỗi. Phương pháp này giúp bên nhận biết được bit nào bị lỗi và có thể tiến hành sửa lỗi ngay tại bên nhận bằng cách đổi bit bị lỗi lại từ 0 thành 1 (hoặc từ 1 thành 0). Ngoài ra, kiểm tra chẵn lẻ hai chiều còn có thể sửa các lỗi xảy ra ở các parity bit.
Ví dụ dưới đây sử dụng mô hình chẵn. Có thể thấy bit ở vị trí hàng hai cột hai là một bit lỗi.

Việc dùng kiểm tra chẵn lẻ hai chiều có thể giúp phát hiện được (nhưng không sửa được) trường hợp có hai bit bị lỗi trong gói tin.