Socket is an endpoint for communication between applications that consists of an IP address and port number. There are two types of servers: iterative servers that handle one client request at a time and concurrent servers that handle multiple requests concurrently using processes, threads, or I/O multiplexing. Connection establishment between client and server involves a three-way handshake initiated by the client. Shutdown closes a socket for reading, writing, or both, while close decreases the reference count and releases resources when the count reaches 0. Concurrency in parent-child servers can lead to zombie or defunct child processes if the parent does not properly wait for child processes to terminate.