计算机网络通信中有一种常见的模型,称为「客户端-服务器」模型,它描述了两类参与者:客户端 和 服务器。
客户端请求资源并处理服务器返回的资源,常见的客户端包括 web 浏览器、移动应用、桌面应用等,对于前端工程师用的最多的还是 web 浏览器。
服务器用来提供资源,这些资源包括但不限于「文件、数据库、API 接口」等,服务器通常比客户端拥有更大的存储容量和内存,因为它需要为多个客户端同时提供服务,并且服务端总是处于监听状态,监听来自客户端的消息。
通信机制有套接字、RPC、消息队列、HTTP 轮询、WebRTC 等等。
对于客户端和服务端来说,套接字更具有普遍性、灵活性,所以在客户端-服务端模型中,套接字是一个重要的机制。
套接字可以被看作是计算机上应用程序与网络之间的桥梁或接口。当两台计算机上的程序想要彼此通信时,它们需要使用套接字来发送和接收数据。
这个套接字由浏览器的 IP 地址和一个临时的、随机分配的端口号组成,而服务器通常在固定的端口(如HTTP的80端口)上监听。这样,数据交互知道应该发送到哪里,发回哪里。
我们需要认识到客户端和服务器提供服务的是「进程」,而不是一整个服务器都在服务,这个概念很重要。基于这个概念引申出,一台服务器可以为多个客户端提供服务。
一个服务器上可能有多个进程,每个进程负责特定的服务,例如一个进程处理 HTTP 请求,另一个处理 FTP 请求等。
通信协议是网络中数据交换定义的规则和标准,这些规则确保信息在发送和接收时的一致性和可靠性。
套接字是网络通信的基础,提供了一个端点来发送和接收数据。不同的协议(如 HTTP、FTP、TCP、UDP)可以运行在这些套接字之上,它们为数据交换提供了具体的规则。
选择哪种协议取决于应用的具体需求,对于 web 浏览器和服务端来说,浏览器会使用 HTTP 或 HTTPS 协议进行数据的请求和响应,通常在 HTTP 下使用 80 端口,而在 HTTPS 下使用 443 端口。
当用户在浏览器中输入 URL 或点击链接时,浏览器首先需要解析这个 URL 以确定目标服务器的 IP 地址,然后浏览器创建一个套接字,这是一个在网络上通信的端点。
web 服务器通过使用「HTTP协议」和客户端通信,浏览器向服务器请求资源,服务器从磁盘中读取文件信息返回给客户端。
- 当用户在 web 浏览器中输入一个网址或点击一个链接,浏览器会向相应的服务器发送一个请求来获取所需的资源;
- 服务器接收到这个请求后,会根据请求内容去检索其磁盘系统,找到所需要的资源;
- 一旦找到请求的资源,服务器会发送回浏览器,同时继续监听来自浏览器的新请求;
- 浏览器接收到从服务器返回的数据后,会解析并渲染该数据,最终将内容显示在屏幕上。
在客户端-服务端模型中,客户端和服务端各司其职:客户端呈现应用,服务端则提供资源。它们依赖套接字进行数据传输,并采用 TCP、HTTP 协议确保数据的一致与稳定,为用户提供了可靠的网络体验。
内容优化:ChatGPT
内容来源:《深入理解计算机系统》
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34599.html