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 18:05
下一篇 2015-05-04 18:39

相关推荐

  • 网卡名称更改

    网卡是计算机进行网络通信的必须的设备。在CentOS6及其更早的系统中,网卡设备在系统中的名称命名为eth#(#为0,1,2…之类的数字)。在内核版本为3.0.0及其以后的Linux发行版中,网卡设备在系统中名称变得很长,变得不好识别以及不利于管理。为了更好的管理,我们将新的网络设备命名改为传统的命名。 网卡名称更改 在CentOS系统中操作 在RHEL7系…

    Linux干货 2016-11-23
  • 马哥教育网络班22期+第6周课程练习 忍者乱太郎喻成

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#cp /etc/rc.d/rc.sysinit /tmp方法一 vim法在vim下用 : 进入命令行模式     %s/^&nbs…

    Linux干货 2016-10-24
  • 开班第一天,新获得的技能

    新接触命令 lscpu 显示CPU信息 gedit 文件名 类似于记事本 ** 注意 这个命令适用于图形界面。 cat /proc/partition 显示分区信息 cat /proc/meminfo 显示内存大小 cat /proc/swaps 显示虚拟内存 cat …

    Linux干货 2017-02-17
  • 马哥教育网络班21期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别 集线器(HUB)是在OSI模型的第一层——物理层——连接多台主机、延长网络的设备。其主要功能是将从一个端口接收到的数据包转发给所有端口。中继器(Repeater)是将由电缆传过来的电信号或光信号调整波形和放大再传给另一个电缆的设备,提供多端口服务的中继器称作集线器。二者的主要区别是…

    Linux干货 2016-08-29
  • 正则表达式

    正则表达式:             由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符            字面意义,而表示控制或通配的功能程序支持:  grep,sed,awk,vim,less…

    2017-08-05
  • http状态码大全

    状态值:100 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。 状态值:101 服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个…

    Linux干货 2016-11-01

评论列表(1条)

  • stanley
    stanley 2015-05-04 18:08

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