A file descriptor is a numeric handle to an open file or socket. Buffering batches I/O in memory to reduce syscalls and improve throughput, at the cost of delayed writes.
Descriptors are OS-managed references:
Buffered write flow:
write() -> user buffer -> kernel buffer -> disk later
fsync() -> force disk commit