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.记录事务日志