第二章 应用层

type
status
date
slug
summary
tags
category
icon
password

2.1 网络应用体系结构

  1. 客户机/服务器结构(C/S)
  1. 点对点结构(P2P)
  1. 混合结构

2.2 网络应用通信原理

notion image
网络应用的基础:进程间通信
套接字Socket、进程的标识符:IP地址 + 端口号
应用层协议:公开协议/私有协议
内容:消息的类型、消息的语法/格式、字段的语义、规则
需求:数据丢失/可靠性、时间/延迟、带宽
Internet提供的传输服务:TCP、UDP

TCP(传输层)

  • 面向连接: 客户机/服务器进程间需要建立连接
  • 可靠的传输
  • 流量控制: 发送方不会发送速度过快,超过接收方的处理能力
  • 拥塞控制: 当网络负载过重时能够限制发送方的发送速度
  • 不提供时间/延迟保障
  • 不提供最小带宽保障

UDP(传输层)

  • 无连接
  • 不可靠的数据传输
  • 不提供:可靠性保障、流量控制、拥塞控制、延迟保障、带宽保障

2.3 域名解析系统(DNS)

域名和IP地址之间如何映射:多层命名服务器构成的分布式数据库
notion image
notion image
本地域名解析服务器:不严格属于层级体系,当主机进行DNS查询时,查询首先被发送到本地域名服务器,作为代理,将查询转发给(层级式)域名服务器系统
本地域名服务器无法解析域名时,查询根域名服务器
顶级域名服务器: 负责com, org, net, edu等顶级域名和国家顶级域名,例如cn, uk, fr等
权威域名服务器:组织的域名服务器,提供组织内部服务器的解析服务
notion image
notion image
notion image
notion image
绝大多数 DNS 查询都是基于 UDP 进行的。

课堂练习

notion image
A
notion image

2.4 FTP应用(未讲,考)

向远程主机传输文件或从远程主机传输文件,使用C/S结构
客户端:发起传输的一端(无论是向远程传输或从远程传输)
服务器:远程主机
FTP 使用 两个 TCP 连接
  1. 控制连接:客户端在端口 21 联系服务器,通过控制连接被授权,随后可以浏览远程目录,通过控制连接发送命令,持久
  1. 数据连接:当服务器接收到文件传输命令时,服务器向客户端打开第二条数据连接(主动方式使用 TCP20 端口,被动方式由服务器和客户端自行协商决定),在传输完一个文件后,服务器关闭数据连接,不持久
控制信息与数据传输是 分开的,这就是 带外控制(Out-of-band control)。
FTP 服务器维持状态:当前目录、较早的认证
notion image

2.5 Email应用

客户端、服务器、SMTP协议(Simple Mail Transfer Protocol)
notion image
SMTP:email消息的传输/交换协议,使用TCP进行email消息的可靠传输,端口25
MIME:多媒体邮件扩展,通过在邮件头部增加额外的行以声明MIME的内容类型
邮件访问协议
  1. POP(Post Office Protocol):无状态
  1. IMAP(Internet Mail Access Protocol):所有消息统一保存在服务器,允许用户利用文件夹组织消息,支持跨会话的用户状态
  1. HTTP:Web Mail

课堂练习

notion image

2.6 Web应用

HTTP协议

HTTP协议(超文本传输协议,HyperText Transfer Protocol):C/S结构,TCP协议,端口80,无状态(服务器不维护任何有关客户端过去所发请求的信息)
HTTP请求消息
notion image
HTTP响应消息
notion image
HTTP响应状态代码

HTTP/1.0:非持久性连接

每个TCP连接传输一个对象,非持久性连接
RTT:从客户端发送一个很小的数据包到服务器并返回所经历的时间
notion image
优化:并行连接
notion image

HTTP/1.1:流水的持久连接

持久连接:发送响应后,服务器保持TCP连接打开,后续HTTP消息可以通过这个连接发送,每个TCP连接允许传输多个对象
非流水持久连接:客户端只有收到前一个响应后才发送新的请求,每个被引用的对象耗时1个RTT
流水的持续连接:客户端只要遇到一个引用对象就尽快发出请求,理想情况下,收到所有的引用对象只需耗时约1个RTT
HTTP/1.1版本默认使用流水的持久连接
notion image
服务器顺序响应(FCFS调度),在大对象之后请求的小对象,需要等待大对象的传输,若发生数据丢失会暂停对象传输

HTTP/2

减少多对象请求的时延(响应时间),将对象分割为系列“帧”,不同对象的帧交替传输
对象传输顺序基于客户定义的对象优先级(非FCFS调度)

HTTP/3:QUIC

基于UDP的应用层协议
应用层实现连接建立、错误控制、拥塞控制等功能

Web缓存/代理服务器

在不访问源服务器的前提下满足客户端的HTTP请求,缓存既充当客户端,也充当服务器,一般由ISP架设

条件性GET方法

notion image

Cookie技术

某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
  • HTTP响应消息的cookie头部行
  • HTTP请求消息的cookie头部行
  • 保存在客户端主机上的cookie文件,由浏览器管理
  • Web服务器端的后台数据库
应用:身份认证、购物车、推荐、Web e-mail
存在隐私问题

课堂练习

notion image
Connection: Close 明确表示 请求结束后关闭连接,不是使用持续连接(HTTP/1.1 默认是持久连接,除非指定 Close)。

2.7 P2P应用

没有服务器,任意端系统之间直接通信,节点阶段性接入Internet,节点可能更换IP地址

文件分发:P2P

从一个服务器向N个节点分发一个文件需要多长时间?
notion image
notion image
加上服务器和客户共同上传 NF 比特数据时间,是因为整个系统要把文件分发给所有客户。这不仅仅是服务器的工作,每个客户也贡献上传带宽,所以总上传量是 N⋅F 比特,总上传速率是服务器带宽 + 所有客户带宽。计算时间时必须考虑这个总量,才能得到系统完成分发所需的最小时间。

文件分发:BitTorrent

notion image
  • 文件划分为256KB的chunk,节点加入torrent,获取chunk的同时,节点需要向其他节点发送chunk
  • 一个 peer 通常 同时 unchoke(允许上传)给 4 个对等端(这是默认策略)。
  • 还有一个 optimistic unchoke,随机选择一个额外 peer,每隔一段时间切换。
  • 节点可能加入或离开,一旦节点获得完整的文件,它可能(自私地)离开或(无私地)留下

P2P索引

  1. 集中式索引:节点加入时通知中央服务器,内容和文件传输是分布式的,但内容定位是高度集中式的
      • 单点失效问题、性能瓶颈、版权问题
  1. 分布式索引:洪泛式查询
  1. 层次式覆盖网络:介于集中式索引和洪泛查询之间的方法,每个节点或者是一个超级节点,或者被分配一个超级节点,超级节点负责跟踪子节点的内容

分布式哈希表(DHT)(未讲,了解即可)

2.8 Socket编程(自学)

Loading...