http协议简介

    http:Hyper Text Transfer Protocol,超文本传输协议。是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

    html:Hyper Text Mark Language,超文本标记语言。标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。

    html文本框架:

            <html>
                <head>
                    <title>TITLE</title>
                </head>
                <body>
                    <h1>H1</h1>
                        <p></p>
                    <h2>H1</h2>
                        <p> <a href="admin.html">ToGoogle</a> </p>
                </body>
            </html>

    html文档的生成方式:

        静态:直接编写

        动态:编程语言编写的程序可输出html格式的结果,如,php,jsp,asp,.net

        CGI:通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了客户端和服务器程序之间传输数据的一种标准。

    http首部分为三类:通用首部,请求首部,响应首部

        通用首部:

            Connection:定义C/S之间关于请求、响应的有关选项

            Cache-Control:缓存控制

        请求首部:

            Client-IP:客户端IP地址
            Host:请求的主机
            Referer:指明了请求当前资源原始资源的URL,可做防盗链控制
            User-Agent:用户代理
            Accept:服务端能够发送的媒体的类型
            Accept-Charset:可发送的字符集
            Accept-Encoding:可发送的编码方式
            Accept-Language:可发送的语言
            条件式请求;安全相关请求

    响应首部:

            Age:从最初创建开始,响应持续时间
            Server:向客户端说明自己的程序名称和版本
            协商首部:
                Vary:首部列表,服务器会根据列表中的内容挑一个最适用的版本发送给客户端
            跟安全相关:
                WWW-Authentication
                Set-Cookie

 实体首部:

            Location:资源的新位置
            Allow:允许对此资源使用的请求方法
            内容相关的首部:
                Content-Encoding:编码方式
                Content-Language:主体最适宜使用的自然语言
                Content-Length:主体的长度或尺寸
                Content-Location:资源实际所处的位置
                Content-Type:主体的对象类型
            缓存相关:
                Etag:与实体相关的实体标记
                Expires:实体不再有效,需要再次获取日期和时间
                Last-Modified:实体最后一次被修改的时间

扩展首部:非标准首部,可由程序猿自行创建,如:X-Forward-for,X-Via

http协议请求报文

        <method><request-URL><version>
        <HEADERS>
        <entity-body>

http协议简介

    http协议响应报文格式

        <version><status><reason-phrase>
        <HEADERS>
        <entity-body>

http协议简介

    解释:sp(Space)空格符;cr ( carriage return )回车符;lf(line feed)换行符。

        <method>:请求方法

        <request-URL>:请求的资源,可以是相对路径,如/image/log.jpg,也可以是绝对路径

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

        <headers>:各种可以使用的首部

        <status>:状态码

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

        注意:http协议是无状态,stateless;无连接

http方法:

    GET:从服务器端获取数据,请求获取一个资源
    HEAD:跟GET近似,但其不需要服务响应请求的资源,而返回响应首部
    POST:基于HTML表单向服务器提交数据,服务通常需要存储此数据;(位置:通常为关系型数据库)
    PUT:与GET相反,向服务器发送资源,服务器通常需要存储此资源;(位置:通常为文件系统)
    DELETE:删除URL指向的资源
    OPTIONS:探测服务器端对请求的URL所支持使用的请求方法
    TRACE:跟一次请求中间所经过的代理服务器、防火墙或网关等

http状态码:

    1XX:信息性状态码
    2XX:成功状态码,如200,ok;201,created
    3XX:重定向类状态码;
        301,Moved Permanently,永久重定向;
        302,临时重定向,会在响应报文中使用“Location:新位置”,
        304,Not Modified
    4XX:客户端类错误
        403:请求被拒绝,Forbidden
        404:Not Found
        405:Method Not Allowed
    5XX:服务器类的错误
        500:Internal Server Error,服务器内部错误,语法错误等
        502:Bad Gateway,代理服务器从上游服务器收到一条伪响应
        503:Service Unavailable,服务暂时不可用

