Các loại giao tác khối được đặc trưng bởi khả năng bảo đảm phân phát dữ liệu không có lỗi giữa host và một chức năng bằng cách bắt lỗi và thử lại. Các giao tác khối sử dụng một giao tác ba pha gồm gói thông báo, gói dữ liệu,
gói bắt tay nhưđược trình bày trong hình 3.10. Trong những điều kiện dừng và
điều khiển luồng nào đó thì pha dữ liệu có thểđược thay thế bởi pha bắt tay kết quả là có một giai tác 2 pha và sẽ không có dữ liệu được truyền. Các gói PING và NYET chỉđược sử dụng với các thiết bị tốc độ cao.
Hình 3.10: Khuông dạng giao tác khối [1]
Khi host sẵn sàng để nhận dữ liệu khối lớn thì nó phát ra một thông báo IN. Điểm cuối chức năng đáp ứng lại bằng một gói dữ liệu hoặc sẽđáp ứng lại bằng gói bắt tay NAK hay STALL nếu chức năng chưa có khả năng đáp ứng lại bằng dữ liệu. Gói NAK chỉ ra rằng chức năng tạm thời chưa có khả năng trả về
dữ liệu (ví dụ: chưa có dữ liệu để truyền tới host), trong khi STALL chỉ ra rằng
điểm cuối thường xuyên bị dừng và yêu cầu có sự can thiệp của phần mềm hệ
thống USB. Nếu host nhận được một gói dữ liệu hợp lệ nó sẽđáp ứng với một gói bắt tay ACK. Nếu host phát hiện thấy lỗi khi nhận dữ liệu thì nó không đưa ra đáp ứng tới chức năng.
Khi host sẵn sàng để phát một khối dữ liệu thì ban đầu nó phát ra một gói thông báo OUT và theo ngay sau là một gói dữ liệu ( ngoài ra ban đâu nó còn có thể phát một gói thông báo đặc biệt PING). Nếu chức năng nhận dữ liệu mà không có lỗi thì nó sẽ trả lời bằng một trong ba (hoặc là 4 bao gồm NYET
đối với thiết bị làm việc ở tốc độ cao) gói bắt tay:
• ACK để cho biết gói dữ liệu nhận được không có lỗi và host có thể gửi gói tiếp theo.
• NAK để chỉ ra rằng gói dữ liệu đã nhận không có lỗi nhưng host nên gửi lại dữ liệu vì chức năng đang tạm thời ở trong tình trạng không cho phép nhận dữ liệu (ví dụ như tràn bộđệm).
• Nếu điểm cuối bị dừng thì STALL được trả về để báo cho host rằng không nên cố thử lại giao tác bởi vì có tình trạng lỗi tại chức năng.
Nếu gói dữ liệu đã nhận có lỗi CRC hoặc lỗi nhồi bít thì sẽ không có đáp
ứng nào từ phía chức năng.
Hình 3.11 cho thấy chuỗi đọc và ghi dữ liệu truyền khối. Host luôn bắt
đầu giao tác đầu tiên bằng một DATA0 PID. giao tác tiếp theo sẽ là một DATA1 PID nếu bên phát dữ liệu nhận được gói ACK. Còn về phía thu thì khi nhận một gói dữ liệu thành công nó sẽ hiểu là gói dữ liệu tiếp theo sẽ có DATA PID trái với DATA PID của gói nó vừa nhận.
Hình 3.11: Đọc và ghi truyền khối [1]