BSD sockets are built on the basic UNIX® model: Everything is a file. In our example, then, sockets would let us receive an HTTP file, so to speak. It would then be up to us to extract the PNG file from it.
Because of the complexity of internetworking, we cannot just
      use the open system call, or
      the open() C function.  Instead, we need to
      take several steps to “opening” a socket.
Once we do, however, we can start treating the
      socket the same way we treat any
      file descriptor: We can
      read from it, write to
      it, pipe it, and, eventually,
      close it.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
    documentation may be
    sent to <freebsd-questions@FreeBSD.org>.
    Send questions about this document to <freebsd-doc@FreeBSD.org>.