web服务器:
            理解用户请求的资源格式不仅仅是纯html格式的文档
                静态资源
                动态资源:
                    application/php

        web资源:
            资源类型:MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展,是设定某种扩展名的文件用一种应用程序来打开的方式类型,HTTP协议中也使用了MIME的框架,标准被扩展为互联网媒体类型。

                major/minor
                    text/html
                    text/plain
                    image/jpeg
                    image/gif
                    vedio/mpeg4
                    application/vnd.ms-powerpoint

            资源名称:URI (Uniform Resource Idnentifier)
                URL:描述一个特定服务器上某资源的特定位置
                    http://www.magedu.com:80/download/bash-4.3.1-1.rpm
                    分为三部分:
                        scheme(方案):http://
                        服务器:www.magedu.com:80
                        特定服务器上的资源:/download/bash-4.3.1-1.rpm

http事务:打开到关闭一个连接的过程

http协议版本:

    http 0.9:仅用于传输HTML文档

    http 1.0:引入MIME机制,从而支持多媒体数据;首部引入keep-alive(持久连接),请求到资源后不会四次挥手断开,支持缓存

    http 1.1:更多请求方法,更精细缓存控制,持久连接(persistent);

web服务器的I/O结构:

    单进程模型:串行

    多进程模型:每个进程响应一个用户请求实现并发的效果

    复用的I/O机制:一个进程生成多个线程,单个线程响应一个用户请求

    复用的I/O机制:多个线程,每个线程响应多个用户请求

原创文章,作者:秦,如若转载,请注明出处:http://www.178linux.com/9245

(0)
上一篇 2015-11-18 11:09
下一篇 2015-11-18 11:11

相关推荐

  • 优云老王(三)谈埋点:人生处处有埋点

    说到埋点,的确是用户最感兴趣的话题之一,优云Web产品在内测阶段便收到了用户的各种反馈,反复问我无码埋点是怎么做的。在此我专门与大家聊聊埋点以及各种实现方案的利弊。 1、埋点的来历 先说下埋点的来历,其实在互联网没流行起来之前,埋点并不是用来分析用户行为的,技术人员为了解决某些问题,就在代码里面加入了些行为逻辑代码,如果用户使用产品的过程中出了问题,就生成一…

    2016-09-19
  • CentOS6 ELK实现

    1 简介 我们来介绍Centos6.5基于SSL密码认证部署ELK(Elasticsearch 1.4.4+Logstash 1.4.2+kibana3),同时为大家介绍如何集合如上组件来收集日志,本章的日志收集主要为大家介绍SYSTEM日志收集. 集中化日志收集主要应用场景是在同一个窗口临时性或永久性鉴定分析系统,应用等各类日志,对用户提供极大便…

    Linux干货 2017-05-17
  • vim常用快捷键

    1、vim /etc/vimrc进入配置文件 如果不知道vimrc文件在哪,可使用 :scriptnames 来查看 set nu      #行号 set tabstop=4  #一个tab为4个空格长度 set ai  #设置自动缩进 syntax on   #高亮   2、基本 空格键 向右移动一格 x 删除后面…

    2017-09-05
  • N26第五周博客作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;grep “^[[:space:]]+” /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;grep “^#[[:space:…

    Linux干货 2017-03-06
  • 图解 lvs 工作原理

    一.lvs 基本工作流程介绍  如图1,ipvsadm定义lvs服务监听的ip和port,并发送给ipvs,而ipvs是工作在netfilter的input钩子上的程序,当input链中有目标ip属于lvs服务的请求报文时,ipvs就会修改该报文的链路,使其不进入用户空间而直接转到postrouting链上,并转发给其中一台real server,…

    Linux干货 2016-10-30
  • centos7 yum源仓库网络共享

    一般yum源仓库需要两部分组成,一部分为rpm程序包,另一个就是repodata元数据组成。制作一个简单的网络共享yum源仓库,在制作网络共享服务器需要事先配备好你的yum源,以方便使用 1.安装网络共享yum源仓库服务 以ftp为例: (1)在centos7中是否有ftp,用rpm -q 对vsftpd程序包查看 [root@local…

    Linux干货 2017-04-23

评论列表(1条)

  • stanley
    stanley 2015-11-18 11:10

    这些年关注底层协议的人不多了,赞,加油!