Http服务基础原理
http服务相关解释
http : Hyper Text Transfer Protocol, 80/tcp
超文本传输协议,基于tcp传输协议的80端口传输
html: Hyper Text Markup Language 超文本标记语言,编程语言.(和普通文本不同的是带各种标签使得浏览器能够解析成特定样式)
MIME: 多用途互联网邮件扩展 /etc/mime.types
格式: major/minor text/plain text/html
每个值包括一级 类型和二级类型,预定义的类型,也可自定义类型
http协议介绍
http/0.9 原型版本,只有一个命令GET 服务器只能回应HTML格式字符串,不能回应别的格式
http/1.0 支持cache MIME,method
每个TCP连接只能发送一个请求,发送数据完毕,连接就关闭.如果还要请求其它资源,就必须再次新建一个TCP连接
支持返回多种类型的数据,而不仅仅是HTML格式字符串
服务器一般是以文件后缀名来设置返回数据类型,如果没有文件后缀名服务器就会首先获取一下返回文件的文件类型
http/1.1
引入了持久连接,即建立一个TCP连接后默认不关闭,可以被多个http请求复用,如果在一定时间内客户端没有发送任何请求再断开TCP连接.
引入了管道机制,即在同一个TCP连接中,客户端可以同时发送多个HTTP请求
在同一个TCP连接里,所有的数据通信都是按照次序进行的,服务器只能顺序处理回应,前面的回应慢,就会造成许多请求排队.造成对头堵塞
http/2.0
头信息和数据体都是二进制,称为头信息帧和数据帧
复用TCP连接,在一个连接里,客户端和服务器可以同时发送多个请求或者回应而且可以不按照顺序一一对应
引入头信息压缩机制(header compression),头信息使用gzip或compress压缩 后再发送;客户端和服务器同时维护一张头信息表,所有字段都会存入这个 表,生成一个索引号,不发送同样字段,只发送索引号,提高速度
HTTP工作机制
工作机制:
http请求:http request
http响应:http response
一次http事务:请求<-->响应
Web资源:web resource
一个网页由多个资源构成,打开一个页面,会有多个资源展示出来,但是每个资 源都要单独请求.因此,一个“Web 页面”通常并不是单个资源,而是一组资源的集合
提高HTTP连接性能
并行连接:通过多条TCP连接发起并发的HTTP请求
持久连接:keep-alive,长连接,重用TCP连接,以消除连接和关闭的时延,以事 务个数和时间来决定是否关闭连接
管道化连接: 通过共享TCP连接发起并发的HTTP请求
复用的连接: 交替传送请求和响应报文(实验阶段)
串行连接(一个TCP连接对应一个HTTP请求)

并行连接(同时建立多个TCP连接,每个TCP连接承载一个HTTP请求)

持久连接(多个HTTP请求共用一个TCP连接)

管道化持久连接(在同一个TCP连接中同时并发的发起多个HTTP请求)

