Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 入门 > Linux入门 > 正文

Linux入门 八 web服务基础概念

时间:2014-06-03 18:28 来源:未知 作者:www.51ou.com 阅读:

我们每天都会浏览各种网站,打开不同的链接,这一切都是web在为我们提供服务。通俗的讲,web服务就是运行在服务器端的web应用程序响应客户端的请求(主要是我们的客户端浏览器)。今天我们简单介绍下web服务的基本概念,在一个整体的框架下来看web服务。

   本文的主要内容包括:

   简单概念

   http的相关概念

   http报文简析

   web服务的简单I/O结构

   web请求过程

一、简单概念

   web服务是运行在服务器端的web应用程序提供服务,客户端浏览器请求响应交互的一个过程。双方通信是通过套接字socket来进行的,在通信双方都会有一个套接字文件产生,客户端使用本机IP地址加随机端口号,服务器端使用服务器IP加监听的IP地址。双方通过TCP套接字进行通信。

   web服务基于传输层的TCP协议,因此需要建立安全的连接。如下图

   

wKioL1MoOPXQ2GSdAAC2gvqxcQQ294.jpg

左侧为客户端浏览器,右侧为服务器端。客户端浏览器发出请求,生成套接字文件,并缓存到本地,然后交给网络进行通信。通信子网经过三次握手,同服务器建立连接,服务器端收到请求后,内核获取到相关请求。用户进程(web服务进程)实现在内核中注册了自己监听的端口,生成套接字文件。内核根据注册的信息,将数据分配给不同的服务。当数据接收完成之后,tcp连接断开。web连接是一种无状态的连接。

二、http的相关概念

   http协议是web服务运行在应用程序的具体实现。http:hypertext transport protocol,超文本传输协议,在早期,仅能传输文本文件,随着版本的更新,加入了MIME功能,才实现传输图片、视频等非文本信心。http版本及功能对照如下:

http0.9 最早的版本,仅能传输文本文档
http1.0 引入了MIME,支持多媒体的数据传输,
并且支持持久连接keep-alive
有一定的缓存功能
http1.1 提供了更多的请求方法,更精细的缓存控制
,更加完善的持久连接

   MIME:Multipurpose Internet Mail Extension,最早是用于改善邮件传输的,使得邮件能够传输多媒体信息,他使用base64的编码方式,将二进制的数据编写成文本进行发送,并能放接受放还原为原来的格式。

三、http报文简析

   http每次的请求和服务器端的响应组成了一次http事务。客户端发出请求,服务器端回馈应答。这里简单分析下http的请求和应到报文。

   1、请求报文

   请求报文的简单格式

   <method> <request-URL> <version>

   <headers>

 

   <entity-body>

   

<method> 请求方法,请求服务器做的动作 GET HOST HEAD PUT 等
<request-URL> 请求的资源 可以是相对路径,
也可以是完整的url
<version> 协议版本,格式HTTP/
<major>.<minor>
http/1.0 http/1.1
<headers> HTTP首部,格式Name: Value Content-type: images/gif
<entity-body> 主体部分 请求报文一般为空

 

   <method>是客户端对服务器端发起请求使用的方法,主要使用的方法有如下表

 

GET 请求获取一个资源,需要服务器发送数据
HEAD 跟GET相似,但其不需要服务发送资源而仅传回响应首部
POST 支持HTML表单提交,表单中有用户填入的数据,
这些数据会发送到服务器端,由服务器存储至某位置
PUT 与GET相反,向服务写入文档
DELETE 请求删除URL指向的资源
OPTIONS 探测服务器端对某资源所支持的请求方法
TRACE 跟踪请求要经过的防火墙、代理或网关等
扩展的方法 LOCK、MKCOL、COPY、MOVE

请求首部,包含了丰富的信息,可以有多个同时存在,如下图

wKioL1MoREiyNjupAAIraEFrDQc043.jpg

常见的请求首部信息如下

  Client-IP 源地址IP
  Host 请求的主机名和端口号,
虚拟主机环境下用于不同的虚拟主机
  Referer

当前请求资源的url的原始资源,
比如说我们从www.baidu.com跳转过来,
那么referer就是http://www.baidu.com

  User-Agent 用户代理,通常是浏览器信息

Accept首部

用户标明客户自己更
倾向于支持的能力

Accept 指明服务器能发送的媒体类型
Accept-Charset 支持使用的字符集
Accept-Encoding 支持使用的编码方式
Accept-Language 支持使用语言
条件请求首部 Expect  
If-Modified-Since 是否在指定时间以来修改过此资源
If-None-Match 判断请求的文件是否被修改
跟安全相关的请求首部 Authorization 客户端提交给服务端的认证数据
Cookie 客户端发送给服务器端身份标识
Cookie2 cookie的升级版

2、响应报文

响应报文格式

   

<version> <status> <reason-phrase>

<headers>

 

<entity-body>

version 协议版本
status 状态码
reason-phrase 原因短语,数字状态码的易读信息
headers 首部信息
entity-body 主题部分,一般为网页信息

 

status是服务器对客户端的请求报文的回应状态码,主要有以下

1xx 信息性状态码

2xx    

成功状态码

200: OK

201: Created

3xx

重定向状态码

301:Moved Permanently, 在响应报文中使用首部
“Location: URL”指定资源现在所处的位置;

302:Found, 在响应报文中使用首部“Location: URL”指定临时资源位置;

304:Not Modified, 条件式请求中使用;

4xx

客户端类的错误

403:Forbidden,请求被服务器拒绝

404:Not Found,服务器无法找到请求的URL

405:Method Not Allowed,不允许使用此方法请求相应的URL

5xx

服务器类的错误

500:Internal Server Error,服务器内部错误;

502:Bad Gateway,代理服务器从上游收到了一条伪响应;

503:Service Unavailable,服务器此时无法提供服务,但将来可能可用;

同样的响应首部也可以同时出现多个,一般较常见的如下

Age 期限
Server 向客户端标明服务器程序名称和版本
协商首部 Accept-Ranges:对当前资源来讲,服务器所能够接受的范围类型
Vary: 首部列表,服务器会根据列表中的内容挑选出
最适合的版本发送给客户端
跟安全相关的响应首部 Set-Cookie: 服务器端在某客户端第一次请求时发给令牌
Set-Cookie2:
WWW-Authentication: 质询,即要求客户提供帐号和密码

 

除了请求首部和响应首部外,还有通用首部、实体首部、扩展首部

通用首部顾名思义,是请求和响应都可以使用的首部信息,主要包括

Connection

定义C/S之间关于请求/响应的有关选项,对于http/1.0, Connection: keep-alive

Via 显示了报文经过的中间节点
Cache-Control 缓存指示
Pragma http/1.0

感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《Linux入门 八 web服务基础概念》技术文章,《Linux入门 八 web服务基础概念》详细使用和说明,有时《Linux入门 八 web服务基础概念》可能不完善、敬请谅解!如果《Linux入门 八 web服务基础概念》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
验证码:点击我更换图片