Tất cả các thông báo đ−ợc tạo bởi một hoặc nhiều khối thông báo. Một khối thông báo là một danh sách liên kết của các bộ ba (triples), mỗi bộ bao gồm hai cấu trúc và một vùng nhớ đệm dữ liệu (buffer). Các cấu trúc là một khối thông báo (msgb) và một khối dữ liệu (datab). Vùng đệm dữ liệu dữ liệu đ−ợc cấp phát trong bộ nhớ, ở đó dữ liệu của thông báo đ−ợc chứa.
STREAMS dùng các b_next và b_prev để liên kết các thông báo trong hàng đợi. Các trình điều khiển và các mô đun có thể đọc nh−ng không thể thay đổi trực tiếp các tr−ờng này. Các con trỏ b_rprt và b_wptr là các con trỏ đọc và viết ở trong vùng nhớ đệm dữ liệu đ−ợc trở bởi con trỏ b_datap. Các con trỏ b_rptp và b_wptr đ−ợc quản lý bởi các trình điều khiển và các mô đun.
Tr−ờng b_band xác định nơi thông báo đ−ợc đặt khi nó đ−ợc xếp hàng bằng cách dùng các trình (routine) tiện ích STREAMS. Khi một thông báo đ−ợc cấp phát qua allocb(), tr−ờng b_band đ−ợc gán giá trị 0, các mô đun và trình điều khiển có thể xác lập tr−ờng này với các giá trị từ 0 đến 255 dựa vào số băng (band ) đặc quyền cần có. Các số thấp hơn có quyền −u tiên thấp hơn.
Cấu trúc datab xác định các hạn chế cố định của vùng đệm dữ liệu (db_base và db_lim), một tr−ờng đếm (db_ref) và tr−ờng thông báo (db_type).
Mỗi thông báo bao gồm một hoặc nhiều khối thông báo đ−ợc liên kết.
Một thông báo có thể là đơn (singly) nh− khi nó đ−ợc xử lý bởi thủ tục put hoặc nó có thể đ−ợc liên kết trên hàng đợi thông báo của hàng đợi và đợi để đ−ợc xử lý bởi thủ tục service. Thông báo 2 trong hình 2.7 liên kết tới thông báo 1. STREAMS cho phép các khối thông báo của các thông báo khác nhau cùng chia sẻ một khối dữ liệu (data block) để giảm việc l−u trữ và tránh việc tràn sao chép (copying overhead) và đ−ợc gọi là các khối thông báo kép (Multiple message block). Trong hình trên một khối dữ liệu trong thông báo 1 đ−ợc chia sẻ giữa thông báo 1 và thông báo khác. Ví dụ, cùng một khối dữ liệu với vùng nhớ đệm kết hợp với nó, có thể đ−ợc tham chiếu trong hai thông báo, từ các mô đun riêng rẽ cài đặt các mức giao thức riêng rẽ.
Chú ý: các mô đun và trình điều khiển không thể thay đổi b_next và b_prev. Các tr−ờng này đ−ợc thay đổi bằng việc dùng các trình (routine) nh− putq, getq.