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

相关推荐

  • 文本处理工具Sed及VIM的使用

    1.文本处理工具Sed   Stream Editor 行编辑器                            图1-1 sed帮助手册  用法:      se…

    Linux干货 2016-08-10
  • bash脚本编程实例

    bash脚本编程实例 1.写一个脚本 能接受四个参数:start、stop、restart、status start:输出“starting脚本名finished.” restart:输出“restarting脚本名finished.” stop:输出“stoping脚本名finished.” status:输出“status脚本名finished.” 其他…

    Linux干货 2017-09-04
  • Linux 第八天: Linux文本编辑器vim

    Linux 第八天: (08月09日) Linux文本编辑器vim       sed 行编辑器 stream EDitor sed -n 不输出模式空间内容的自动打印sed -e 多点编辑sed -f /PATH/TO/SCRIPTFILEsed -i 原处编辑   script单地址 # 指定的行/pattern/…

    Linux干货 2016-08-11
  • Linux文件及目录管理

    Linux 文件管理 1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 目录管理类命令:mkdir,rmdir mkdir [OPTION]… DIRECTORY… -p:自动按需创建父目录; -v显示详细过程; -m MODE直接给定权限; rmdir 移除空目录 rmdir&nbs…

    Linux干货 2016-10-09
  • 第二周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。     文件管理类命令:cp、mv、rm     (1)cp:复制命令      单源复制(源文件为文本文件)    &n…

    Linux干货 2017-01-18
  • DNS相关配置

    DNS基础概念: DNS全称为Domain Name System。它作为将域名和IP地址相互映射的得一个分布式数据库,能够使人更方便的访问互联网 DNS使用TCP和UDP得53号端口 BIND是DNS得实现方式之一 named是bind程序得运行的进程名 named进程的主要运行者是named用户,为了安全起见,它的程序也应该以named用户运行 配置正向…

    Linux干货 2017-05-30

评论列表(1条)

  • stanley
    stanley 2015-05-04 18:08

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