HTTP协议学习(四)——Web服务器

转载 2015年11月19日 21:25:40
本篇疑惑:HTTP服务器如何处理HTTP请求的?
首先介绍一下什么是web服务器,我个人理解就是能支撑web应用正常工作的软硬件结合的一个玩意儿。web服务器可以是一套软件,一台小型机等。但最终提供支持的都是软件。硬件只是作为一个载体用于支撑web服务器软件的运行。
下面开始介绍Web服务器是如何处理客户端请求的。笔者整理为以下步骤:
接收客户端请求——接收请求——处理请求——访问资源——构建响应——发送响应——记录事物日志。这7个步骤。
HTTP协议学习(四)——Web服务器 - 夜深,人未静 - AlexChen
 
一、接收客户端请求(建立连接)
严格说来应该是建立连接,此时服务器与客户端会通过tcp建立底层通讯连接,这个过程服务器是可以拒绝的,如果不建立,则服务器会忽视请求。如果接收请求则服务器还会通过反向DNS去解析主机名以及以及确定客户端用户用于下面最后一条的日志记录,但是反向DNS会花费更多时间(增加处理时间)的时间它也不是必须的。这些都可以通过控制管理来配置。

二、接收请求
解析客户端请求的报文信息(从网络中读取请求报文),为解析报文做准备。在接收请求过程中服务器会有以下行为:
1、解析请求行:查找请求方法、指定资源标识符URI、版本号、他们之间以空格符分开以回车换行CRLF作为结束行。
2、读取报文首部,同样以CRLF结尾、如果首部有结束的空行也会检测
3、如果Content-Length有效,则会继续读取请求主体
如图
HTTP协议学习(四)——Web服务器 - 夜深,人未静 - AlexChen
 

三、处理请求
根据第二步解析出的报文处理该报文请求,这个处理主要包括对请求方法,资源,首部以及可用主题进行分类,将他们分给不同的处理单元。

四、访问资源
对请求的资源做映射。web服务器是一个资源服务器,它负责发送预先创建好的内容(html页面,js,等)或根据请求内容构建出动态的内容(比如查询统计时统计表格数据)。在web服务器将响应内容回送给客户端之前都需要将URI映射成预先创建好或新动态生成的资源上。最简单的则是通过请求URI作为资源,web服务器中每个单独的web应用会有单独的一个根目录,通常在根目录后加上URI就可以定位到请求的资源。这里就会存在一个安全性的问题。如果服务器配置不当访问者就可以通过目录列表的方式访问不该看见的东西暴露该站点的其它隐秘信息。
如果访问的是动态资源,那么服务器会将访问映射到其它后端处理程序上去。服务器还可以针对特定的资源进行访问控制要求访问者提供访问密码等。

五、构建响应
当服务器识别了访问资源、则会执行请求方法的描述动作并产生响应报文(请参考前面文章中的响应报文内容
如果还产生了响应实体,那么就将实体包含在了响应报文中。
HTTP协议学习(四)——Web服务器 - 夜深,人未静 - AlexChen
 
六、发送响应
发送响应内容和接收响应一样,如果是持久链接服务器则应该特别注意释放空闲链接以减少资源浪费。而如果是非持久链接则在发送响应之后立即关闭掉连接。

七、记录事物日志
当以上所有事物完成之后服务器就会在日志中添加一条描述用于记录。
自此、服务器是如何处理一条求情,以及处理过程是怎么样的就阐述完毕了。

我们不妨总结一下:

客户端请求服务器时服务器首先会判断是否接收连接、如果不接受则终止、如果接收则建立通信连接、接着开始分析请求报文对报文内容进行解析、然后处理解析出的报文内容、将请求的URI做定位、其中还会协调其它程序协作。完成之后就进行构建响应,将响应内容,类型等放入响应报文中、然后发送回客户端、最后在日志中记录该次事物

转载地址:http://blog.163.com/ny_lonely/blog/static/1889242732013116113133774/

学习Tomcat源码(1) http协议 web服务器原理

HTTP是一种协议,允许web服务器和浏览器通过互联网进行发送和接受数据,它是一种请求和响应协议,客户端请求一个文件而服务器响应请求。 HTTP请求 一个HTTP请求包括三个组成部分:  方法...

嵌入式Web服务器学习之HTTP协议

1 HTTP协议 HTTP协议是一种让Web服务器与浏览器(客户端)通过Internet发送与接收数据的协议。它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。它是一个请求、...

2014年12月20日 javaweb学习 WEB服务器 HTTP协议

Web服务器常用配置  HTTP协议 web开发 ------ 网站制作  互联网上资源两类:静态、动态 静态资源:固定数据文件(图片、文本、音频、视频、静态网页文件 html) 动态资源...

Java Web学习总结(21)——http协议响应状态码大全以及常用状态码

http协议响应状态码大全以及常用状态码 当我们在浏览网页或是在查看服务器日志时,常会遇到3位数字的状态码,这3位数字是什么意思呢?其实,这3位数字是HTTP状态码,用来表示网页服务器HTTP...

【JAVA WEB】学习笔记——HTTP协议

C/S模式和B/S模式 客户端和服务器B/S模式:客户端与服务器一问一答(通讯)遵循:HTTP协议 HTTP概念: HTTP,(超文本传输协议),它是TCP/IP协议中的一个应用层协议。 HTTP...

HTTP协议头访问WEB服务器

  • 2012年02月16日 15:24
  • 55KB
  • 下载

Web服务器 http协议

  • 2012年04月26日 10:41
  • 14.96MB
  • 下载

HTTP学习笔记之二——Web服务器

目前,比较流行的Web服务器开源软件如Apache等。Web服务器的作用是接收来自客户端的请求并作出相应的响应,为客户端提供某种服务,如资源请求。 首先来看一个用perl脚本写的非常简单的Web服务...

TCPIP: Web服务器和HTTP协议

HTTP: HyperText Transfer Protocal: 超文本传输协议 带超链接 Web:     http/0.9:仅支持纯文本(超链接),ASCII     html: Hy...

基于Http协议的Web服务器

本篇博客通过自己建立Http服务器并且结合MySql来实现Web通信,具体代码详见GitHub: https://github.com/YuanHei/HTTPD 在此整理其运行显示界面 1.首...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HTTP协议学习(四)——Web服务器
举报原因:
原因补充:

(最多只允许输入30个字)