HTTP协议与Apache

一、HTTP协议

1、HTTP相关技术

1.1web开发语言

http:Hyper Test Transfer Protocol应用层协议,默认端口:80/tcp

Web前端开发语言:

html:

Hyper Text Markup Language 超文本标记语言,编程语言,主要负责实现页面的结构

css:

Cascading Style Sheet 层叠样式表, 定义了如何显示(装扮) HTML 元素,比如:字体大小和颜色属性等。样式通常保存在外部的 .css 文件中,用于存放一些HTML文件的公共属性,从而通过仅编辑一个简单的 CSS 文档,可以同时改变站点中所有页面的布局和外观。

javascript:

实现网页的动画效果,但实属于静态资源

1.2MIME

MIME :

Multipurpose Internet Mail Extensions 多用途互联网邮件扩展

文件 /etc/mime.types ,来自于mailcap包

MIME格式:

type/subtype 主要类型/次要类型

1.3 URI(i) 和 URL uri

URI: Uniform Resource Identifier 统一资源标识,分为URL 和 URN

  • URN:Uniform Resource Naming,统一资源命名

示例: P2P下载使用的磁力链接是URN的一种实现magnet:?xt=urn:btih:660557A6890EF888666(只是描述了资源的名字,并没有明确该资源在哪里)

  • URL:Uniform Resorce Locator,统一资源定位符,用于描述某服务器某特定资源位置

两者区别:

  • URN如同一个人的名称,而URL代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。URN仅用于命名,而不指定地URL组成

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>


scheme:方案,访问服务器以获取资源时要使用哪种协议
user:用户,某些方案访问资源时需要的用户名
password:密码,用户对应的密码,中间用:分隔
Host:主机,资源宿主服务器的主机名或IP地址
port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号
path:路径,服务器资源的本地名,由一个/将其与前面的URL组件分隔
params:参数,指定输入的参数,参数为名/值对,多个参数,用;分隔
query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔
frag:片段,一小片或一部分资源的名字,此组件在客户端使用,用#分隔

2、HTTP工作机制

一次http事务包括:

  • http请求:http request

  • http响应:http response

Web资源:web resource, 一个网页由多个资源(文件)构成,打开一个页面,通常会有多个资源展示出来,但是每个资源都要单独请求。因此,一个"Web 页面”通常并不是单个资源,而是一组资源的集合

资源类型:

  • 静态文件:无需服务端做出额外处理,服务器端和客户端的文件内容相同

    常见文件后缀:.html, .txt, .jpg, .js, .css, .mp3, .avi

  • 动态文件:服务端执行程序,返回执行的结果,服务器端和客户端的文件内容不相同

    常见文件后缀:.php, .jsp ,.asp

提高HTTP连接性能

  • 并行连接:通过多条TCP连接发起并发的HTTP请求

  • 持久连接:keep-alive,重用TCP连接,以消除连接和关闭的时延,以事务个数和时间来决定是否关闭连接

  • 管道化连接:通过共享TCP连接,发起并发的HTTP请求

  • 复用的连接:交替传送请求和响应报文(实验阶段)

3、HTTP协议版本

主要介绍http/0.9版本、http/1.0版本以及http/1.1版本的区别
版本          区别
http/0.9    只有个GET命令,即下载命令
http/1.0    不仅有GET命令,还有POST命令,即上传命令
http/1.1    除了1.0版本有的,还支持长连接

长连接(持久连接):一次三次握手,多次四次挥手。简单理解就是,建立一个进程,可以有多次请求,用完继续使用,绿色又环保;但是可以设置默认超时时间,一般默认超时时间是15秒。、

注:0.9 只能下载

1.0 可以上传也可以下载

1.1支持长连接

4、http请求访问的完整过程

1、建立连接

2、接收请求

3、处理请求

4、访问资源

5、构建响应报文

6、发送响应报文

7、记录日志

 

5、http协议状态码分类

1xx:100-101 信息提示
2xx:200-206 成功
3xx:300-307 重定向
4xx:400-415 错误类信息,客户端错误
5xx:500-505 错误类信息,服务器端错误
常见的http协议状态码

200: 成功,请求数据通过响应报文的entity-body部分发送;OK
301: 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently
302: 响应报文Location指明资源临时新位置 Moved Temporarily
304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified
307:  浏览器内部重定向
401: 需要输入账号和密码认证方能访问资源;Unauthorized
403: 请求被禁止;Forbidden
404: 服务器无法找到客户端请求的资源;Not Found(客户端的错误,如dns找不到网页,网址输入错误等)
500: 服务器内部错误;(大概率服务器宕机了)
502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
503: 服务不可用,临时服务器维护或过载,服务器无法处理请求,比如:php服务停止,无法处理php程序
504: 网关超时

6、http请求报文

方法:

  • HEAD: 获取报文首部,主要用于确认 URL 的有效性以及资源更新的日期时间等

  • GET: 获取资源 当前网络请求中,绝大部分使用的是 GET 方

  • POST: 传输实体主体 (比如传输 用户名密码)

  • PUT: 上传文件(比如写博客)

  • PATCH: 对资源进行部分修改

  • DELETE:删除文件

  • OPTIONS:查询支持的方法(查看服务端可以支持哪些方法)

  • CONNECT:要求在与代理服务器通信时建立隧道(类似加密)

  • TRACE:追踪路径

7、系统处理http请求的工作模式

工作模式有:prefork、worker、event

prefork:多进程I/O模型,每个进程响应一个请求。简单理解就是,来一个请求,开一个进程,来一个,开一个,很浪费系统资源。

worker:复用的多进程I/O模型,多进程多线程。有一个主进程,生成多个子进程,子进程生成多个线程,每个线程响应一个请求,并发送响应请求;每个请求完成后,不主动向父进程反馈自己已完成,得等到超时之后,才返回。

event:事件驱动模型(worker的变种),centeos8的默认模型。在worker模式的基础上,添加了一个监工线程,专门监视线程是否已完成响应,完成后,为其分配其他请求。

工作模式优点缺点
prefork稳定速度慢,占用资源,不适用于高并发场景
worker相对于prefork占用内存较少,可以同时处理更多请求使用keep-alive到长连接方式,某个线程会一直被占据,即使没有传输数据,也需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。
event单线程响应多请求,占据更少的内存,高并发下表现更优秀,会有一个专门的线程来管理keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。没有线程安全控制

二、Apache介绍和特点

1、apache 功能:

  • 提供http协议服务

  • 多个虚拟主机:IP、Port、FQDN

  • CGI:Common Gateway Interface,通用网关接口,支持动态程序

  • 反向代理

  • 负载均衡

  • 路径别名

  • 丰富的用户认证机制:basic,digest

  • 支持第三方模块

2、apache特性:

  • 高度模块化:core + modules

  • DSO:Dynamic Shared Object 动态加载/卸载

  • MPM:multi-processing module 多路处理模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值