与http协议相关的基础知识

相关的内容:http概念、版本、工作模式、web资源、开源实现(动、静态资源请求与响应)、httpd的特性、httpd功能、httpd的程序环境

http协议:
    Hyper-Text Transfer Protocol,超文本传输协议;

HTML:Hyper-Text Marked Language,超文本标记语言;

http的版本:0.9,1.0,1.1

0.9:最原始的版本

功能:

Method:GET,PUT;

1.0:

功能:

MIME:Multipurpose Internet Mail Extensions,多用途互联网邮件扩展;
            Cache:缓存;CDN
            Method:GET,PUT,POST,DELETE,HEAD,TRACE,CONNECT,OPTIONS;
                GET:请求获取指定的资源;
                PUT:向指定的位置上传资源的最新版本;
                POST:用于实现表单认证,在资源之后附加相关数据;
                DELETE:请求服务器删除被明确标识的资源;
                HEAD:与GET方法相同,都是向服务器申请获取资源,但HEAD方法仅向服务器请求响应消息的首部元信息;
                TRACE:请求服务器回送收到的请求信息;用于测试或者故障诊断;
                CONNECT:保留,留待将来使用;
                OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项以及请求资源可以使用的方法;

1.1:

功能:

延续了1.0的功能,并1、强化了缓存功能; 2、持续连接机制:keepalive,也称持久连接,长连接;

工作模式:

http协议的工作模式:request/response模式;
    一次完整的http事务:请求<-->响应;

客户端请求资源,服务器响应报文

一次完整的http通信,包括一次请求及对应于此次请求的响应;

并发响应模型:
        单进程IO模型:仅有一个进程用于处理和响应客户端请求,每次只能处理和响应一个客户端,串行响应模型;
        多进程IO模型:同时启动多个进程,每个进程只能处理和响应一个客户端请求;
        复用的IO模型:每个进程可以同时处理并响应多个客户端的请求;
        多线程的IO模型:每个进程可以生成多个线程,每个线程可以响应一个用户请求;
        事件驱动的IO模型:每个进程直接处理并响应多个客户端的请求;其中采用事件通知机制;
        复用的多进程IO模型:启动M个进程,且每个进程可以生成N个线程,每个线程可以处理并响应一个客户端的请求;M*N个客户端;
        复用的事件驱动的IO模型:启动M个进程,每个进程都是基于事件驱动的方式直接处理并响应多个客户端的请求;

web资源(分类、资源请求过程、资源标识符、资源映射路径)

分类:

静态资源:
            服务器会根据客户端的请求直接将资源原封不动的响应给客户端的资源;
                html文档
                图片
                视频片段,音频片段
                纯文本
                css
                ...

动态资源:
            通常是由某种编程语言编写的程序文件,在服务器上经过某种特定方式执行之后生成相应的html页面,服务器将程序运行生成的html页面响应给客户端的资源;

服务器端动态资源:
                php脚本
                jsp程序
                .NET程序
                python脚本
                ruby脚本
                C/C++程序

客户端动态资源:
                javascript脚本
                Servlet
                ActiveX

资源请求过程:

1.建立TCP连接
        2.接收请求:将客户端发送来的报文经过通信子网的解封之后,将其放置于用户空间中相应的应用程序所在的内存空间中;
        3.分析处理请求:通过读取报文的http协议首部和body部分,获取客户端请求的资源的具体信息;
        4.访问资源:通过特定的IO方式从磁盘等IO设备上加载客户端请求的资源;
        5.构建响应报文:将加载的资源使用特定协议予以封装;
        6.发送响应报文:
        7.记录日志信息:

资源标识符:

