httpd服务归纳:网络服务基础篇

一、网络传输基础

    1. 套接字:两类 

        1) Unix Sock: 一种本地文件系统 

        2) Socket: IP port (IP:port或IP.port) 

    2. 传输层协议: 

        1) 有链接的协议:TCP 

        2) 无连接的协议: UDP 

    3. 套接字类型: 

        1) TCP 套接字 

        2) UDP 套接字 

        3) raw 套接字
    4. C/S(client / server)模型:包含以下两部分

        1) 通信子网:传输层协议 

        2) 应用层协议: 如:http, https, smtp, pop, imap, ftp, ldap 

二、 HTTP协议介绍: 

    1. http: hypertext transport protocol (超文本传输协议,最早用来传输html文档)

    2. html: hypertext mark language (超文本标记语言)

    3. Client: Browser   

    4. Server: http Server  
    5. html格式的文件和CSS(Cascading Style Sheet)样式表

<html>
		<head>
			<title></title>
		</head>
		<body>
			<h1></h1>
				<p></p>
			<h2></h2>
				<p></p>
		</body>
</html>

    6. 关于动态页面: 需要在服务器端或者客户端运行脚本

    7. 一个页面中:可能会包含多个页面对象,使用URL和URI标记

        1) URI: Uniform Resource Indentifier 

        2) URL: Uniform Resource Locator 

三、 关于HTTP协议与服务; 

    1. 协议版本

        http/0.9: 1991, 仅用于传输html文档 

        http/1.0: 支持多媒体数据的处理,使用keep-alive机制,有缓存功能

        http/1.1: 拥有更多请求方法,更加精细的缓存控制,拥有持久连接 

    2. http协议特点: 

        是一种无状态协议(stateless)协议 ,一次HTTP驶入结束后,连接即行断开 

        加速方式:

            并行请求

            持久连接     

四、 HTTP报文: 

    1. HTTP事务:一次请求以及与其对应的响应 

    2. HTTP方法:GET, PUT, HEAD, POST(递交表单),DELETE 

    3. HTTP请求: request 

        HTTP请求报文: 

        报文格式: 

            <method><request-URL><version>
            <headers>
            ## 空两行
            <entity-body>

        HTTP响应:response

            HTTP响应报文: 

         报文格式: 

            <version><status><reason-phrase>
            <headers>
            ## 空两行
            <entity-body>

    4. 各元素的含义:  

       <method>: 请求方法, 希望服务器端执行的动作,如GET、HEAD、POST等

       <request-url>: 请求的资源,可以是相对路径,也是完整的URL

       <version>:协议版本,格式HTTP/<major>.<minor>,如http/1.0

       <headers>:HTTP首部

       <status>: 状态码

       <reason-phrase>:原因短语,数字状态码易读信息

       <entity-body>: 主体部分

     5. 首部 

        1) 通用首部:请求和响应都可以使用的首部 

        2) 请求首部 

            Client-IP: 客户端IP, 此时是应用层,所以还需要指

            Host: 请求的主机名和端口号,虚拟主机环境下用于不同的虚拟主机

            Referer: 请求当前资源的上一级URL

            User-Agent: 用户代理,使用什么工具发出的请求

            Accept请求首部: 用户表明客户自己更倾向于支持的能力

                Accept: 指明服务器能发送的媒体类型

                Accept-Charset: 支持使用的字符集

                Accept-Encoding: 支持使用的编码方式 

                Accept-Language: 支持使用的语言 

            条件请求首部: 

                Expect: 

                If-Modified-Since: 是否在指定时间以来修改过此资源 

                If-None-Match: 与扩展标签相关

            跟安全相关的请求首部: 

                Authorization: 客户端提交给服务端认证数据,如账号和密码 

                Cookie/Cookie2:  客户端发送给服务器端的身份标识 

        3) 响应首部

             Age: 响应持续的时间

             Server: 服务器向客户端表明,服务器程序名称版本

             协商相关响应首部: 

                Accept-Ranges: 对当前资源来说,服务器所能够接受的范围类型 

                Vary: 首部列表,服务器会根据列表中内容挑选出最适合的版本发给客户端 

             跟安全相关的响应首部; 

                Set-Cookie/Set-Cookie2: 服务器端在某客户端第一次请求时,发给的的令牌 

                WWW-Authentication: 质询,要求客户端提供账号和密码 

        4) 实体首部:用于指定实体属性

            Location: 资源的新位置 

            Allow: 允许对此实体请求的方法 (回应options请求)

            内容相关实体首部: 

                Content-Encoding: 编码格式 

                Content-Language: 编码语言 

                Content-Length: 长度 

                Content-Location: 资源重定向时候使用

                Content-Range: 内容范围 

                Content-Type: 类型 

            缓存相关内容首部:

                ETag: 实体标签

                Expires: 过期期限 

                Last-Modifed: 上一次的修改时间 

        5) 扩展首部:非标准首部,可能是由程序开发者创建 

     6. HTTP请求方法: 

        GET: 请求获取一个资源,需要服务器发送 

        HEAD: 跟GET 形似,但其不需要服务器发送资源,只传回响应首部即可 

        POST: 支持HTML表单提交,表单中包含用户填入的数据,这些数据会发送到服务器端,由服务器存储至某个位置(例如发送处理程序)

        PUT:与GET相反,向服务器写入文档, 例如发布系统 

        DELETE: 请求删除URL指向的资源 

        OPTIONS: 探测服务器端对某自愿所支持的请求方法 

        TRACE:跟踪请求要经过的防火墙,代理或者网关 

     7. HTTP状态码:

        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,服务器此时无法提供服务,但将来可能可用;

