Web and HTTP

点击返回博客主目录

点击返回计算机网络知识框图

2.2 Web and HTTP

2.2.1 Web与HTTP

一些术语

  • Web页:由一些对象组成
  • 对象可以是HTML文件、JPEG图像、Java小程序、声音剪辑文件等
  • Web页含有一个基本的HAML文件,该基本HTML文件又包含若干对象的引用(链接)
  • 通过URL对每个对象进行引用
    • 访问协议,用户名,口令字,端口等:
  • URL格式
    Port://user:psw@www.someSchool.edu/someDept/pic.gif:port
    协议名 用户 口令 主机名 路径 端口

2.2.2 HTTP概况

HTTP:超文本传输协议

  • Web的应用层协议
  • 客户/服务器模式
    • 客户:请求、接收和显示Web对象的浏览器
    • 服务器:对请求进行响应,发送对象的Web服务器
  • HTTP 1.0:RFC 1945
  • HTTP 1.1:RFC 2068

使用TCP:

  • 客户发起一个与服务器的TCP连接(建立套接字),端口号为80
  • 服务器接受客户的TCP连接
  • 在浏览器(HTTP客户端)与Web服务器(HTTP服务器 server)交换HTTP报文(应用层协议报文)
  • TCP连接关闭

HTTP是无状态的

  • 服务器并不维护关于客户的任何信息

维护状态的协议很复杂!

  • 必须维护历史信息(状态)
  • 如果服务器/客户端死机,它们的状态信息可能不一致,二者的信息必须是一致
  • 无状态的服务器能够支持更多的客户端

2.2.3 HTTP连接

非持久HTTP

  • 最多只有一个对象在TCP连接上发送
  • 下载多个对象需要多个TCP连接
  • HTTP/1.0使用非持久连接

持久HTTP

  • 多个对象可以在一个(在客户端和服务器之间的)TCP连接上传输
  • HTTP/1.1默认使用持久连接

2.2.4 非持久HTTP连接

假设用户输入URL(包含文本和10个jpeg图像的引用)
www.someSchool.edu/someDept/home.index

  • 1a.HTTP客户端在端口号80发起一个到服务器www.someSchool.edu的连接
  • 1b.位于主机www.someSchool.edu的HTTP服务器在80号端口等待连接,接受连接并通知客户端
  • 2.HTTP客户端向TCP连接的套接字发送HTTP请求报文,报文表示客户端需要对象 someDepartment/home.index
  • 3.HTTP服务器接收到请求报文,检索出被请求的对象,将对象封装在一个响应报文,并通过其套接字向客户端发送
  • 4.HTTP关闭TCP连接。
  • 5.HTTP客户端收到包含html文件的响应报文,并显示html。然后对html文件进行检查,找到10引用对象
  • 6.对10jpeg对象,重复1-5步

2.2.5 响应时间模型

往返时间RTT(round-trip-time):一个小的分组从客户端到服务器,在回到客户端的时间(传输时间忽略)
响应时间:

  • 一个RTT用来发起TCP连接
  • 一个RTT用来HTTP请求并等待HTTP响应
  • 文件传输时间
    共:2RTT+传输时间

2.2.6 持久HTTP

非持久HTTP的缺点:

  • 每个对象要2个RTT
  • 操作系统必须为每个TCP连接分配资源
  • 但浏览器通常打开并行TCP连接,以获取引用对象

持久HTTP:

  • 服务器在发送响应后,仍保持TCP连接
  • 在相同客户端和服务器之间的后续请求和响应报文通过相同的连接进行传送
  • 客户端在遇到一个引用对象的时候,就可以尽快发送该对象的请求

非流水方式的持久HTTP:

  • 客户端只能在收到前一个响应后才能发出新的请求
  • 每个引用对象花费一个RTT

流水方式的持久HTTP:

  • HTTP/1.1的默认模式
  • 客户端遇到一个引用对象就立即产生一个请求
  • 所有引用(小)对象只花费一个RTT是可能的

2.2.7 HTTP请求报文

  • 两种类型的HTTP报文:请求、响应
  • HTTP请求报文:
    • ASCII(人能阅读)
      GET /somedir/page.html HTTP/1.1
      Host:www.someschool.edu
      User-agent:Mozilla/4.0
      Connection:close
      Accept-language:fr
      请求行(GET,POST,HEAD命令)
      换行回车符,表示报文结束

2.2.8 HTTP请求报文:通用格式

method sp url sp version cr if request line
header field name:value cr if
header field name:value cr if
cr if
Entity Body

2.2.9 提交表单输入

  • Post方式:
    • 网页通常包括表单输入
    • 包含在实体主体(entity body)中的输入被提交到服务器
  • URL方式:
    • 方法:GET
    • 输入通过请求行的URL字段上载
      www.somesite.com/animalsearch?monkey&banana
      http://www/baidu.com/s?wd=xx+yy+zzz&cl=3
      参数:wd,cl 参数值:XX+YY+zzz,3

2.2.10 方法类型

HTTP/1.0

  • GET
  • POST
  • HEAD
    • 要求服务器在响应报文中不包含请求对象->故障跟踪

HTTP/1.1

  • GET,POST,HEAD
  • PUT
    • 将实体主体中的文件上载到URL字段规定的路径
  • DELETE
    • 删除URL字段规定的文件

2.2.11 HTTP响应报文

状态行(协议版本、状态码和相应状态信息)
HTTP/1.1 200 OK \r\n
首部行:
Connection close\r\n
Date:Thu, 06 Aug 1998 12:00:15 GMT \r\n
Server:Apache/1.3.0 (Unix) \r\n
Last-Modefied:Mon,22 Jun 1998… \r\n
Content-Length:6821\r\n
Content-Type:text\r\n
\r\n
\r\n
数据,如请求的HTML文件
data data data data data …

2.2.12 HTTP响应状态码

位于服务器->客户端的响应报文中的首行
一些状态码的例子:
200 OK
请求成功,请求对象包含在响应报文的后续部分
301 Moved Permanently
请求的对象已经被永久转移了;新的URL在响应报文的Location:首部行中指定
客户端软件自动用新的URL去获取对象
400 Bad Request
一个通用的差错代码,表示该请求不能被服务器解读
404 Not Found
请问的文档在该服务上没有找到
505 HTTP Version Not Supported

2.2.13 Trying out HTTP(client side) for yourself

1.Telnet to your favorite Web server:
telnet cis.poly.edu 80 open TCP connection to port 80 (default HTTP server port) at cis.poly.edu.anything typed in sent to port 80 at cis.poly.edu
2.type in a GET HTTP request:
GET /~ross/ HTTP/1.1 Host:cis.poly.edu
by typing this in (hit carriage return twice),you send this minimal(but complete) GET request to HTTP server
3.look at response message send by HTTP server!
(or use Wireshark to look at captured HTTP request/response)

2.2.14 用户-服务器状态:cookies

大多数主要的门户网站使用cookies
4个组成部分:
1.在HTTP响应报文中有一个cookie的首部行
2.在HTTP请求报文中含有一个cookie的首部行
3.在用户端系统中保留有一个cookie文件,由用户的浏览器管理
4.在Web站点有一个后端数据库
例子:
Susan总是用同一个PC使用Internet Explore上网
她第一次访问了一个使用了Cookie的电子商务网站
当最初的HTTP请求到达服务器时,该Web站点产生一个唯一的ID,并以此作为索引在它的后端数据库中产生一个项

2.2.15 Cookies:维护状态

客户端 服务器
平常的http请求报文 服务器为用户建立ID1678
平常的http响应报文+Set-cookie:1678
平常的HTTP响应报文
平常的http请求报文cookie:1678
平常的HTTP响应报文

  • Cookies能带来什么:
    • 用户验证
    • 购物车
    • 推荐
    • 用户状态(Web e-mail)
  • 如何维护状态:
    • 协议端节点:在多个事务上,发送端和接收端维持状态
    • cookies:http报文携带状态信息
  • Cookies与隐私:
    • Cookies允许站点知道许多关于用户的信息
    • 可能将它知道的东西卖给第三方
    • 使用重定向和cookies的搜索引擎还能知道用户更多的信息
      • 如通过某个用户在大量站点上的行为,了解其个人浏览方式的大致模式
    • 广告公司从站点获得信息