URI 统一资源标识符,由URL和URN组成
URN 统一资源名称 (资源的名称)
URL 统一资源定位符 服务器资源的唯一访问路径
Web访问响应模型
1.单进程IO模型
启动一个进程处理用户请求,而且一次只能处理一个,多个请求被串行响应
2.多进程IO模型
并行启动多个进程,每个进程响应一个连接请求
3.IO复用模型
多线程模型:一个进程生成N个线程,每线程响应一个连接请求
事件驱动:一个进程处理N个请求
4.复用的多进程IO模型
启动M个进程,每个进程响应N个连接请求,同时接收M*N 个请求
HTTP协议首部
首部的分类:
通用首部: 请求报文和响应报文两方都会使用的首部
Date: 报文的创建时间
Connection:连接状态,如keep-alive, close
Via:显示报文经过的中间节点(代理,网关)
Cache-Control:控制缓存,如缓存时长
MIME-Version:发送端使用的MIME版本
Warning:错误通知
请求首部: 从客户端向服务器端发送请求报文时使用的首部.补充了请求的附 加内容、客户端信息、请求内容相关优先级等信息
Accept:通知服务器自己可接受的媒体类型
Accept-Charset: 客户端可接受的字符集
Accept-Encoding:客户端可接受编码格式,如gzip
Accept-Language:客户端可接受的语言
Client-IP: 请求的客户端IP
Host: 请求的服务器名称和端口号
Referer:跳转至当前URI的前一个URL
User-Agent:客户端代理,浏览器版本
响应首部:从服务器端向客户端返回响应报文时使用的首部.补充了响应的 附加内容,也会要求客户端附加额外的内容信息
实体首部:针对请求报文和响应报文的实体部分使用的首部.补充了资源内 容更新时间等与实体有关的的信息
Allow: 列出对此资源实体可使用的请求方法
Location:告诉客户端真正的实体位于何处
Content-Encoding:对主体执行的编码
Content-Language:理解主体时最适合的语言
Content-Length: 主体的长度
Content-Location: 实体真正所处位置
Content-Type:主体的对象类型,如text
缓存相关:
ETag:实体的扩展标签
Expires:实体的过期时间
Last-Modified:最后一次修改的时间
扩展首部
Cookie解释
使用 Cookie 的状态管理Cookie 技术通过在 请求和响应报文中写入 Cookie 信息来控制客户端的状态.Cookie 会根据从服 务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端 保存Cookie.当下次客户端再往该服务器发送请求时,客户端会自动在请求报 文中加入 Cookie 值后发送出去.服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息
HTTP请求处理的详细过程
在浏览器中输入网址到展示出网页的整个流程
1.浏览器通过UDP协议向DNS服务器发送请求,把浏览器地址栏中主机名转换成对应的IP地址
2.客户端通过ARP协议发送广播消息通过获取到的服务器的IP地址得到服务器的MAC地址
3.有了目标主机的IP地址和MAC地址后,通过TCP协议就可以封装第一个SYN的同步标志位数据包发送给服务端
4.经过TCP三次握手之后,客户端和服务端成功建立一个连接会话
5.浏览器封装http请求报文传给TCP,由TCP对数据报文进行切包,把一个一个的数据包通过tcp连接传输给服务端
6.服务端对接收到的请求报文进行解析,并获取请求的资源以及方法等相关信息,对请求进行处理
7.访问资源 服务器根据报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源或者动态运行后生成的资源
8.构建响应报文 主要包含响应状态码 响应首部 响应主体
9.发送响应报文
10.记录事务日志
Http服务基础原理的更多相关文章
- DNS服务基础原理介绍
FQDN 全称域名 localhost(主机名或者是别名).localdomain(域名) FQDN=主机名.域名 根域 . 顶级域名 .com .n ...
- 【一起学源码-微服务】Hystrix 源码一:Hystrix基础原理与Demo搭建
说明 原创不易,如若转载 请标明来源! 欢迎关注本人微信公众号:壹枝花算不算浪漫 更多内容也可查看本人博客:一枝花算不算浪漫 前言 前情回顾 上一个系列文章讲解了Feign的源码,主要是Feign动态 ...
- OpenStack的基础原理
OpenStack的基础原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其 ...
- linux web服务基础知识,dns
#web服务基础知识c/s 客户端/服务器b/s 浏览器/服务器 nginx > web server 服务端浏览器 > web client 客户端 #dns解析 ...
- Hadoop基础原理
Hadoop基础原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 业内有这么一句话说:云计算可能改变了整个传统IT产业的基础架构,而大数据处理,尤其像Hadoop组件这样的技术出 ...
- APPcrawler基础原理解析及使用
一.背景 一年前,我们一直在用monkey进行Android 的稳定性测试 ,主要目的就是为了测试app 是否会产生Crash,是否会有ANR,页面错误等问题,在monkey测试过程中,实现了脱离Ca ...
- zz《分布式服务架构 原理、设计与实战》综合
这书以分布式微服务系统为主线,讲解了微服务架构设计.分布式一致性.性能优化等内容,并介绍了与微服务系统紧密联系的日志系统.全局调用链.容器化等. 还是一样,每一章摘抄一些自己觉得有用的内容,归纳整理, ...
- Web服务基础介绍
Web服务基础介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.正常情况下的单次web服务访问流程 博主推荐阅读: https://www.cnblogs.com/yinzh ...
- 云小课|MRS基础原理之MapReduce介绍
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:MapReduce ...
随机推荐
- 设计模式-行为型模式,python 中介者模式
中介者模式 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行 ...
- Spring task定时任务执行一段时间后莫名其妙停止的问题
前因: 我写了一个小项目,主要功能是用Spring task定时任务每天定时给用户发送邮件.执行了几个月一直没有问题,前几天,莫名其妙的突然不再发送邮件了. 只好花费一些时间来查看到底是什么原因造成的 ...
- SQLServer最耗资源时间的SQL语句
作者kolachen http://blog.sina.com.cn/s/blog_63f3e0060102vcm0.html 先拷过来了,等有空再研究一下 执行最慢的SQL语句 SELECT (to ...
- 【zheng环境准备】安装redis
1.下载源码,解压缩后编译源码 wget http://download.redis.io/release/redis-2.8.3.tar.gz tar -xzf redis-.tar.gz cd r ...
- 【本周面试题】第2周 - js单线程和异步相关问题
硬性知识点考察: 为什么js是单线程的? 因为js设计最初是为了操作dom而生,如果是多线程的,当多个线程同时修改一个dom时就会产生冲突,所以设计成单线程,一次只能做一件事. 既然是单线程为什么要有 ...
- VI/VIM 无法使用系统剪贴板(clipboard)?(Ubuntu&Mac OS X已解决)
在 Ubuntu/Mac OS X 中使用VI/VIM时,发现无法使用系统的剪贴板. Ubuntu 上网一查,原来是少装了几个东西. 使用如下命令,安装相关的包.安装成功后,就可以使用系统剪贴板了. ...
- python 中的 print 函数与 list函数
print() 函数: 传入单个参数时默认回车换行,关键词 end 可以用来避免输出后的回车(换行), 或者以一个不同的字符串结束输出. >>> a, b = 0, 1 >& ...
- vmware虚拟的ubuntu18.04死机,尝试关闭时关机报“虚拟机xxx繁忙”
找到虚拟机文件所在目录 打开vmware.log,第一行,找pid到pid=xxx,这就是CPU进程的id. 打开资源监视器,选CPU选项卡,找到这个PID,右键,结束进程. 再打开vmware尝试启 ...
- cordova 内部API 用ssl https,报错
环境:node6.10.1 cordova 6.x, ionic 2.2.1 用cordova/ionic 建立的app我们的api 地址要用https,做了安全加密之后,按照正常的流程,打包,然后跑 ...
- ES6:export default 和 export 区别
export default 和 export 区别: 1.export与export default均可用于导出常量.函数.文件.模块等 2.你可以在其它文件或模块中通过import+(常量 | 函 ...