Application Layer
Network Application 的架构
-
client-server
最常见的架构, 比如上淘宝, google drive都是客户端-服务器的架构
-
P2P
很多下载软件用的是这个架构, 比如BitTorrent
Web and HTTP
Overview
- 是一个超文本传输的协议, 客户端请求, 服务器响应, 发送对象的Web服务器
- 使用TCP, 客户端建立TCP链接, port=80, 与服务器交换HTTP报文
HTTP连接
非持久 - 最多一个对象在TCP连接上发送, 下载多个对象, 比如多个图片就需要建立多个TCP链接, HTTP/1.0 使用非持久连接
持久 - 多个对象可以在一个TCP上发送, HTTP/1.1 默认使用持久连接
HTTP报文
Request
Response
User-Server Interactions: cookies
因为HTTP是无状态的, 所以如果要维护状态需要靠别的支持
cookies就是client请求的时候, server会在client上set cookies, 然后client下次请求的时候会带上这个cookie, 那么server就清楚client的state了
Web 缓存
也叫做proxy server, 就是不需要访问原始服务器, 就满足client的需求
- 降低响应时间
- reduce traffic, 提升性能
当client请求server的时候, proxy先看看有没有cache, 有的话再跟server确认一下last-modify date, 如果proxy内容跟server内容一致, 则proxy负责把内容发给server. 注意, proxy还是会跟server通讯, 但是这个铜须不涉及context的传输, 比如视频跟图片, 所以不会给server太大压力; 相反, 如果client一开始就向server请求视频跟图片, 这就给server很大压力
HTTP2
Framing
HTTP2 可以把HTTP的message拆分成独立的小片发送, 然后再另一端组装起来
Response Message Prioritization
Response Message 可以assign weight between 1 and 256 到每一个message, server可以根据weight的大小分配发送的先后
Server Pushing
Server可以不用等待client的request直接给client发送数据, 减少latency
3个主要的组成部分
- 客户代理: Gmail客户端
- 邮件服务器: google的gmail服务器
- 简单邮件传输协议: SMTP - 邮件服务器的通讯使用的是SMTP通讯
SMTP
- 使用TCP通讯, port25
- SMTP把多个对象包含在一个报文中, HTTP是每个对象封装在各自的响应报文中
- 用户sender先把邮件push到sender的邮件服务器, enqueue
- sender的邮件服务器dequeue, 把邮件在发到接收方的邮件服务器
- 接收方需要通过POP3, IMAP等协议从接收方把邮件pull下来
报文格式
首部行
- To:
- From:
- Subject:
主体
- 报文
邮件访问协议
POP3: 下载到本地 - 本地管理
IMAP: IMAP服务器将每个报文与一个文件夹联系起来, 允许用户用目录组织保温, IMAP回话中保留用户状态 - 远程管理
DNS
就是把ip地址跟网页域名联系在一起
主要思路
- 分层, 基于域的命名机制
- 分布式数据库
- 在UDP之上, port53
- 是核心的Internet功能, 但以应用层协议实现
A Distributed, Hierachical Database
Database分为Root DNS servers, Top-level domain (TLD) servers以及Authoritative DNS servers.
Root DNS servers: 有1000台, 分布在13个地区. Root name server provide the IP address of the TLD servers
Top-level domain (TLD) servers: 就是 com, org, net, edu, gov, uk, ca, and jp ect. TLD servers provide the IP addresses for authoritative DNS servers
Authoritative DNS servers: organization负责管理
Local DNS server: local DNS is in local ISP(internet service provider) - close to clients. 这个server会有caching的功能
DNS records
DNS database的格式是Resource Records, 包括了(Name, Value, Type, TTL)
A记录(Type A): “A"在这里代表"Address”。A记录用于将主机名(或者说是域名)映射到对应的IP地址。比如,如果你有一个域名 example.com,你可能有一个A记录把这个域名映射到IP地址例如192.0.2.1。这意味着当用户访问example.com时,他们实际上会被指向192.0.2.1这个IP地址上的服务器。
NS记录(Type NS): “NS"在这里代表"Name Server”。NS记录用于指示该域名由哪些DNS服务器负责解析。这些DNS服务器有权威地知道如何将域名转换成IP地址。比如,对于 example.com 这个域名,其NS记录可能会指向ns1.example.net和ns2.example.net,这就意味着当需要解析example.com时,就会去询问这两个Name Server。
迭代查询
Local Name Server向不同的服务器获得需要的地址
CDN
背景
视频占据这大量的网络带宽, 需要解决规模性的服务用户. 于是, 需要分布式, 应用层面的基础设施
多媒体流化服务 DASH
服务器: 将视频分为多个块, 每个块独立储存, 编码于不同的码率, 然后提供不同的URL
客户端: 先获取告示文件 (manifest file) 周期性测试带宽, 查询告示文件, 在一个时刻请求一个块, 根据带宽请求不同码率的文件
CDN
通过CDN,全网部署缓存节点,存储服务 内容,就近为用户提供服务,提高用户体验
- enter deep: 将CDN服务器深入到许多接入网
- bring home: 部署在少数(10个左右)关键位置,如将服 务器簇安装于POP附近(离若干1stISP POP较近)
总结
总的来说, 应用层的服务是比较多的, 这里介绍了HTTP, STMP, DNS 以及 CDN