- Unix 套接字教程
- Unix Socket - 主页
- Unix 套接字 - 什么是套接字?
- Unix 套接字 - 网络地址
- Unix Socket - 网络主机名
- Unix Socket - 客户端服务器模型
- Unix Socket - 结构
- Unix Socket - 端口和服务
- Unix Socket - 网络字节顺序
- Unix Socket - IP 地址函数
- Unix Socket - 核心功能
- Unix Socket - 辅助函数
- Unix Socket - 服务器示例
- Unix Socket - 客户端示例
- Unix Socket - 总结
- Unix 套接字有用资源
- Unix 套接字 - 快速指南
- Unix Socket - 有用资源
- Unix Socket - 讨论
Unix Socket - 客户端服务器模型
大多数网络应用程序都使用客户端-服务器架构,这是指两个进程或两个应用程序相互通信以交换一些信息。两个进程之一充当客户端进程,另一个进程充当服务器进程。
客户流程
这是通常发出信息请求的流程。在得到响应之后,这个过程可能会终止或者可能会做一些其他的处理。
例如,Internet 浏览器作为客户端应用程序工作,它向 Web 服务器发送请求以获取一个 HTML 网页。
服务器进程
这是接受客户请求的过程。从客户端收到请求后,该进程将执行所需的处理,收集请求的信息,并将其发送给请求者客户端。完成后,它就可以为另一个客户提供服务了。服务器进程始终保持警惕并准备好服务传入的请求。
示例- Web 服务器不断等待来自 Internet 浏览器的请求,一旦收到来自浏览器的任何请求,它就会获取请求的 HTML 页面并将其发送回该浏览器。
请注意,客户端需要知道服务器的地址,但服务器在建立连接之前不需要知道客户端的地址,甚至不需要知道客户端的存在。一旦建立连接,双方就可以发送和接收信息。
2 层和 3 层架构
有两种类型的客户端-服务器架构 -
2 层架构- 在这种架构中,客户端直接与服务器交互。这种类型的架构可能存在一些安全漏洞和性能问题。Internet Explorer 和Web Server 在两层体系结构上工作。这里使用安全套接字层(SSL)解决安全问题。
3 层架构- 在这种架构中,客户端和服务器之间还有一个软件。这个中间软件称为“中间件”。中间件用于在重负载的情况下执行所有安全检查和负载平衡。中间件接收来自客户端的所有请求,并在执行所需的身份验证后,将该请求传递到服务器。然后服务器进行所需的处理并将响应发送回中间件,最后中间件将此响应传递回客户端。如果您想要实现 3 层架构,那么您可以在 Web 服务器和 Web 浏览器之间保留任何中间件,例如 Web Logic 或 WebSphere 软件。
服务器类型
您可以拥有两种类型的服务器 -
迭代服务器- 这是最简单的服务器形式,其中服务器进程为一个客户端提供服务,完成第一个请求后,它接受来自另一个客户端的请求。与此同时,另一位客户仍在等待。
并发服务器- 这种类型的服务器运行多个并发进程来一次服务多个请求,因为一个进程可能需要更长的时间,而另一个客户端不能等待这么长时间。在Unix下编写并发服务器最简单的方法是fork一个子进程来单独处理每个客户端。
如何制作客户端
客户端和服务器建立连接的系统调用有些不同,但都涉及套接字的基本构造。两个进程都建立自己的套接字。
在客户端建立套接字所涉及的步骤如下 -
使用socket()系统调用创建一个套接字。
使用connect()系统调用将套接字连接到服务器的地址。
发送和接收数据。有多种方法可以做到这一点,但最简单的方法是使用read()和write()系统调用。
如何制作服务器
在服务器端建立套接字所涉及的步骤如下 -
使用socket()系统调用创建一个套接字。
使用bind()系统调用将套接字绑定到一个地址。对于 Internet 上的服务器套接字,地址由主机上的端口号组成。
使用listen()系统调用监听连接。
使用accept()系统调用接受连接。此调用通常会阻止连接,直到客户端与服务器连接。
使用read()和write()系统调用发送和接收数据。
客户端和服务器交互
下图显示了完整的客户端和服务器交互 -