小明java问道之路(一):客户端-服务器编程模型

前言:作者简介:小明Java问路,专注计算机底层研究,在金融公司做前端中级工程师,擅长高安全/高可用性/并发的设计和架构/在交易领域的表现

Java领域优质创作者、阿里云专家博主、华为云分享专家

如果这篇文章还不错,请关注、点赞、收藏,支持博主。

本文简介

所有 Web 应用程序都基于相同的编程模型,具有相似的整体结构,并且依赖于相同的编程套接字。我们需要了解基本的客户端-服务器编程模型以及如何编写 Web 程序。

关键分析

一、客户端-服务器编程模型

每个 Web 应用程序都基于客户端-服务器编程模型。一个应用程序由一个服务器进程和一个或多个客户端进程组成。服务器管理资源并通过操纵这些资源向其客户端提供某些服务。服务(Web 服务器管理一组 C 盘文件,它代表客户端检索和执行这些文件)。

客户端-服务器编程模型中的基本操作是事务,由以下四部分组成:(1)客户端需要服务时,向服务器发送请求发起事务;(2)@ >服务器收到请求后,对其进行解释并以适当的方式操纵其资源;(3)服务器向客户端发送响应,等待下一个请求;(4)客户端收到响应并处理它。

​二、网络

客户端和服务器通常运行在不同的主机上,通过计算机网络的硬件和软件资源进行通信。对于主机来说,网络只是一个 IO 设备、一个数据源和一个数据接收器。插入 IO 总线扩展槽的适配器为网络提供数学插口。从网络接收到的数据通过IO总线从适配器复制到显存应用编程接口和套接字,一般通过DMA传输,也可以从显存复制数据到网络。

​​​

最后主机B上的合约软件破解了Hohhot和Frame头。当服务器进行系统调用来读取这些数据时,合约软件最终会将结果数据复制到服务器的虚拟地址空间中 最后主机B上的合约软件破解了Hohhot和Frame头。当服务器进行系统调用来读取这些数据时,合约软件最终会将结果数据复制到服务器的虚拟地址空间中

​三、全球IP互联网

每个主机运行一个 TCP/IP 合同(TransmissionControlProtocol/InternetProtocol,Transmission ControlProtocol/Internet Network Contract)。客户端和服务器混合使用套接字套接字函数(Socket)进行通信。SOCKET 通常被实现为深入内核的系统调用。

IP合约提供基本的命名和传输机制;从某种意义上说是不可靠的,因为如果丢失或复制,就不会尝试恢复。UDP 扩展了 IP 契约,以便数据包可以在进程之间而不是主机之间传输。TCP 在进程之间提供可靠的全双工连接。

IP地址,一个IP地址是一个32位无符号整数,TCP/IP网络字节序(network byte order big endian byte order)。主机通常是 little-endian,IP 地址用点分十的补码表示。

互联网域名,互联网定义了域名集合和IP地址集合的映射关系,由DNS(DomainNameSystem,域名系统)维护。每个主机条目都是域名和 IP 地址的等价类。本地环回地址:127.0.0.1.它为运行在同一台机器上的客户端和服务器进行调试提供了一种方便、可移植的方式。域名和IP地址的映射基本上是一对一的,也有多对一和一对多的。

Internet 连接是点对点的。一个socket是一个链接的一个端点,每个socket都有一个对应的socket地址,用“address:port”表示。临时端口:客户端发起请求时由内核手动分配;众所周知的端口:服务器套接字端口。一个连接由两端的套接字地址唯一标识;这对地址称为套接字对 (cliaddr:cliport,servadde:servport) 例如 ((238.2.19 4.242:8080), (20 8.216.181.15:8081))

四、socket接口

socket的作用:是创建socket描述符:connect:建立一个服务器,有地址和端口建立连接bind:将socket描述符连接到服务器socket地址(即自己的IP等信息)listen:服务器调用告诉内核这是一个活动套接字并使用活动连接描述符(由服务器使用)。接受:返回一个连接的描述符给客户端。使用连接描述符,客户端可以与服务器通信。

​五、网络服务器

Web 客户端(浏览器)和服务器之间的交互使用 HTTP 合约。HTTP 是一个简单的合同:Web 库依次打开到服务器的 Internet 连接,但请求单独的内容。服务器响应请求,关闭连接,浏览器读取内容,但将其显示在屏幕上。

HTTP请求,首先连接服务器和客户端。格式:methodURIversion,method通常是GET,URI是URL端口的前面部分,version是HTTP版本,通常是HTTP/1.0或HTTP1.1 HTTP响应的常见状态码

​传递动态内容,? 分隔文件名和参数,每个参数用&分隔,例如:GET/adder?1500&user=213HTTP/1.1

概括

2)0@>每个 Web 应用程序都基于客户端-服务器模型。2)1@>根据这个模型,一个应用程序由一个服务器和一个或多个客户端组成。服务器管理资源,以某种形式操作资源,并为其客户端提供服务。客户端-服务器模型中的基本操作是客户端-服务器事务,它由客户端请求和服务器响应组成。

2)2@>客户端和服务器通过全球网络 Internet 进行通信。从程序员的角度来看,我们可以将 Internet 视为具有以下属性的主机的全局集合: 1)每个 Internet 主机都有一个唯一的 32 位名称,称为 IP 地址。2)@>IP 地址集合映射到 Internet 域名集合。2)5@>只有不同 Internet 主机上的进程才能通过链接相互通信。2)6@>客户端和服务器使用套接字建立连接。套接字是连接的端点应用编程接口和套接字,它作为文件描述符提供给应用程序。2)7@>Socket 套接字提供了打开和关闭套接字描述符的函数。客户端和服务器通过读取和写入这些描述符相互通信。

2)8@>Web 服务器和它们的客户端(例如浏览器)使用 HTTP 合约相互通信。浏览器从服务器请求静态或动态内容。2)9@>通过从服务器的 c 驱动器获取文件并将其返回给客户端来处理对静态内容的请求。通过在服务器上的子进程上下文中运行程序并将其输出返回给客户端来处理对动态内容的请求。8、CGI 标准提供了一组规则来管理客户端如何将程序参数传递给服务器,服务器如何将这些参数和其他信息传递给子进程,以及子进程如何将其输出发送回客户端结尾。

​​​

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站程序 小明java问道之路(一):客户端-服务器编程模型 http://www.wkzy.net/game/8246.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务