web服务器工作原理及http协议通信

简介: 一个 Web 服务器也被称为 HTTP 服务器,它通过 HTTP 协议与客户端通信。这个客户端通常指的是 Web 浏览器。     Web服务器的工作原理简单的可以归纳为:客户机连接服务器,客户端向服务器发送请求,服务器向客户机发送应答,客户机与服务器断开。

一个 Web 服务器也被称为 HTTP 服务器,它通过 HTTP 协议与客户端通信。这个客户端通常指的是 Web 浏览器。

    Web服务器的工作原理简单的可以归纳为:客户机连接服务器,客户端向服务器发送请求,服务器向客户机发送应答,客户机与服务器断开。一个简单的事务处理事件就是这样实现的,看起来不简单,做起来其实也是挺简单的,呵呵……需要注意的是客户机与服务器直接的通信是非连接的,也就是当服务器发送了应答后就与客户机断开连接,等待下一次请求。

  HTTP 是一种让 Web 服务器与浏览器(客户端)通过 Internet 发送与接收数据的协议。它是一个请求、响应协议--客户端发出一个请求,服务器响应这个请求。HTTP 运用可靠的 TCP 连接,通常用的 TCP 80 端口。

在 HTTP 中,客户端总是通过建立一个连接与发送一个 HTTP 请求来发起一个事务。服务器不能主动去与客户端联系,也不能给客户端发出一个回叫连接。客户端与服务器端都可以提前中断一个连接。例如,当用一个浏览器下载一个文件时,你可以通过点击“停止”键来中断文件的下载,关闭与服务器的 HTTP 连接。
    http协议使Web服务器和浏览器可以通过Web交换数据。它是一种请求/响应协议,即服务器等待并响应客户方请求。H T T P不维护与客户方的连接,它使用可靠的T C P连接,通常采用TCP 80端口。客户/服务器传输过程可分为四个基一步骤:
 1) 浏览器与服务器建立连接;
 2) 浏览器向服务器请求文档;
 3) 服务器响应浏览器请求;
 4) 断开连接。
H T T P是一种无状态协议,它不维护连接的状态信息。
1. 客户请求
客户请求包含以下信息:
请求方法
请求头
请求数据
(1)请求方法是用于特定U R L或We b页面的程序HTTP请求方法:
方法       描述
GET     请求指定的文档
HEAD    仅请求文档头
POST    请求服务器接收指定文档作为可执行的信息
PUT     用从客户端传送的数据取代指定文档中的内容
DELETE  请求服务器删除指定页面
OPTIONS 允许客户端查看服务器的性能
TRACE   用于测试—允许客户端查看消息回收过程
(2)头信息是可选项,它用于向服务器提供客户端的其他信息
如果客户采用某种方法获取数据(如P O S T ),数据就放在头( h e a d e r )之后;否则客户机等待
从服务器传来的响应。
2. 服务器响应
服务器响应包括以下关键部分:
状态码
响应头
响应数据
HTTP定义了多组返回给浏览器的状态码。
响应头向客户方提供服务器和/或请求文档的信息HTTP响应头:
方法              描述
Server         Web服务器信息
Date           当前日期/时间
Last Modified  请求文档最近修改时间
Expires        请求文档过期时间
Content-length 数据长度(字节)
Content-type   数据M I M E类型
WWW-authenticate 用于通知客户方需要的认证信息(如用户名、口令等)
如果有客户方请求的数据,数据放在响应头之后,否则服务器断开连接。
3.通信实例:
1. 请求
在本例中,浏览器请求文档的U R L为h ttp://www.hostname.com/index.html。所有的请求均以空行结束。
GET /index.html HTTP/1.1
Accept: text/plain
Accept: text/html
User-Agent: Mozilla/4.5(WinNT)
                   (blank line)
(DATA)

浏览器使用Get方法请求文档/index.html。浏览器声明它只能接收纯文本和html数据,它使用Mozilla/4.5(Netscape)引擎。
2. 响应
服务响应包括状态码、一些头信息(以空行结束)及请求数据,假设数据存在,则响应信息如下:
HTTP/1.1 200 OK
Date Sunday, 15-Jul-05 12:18:33 GMT
Server: Apache/1.3.6
MIME-version: 1.0
Content-type: test/html
Last-modified: Thursday,02-Jun-05 20:43:56 GMT
Content-length: 1432
        (blank line)
<HTML>              (此行开始为数据部分,与前面头部要空一行)
<HEAD>
<title>Example Server-Browser Communication</title>
</HEAD>
<BODY>
......
</BODY>
</HTML>

假设文档未找到,响应信息如下
HTTP/1.1 404 NOT FOUND
Date Sunday, 15-Jul-05 12:19:33 GMT
Server: Apache/1.3.6

注意:每行换行时用:/r/n,头部与数据段之间要多空已行,即用两次/r/n

特别的,请求的一个网页包含着图片或视频等内容时,服务器第一次先发送文本消息,断开连接,客户端再次发送请求,服务器再次发送图片信息,有多少张图片(即除文本标签以为的消息)服务器就要和客户机断开/连接多少次。下面是我用Java编写的一个简单的web服务器:

如果想要代码的话,自己下载:

现在解释一下运行的一些问题:

while (true) {

System.out.println("服务器在等待中……");

              // 让服务器循环等待客户机的连接,如果没有whlie(true)语句,当客户机与服务器

              // 断开时,web服务器也退出了程序,无法使用

              Socket client = server.accept();

              // 处理客户端

              processClient(client);

服务器在等待中……

(此处为空行)

服务器在等待中……

2.jpg

服务器在等待中……

3.jpg

服务器在等待中……

1.gif

服务器在等待中……

sound.mp3

服务器在等待中……

其中的第一个“服务器在等待中……”是在服务器创建成功后输出的,之后等待客户机连接(即执行Socket client = server.accept();这句代码时,程序处于阻塞状态),当客户机来连接时,输出空行,也就是向请求主页,当服务器向客户机发送了文本时,断开,服务器再次进入等待,此时输出第二个“服务器在等待中……”,客户机再次发送1.jpg图片文件请求,依次类推,知道将客户机请求的全部信息都发送完,这也是web服务器与浏览器(客户机)之间通信的缺点之一,也就是http没连接一次只能完成一次请求,如果html文件中有多张图片,每传送一个图片,客户机和服务器之间都要单独建立一次连接。当然一个好的web服务器不仅仅是这么简单的,但是只要我们掌握了他们通信的原理,写出一个好的web服务器不是一件难事……

目录
相关文章
|
9天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
20 2
|
27天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
86 3
|
1月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
82 1
|
10天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
16 3
|
1月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
143 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
1月前
|
缓存 网络协议 前端开发
Web 性能优化|了解 HTTP 协议后才能理解的预加载
本文旨在探讨和分享多种预加载技术及其在提升网站性能、优化用户体验方面的应用。
|
1月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
37 1
|
2月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
142 8
|
25天前
|
弹性计算 安全 Windows
通过远程桌面连接Windows服务器提示“由于协议错误,会话将被中断,请重新连接到远程计算机”错误怎么办?
通过远程桌面连接Windows服务器提示“由于协议错误,会话将被中断,请重新连接到远程计算机”错误怎么办?
|
1月前
|
弹性计算 安全 关系型数据库
阿里云国际版远程连接Windows系统的ECS服务器时提示协议错误
阿里云国际版远程连接Windows系统的ECS服务器时提示协议错误
下一篇
无影云桌面