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