计算机网络笔记No.5

Web

Web的构成

  • 网页与网页相互连接的基础——每个网页对象拥有唯一的标识
    • 网页(Web Page)包含多个对象(objects)
      • 对象:HTML文件、JPEG图片、视频文件、动态脚本等
      • 基本HTML文件:包含对其他对象引用的链接
    • 对象的寻址(addressing)
      • URL(Uniform Resoure Locator):统一资源定位器 RFC1738
      • Scheme://host:port/path

计算机网络笔记No.5

Web遵循的协议

万维网遵循的协议——超文本传输协议——HyperText Transfer Protocol(HTTP)

  • HTTP的结构——C/S结构

    • 客户—Browser:请求、接收、展示Web对象
    • 服务器—Web Server:响应客户的请求,发送对象
    • 版本:1.0: RFC 1945、1.1: RFC 2068
  • HTTP的传输层协议——TCP
    使用的顺序
    计算机网络笔记No.5

  • HTTP协议是一个 无状态 协议

    • 无状态(stateless)——服务器不维护任何有关客户端过去所发请求的信息
    • 有状态的协议往往很复杂

HTTP的连接

HTTP连接的两种类型

  • 非持久性连接(Nonpersistent HTTP)
    • 每个TCP连接最多允许传输一个对象
    • HTTP 1.0版本使用非持久性连接
  • 持久性连接(Persistent HTTP)
    • 每个TCP连接允许传输多个对象
    • HTTP 1.1版本默认使用持久性连接

非持久性连接举例

  • 假定用户在浏览器中输入URL:www.someSchool.edu/someDepartment/home.index
    其中包含文本和指向10个jpeg图片的链接
  1. HTTP客户端向地址为www.someSchool.edu的服务器上的HTTP服务器进程(端口80) 发起TCP连接请求
  2. HTTP服务器在端口80等待TCP连接请求,接受连接并通知客户端
  3. HTTP客户端将HTTP请求消息(包含URL地址)通过TCP连接的套接字发出,消息中所含的URL表明客户端需要对象:someDepartment/home.index
  4. . HTTP服务器收到请求消息,解析,产生包含所需要对象的响应消息,并通过套接字发给客户端
  5. HTTP服务器 关闭TCP连接
  6. HTTP客户端收到响应消息,解 析html文件,显示html文件,发 现有10个指向jpeg对象的超连接
  7. 为每个jpeg对象重复步骤1-5
  • 响应时间分析与建模
    RTT(Round Trip Time)——从客户端发送一个很小的数据包到服务器并返回所经历的时间

    • 响应时间(Response time):
      • 发起、建立TCP连接:1个RTT
      • 发送HTTP请求消息到HTTP响应消息的前几个字节到达:1个RTT
      • 响应消息中所含的文件/对象传输时间

    Total=2RTT +文件发送时间

  • 非持久性连接的问题

    • 每个对象需要2个RTT
    • 操作系统需要为每个TCP连接开销资源(overhead)
    • 浏览器会打开多个并行的TCP连接以获取网页所需对象——服务器端会由很大负担

持久性连接

  • 持久性连接特点

    • 发送响应后,服务器保持TCP连接的打开
    • 后续的HTTP消息可以通过这个连接发送
  • 无流水(pipelining)的持久性连接

    • 客户端只有收到前一个响应后才发送新的请求
    • 每个被引用的对象耗时1个RTT
  • 带有流水机制的持久性连接

    • 客户端只要遇到一个引用对象就尽快发出请求
    • 理想 情况下,收到所有的引用对象只需耗时约1个RTT

思考:这个程序如何实现?

HTTP消息的格式

HTTP协议有两类消息——请求消息(request)、响应消息(response)

  • 请求消息举例:

    GET /somedir/page.html HTTP/1.1 —— 请求行:请求命令 + URL + 版本
    Host: www.someschool.edu —— 头部行 _ 主机地址
    User-agent: Mozilla/4.0 —— 头部行 _ 浏览器类型
    Connection: close —— 头部行 _ 连接
    Accept-language:fr —— 头部行 _ 接收语言

HTTP请求消息的通用格式:
计算机网络笔记No.5
上传输入的方法:

  1. POST方法
    网页经常需要填写表格(form)
    在请求消息的消息体(entity body)中上传客户端的输入
  2. URL方法
    使用GET方法——输入信息通过request行的URL字段上传

方法的类型:

计算机网络笔记No.5

  • 响应消息举例:

    HTTP/1.1 200 OK —— 状态行:版本 + 状态
    Connection: close —— 头部行 _ 连接
    Date: Thu, 06 Aug 1998 12:00:15 GMT —— 头部行 _ 外部服务器生成时间
    Server: Apache/1.3.0 (Unix) —— 头部行 _ 软件服务
    Last-Modified: Mon, 22 Jun 1998 …… —— 头部行 _ 上次修改时间
    Content-Length: 6821 —— 头部行 _ 内容长度
    Content-Type: text/html —— 头部行 _ 内容类型

    data data data data data …

HTTP响应状态代码:

计算机网络笔记No.5

体验一下HTTP:

  1. 利用telnet登录到某个Web服务器 telnet www.XXXX.cn 80
  2. 输入一个HTTP请求——GET /about/profile.htm HTTP/1.1、Host: www.XXXX.cn
  3. 查看HTTP服务器所返回的响应消息

Cookie技术

HTTP协议无状态会带来一些问题比如:很多应用需要服务器掌握客户端的——如网上购物

  • Cookie技术:
    某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)

  • Cookie的组件:

    • HTTP响应消息的cookie头部行
    • HTTP请求消息的cookie头部行
    • 保存在客户端主机上的cookie文件,由浏览器管理
    • Web服务器端的后台数据库
      计算机网络笔记No.5
  • Cookie能够用于:身份认证、购物车、推荐、Web e-mail

  • Cookie的问题:隐私问题

思考题:

  1. Cookie能够怎样被用于收集隐私?
  2. 能够收集哪些隐私?
  3. 你在上网的时候感觉到自己的隐私被严重侵犯吗?

Web缓存/代理服务器技术

Web缓存/代理服务器技术功能——在不访问服务器的前提下满足客户端的HTTP请求

  • 为什么要发明这种技术:
    • 缩短客户请求的响应时间
    • 减少机构/组织的流量
    • 在大范围内(Internet)实现有效的内容分发

计算机网络笔记No.5

过程:

  1. 用户设定浏览器通过缓存进行Web访问
  2. 浏览器向缓存/代理服务器发送所有的HTTP请求:
    如果所请求对象在缓存中,缓存返回对象
    否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象
  • 缓存既充当客户端,也充当服务器,一般由 ISP(Internet服务提供商) 架设

Web缓存示例:
计算机网络笔记No.5

计算机网络笔记No.5

计算机网络笔记No.5

Web缓存更新问题 —— 缓存服务器上的数据和原始服务器一致吗?

  • 解决方法:条件性GET方法
  1. 目标:
    如果缓存有最新的版本,则不需要发送请求对象
  2. 缓存:
    在HTTP请求消息中声明所持有版本的日期
    If-modified-since: :如果这个日期之后服务器改动了就给缓存发回来
  3. 服务器:
    如果缓存的版本是最新的,则响应消息中不包含对象
    HTTP/1.0 304 Not Modified:没改动

计算机网络笔记No.5

—————————————————————————————————————————————

由于本人水平有限及时间仓促或疏忽大意以及其他的一些原因,文中难免会存在一些错误,如若有发现不正确的地方,还请大佬们评论或私信告之于我,以便及时纠错