URL:Uniform Resource Locator,统一资源定位符;
            URL是互联网上用来描述web资源的定位方式的一组具有特定格式的字符串;
            URL一般有三个部分:
                1.协议:资源的提供方式或访问方式;
                    可用的协议:https,http,ftp,ssh,mailto,gopher,...
                2.主机标识:可以使用主机的FQDN,也可以使用IP地址;
                3.资源存放的路径:相对于主机的存放路径;使用某种特定方式实现的映射路径,用于标识资源的具体位置;此路径是从根开始出发并标识的路径,根是web服务的根,而并不是文件系统的根;

URL通用标准格式:
                    [scheme://][Username:[email protected]]Server[:port][/PATH/TO/RESOURCE][?PARAMETERS=VALUE&&...][#FLAG]

资源映射路径:

chroot机制:

如:
            /var/www/html/a.html (根文件系统上的路径)

/var/www/html/ ----> / (web服务的路径)

DocumentRoot /var/www/html/ (映射web根目录的指令)

http://server/a.html

web服务器的资源路径的映射方式:
                1.DocumentRoot
                2.Alias
                3.VirtualHost DocumentRoot
                4.用户的docroot
                ...

开源实现(动、静态资源请求与响应)

实现静态资源请求的处理和响应:
        httpd(Apache)
        nginx(Engine X)
            Tengine
        lighttpd

实现动态资源请求的处理和响应:应用程序服务器;
        JSP:
            Tomcat
            Weblogic
            Websphere
            Jboss
            Glassfish
        PHP:
            php
            php-fpm
        Python:
            python
        .NET:
            IIS

httpd的特性:

高度模块化:Core + Modules
    DSO:Dynamic Shared Object,动态共享对象;可以实现模块的动态装载和卸载;
        模块分为两类:
            静态模块:static module,编译源代码时,直接编译至核心中的模块;如果想要更换静态模块,则必须要换核心文件;所有只有在重启服务进程之后,才能生效;

动态模块:可以基于DSO方式动态装载和卸载,改变配置操作后,仅需要重载配置文件即可生效;
                MPM:Multipath Processing Modules,多道处理模块;用来设定httpd进程的并发响应模型;
                    prefork:多进程IO模型;
                        1.一个主进程,多个子进程;
                        2.主进程用于管理子进程,创建套接字,接收客户端请求,并将客户端请求派发给子进程处理;
                        3.子进程负责处理客户端请求及构建和发送响应报文;
                        4.一个子进程仅能处理和响应一个客户端的请求;
                        5.httpd默认的MPM模块;

worker:复用的多进程IO模型(多进程多线程)
                        1.一个主进程,多个子进程;
                        2.主进程用于管理子进程,创建套接字,接收客户端请求,并将客户端请求派发给子进程处理;
                        3.子进程负责管理其内部的各线程;
                        4.线程负责处理客户端请求及构建和发送响应报文;
                        5.一个线程仅能处理和响应一个客户端的请求;

event:复用的IO模型(事件驱动的多进程模型)
                        1.一个主进程,多个子进程;
                        2.主进程用于管理子进程,创建套接字,接收客户端请求,并将客户端请求派发给子进程处理;
                        3.子进程负责处理客户端请求及构建和发送响应报文;
                        4.一个子进程可以处理和响应多个客户端的请求;

注意:event模型在httpd-2.0之前不支持;在httpd-2.2版本中仅用作测试;只有在httpd-2.4中才被定义为建议使用的模型;

在CentOS 6中,通过rpm包仅能安装httpd-2.2版本,event模型是测试模型,不支持DSO动态装载和卸载;
                        在CentOS 7中,通过rpm包能安装httpd-2.4版本,event模式为"production ready",并且支持DSO动态装载和卸载;

httpd的功能:
    支持CGI(Common Gateway Interface);
    虚拟主机:Virtual Host
        虚拟主机的标识方式:
            IP + PORT + FQDN
    反向代理:Reverse Proxy
    负载均衡集群:
        基于流量,bytraffic
        基于业务,bybusiness
        基于请求,byrequest
    路径名称的别名的设置
    身份验证:
        basic
        digest
    支持丰富的第三方模块;

程序环境:

CentOS 6:
    程序构成:
        httpd:主程序包
        httpd-tools:工具包
        httpd-manual:离线帮助文档

程序环境:
        /etc/httpd/conf/httpd.conf:httpd主配置文件;
        /etc/httpd/conf.d/*.conf:片段配置文件;
        /etc/rc.d/init.d/httpd:httpd服务的启动脚本;
            /etc/rc.d/init.d/httpd start|stop|reload|restart
            servcie httpd start|stop|reload|restart
        /etc/sysconfig/httpd:/etc/rc.d/init.d/httpd的配置文件;
        /usr/lib64/httpd/modules:动态模块的存放路径;
            /etc/httpd/modules --> /usr/lib64/httpd/modules
        /etc/httpd/conf/magic:实现MIME功能的配置文件;
        /var/log/httpd:httpd存放日志文件的路径;包括访问日志和错误日志;
            /etc/httpd/logs --> /var/log/httpd
        /var/run/httpd:存放httpd主进程PID的文件;
            /etc/httpd/run --> /var/run/httpd
        /var/www/html:默认的web站点的文档根目录的映射路径;

可执行程序文件:
        /usr/sbin/httpd:启动MPM的prefork模型的核心程序文件;
        /usr/sbin/httpd.event:启动event模型;
        /usr/sbin/httpd.worker:启动worker模型;
        /usr/sbin/apachectl:服务控制命令,用于启动或停止服务的命令;

CentOS 7:
    httpd-2.4
    程序构成:
        httpd:主程序包
        httpd-tools:工具包
        httpd-manual:离线帮助文档

程序环境:
        /etc/httpd/conf/httpd.conf:httpd主配置文件;
        /etc/httpd/conf.d/*.conf:片段配置文件;
        /usr/lib/systemd/system/httpd.service:启动服务时使用的Unit File;
            systemctl start|stop|restart|reload httpd.service
        /etc/sysconfig/httpd:/etc/rc.d/init.d/httpd的配置文件;
        /usr/lib64/httpd/modules:动态模块的存放路径;
            /etc/httpd/modules --> /usr/lib64/httpd/modules
        /etc/httpd/conf/magic:实现MIME功能的配置文件;
        /var/log/httpd:httpd存放日志文件的路径;包括访问日志和错误日志;
            /etc/httpd/logs --> /var/log/httpd
        /var/run/httpd:存放httpd主进程PID的文件;
            /etc/httpd/run --> /var/run/httpd
        /var/www/html:默认的web站点的文档根目录的映射路径;

可执行程序文件:
        /usr/sbin/httpd:
            在httpd-2.4版本中,MPM支持DSO机制,每个MPM模型都有一个对应的模块;
                /usr/lib64/httpd/modules/mod_mpm_prefork.so
                /usr/lib64/httpd/modules/mod_mpm_worker.so
                /usr/lib64/httpd/modules/mod_mpm_event.so
        /usr/sbin/apachectl:服务控制命令,用于启动或停止服务的命令;

原文地址:http://blog.51cto.com/weidehong/2117781

时间: 2024-10-25 15:02:34

与http协议相关的基础知识的相关文章

操作系统相关硬件基础知识

http://blog.csdn.net/oqq_5518/article/details/35232097 相关知识:数字逻辑电路.计算机组成原理. 操作系统 开关呈开启状态,给予一定的电压,通电,1. 开关呈关闭状态,断电,0. 运算器.控制器.存储器.输入设备.输出设备 利用控制位实现线路复用,利用寄存器解决线路复用带来的数据覆盖问题(暂存). ROM: RAM:内存 中断机制解决CPU不断进行对IO设备轮询的问题,减少CPU的中断次数,提高性能. 北桥(高速总线控制器):内存 现在的内存

qt绘图相关的基础知识

近期,从新提升一下软件平台中的组态部分,图形组态是最直观的界面操作入口,设计好,提高软件的使用效率.和数据可视化相比,图形组态更能说明业务逻辑关系. Qt绘图知识主要由三大部分:普通2D绘图;图形视图,动画相关,3D绘图. 下面是主要知识基础点: 一 2D绘图 1.1基本绘制与填充 1.2坐标系统 1.3组合绘制:文字,路径,图像 1.4双缓冲绘图 就是在绘制时,先将所有内容都绘制到一个绘图设备上,然后将整个图像绘制到部件上显示出来.使用双缓冲绘图,可以避免显示时闪烁现场. 1.5其它相关知识点

python相关的基础知识分享

今日面试,,才发现lambda和fibonacci都忘了怎么写,一年半载没有频繁的用py,以往的兴趣因生活的忙碌而显得生疏了,还好,之前学习整理的文档都放在了网站上,以备查验. 分享出来解决方案: http://www.pcswo.com/static/file/python/basis/function/generator-eg.py >>> m = lambda x,y,z: (x-y)*z >>> print(m(3,1,2)) 4 >>> de

做马戏团demo所学相关u3d基础知识2

a.要获取对方脚本组件上的值,要先获取对象. b." cd -= Time.deltaTime;"是倒计时. c." Random.Range(-0.5f,0.5f)"随机数. 原文地址:https://www.cnblogs.com/xiaomao21/p/8267630.html

TCP/IP网络协议基础知识集锦[转]

引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP协议簇是由OSI七层模型发展而来的,之所以存在OSI互联参考模型主要有以下几点好处: 1.用于解决不同厂商的设备互联问题:即兼容性考虑; 2.层次化结构独立性强;可扩展性强; 3.统一标准可以方便学习; TCP/IP模型 TCP/IP模型与OSI模型的相互关系如下图所示: 注释 1.应用层:与OSI的应用层.表示层.会话层相对应,主要作用是

网络基础知识---Roberts协议

Robots协议(也称为爬虫协议.机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取. Robots协议是网站出于安全和隐私考虑,防止搜索引擎抓取敏感信息而设置的.搜索引擎的原理是通过一种爬虫spider程序,自动搜集互联网上的网页并获取相关信息.而鉴于网络安全与隐私的考虑,每个网站都会设置自己的Robots协议,来明示搜索引擎,哪些内容是愿意和允许被搜索引擎收录的,哪些则不允许

【RL-TCPnet网络教程】第35章 FTP文件传输协议基础知识

第35章      FTP文件传输协议基础知识 本章节为大家讲解FTP(File Transfer Protocol,文件传输协议)的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) 35.1  初学者重要提示 35.2  FTP基础知识参考资料 35.3  FTP基础知识点 35.4  总结 35.1  初学者重要提示 FTP文件传输协议在实际项目中有比较重要的实用价值,需要初学者对FTP的基础知识也有个认识. 35.2  FTP基础知识参考资料 大家可以从以下地址获得FTP

XML的相关基础知识分享(二)

前面我们讲了一下XML相关的基础知识(一),下面我们在加深一下,看一下XML高级方面. 一.命名空间 1.命名冲突 XML命名空间提供避免元素冲突的方法. 命名冲突:在XML中,元素名称是由开发者定义的,当两个不同的文档使用相同的原俗名时,就会发生命名冲突.例如:下面这个XML文档携带者某个表格中的信息: 1 <table> 2 <tr> 3 <td>Apples</td> 4 <td>Bananas</td> 5 </tr&g

【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识

第38章      TFTP简单文件传输基础知识 本章节为大家讲解TFTP(Trivial File Transfer Protocol,简单文件传输协议)的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) 38.1  初学者重要提示 38.2  TFTP基础知识参考资料 38.3  TFTP基础知识点 38.4  总结 38.1  初学者重要提示 TFTP简单文件传输协议在实际项目中有比较重要的实用价值,需要初学者对TFTP的基础知识也有个认识. 38.2  TFTP基础知识