16.1
服务器是一个软件或硬件,用于向一个或多个客户端(客户)提供所需的服务。书中所说的银行出纳模型就与服务器挺类似的。
服务器还具有一个特点就是它处在一个接受请求、处理请求然后再接受请求或等待其他客户的无限循环中。
服务器需创建一个通讯端点,来监听请求。
16.2 套接字
这一部分理解较难。
套接字是一种具有之前所说的“通讯端点”概念的计算机网络数据结构。本人对此不是很理解,但在网上搜到一张图片,这是《计算机网络教程:自顶向下方法》中的一张图。从中可以看出客户端和服务器都具有套接字,客户端与服务器通过套接字来实现通讯。
套接字地址包括主机和端口。
套接字分为基于文件型和基于网络型。AF_UNIX属于前者,AF_INET和AF_NETLINK属于后者。
基于网络型的套接字又可以分为两种,面向连接和无连接。
面向连接,首先是客户端与服务器必须先建立连接,数据按顺序到达,传输准确,不会重复。这一类型为SOCK_STREAM,对应传输协议为TCP/IP。
无连接,客户端与服务器不需建立连接,只是客户端发送数据,服务器接收数据,数据顺序到达、可靠性及不重复性无法保证,但传输高效。这一类型为SOCK_DGRAM,对应传输协议为UDP/IP。