`
沈冠军
  • 浏览: 111251 次
  • 性别: Icon_minigender_1
  • 来自: 玉林
社区版块
存档分类
最新评论

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

阅读更多


    一个 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 LWe 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 Lh 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服务器不是一件难事……

  • WebServerV1.0.rar (5.3 MB)
  • 描述: 简单web服务器源码下载
  • 下载次数: 124
分享到:
评论

相关推荐

    Java Web 服务器原理

    Java Web服务器原理主要涉及到Web应用的部署、运行和管理,其中Tomcat是一个广泛使用的开源Java Servlet容器,它是Java EE(现在称为Jakarta EE)的一部分。本文将深入探讨Java Web服务器的工作原理,特别是Tomcat的...

    基于Java的Web服务器工作原理

    在深入探讨基于Java的Web服务器工作原理之前,我们需要理解Web服务器的基本概念和Java技术栈的关键组件。 首先,Web服务器是一种软件,其主要任务是接收来自客户端(如浏览器)的HTTP请求,处理这些请求,然后向...

    WEB浏览器工作原理

    WEB 浏览器工作原理是基于客户机/服务器计算模型,由 Web 浏览器(客户机)和 Web 服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP 协议是基于 TCP/IP 协议之上的协议,是 Web 浏览器和 ...

    常见WEB服务器原理以及分析

    总的来说,WEB服务器原理涉及URL解析、DNS查找、HTTP请求响应以及资源的传输。虚拟主机技术则让有限的IP资源能够承载更多的网站和服务。了解这些基础知识对于理解互联网运作以及优化网站性能至关重要。

    简单Web服务器设计与实现.doc

    Web服务器的工作原理基于客户机/服务器计算模型,由Web浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间...

    web服务器0.12,学习http 协议

    在本主题"web服务器0.12,学习http协议"中,我们将深入探讨Web服务器的工作原理以及HTTP协议的基础知识。 首先,HTTP协议是互联网上应用最广泛的数据通信协议之一,它定义了客户端(通常是Web浏览器)与服务器之间...

    WIZnet活动主题:嵌入式WEB服务器搭建及HTTP(S)协议讲解-W5500封装库.rar

    总之,通过WIZnet的这次活动,我们可以学习到如何利用W5500封装库来搭建一个功能完备的嵌入式WEB服务器,并理解HTTP(S)协议的工作原理。这不仅对电子设计领域的工程师们大有裨益,也为其他领域的开发者提供了宝贵的...

    Web服务器 http协议

    总之,通过Visual Studio 2008和MFC实现Web服务器,需要理解HTTP协议的工作原理,熟悉TCP/IP网络编程,以及掌握C++和MFC库的使用。同时,测试、调试、安全性和性能优化都是项目成功的关键要素。这个项目为学习Web...

    HTTP通信协议 工作原理详解

    HTTP(超文本传输协议)是互联网上...总结来说,HTTP通信协议的工作原理涉及域名解析、TCP连接建立、HTTP请求发送、服务器处理和响应、资源加载以及连接关闭。理解这一过程对于开发Web应用程序和优化网络性能至关重要。

    基于单片机的嵌入式Web服务器设计与实现.pdf

    知识点5:Web服务器原理 * Web服务器也称为HTTP服务器,它通过HTTP协议与客户端通信。 *@Web服务器监听用户端的服务请求,根据用户请求的类型提供相应的服务。 * 用户端可以使用Web浏览器和Web服务器进行通信。用户...

    计算机网络实验一 Windows环境下用java实现web服务器

    这个实践项目旨在深化学生对HTTP协议的理解,以及Web服务器的工作机制。HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,它规定了客户端与服务器之间数据交换的规则。 首先,我们需要了解HTTP协议的...

    一个基于HTTP的独立web服务器

    本项目提供了一个用Java编写的独立Web服务器,这使得开发者可以更深入地理解Web服务器的工作原理,并能够自定义其功能。 【描述】: 这个项目旨在作为一个教学资源,帮助初学者理解Web服务器的内部运作。通过Java...

    HTTP协议原理+实践 Web开发工程师必学

    HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议,它是Web浏览器和服务器之间通信的基础。理解HTTP协议的原理对于Web开发工程师来说至关重要,因为这直接影响到网页的加载...

    超级简单的web服务器

    关于Web服务器的标签中提到了"**http**",HTTP是Web的核心协议,负责客户端(如浏览器)与服务器之间的通信。HTTP协议定义了请求和响应的格式,使得数据能在互联网上传输。而"**apache**"是全球最流行的开源Web...

    web-server WEB服务器

    1. **Web服务器基础**:Web服务器如何通过HTTP协议与客户端通信,包括请求和响应的工作流程。 2. **HTTP协议**:学习HTTP请求方法(GET、POST等)、状态码(200、404、500等)以及HTTP头的使用。 3. **服务器架构**...

    Web服务器的工作原理.docx

    Web服务器的工作原理和Java面试经验紧密相关,因为Java在Web开发中扮演着核心角色,尤其是通过Servlet API来处理HTTP请求。首先,我们需要理解几个关键概念:Web服务器、应用服务器和Web容器。 1. **Web服务器**:...

    Linux web服务器的TLS 协议搭建.pdf

    本文将详细介绍Linux环境下Web服务器的TLS协议搭建步骤,包括TLS协议的概念、TLS证书的生成及配置方法,以及使用OpenSSL库来创建和管理证书的过程。 首先,我们来了解TLS协议的基础知识。TLS协议建立在TCP/IP协议...

    Java Web服务器原理.pdf

    Java Web服务器原理主要涉及到互联网的核心技术,包括HTTP服务器的工作机制、HTTP协议的特性以及URL和域名的概念。HTTP(Hypertext Transfer Protocol)是互联网上应用最广泛的一种网络协议,它定义了客户端(通常是...

    C-Web-Server源码 经典的C语言web服务器

    在互联网技术日新月异的今天,Web服务器作为互联网应用的核心组件,其工作原理和技术细节一直备受关注。而C-Web-Server,这款用C语言编写的原生Web服务器,为我们提供了一个极好的学习平台,让我们能够深入理解Web...

Global site tag (gtag.js) - Google Analytics