The application programming interface (API) communicates with the Fibre Channel (FC) network through the use of sockets. This section will describe the two main types of socket address families that can be used.
There are two main types of socket address families that can be used, traditional TCP/IP address families (AF_INET and AF_UNIX) and a raw communication address family (AF_NDD).
An application that uses the traditional TCP/IP address families can use the full TCP/IP protocol stack, including sequenced packets and error recovery. The connection types available when using the AF_INET or AF_UNIX families are SOCK_DGRAM, SOCK_STREAM, and SOCK_RAW.
An application that uses the raw socket family (AF_NDD) is not able to use any of the TCP/IP protocol stack. The AF_NDD sockets bypass the TCP/IP protocol stack completely. The AF_NDD socket interface allows applications to communicate directly with the device driver using any protocol the application follows. The disadvantage to using AF_NDD sockets is that the application is responsible for managing all of the headers, including the MAC and any other LLC headers needed for the protocol being used, managing the sequencing of packets, and managing packet recovery. The AF_NDD family only supports the SOCK_DGRAM connection type. Any connection-oriented message passing must be handled by the user application.