type
status
date
slug
summary
tags
category
icon
password
术语
- Web页:由一些对象组成
对象包括:HTML文件、JPEG图像、JAVA小程序
- URL:通过URL对每一个对象进行引用
访问协议、用户名、口令字、端口等
格式:协议名/用户名:口令/主机名/路径名/端口
- 端口号
如果不特殊指出,一般采用默认端口号
HTTP
概况
超文本传输协议
- web的应用层协议
- 客户/服务器模式
- 客户端:是一个请求、接收和显示Web对象的浏览器
- 服务端:对请求进行响应,发送对象的Web服务器
- 使用TCP
- 客户端发起一个与服务器的TCP连接,建立socket指向该会话关系,端口号为80
- 服务器接受用户的TCP连接
- 在浏览器与Web服务器之间交换HTTP报文(应用层协议报文)
- TCP连接关闭
- 服务器无状态
服务器不需要维护客户端状态,不需要知道与客户端的历史信息
无状态服务器能够支持更多的客户端
HTTP连接
- 非持久HTTP
- 最多只有一个对象在TCP连接上发送
- 下载多个对象需要多个TCP连接
- 客户端
–>连接建立请求(客户端在端口号80发起一个到服务器www.???的连接)
–>连接建立确认(位于主机www.???的http服务器在80号端口等待连接,接受并通知客户端)
–>http请求(客户端向tcp连接的socket发送请求报文,报文表示客户端需要对象)
–>http响应(服务器收到报文,将对象封装在一个响应报文里,并通过socket向客户端发送)
–>对象传输
–>HTTP关闭TCP连接(非持久)
http请求总时间:一次往返round-trip-time(连接请求和确认)+一次往返(请求+等待响应)+对象传输的时间
eg.传输10个jpeg:每一个jpeg进行一次请求和响应,对这10个对象都重复一次上述步骤
- 持久HTTP
- 多个对象可以在一个在客户端和服务器之间的TCP连接上传输
- 非流水线
- 流水线
每一次请求和返回的对象只有一个
连接请求–>连接确认–>http请求–>http响应–>在前一个对象返回之后请求下一个对象–>…
已经获取10个对象的url,第一个请求发出但对象还没返回时,就发出第二个请求,再依次接受,节省时间
连接请求–>连接确认–>http请求–>…
HTTP请求报文
- ascii
人能阅读
头部行
GET /…/…
- 基本格式
首部行
Host: www.??? 主机名
User-agent: Mozilla/4.0 用户代理程序,浏览器版本
Connection: close 连接关闭
Accept-language: fr
一个额外的换行回车符
HTTP响应报文
- 基本格式
状态行
HTTP/1.1 200 OK\r\n
首部行
connection close
Date: …
Server
…
数据:如请求的HTML文件
data data data…
- 响应状态码
200 404…
用户-服务器状态:cookies
服务器有状态的例子:网页智能推荐,购物车等,服务器端需要维护用户状态
解决方法:cookies
中心:服务器维护客户端状态
四个组成部分:
- 在HTTP响应报文中有一个cookie的首部行
- 在HTTP请求报文中含一个cookie的首部行
- 在用户端系统中保留有一个cookie文件,由用户的浏览器管理
- 在Web站点后有一个后端数据库
当最初的HTTP请求到达服务器时,该Web站点产生一个唯一的ID,并以此作为索引在它的后端数据库中产生一个项
Web缓存(代理服务器)
目标:不访问原始服务器,就满足用户需求
- 用户设置浏览器:通过缓存访问web
- 浏览器将所有的HTTP请求发给缓存
- 在缓存中的对象:缓存直接返回对象
- 不在缓存中的对象:缓存请求原始服务器,然后再将对象返回给客户端
- 优点
- 用户端获取信息速度加快
- 服务端负载减轻
- 示例
- 假设
- 平均对象大小=100kb
- 浏览器对原始服务器的平均请求率=15个请求/s
- Internet路由器延时=2s
- 接入链路带宽=1.54Mbps
- 结果
- 接入链路上的流量强度:
- 排队延时:
- 假设
- 缓存命中率为40%
- 结果
- 本地访问延时为,远程访问延时为
- 流量强度显著变小,排队延时变小
单位时间内的流量:
因此:流量强度越高,排队延时越大
平均延时=
分为两部分三部分:局域网传输时间+一个分组的传输时间+大的网的传输时间
- 风险:缓存没变,服务器的数据变了
- 方法:条件GET
- 缓存器proxy:在HTTP请求中指定缓存拷贝的日期
- 服务器:
如果缓存器中的对象拷贝是最新的,就不要发送对象
在请求报文中加入头部:
If-modified-since: <date>
如果没修改过,传一个头部回去就行了
- Author:orangec
- URL:orange’s blog | welcome to my blog (clovy.top)/694038c5d6624d969a5a8d3bc168cc3c
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts