specifying the target address of the server. For an Internet domain socket, the address of the server is its IP address and its port number.
Sockets are created using the socket() system call. Depending on the type of socket, either UNIX domain or internet domain, the socket family operations vector invokes either unix_create() or
inet_create().
unix_create() and inet_create() invoke sk_alloc() to allocate the sock structure.
sk_alloc() calls kmem_cache_alloc() to allocate memory, and then zeros the newly allocated memory by invoking memset(), thus taking care of object reuse issues associated with sockets created by users.
Figure 5-16: Object reuse handling in socket allocation
Calls to bind() and connect() to a UNIX domain socket file requires write access to it. UNIX domain sockets can be created in the ext3 file system, and therefore may have an ACL associated with them. For a more detailed description of
5.4Network subsystem
The network subsystem allows Linux systems to connect to other systems over a network. It provides a general purpose framework within which network services are implemented. There are a number of possible hardware devices that can be connected, and a number of network protocols that can be used. The network subsystem abstracts both of these implementation details, so user processes and other kernel subsystems can access the network without knowing the physical devices and the protocol being used.
The various modules in the network subsystem are:
•Network device drivers communicate with the hardware devices. There is one device driver module for each possible hardware device.
•The
•The network protocol modules are responsible for implementing each of the possible network transport protocols.
69