应用层
一、应用层协议原理
- 研发应用层的核心
- 写出能够运行在不同端系统的通过网络彼此通信的程序。
- 没有应用程序在网络核心设备上
- 网络核心设备并不在应用层上起作用,而仅在较低层起作用。
- 将应用软件限制在端系统的方法,促进了大量的网络应用程序的迅速发展和部署。
网络应用程序体系结构
-
应用程序的体系结构明显不同于网络的体系结构。
- 研发者角度看,网络体系结构是固定的。
- 应用程序体系结构由研发者设计,规定了如何在各种端系统上组织该应用程序。
-
主流体系结构
- 客户-服务器体系结构
- 对等(
P2P
)体系结构
-
客户-服务器体系结构(
90%
)- 有一个总是打开的主机称为服务器,它服务于许多称为客户的主机的请求。
- 服务器
- 保持开启,保持域名不变(
IP不变
)。
- 保持开启,保持域名不变(
- 客户机
- 可以间断同服务器连接。
- 可以拥有动态
ip
。 - 客户机之间不直接通信。
-
P2P
体系结构- 应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方。
- 由于高度非集中结构,面临安全性、性能和可靠性等挑战。
- 其实相对于一方为服务器,一方为客户端。
进程通信
-
程序
- 实现特定目标而完成的有序行为集合。
-
进程
- 程序的执行载体。
- 初始化通信的进程为客户端进程。
- 等待被连接的进程为服务端进程。
- 两个不同端系统上的进程,通过报文来相互通信。
-
套接字
Sockets
- 进程通过它的套接字接收消息。
- 套接字类比于门户。
- 指代进程间通信的逻辑体系,以及暴露给应用程序使用的
API
。
-
进程寻址
Host
->IP
Process
->Port
因特网提供的传输服务
TCP
服务- 可靠传输
- 流量控制
- 发送方不会淹没接收方。
- 对发送方进行控制。
- 拥塞控制
- 网络拥塞时,抑制发送进程。
- 面向连接
UDP
服务- 不可靠数据传输
上面两者都是明文传输,下面为密文传输。
SSL
(Secure Socket Layer
)安全套接层TLS
(Transport Layer Security
)传输层安全
SSL
和TLS
不兼容。
二、Web和HTTP
HTTP概况
URL
(Uniform Resource Locator
)资源定位符- U R L = H o s t + P a t h URL=Host+Path URL=Host+Path
HTTP
(Hyper Text Transfer Protocol
)超文本传输协议stateless
无状态- 使用
TCP
建立连接
状态
state
:历史状态需要被维护
C/S
模式- 客户端负责请求和接收回复并呈现
Web
对象。 - 服务端负责(使用
HTTP
)发送对象以回复请求。
- 客户端负责请求和接收回复并呈现
HTTP
连接- 非持久
HTTP
连接- 每个链接只能传输一个对象。
- 持久
HTTP
连接- 每个链接都能传输多个对象。
- 非持久
非持续连接和持续连接
Non-persistent
非持续性连接- 请求一个
object
就需要建立一个TCP
连接。 - 下载多个对象需要申请多次连接。
- 请求一个
RTT
(Round Trip Time
)往返时间- 从发送一个分组到收到回复的时间。
H T T P n o n − p e r s i s t e n t = 2 × R T T + F i l e t r a n s m i s s i o n HTTP_{non-persistent}=2\times RTT+File_{transmission} HTTPnon−persistent=2×RTT+Filetransmission
- 从发送一个分组到收到回复的时间。
Persistent
持续性连接- 多个对象的请求只需要一次
TCP
连接。
- 多个对象的请求只需要一次
- 流水线
- 不带流水线的持续性连接
- 客户先收到响应消息,才发出新的请求。
- 每个对象经历一个
RTT
。
- 带流水线的持续性连接
- 客户遇到引用对象就发送请求消息。
- 所有对象只经历一个
RTT
。
- 不带流水线的持续性连接
HTTP报文格式
CRLF
\r
是Carriage Return
。\n
是Line-Feed Character
。- 报文以
\r
、\n
结束。
- 请求方法
方法 | 作用 |
---|---|
POST | 向指定资源提交数据进行处理请求 |
GET | 在URL 中包括请求数据 |
PUT | 文件在实体主体中被上载到URL 字段指定的路径 |
DELETE | 删除URL 字段指定的文件 |
HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
- 请求报文
GET /path/page.html HTTP/1.1 \r\n
Host: www.xxser.com \r\n
Connection: close \r\n
User-agent: Mozilla/5.0 \r\n
Accept-language: zh-cn \r\n
\r\n
- 第一行为请求行,之后为首部行。
\r\n
表现为空行。User-agent
代表用户发送报文的软件。
- 回复报文格式
Status Line
Header Lines
Data
- 状态码
2xx
正常3xx
重定向4xx
客户端出错5xx
服务器出错
HTTP/1.1 200 OK \r\n
Connection:close \r\n
Date: Sat, 06 Aug 2011 12:00:15 GMT \r\n
Server: Apache/1.3.0 (Unix) \r\n
Last-Modified: Thu, 22 Jun 2011 \r\n
Content-Length: 6821 \r\n
Content-Type: text/html \r\n
\r\n
data data data data data ...
第一行为请求行,中间为首部行,后面为数据部分。
用户与服务器的交互:cookie
Cookie
- 由于
HTTP
无状态,服务器给客户端用于确认身份的,Cookie
用来表示状态。
- 由于
- 存在位置
HTTP
响应消息的Cookie
标题行。- 下一条
HTTP
请求消息的Cookie
标题行。 - 在本机有个
Cookie
文件被浏览器管理。 - 服务器后台数据库保存。
Web缓存(代理服务器)
- 概念
- 使用代理服务器接收请求,减轻原服务器的压力。
- 如果
Proxy
里面没有想要的资源,访问Origin
。
- 作用
- 提高响应速度。
- 减少内部网络与接入链路上的通信量。
- 能从整体上大大降低因特网上的
Web
流量。
条件GET方法
- 作用
- 确认目标文件的上一次修改时间。
- 确保获取的对象是最新的。
- 步骤
- 如果代理服务器本地存在的请求页面过期了(返回中包含
Last-modified: date
),则向原服务器发起条件GET
请求(If-modified-since: date
)。 - 原服务器先查看自己是否在
date
之后对该页面进行修改,若修改,则返回整个网页;若未修改,则返回304 Not modified
。
- 如果代理服务器本地存在的请求页面过期了(返回中包含
三、因特网中的电子邮件
- 主要组成部分
- 用户代理
user agents
- 邮件阅读器
- 邮件服务器
mail servers
- 存放用户的邮件消息
- 简单邮件传输协议
SMTP
- 邮件服务器之间的通信协议
- 邮件服务器之间的通信协议
- 用户代理
简单邮件传输协议SMTP
- 客户邮件服务器到服务邮件服务器
TCP
可靠传输- 端口号
25
- 直接传送
- 特点
- 使用持久连接
- 邮件信息(
Header
+Body
)必须是7-bit ASCII
- 使用
CRLF
判断邮件结束
与HTTP的对比
SMTP
有状态- 除了
TCP
连接之外,在应用层也有握手的过程。
- 除了
Command
类似HTTP
的命令HELO
招手MAIL FROM
表示来源RCPT TO
表示目的DATA
传送数据QUIT
断开连接
HTTP
使用Pull
,而SMTP
使用Push
。- 都有状态码返回。
邮件报文格式
- 报文大小必须为
7
比特制的ASCII
码。
M e s s a g e s = H e a d e r + B l a n k L i n e + B o d y Messages=Header+Blank\ Line+Body Messages=Header+Blank Line+Body
- 报文以
CRLF
结尾。
邮件访问协议
- 作用
- 接收方通过用户代理使用从其邮件服务器上取回邮件的方式。
POP
(110
端口)- 下载并且删除
- 下载并且保持
IMAP
(143
端口)- 把所有邮件放在服务端。
HTTP
(80
端口)- 取邮件用
PULL
,发邮件用PUSH
。 QQ
邮箱- 谷歌邮箱
- 取邮件用
不使用
SMTP
将邮件Push
到每个接收端,是因为接收端的IP
往往不确定。
POP3协议
- 两个阶段
- 身份认证阶段
- 传输阶段
- 自身缺陷
- 用户读取邮件后,服务器不再保存
- 会话无状态
IMAP
- 所有邮件消息都保存在服务器。
- 允许用户在服务器的各文件夹中管理邮件消息。
IMAP
跟踪用户会话的状态信息 :- 文件夹和邮件消息
IDs
与文件夹名字的映射
- 文件夹和邮件消息
四、DNS:因特网的目录服务
DNS提供的服务
DNS
(Domain Name System
)- 将主机名解析为
IP
地址。 - 协议基于应用层。
- 端口号为
53
。
- 将主机名解析为
- 根域名(
Root Name Server
)- 本地域名服务器遇到解析不了的域名就会连接它。
- 全球有
13
个。
- 顶级域名
TLD
(Top Level Domain
)- 国家或地区级
nTLD
/nnTLD
(cc
:country code
) - 目前有
300
多个。
- 国家或地区级
- 基础设施域
arpa
(Address and Routing Parameter Area
)- 专门用于
Internet
基础设施。
- 专门用于
- 通用顶级域
gTLD
。- 现已注册
1200
多个。
- 现已注册
- 权威域名服务器
ANS
(Authoritative Name Server
)- 在
TLD
下一级的二级域名。
- 在
- 本地域名服务器(
Local DNS Server
)- 没有严格地属于分层制度。
- 每个
ISP
拥有一个。
DNS工作机理概述
- 递归
- 一层一层地寻找到权威域名服务器
- 具有层次性
- 迭代(常用)
- 每次由
Local DNS Server
发送询问和接收。
- 每次由
- 缓存
- 提高效率
TLD Server
通常被Local
保存,解放Root DNS Server
- 保持资源的更新
DNS记录和报文
RR
(Resource Records
)资源记录A
(Address
)IP
和主机名的对应name
=>Hostname
value
=>IP address
NS
(Name Server
)- 域名和权威域名服务器的对应
name
=>Domain
value
=>ANS hostname
CNAME
(Canonical
)- 主机别名服务
- 别名和真名的对应
name
=>Alias name
value
=>Canonical name
- 主机别名服务
MX
(Mail eXchange
)- 邮件服务器别名
value
=>Mailserver name
(和name
有联系)
R R f o r m a t : ( n a m e , v a l u e , t y p e , t t l ) RR\ format:(name,value,type,ttl) RR format:(name,value,type,ttl)
- 报头
- 标识
Identification
16
比特
Flags
标志位- 请求还是回复
- 递归还是迭代
- 是否支持递归
- 是否是权威性的回复
- 标识
需要掌握大概的报文结构。
- 插入记录(必考)
#需要插入的内容
dns1.mytech.com 111.111.111.1
dns2.mytech.com 222.222.222.2
#机构插入语句
(mytech.com, dns1.mytech.com, NS)
(dns1.mytech.com, 111.111.111.1, A)
(mytech.com, dns2.mytech.com, NS)
(dns2.mytech.com, 222.222.222.2, A)
五、P2P文件分发(不考)
- 特点
- 没有总是打开的服务器。
- 任意终端系统直接通信。
- 对等点间歇性连接并更改
IP
地址。
C/S
模式- 服务端
- 顺序地传送
N
个大小为F
的文件到网络中。 - 发送的速率为
Us
。
- 顺序地传送
- 客户端
- 在网络中下载完整一份的文件。
- 下载速率为
Di
。
- 最短分发时间
- 服务端
D c / s ≥ m a x { N F / u s , F / d m i n } D_{c/s}\geq max\{NF/u_s,F/d_{min}\} Dc/s≥max{NF/us,F/dmin}
-
P2P
模式-
服务器
- 传送一份文件到网络中。
-
客户端
- 下载文件的部分并且复制
N-1
份,分发到网络中。 - 下发速率为
Ui
。
- 下载文件的部分并且复制
-
最短分发时间
-
D P 2 P ≥ m a x { F / u s , F / d m i n , N F / ( u s + ∑ u i ) } D_{P2P}\geq max\{F/u_s,F/d_{min},NF/(u_s+\sum u_i)\} DP2P≥max{F/us,F/dmin,NF/(us+∑ui)}
六、视频流和内容分发网(不考)
- 流媒体特点
- 端到端时延约束。
- 端到端时序约束。
- 有一定兼容能力。
- 挑战
- 规模。
heterogeneity
异构性。
- 解决方案
- 分布式、应用层设施。
因特网视频
- 编码
- 利用冗余去减少比特以达到压缩的目的。
- 例:哈夫曼编码。
cbr
(constant bit rate
)固定码率vbr
(variable bit rate
)变化码率
HTTP流和DASH
DASH
(Dynamic,Adaptive Streaming over HTTP
)- 服务端
- 提供不同码率的切块。
- 客户端
- 接收最大承受的码率的切块。
- 智能地决定何时、如何、何地去接收切块。
ABR
(Adaptive bit rate
)自适应码率- 广泛用于直播和实时通讯。
- 服务端
七、内容分发网CDN
面临挑战
- 发送流给成千上万的用户。
CDN内容
CDN
(Content Distribution Networks
)- 建立一个巨大的单点服务器。
Enter Deep
- 将
CDN
服务器推送到接入网中。 - 离用户更近。
- 将
Bring Home
bring object to cdn home