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: Khng 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 ( ngồ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]