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.
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 client-server communication methods and the access control performed by them,
refer to Section 5.12 of this document.
5.4 Network 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 device-independent interface module provides a consistent view of all of the hardware devices,
so higher levels in the subsystem do not need specific knowledge of the hardware in use.
The network protocol modules are responsible for implementing each of the possible network
transport protocols.
69

Figure 5-16: Object reuse handling in socket allocation