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学习总结01—操作系统与硬件介绍(原创)

      在计算机中,分为以下结构,运算器,控制器,存储器,输入、输出设备,运算器和控制起的整个就形成了中央处理器(称作为CPU),而cpu的功能就是提供运算,运算的数据都是经由控制器而来,控制器其实是往主存储器中取得数据,内存中的数据是由用户来输入的,其运算的结果通过控制器存储在内存当中,之后可以根据用户的指令输出在一个设备当中(例如显示器),我们都知…

    Linux干货 2016-10-29
  • 马哥教育网络班21期-第4周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。     cp -R /etc/skel /home/tuser1     chmod g-rwx,o-r…

    Linux干货 2016-08-03
  • Linux命令帮助的获取

    帮助命令 1. 使用帮助命令和帮助选项来获取帮助 2. 使用man来查看命令使用手册(manual) 3. 使用info来查看命令的信息页 4. 程序自身的帮助文档(README/INSTALL/ChangeLog) 5. 程序官方文档(官方站点:Documentation) 6. 发行版的官方文档…

    Linux干货 2016-06-01
  • LVS详解及拓扑具体实现

    LVS:Linux Virtual Server Linux Cluster:集群,为解决某个特定问题将多台主机组织起来,满足同一个需求; 单台主机处理能力有限,包括cpu、IO、内存、带宽等资源,无法满足客户端请求;把用户的请求分散到多个不同的服务器,分摊压力; 集群的类型: LB:Load Balancing,负载均衡集群;负载均衡器,或调度器、分发器;…

    Linux干货 2016-10-28
  • Linux软件管理(rpm,yum)

    Linux的应用程序安装提供了两中格式的软件包:一种是软件开发者直接提供的源码包;另一种是发行版厂商提供事先编译好打包的软件包;用户需要根据需要来选择何种方式安装软件,作为系统管理运维人员,要想合理应用,必须熟悉这两者之间的内在联系以及各自的特性和差异; *软件包管理工具)   — RPM软件包管理工具  — YUM软件包前端管理工具 软…

    Linux干货 2016-08-29
  • 计算机的组成及功能

    计算机的组成及功能 计算机由CPU、存储器、输入设备、输出设备等部件组成。 CPU:为计算机的中央处理器,是计算机的核心部分,由运算器和控制器组成。 运算器:CPU中用于进行算术运算和逻辑运算的部件。 控制器:整个CPU的指挥中心,控制程序中指令读取、解析并产生相应的操作控制信息保证各程序的有序执行。 存储器:计算机中用来存储数据、程序等信息的部件,并在需要…

    Linux干货 2017-07-02

评论列表(1条)

  • stanley
    stanley 2015-05-04 18:08

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