A Buffer is Node's way to handle raw binary data — a fixed-length sequence of bytes stored outside the V8 heap. Since JavaScript strings are for text (Unicode), Buffers exist to work with binary: file contents, network packets, images, encryption, etc.
Why Buffers exist
JavaScript strings → text (UTF-16). Can't cleanly represent arbitrary bytes.
Buffers → raw bytes (0–255 each). For binary data that isn't text.
When you read a file or receive network data, it arrives as bytes — a Buffer — which you can then decode to a string if it's text, or process as binary if it's not.
