`
akka_li
  • 浏览: 19783 次
社区版块
存档分类
最新评论

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


转自:http://champion-netjava-163-com.iteye.com/blog/776979
分享到:
评论

相关推荐

    Web协议与实践

    本书全面论述了传输Web内容的系统和协议,重点讲述了Web中业已成熟和稳定的技术,如TCP/IP协议及DNS技术、HTTP/1.0的设计及其与TCP之间的交互;深入阐述了Web高速缓存技术和多媒体流播技术的最新技术动态;分析了...

    Web服务器的java实现

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

    一个Web服务器的设计与实现

    WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信,HTTP协议的作用原理包括四个步骤:连接,请求,应答,关闭应答。在课程设计中,...

    Http协议详解.pptx

    HTTP 是为 Web 浏览器与 Web 服务器之间的通信而设计的,实在应用层进行数据传输的标准,HTTP 是一个基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。 HTTP 工作原理 HTTP协议工作于客户端-...

    Web服务器的开发原理-有代码

    这是一个自己开发版本的服务器,模仿浏览器跟服务器间的通信,通过该程序可以很好的了解服务器跟浏览器交互的原理,http协议,线程的应用跟Socket编程。

    C 语言实现一个简单的 web 服务器的原理解析

    一、了解 Socket 及 web 服务工作原理 既然是基于 tcp 实现 web 服务器,很多学习 C 语言的小伙伴可能会很快的想到套接字 socket。socket 是一个较为抽象的通信进程,或者说是主机与主机进行信息交互的一种抽象。...

    迅饶OPC服务器支持60种协议

    OPC服务器工作原理:X2OPC相当于一座通信桥梁,将工业领域其他通信协议转化成OPC DA和OPC XML-DA规范,使得支持OPC规范的客户端软件(譬如上海迅饶的OPCBridge,一般的组态软件)能够直接进行访问,方便系统集成。...

    ssl 协议简介 原理 过程

    可在服务器和客户机两端同时实现支持,目前已成为互联网上保密通讯的工业标准,现行Web浏览器亦普遍将Http和SSL相结合,从而实现安全通信。此协议和其继任者传输层安全(Transport Layer Security,TLS)是为网络...

    ESP8266学习进阶协议类(1)——http请求

    HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 HTTP工作原理 HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。 Web服务器有...

    c语言c++项目源代码_C语言http服务器的实现.rar

    **C语言HTTP服务器实现源码** 本资源提供了一个基于C语言的HTTP服务器实现源码,允许用户在网络...通过此源码,用户可以深入了解HTTP协议的工作原理,掌握Web服务器的构建和管理技能,为未来的网络应用开发奠定基础。

    通信与网络中的基于传感器内嵌Web服务器的远程数据采集系统

    它是在智能传感器的基础上把TCP/IP协议作为一种嵌入式应用,嵌入现成智能服务器的ROM中,利用传感器内建的Web服务器,用户可以通过浏览器采集远程监控对象的信息。  1 Web网络传感器数据采集系统工作原理  用户...

    来自实例的经典分析--HTTP协议

    协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。当我们打开浏览器,在地址...

    用户层和传输层协议分析指导书

    实验原理: ...1、搭建DNS、FTP、WEB、Email等服务器 2、使用wireshark捕捉应用层各服务在应用层与传输层的数据报文 3、使用filter过滤dns、http、ftp及email的数据报文 4、对传输过程和数据报文进行协议分析

    python爬虫入门教程–快速理解HTTP协议(一)

    前言 爬虫的基本原理是模拟浏览器进行 HTTP 请求,理解 HTTP 协议是写...只要大家都按照协议规定方式发起请求和返回响应结果,任何人都可以基于HTTP协议实现自己的Web客户端(浏览器、爬虫)和Web服务器(Nginx、Apach

    Linux高性能服务器编程清晰PDF+源码

    目录 前言 第一篇 TCPIP协议详解 第1章 TCPIP协议族 1.1 TCPIP协议族体系结构以及主要...第4章 TCPIP通信案例:访问Internet上的Web服务器 4.1 实例总图 4.2 部署代理服务器 ....... 代码 springsnail.....

    基于Linux嵌入式HTTP网络服务器的设计与实现

    ‘ 个标准lI 1’M L 页的发送和接收,客户端向嵌入式1.I FTP网络服务器发送Web表单请求时的通信~UCGI按I 1程序 探讨了多个线程共享数据资 源,井EL安全可靠地工作。f}】互斥锁和条件变埴技术解决 由并发产生的同步...

    基于Swoole的Socket Server.Client.Http 开发框架.rar

    这篇教程取自社群分享程序员内功修炼系列网络协议篇,其中对 WebSocket 协议的由来、实现原理和通信演示有详细介绍,这里我们摘取其中的简单实现篇来介绍,因为在那里也是基于 Swoole 实现 WebSocket 服务器的。...

    Web应用安全:web系统的应用架构.pptx

    一个大型(日PV一亿+)、中型(日PV一千万+)Web业务系统,是不可能只有一个业务处理服务,而是多台服务器同时进行某一个相同业务的服务。所以我们需要根据业务形态设计一种架构方式,将来自外部客户端的业务请求...

    Web安全深度剖析(张柄帅)

    《Web安全深度剖析》总结了当前流行的高危漏洞的形成原因、攻击手段及解决方案,并通过大量的示例代码复现漏洞原型,制作模拟环境,更好地帮助读者深入了解Web应用程序中存在的漏洞,防患于未然。 《Web安全深度剖析...

Global site tag (gtag.js) - Google Analytics