2.2.16 Web缓存(代理服务器)

目标:不访问原始服务器,就能满足客户的请求

  • 用户设置浏览器:通过缓存访问Web
  • 浏览器将所有的HTTP请求发给缓存
    • 在缓存中的对象:缓存直接返回对象
    • 如对象不在缓存,缓存请求原始服务器,然后再将对象返回给客户端

2.2.17 Web缓存

  • 缓存既是客户端又是服务器
  • 通常缓存是由ISP安装(大学、公司、居民区ISP)
  • 为什么要使用Web缓存?
    • 降低客户端的请求响应时间
    • 可以大大减少一个机构内部网络与Internet接入链路上的流量
    • 互联网大量采用了缓存:可以使较弱的ICP也能够有效提供内容

2.2.18 缓存示例

  • 假设
    • 平均对象的大小 = 100kb
    • 机构内浏览器对原始服务器的平均请求率为=15请求/s
    • 平均到浏览器的速率:1.5Mbps
    • 机构内部路由器到原始服务器再返回到路由器的延时(Internet延时)=2s
    • 接入链路带宽:1.54Mbps
  • 结果
    • LAN的流量强度=15%
    • 接入链路上的流量强度 = 99%
    • 总延时 = LAN延时 + 接入延时 + Internet延时 = ms + 分 + 2s

2.2.19 缓存示例:更快的接入链路

  • 假设
    • 平均对象大小 = 100kb
    • 机构内浏览器对原始服务器的平均请求率为=15请求/s
    • 平均到浏览器的速率为:1.5Mbps
    • 机构内部路由器到原始服务器再返回路由器的延时(Internet延时)=2s
    • 接入链路带宽:1.54Mbps
  • 结果
    • LAN的流量强度 = 15%
    • 接入链路上的流量强度=1%
    • 总延时 = LAN延时 + 接入延时 + Internet延时
    • Internet延时 = ms + ms + 2s
  • 代价:增加了接入链路带宽(非常昂贵!)

2.2.20 缓存例子:安装本地缓存

  • 假设
    • 平均对象大小 = 100kb
    • 机构内浏览器对原始服务器的平均请求率为 = 15请求/s
    • 平均到浏览器的速率:1.5Mbps
    • 机构内部路由器到原始服务器再返回到路由器的延时(Internet延时) = 2s
    • 接入链路带宽:1.54Mbps
  • 结果
    • LAN利用率:15%
    • 接入网络利用率:?
    • 总体延迟
  • 代价:web缓存(廉价!)
  • 计算链路利用率,有缓存的延迟:
    • 假设缓存命中率0.4
      • 40%请求在缓存中被满足,其他60%的请求需要被原始服务器满足
  • 接入链路利用率:
    • 60%的请求采用接入链路
  • 进过接入链路达到浏览器的数据速率 = 0.6*1.50Mbps = 0.9Mbps
    • 利用率 =0.9 / 1.54 = 0.58
  • 总体延迟:
    • = 0.6*(从原始服务器获取对象的延迟) + 0.4*(从缓存获取对象的延迟)
    • = 0.6(2.01) + 0.4 (~msec)
    • = ~1.2 secs
    • 比安装154Mbps链路还来得小(而且比较便宜!)

2.2.21 条件GET方法

  • 目标:如果缓存器中的对象拷贝是最新的,就不要发送对象
  • 缓存器:在HTTP请求中指定缓存拷贝的日期 If-modified-since:
  • 服务器:如果缓存拷贝陈旧,则响应报文没包含对象:
    • HTTP/1.0 304 Not Modified
  • HTTP请求报文 If-modified-since:
  • HTTP响应 HTTP/1.0 304 Not Modified
  • HTTP请求报文 If-modified-since:
  • HTTP响应 HTTP/1.0 200 OK
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值