Note2- 应用层
知识点
网络应用程序体系结构
- 客户机/服务器结构(C/S)
- 点对点结构(P2P)
- 混合结构。如 Napster,文件传输使用 P2P 结构,文件搜索使用 C/S 结构。
TCP 服务与 UDP 服务
- TCP 服务
- 面向连接:客户/服务器进程间需要建立连接
- 可靠的传输
- 流量控制:发送方不会发送速度过快,超过接收方的处理能力
- 拥塞控制:当网络负载过重时能够限制发送方的发送速度
- 不提供时间/延迟保障
- 不提供最小带宽保障
- UDP 服务
- 无连接
- 不可靠的数据传输
- 不提供可靠性保障/流量控制/拥塞控制/延迟保障/带宽保障
Web 应用遵循什么协议?
HTTP(超文本传输协议)
- C/S 结构
- 客户 -Browser:请求、接收、展示 Web 对象
- 服务器 -Web Server:相应客户的请求,发送对象
- 传输层协议为 TCP
- 服务器在 80 端口等待客户请求
- 浏览器发起到服务器的 TCP 连接(创建套接字 Socket)
- 服务器接收来自浏览器的 TCP 连接
- 浏览器与 Web 服务器交换 HTTP 消息
- 关闭 TCP 连接
- 无状态协议
- 服务器不维护任何有关客户端过去所发请求的信息
- 两种类型
- 非持久性连接(每个 TCP 连接最多允许传输一个对象)
- 持久性连接(每个 TCP 连接允许传输多个对象)
非持续连接和持续连接
- 非持久性连接:
- 响应时间=2RTT+ 文件发送时间:
- 发起、建立 TCP 连接:1 个 RTT
- 发送 HTTP 请求消息到 HTTP 响应消息的前几个字节到达:1 个 RTT
- 响应消息中所包含的文件/对象传输时间
- 问题:
- 每个对象需要 2 个 RTT
- 操作系统需要为每个 TCP 连接开销资源
- 响应时间=2RTT+ 文件发送时间:
- 持久性连接:
- 无流水的持久性连接
- 客户端只有收到前一个响应后才发送新的请求
- 每个被引用的对象耗时 1 个 RTT
- 带有流水机制的持久性连接
- 客户端只要遇到一个引用对象就尽快发出请求
- 收到所有的引用对象只需耗时约 1 个 RTT
- 无流水的持久性连接
HTTP 请求消息格式?
格式:
- 上传输入的方法:
- POST 方法
- 在 entity body 中上传客户端输入
- URL 方法
- 输入信息通过 request 行的 URL 字段上传
- POST 方法
- 常用状态码
- 200:请求成功,信息在返回的响应报文中。
- 301 Moved Permanently:请求的对象已经被永久转移了,新的 URL 定义在响应报文的首部行中。客户软件将自动获取新的 URL。
- 400Bad Request:一个通用差错代码,指示该请求不能被服务器理解。
- 404 Not Found:被请求的文档不在服务器上。
- 505 HTTP Version Not Supported:服务器不支持请求报文使用的 HTTP 协议版本。
Cookie 技术
某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据
组件:
- HTTP 响应消息的 cookie 头部行
- HTTP 请求消息的 cookie 头部行
- 保存在客户端主机上的 cookie 文件,由浏览器管理
- Web 服务器端的后台数据库
Web 缓存技术
条件性 GET 方法:
在 HTTP 请求消息中声明所持有版本的日期:if-modified-since:<date>
,服务器接收到后,如果确认缓存版本是最新的,则响应消息中不包含对象且返回 304 状态码。
SMTP 协议
与 HTTP 对比:
- 相同
- 都使用命令/相应交互模式
- 命令和状态代码都是 ASCII 码
- 不同
- HTTP:拉式 (pull),SMTP:推式 (push)
- HTTP:每个对象封装在独立的响应消息中。SMTP:多个对象在由多个部分构成的消息中发送
POP3 协议
认证过程:
- 客户端命令
- User:声明用户名
- Pass:声明密码
- 服务器相应
- +OK
- -ERR
- 事务阶段
- List:列出消息数量
- Retr:用编号获取消息
- Dele:删除消息
- Quit
IMAP 协议
- 所有消息保存在一个地方:服务器
- 允许用户利用文件夹组织消息
- 支持跨会话 (Session) 的用户状态:
- 文件夹的名字
- 文件夹与消息 ID 之间的映射等
为什么不使用集中式的 DNS?
- 单点失败问题
- 流量问题
- 距离问题
- 维护性问题
域名服务器有哪几种?
- 根域名服务器
- 本地域名服务器无法解析域名时,访问根域名服务器
- 顶级域名服务器
- 负责 com, org, net, edu 等顶级域名和国家顶级域名
- 权威域名服务器
- 组织的域名解析服务器,提供组织内部服务器的解析服务
- 本地域名服务器
- 不严格属于层级体系,当主机进行 DNS 查询时,查询被发送到本地域名服务器,本地域名服务器作为代理,将查询转发层级式域名解析服务器系统
DNS 域名解析过程?
- 迭代查询:被查询服务器返回域名解析服务器的名字
- 递归查询:将域名解析的任务交给所联系的服务器
DNS 记录格式是什么样的?
RR format: (name, value, type, ttl)
Type | 记录形式 |
---|---|
A | (主机域名,IP 地址,type,ttl) |
NS | (域,主机域名,type,ttl) |
CNAME | (域名的别名,真实域名,type,ttl) |
MX | (name,邮件服务器,type,ttl) |
假如你创建了一个公司“Network Utopia”,你如何注册域名?
- 在域名管理机构注册域名 networkutopia.com
- 向域名管理机构提供你的权威域名解析服务器的名字和 IP 地址
- 域名管理机构向 com 顶级域名解析服务器中插入两条记录
(networkutopia.com, dns1.networklutopia.com, NS)
和(dns1.networkutopia.com, 212.212.212.1, A)
- 在权威域名服务器中为 www.netwokuptopia.com 加入 Type A 记录,为 networkutopia.com 加入 Type MX 记录
文件最小分发时间怎么计算?
令
C/S 结构:
P2P 结构:
BitTorrent 协议的基本流程?
文件被划分为不同的 chunk,节点向 tracker 注册以获得节点清单,与邻居建立连接。节点下载的同时,也需要向其它节点上传 chunk。
- 节点定期查询每个邻居所持有的 chunk 列表
- 发送请求,请求获取缺失的 chunk
- 使用最稀缺优先的技术。首先请求在邻居中副本数量最少的 chunk
- 发送时,每 10s 选取正在向自己发送且速率最快的 4 个邻居发送 chunk
课后习题
P9. (缓存的作用)考虑下图,其中有一个机构的网络和因特网相连。假定对象的平均长度为 850 000 比特,从这个机构网的浏览器到初始服务器的平均请求率是每秒 16 个请求。还假定从接入链路的因特网一侧的路由器转发一个 HTTP 请求开始,到接收到其响应的平均时间是 3 秒。将总的平均响应时间建模为平均接入时延(即从因特网路由器到机构路由器的时延)和平均因特网时延之和。对于平均接人时延,使用
,式中 是跨越接入链路发送一个对象的平均时间, 是对象对该接入链路的平均到达率。
- 求出总的平均响应时间。
- 现在假定在这个机构 LAN 中安装了一个缓存器。假定命中率为 0.4,求出总的响应时间。
- 传输时延
,流量强度 ,由前一章的 P14 题,排队时延为 。则总时间 ,则流量强度为 ,后面同理,得 ,故总的平均相应时间为 。
P10. (持久连接与非持久连接对象传输耗时对比)考虑一条 10 米短链路,某发送方经过它能够以 150bps 速率双向传输。假定包含数据的分组是 100 000 比特长,仅包含控制(如 ACK 或握手)的分组是 200 比特长。假定 N 个并行连接每个都获得 1/N 的链路带宽。现在考虑 HTTP 协议,并且假定每个下载对象是 100Kb 长,初始下载对象包含 10 个来自相同发送方的引用对象。在这种情况下,经非持续 HTTP 的并行实例的并行下载有意义吗?现在考虑持续 HTTP。你期待这比非持续的情况有很大增益吗?评价并解释你的答案。
非持久并行:
如图,设
当传输引用对象时,由于是 10 个并行传输,速率为
总时间
持续连接:
P23. (C/S 模式文件分发时间的理解)考虑使用一种客户 - 服务器体系结构向 N 个对等方分发一个 F 比特的文件。假定一种某服务器能够同时向多个对等方传输的流体模型,只要组合速率不超过
,,则以不同的速率向每个对等方传输。
- 假定
。定义一个具有 分发时间的分发方案。 - 假定
。定义一个具有 分发时间的分发方案。 - 得出最小分发时间通常是由
所决定的结论。
- 这是说当前的瓶颈是服务器的上载能力。所以最小分发时间为
,令服务器向每个客户端分发的带宽均为 即可达到这个最小值。 - 这种情况下,只需要令服务器向每个客户端分发的带宽均为
即可。
P24. (P2P 模式文件分发时间的理解)考虑使用 P2P 体系结构向 N 个对等方分发一个 F 比特的文件。假定一种流体模型。为了简化起见,假定
很大,因此对等下载带宽不会成为瓶颈。
- 假定
。定义一个具有 分发时间的分发方案。 - 假定
。定义一个具有 ) 分发时间的分发方案。
令
- 说明服务器的上载能力稍弱。分发方案为:将文件按 N 个对等方上载带宽的比值划分成 N 份。同时,服务器也按对等方上载带宽的比值划分服务器的上载带宽。而每个对等方均向其它对等方划分与从服务器下载带宽相同的带宽。如下图所示:以
为例,从节点上载角度来看,由 ,得 ,所以,每个节点可以这样分配带宽。从节点下载角度来看,每个节点下载带宽为 ,即时间为 - 将文件分为 N+1 份,方案如图:证明略
MOOC 习题
假设你在浏览某网页时点击了一个超链接,URL 为“https://www.kicker.com.cn/index.html”,且该 URL 对应的 IP 地址在你的计算机上没有缓存;文件 index.html 引用了 8 个小图像。域名解析过程中,无等待的一次 DNS 解析请求与响应时间记为 RTTd,HTTP 请求传输 Web 对象过程的一次往返时间记为 RTTh。请回答下列问题:
- 你的浏览器解析到 URL 对应的 IP 地址的最短时间是多少?最长时间是多少?
- 若浏览器没有配置并行 TCP 连接,则基于 HTTP1.0 获取 URL 链接 Web 页完整内容(包括引用的图像,下同)需要多长时间(不包括域名解析时间,下同)?
- 若浏览器配置 5 个并行 TCP 连接,则基于 HTTP1.0 获取 URL 链接 Web 页完整内容需要多长时间?
- 若浏览器没有配置并行 TCP 连接,则基于非流水模式的 HTTP1.1 获取 URL 链接 Web 页完整内容需要多长时间?基于流水模式的 HTTP1.1 获取 URL 链接 Web 页完整内容需要多长时间?
- 本地域名解析服务器中包含要访问的 URL 对应的 IP 地址时,所需时间最短,为 RTTh。若不包含,且需要请求到根域名服务器,则顺序为:客户端 -> 本地域名服务器 -> 根域名服务器 -> cn -> com.cn -> kicker.com.cn。共 5 RTTd
- 需要 18RTTh。因为 HTTP1.0 是非持久性链接的,每个 TCP 连接最多允许 1 个对象传输,所以一共建立 9 次 TCP 连接,耗时 2
9=18RTTh。 - 需要 6RTTh。浏览器配置 5 个并行 TCP 连接,一开始建立 TCP 连接,获得 index.html 文件耗时 2 个 RTTh。然后由图像地址信息,在 2 轮并行处理下完成 8 个图像的加载工作。2
2 个 RTTh。所以耗时 2+4=6RTTh。 - 非流水:2 + 8 = 10 RTTh,流水:2 + 1 = 3 RTTh