>>90
一般的にはバッファというのはカーネル内での制限値の様な物。 必要があったら
配分して溜め、規定値を超えたら残りは状況に応じた処理をする。 受信側と送信側は
全く別。 

recv側:
  udp 捨てる
  tcp 窓を0にして送信側をブロックする

send側
  sendのコールがブロックされる(バッファに空きが出来るまでコールが終了しない)
  nonblockingという場合はもうちょっと複雑。
   
バッファの容量はシステム設定やソケットのオプションで変更出来る。