標準入出力を考えればわかる
手入力の時 一気に入力しようが 1文字づつ ゆっくり入力しようが区別がつかない
それがストリームってもん

区別したければ区切りもwriteする約束にする (よくあるのが テキストベースで \n を区切りにするようなの
read する側は 区切りが来るまで 1文字づつ受ける

TCP通信でのパケットの分断
 "1234" "567" と 2回 send したのに "12" "345" "67" と 3回 recv することだってある
と同じこと (並び順は保障するけど、1回の操作で得られる塊は不定長)