网络应用-Web应用

#Web与HTTP

        World Wide Web:Tim Berners-Lee

                网页(Web Page)包含多个对象(Objects)

                对象:HTML文件,JPEG图片,视频文件,动态脚本等

                基本HTML文件:包含对其他对象的引用连接

        对象寻址(addressing)

                URL(Uniform Resource Locator):统一资源定位器(RFC1738)

                例:Scheme://host:port/path

                       (Http://)www.someschool.edu/somedept/pic.gif

        HTTP协议概述

                超文本传输协议:Hyper Text Transfer Protocol

                C/S传输结构

 

                        客户-Browser:请求,接收,展示Web对象。

                        服务器-WebServer:响应客户的请求并发送对象。

                TCP传输服务

                        服务器使用80端口等待客户请求

                        浏览器发起到服务器的TCP连接(创建套接字Socket)

                        服务器接收来着浏览器的TCP连接

                        浏览器(HTTP客户端)与Web服务器(HTTP服务端)交换HTTP消息

                        关闭TCP连接

                无状态(Stateless)

                        服务器不维护任何有关客户端过去发送的消息

                        有状态的协议更加复杂:

                                要维护历史状态

                                如果客户或服务器失效会产生状态的不一致,解决这种不一致代价极高

#HTTP连接

        HTTP连接的两种类型

                非持久性连接

 

                        每个TCP连接最多只允许传输一个对象

                        HTTP1.0版本使用非持久性连接

                        使用非持久性连接要传输复数对象时要不断重复申请TCP连接

                持久性连接

                        每个TCP连接允许传输多个对象

                        HTTP1.1版本默认使用持久性连接

        响应时间

                RTT(Round Trip Time)

                        从客户端发送一个很小的数据包到服务器并返回所经历的时间

                响应时间的建模

                

                        1.发起建立TCP连接的请求——1个RTT

                        2.发送HTTP请求消息等待HTTP响应消息的前几个字节到达——1个RTT

                        3.响应中所含文件的传输时间

                        *Total=2*RTT+文件发送时间

        持久性HTTP

                非持久性连接的问题

                        每个对象需要2个RTT

                        操作系统需要为每个TCP开销资源(Overhead)

                        浏览器会打开多个并行的TCP连接以获取所需对象

                        给服务器端造成严重负担

                持久性连接

                        发送响应后服务器保持TCP连接的打开

                        后序HTTP消息可以通过这个连接发送

                无流水(Pipelining)的持久性连接

                        客户端只有收到前一个响应后才发送新的请求

                        每个引用对象消耗1个RTT

                带有流水机制的持久性连接

                        HTTP1.1的默认选项

                        客户端只要发现一个引用的对象就尽快发出请求

                        理想情况下收到所有引用对象只要耗时约1个RTT

#HTTP消息格式

        HTTP有两种消息

                请求消息(Request)        响应消息(Response)

                ASCII:人可直读

        请求消息通用格式

                在此附上HTTP请求消息通用格式以及本人笔记

 

         上传输入的方法

                POST方法

                        网页经常需要填写表格(form)

                        在请求消息信息体中上传客户端的输入

                URL方法

                        使用GET方法

                        输入信息通过request行的URL字段上传

        方法的类型

                HTTP/1.0

                        GET

                        POST

                        HEAD:请server不要将所请求的对象放入响应消息中

                HTTP/1.1

                        GET        POST        HEAD

                        PUT:将消息中的文件上传到URL字段所指定的路径

                        DELETE:删除URL字段所指定的文件

        HTTP响应消息

                在此附上HTTP响应消息通例子以及本人笔记

 

                响应消息的第一行示例

                        200 OK 

                        301 Moved Permantly

                        404 Not Found

                        505 HTTP Version Not Supported

                        400 Bad Request

#Cookie技术

        为什么要使用Cookie技术

                HTTP协议无状态

                很多应用需要服务器掌握客户端的状态

                某些网站为了辨别用户身份进行了Session跟踪储存在客户本地终端上的数据(通常加密)

                RFC6265

        Cookie的组件

                HTTP响应消息的Cookie头部行

                HTTP请求消息的Cookie头部行

                保存在客户端主机上的Cookie文件,由浏览器管理

                Web服务器端的后台数据库

        Cookie原理

        Cookie的作用

                身份认证        购物车        数据推送        Web mail....

        隐私问题

                因为Cookie时刻掌握客户端状态,所以会引发隐私问题

 

 #Web缓存/代理服务器技术

        功能

                在不访问服务器的前提下满足客户端的HTTP请求

        为什么发明这种技术

                缩短客户请求的响应时间

                减少机构/组织的流量

                在大范围内(interne)实现有效内容的分发——SDN分发网络

        Web缓存/代理服务器

                用户设定浏览器通过缓存进行Web访问

                浏览器向缓存/代理服务器发送所有的HTTP请求

                        如果所请求对象在缓存中,缓存返回对象

                        否则缓存服务器向原始服务器发送HTTP请求获取对象后返回并保存该对象

                缓存即充当客户端也充当服务器

                一般由ISP(Internet)服务提供架设

        Web缓存实例

        

 

 

                 上面三张图第一张是一个机构连接Web网络的示意图

                 因为低一张对Web资源的使用不合理会产生高时延问题所以图2增加了带宽来解决问题

                 但增加带宽的方法成本过高,所以图3使用了增设了代理服务器,轻易的就解决了问题优化了架构

        条件性GET方法

                我们已经知道Web缓存的好处,但如何确保缓存中所有对象数据都保持“最新”呢?

                目标

                        如果缓存有最新版本则不需要发送请求对象

                缓存

                        在请求消息中声明所持有版本的日期

                        If modified - since:<data>

                服务器

                        如果缓存的版本是最新的则响应消息中不包含对象;

                        HTTP/1.0   304 Not Modified(没改变,已最新)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值