网课是b站中科大郑烇老师,杨坚老师课程,郑烇老师账号发布的
图片均来自郑老师分享的PPT
第二章 应用层
目录
2.2Web和HTTP
一、术语
- Web页:由一些对象组成
- 对象可以是HTML文件、JPEG图像、Java小程序、声音剪辑文件等
Web页含有一个基本的HTML文件,该基本HTML文件又包含若干对象的引用(链接) - 通过URL对每个对象进行引用 :访问协议,用户名,口令字,端口等;
- URL格式:
二、HTTP概况
1、HTTP: 超文本传输协议(Web的应用层协议)
2、客户/服务器模式
客户: 请求、接收和显示Web对象的浏览器
服务器: 对请求进行响应,发送对象的Web服务器
3、使用TCP:
1、客户发起一个与服务器的TCP连接 (建立套接字) ,端口号为 80
2、服务器接受客户的TCP连 接 在浏览器(HTTP客户端) 与 Web服务器(HTTP服务器 server)交换HTTP报文 (应用层协议报文)
3、TCP连接关闭
4、HTTP是无状态的
1、服务器并不维护关于客户的任何信息
2、维护状态的协议
- 必须维护历史信息(状态)
- 如果服务器/客户端死机,它们的状态信息可能不一致,
二者的信息必须是一致 - 无状态的服务器能够支持更多的客户端
三、HTTP连接
1、非持久HTTP
- 最多只有一个对象在TCP连接上发送
- 下载多个对象需要多个TCP连接
- HTTP/1.0使用非持久连接
2、持久HTTP
- 多个对象可以在一个(在客户端和服务器之间的)TCP连接上传输
- HTTP/1.1 默认使用持久连接
四、非持久HTTP连接
第二步服务器给客户端发送的对象会有不可忽略不计的传输时间
非持久HTTP的缺点:
- 每个对象要2个 RTT
- 操作系统必须为每个TCP连接分配资源
- 浏览器通常打开并行TCP连接,以获取引用对象
五、持久HTTP连接
1、与非持久连接的不同
第一步:建立连接
第四步:不会关闭连接
第六步:直接从第二步开始,不需要做第一步
2、持久连接的优点
- 服务器在发送响应后,仍保持TCP连接
- 在相同客户端和服务器之间的后续请求和响应报文通过相同的连接进行传送
- 客户端在遇到一个引用对象的时候,就可以尽快发送该对象的请求
3、非流水方式的持久HTTP
- 客户端只能在收到前一个响应后才能发出新的请求
- 每个引用对象花费一个RTT
4、流水方式的持久HTTP
HTTP/1.1的默认模式
- 客户端遇到一个引用对象就立即产生一个请求
- 所有引用(小)对象只花费一个RTT是可能的
六、响应时间模型
往返时间RTT(round-trip time)
一个小的分组从客户端到服务器,在回到客户端的时间(传输时间忽略)
响应时间:
- 一个RTT用来发起TCP连接
- 一个 RTT用来HTTP请求并等待HTTP响应
- 文件传输时间
共:2RTT+传输时间
七、HTTP请求报文
两种类型的HTTP报文:请求、响应
1、HTTP请求报文
(1)具体格式
请求行,首部行(若干),实体行(可以没有实体行)
(2)提交表单输入
1、Post方式:
网页通常包括表单输入
包含在实体主体(entity body )中的输入被提交到服务器
2、URL方式:
方法:GET
输入通过请求行的URL字段上载
(3)方法类型
HTTP/1.0
- GET
- POST
- HEAD
(HEAD:要求服务器在响应报文中不包含请求对象 ——>故障跟踪)
HTTP/1.1
- GET
- POST
- HEAD
- PUT
将实体主体中的文件上载到URL字段规定的路径 - DELETE
删除URL字段规定的文件
2、HTTP响应报文
(1)格式
(2)HTTP响应状态码
位于服务器
客户端的响应报文中的首行
一些状态码的例子:
-
200 OK
请求成功
请求对象包含在响应报文的后续部分 -
301 Moved Permanently
请求的对象已经被永久转移了
新的URL在响应报文的Location:首部行中指定
客户端软件自动用新的URL去获取对象 -
400 Bad Request
一个通用的差错代码,表示该请求不能被服务器解读 -
404 Not Found
请求的文档在该服务上没有找到 -
505 HTTP Version Not Supported
服务器不支持
八、用户-服务器状态:cookies
1、作用
把HTTP协议由无状态变成有状态
2、组成部分(4个)
1、在HTTP响应报文中有一个cookie的首部行
2、在HTTP请求报文含有一个cookie的首部行
3、在用户端系统中保留有一个cookie文件,由用户的浏览器管理
4、在Web站点有一个后端数据库
3、Cookies能带来什么
用户验证
购物车
推荐
用户状态 (Web e-mail)
4、Cookies:维护状态
如何维持状态:
- 协议端节点:在多个事务上,发送端和接收端维持状态
- cookies: http报文携带状态信息
5、Cookies的缺点:隐私性不好
- Cookies允许站点知道许多关于用户的信息
- 可能将它知道的东西卖给第三方
- 使用重定向和cookie的搜索引擎还能知道用户更多的信息
- 广告公司从站点获得信息
九、Web缓存 (代理服务器)
1、目标
不访问原始服务器,就满足客户的请求
2、作用过程
1、用户设置浏览器: 通过缓存访问Web浏览器将所有的HTTP
2、请求发给缓存
1)在缓存中的对象:缓存直接返回对象
2)如对象不在缓存,缓存请求原始服务器,然后再将对象返回给客户端
缓存既是客户端又是服务器
通常缓存是由ISP安 装 (大学、公司、居民区ISP)
3、使用Web缓存的优点
1、 降低客户端的请求响应时间
2、 可以大大减少一个机构内部网络与Internent接入链路上的流量
3、互联网大量采用了缓存:可以使较弱的ICP也能够有效提供内容
十、条件GET方法
目标:如果缓存器中的对象拷贝是最新的,就不要发送对象
缓存器: 在HTTP请求中指定缓存拷贝的日期If-modified-since:
服务器: 如果缓存拷贝陈旧,则响应报文没包含对象:HTTP/1.0 304 Not Modified