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 ...
随机推荐
- windows cmd命令显示UTF8设置
windows cmd命令显示UTF8设置 在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况 ...
- js中的try/catch
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ng4.0 使用[innerHTML]动态插入的富文本如何设置样式
方法一:在css中设置样式 for CSS added to the component :host ::ng-deep mySelector { background-color: blue; } ...
- 【2017.12.12】deepin安装U盘制作,支持 BIOS+UEFI,deepin_Recovery+Win PE
U盘要求为 FAT32,MBR分区表 如果需要放 4GB 大文件,可以分两个分区,第一分区FAT32格式,放启动相关文件,第二个分区用 NTFS 格式,放其它资料. 最新 Win10 支持显示 U盘 ...
- MySQL多实例部署与优化
MySQL安装 ##上传MySQL安装包## mkdir /home/oldboy/tools -p cd /home/oldboy/tools/ ###wget -q http://mirrors. ...
- css学习_css写的位置
!!!拿到一个页面后应该先写结构再写样式 结构由大到小,由外到里 样式最好按顺序加 position .float . 颜色 背景 字体 等... 1.行内(内联)样式 2.内部样式表(按道理可 ...
- [No0000E2]Vmware虚拟机安装 苹果系统 mac OS 10.12
1.下载并安装Vmware:实验版本号:VMware-workstation-full-12.5.5-5234757:(忽略网上说的这个版本不行.可以装C盘,不过转C盘后后面都要用管理员权限运行其他软 ...
- CentOS7初始化mysql库报错
在centos7上安装mysql数据库,进行数据库初始化工作时,报错缺少data::dumper库文件,如下: 解决办法:安装autoconf库后重新初始化即可解决. yum-y install au ...
- Django:模板template(二)
将跨站请求伪造和验证码的东西记一下 CSRF Cross Site Request Forgery.跨站请求伪造 链接:GET请求:表单:POST请求 某些恶意的网站上,包含链接.表单.按钮.Java ...
- python-----双色球实现(实例1)
#输出用户指定组数的双色球信息,其中一组信息 6个红色号码获取范围(1-33),1个蓝色号码获取范围(1-16),要求一组信息中红球内号码不可重复 import randomdef get_ball( ...