五、一次web请求的基本过程 

web service.jpg

1. 建立连接

2.  接收请求

3. 处理请求

4. 访问资源

5. 构建响应

6. 发送响应

7. 记录日志


六、Web服务器输入/输出结构:

    1.  单线程I/O结构

    2.  多线程I/O结构

    3.  复用的I/O结构:单个线程响应多个请求

    4.  复用多线程I/O结构:多个线程,每个线程响应多个请求

原创文章,作者:以马内利,如若转载,请注明出处:http://www.178linux.com/3718

(0)
以马内利以马内利
上一篇 2015-05-04
下一篇 2015-05-04

相关推荐

  • Linux终端类型

    在linux系统中,用户经常要使用各种终端和操作系统进行交互,实现用户的任务。Linux各种终端的工作方式基本都通过字符命令行的方式完成,通过终端输入命令完成相应结果。通过who命令可查看用户通过哪些终端方式连接到操作系统。通过tty命令查看当前是通过第几个tty登录的。 Linux系统的终端包含如下几种类型: 1) 物理终端 物理终端,又称控制台…

    Linux干货 2016-10-17
  • 第七周练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; 1.[root – gwx ~]#>fdisk /dev/sdb2.W…

    Linux干货 2016-12-11
  • RAID及LVM的实现

    RAID及LVM的实现 第一部分 : RAID介绍及创建 1、mdadm工具 2、创建RAID 5及删除RAID 第二部分 : LVM的实现 1、基本命令 2、LVM创建及扩容和缩减 3、LVM快照 RAID介绍及创建 1、mdadm工具 mdadm [mode] <raid device> [options] <任意块设备> [mo…

    Linux干货 2017-08-22
  • CMDB内功心法,助我登上运维之巅

    很多70、80后甚至90后都在金庸、古龙、梁羽生先生等武林大家熏陶下成长的,这么多年过去了,我的武侠梦依然不曾散去。曾几何,梦想有一天练就一身绝学,搂着小师妹花前月下,仗剑走天涯,快意人生。可每次的酣睡美梦都被班主任大书板子给抽醒,在他们的鞭策之下,浑浑噩噩的成了一位IT骚年。我们都知道武功分为内功和招式,内功是气,而招式是形,以气御形。内功深厚,会让你的招…

    系统运维 2017-01-09
  • Nginx+resin调优文档[原创]

    为什么不选择Apache/mod+resin?       前面一直使用该模式,mod_caucho暴露源码的bug一直未得到彻底的解决。因此切换到Nginx+resin平台。硬件上要求除了内存一定要足够大(建议>4G),无其它要求(当然也不能太破,呵呵)。操作系统强烈要求安装64位,32位操…

    Linux干货 2015-03-27
  • Linux发展史

    Linux发展史 操作系统出现前:   1946年第一台计算机诞生–20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式。程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片…

    Linux干货 2016-10-14

评论列表(1条)

  • stanley
    stanley 2015-05-04 18:08

    赞,tcp/ip数据流分析吊爆了