应用层
参考资料:计算机网络自顶向下方法
一、应用层协议原理
1、应用程序体系结构
- 客户-服务器体系结构
- P2P体系结构
P2P体系结构特点:
1、对数据中心的专用服务器有最小的依赖。2、具有自扩展性,例如在文件共享应用中,每个对等方都由于请求文件产生工作量,但它们向其他对等方分发文件也为系统增加服务能力。
2、进程通信
- 套接字:进程通过套接字的软件接口向网络发送报文和接受报文
- 进程寻址:一台主机向另一台主机的某个进程发信息要知道主机的:1、地址(IP) 2、目的主机中指定接收进程的标识符(端口号port)
3、运输层服务
套接字是应用程序进程和运输层之间的接口,那么运输层协议的服务包括:
可靠的数据传输:确保发送的数据完全正确的被接受
吞吐量:可以用吞吐量就是发送进程能够向接收进程发送比特的速率。运输层协议可以保证吞吐量。
定时
安全性:加密
4、因特网提供的运输服务
TCP
- 面向连接的服务:可以在两个进程之间建立一个TCP连接(全双工)
- 可靠的数据传输服务
- 拥塞控制机制:当发送方和接收方网络阻塞时,TCP会抑制发送进程,为网络带来整体好处
- TCP和UDP都没有安全机制,可以在TCP协议之前添加一个SSL安全套接字层,通过SSL进行加密,之后通过TCP进行传输,接收方通过TCP套接字接收后,再通过SSL套接字进行解密。
UDP
- 不可靠的数据传输:不保证报文到达,并且可能是乱序到达的。
- UDP是无连接的,两进程通信前不握手
- UDP不包括拥塞控制机制所以可以以任何速率向网络层注入数据
- 因特网电话通常愿意将应用运行在UDP上以避免TCP的拥塞控制机制和分组开销,但因为许多防火墙被配置成阻挡大多数UDP流量,所以因特网电话设计成若UDP通信失败则使用TCP作为备份。
二、WEB和HTTP
1、Http概况
Web的应用层协议是超文本传输协议Http,HTTP定义了客户端和服务器进行报文交换的方式。
- Http协议使用TCP作为支撑运输协议,不用担心数据丢失,因为TCP可以确保可靠的数据传输服务
- HTTP不保存用户的任何信息,所以称为无状态协议
2、非持续连接和持续连接
非持续连接:每个请求响应对是经一个单独的TCP连接发送
- 每个TCP连接只传输一个请求报文和一个响应报文
- 往返时间RTT:一个短分组从客户到服务器再返回客户的时间,包括:分组传播时延、分组在中间路由器和交换机上的排队时延、分组处理时延。
- 三次握手:当用户点击超链接,客户端向服务器发送一个小的TCP报文段,服务器用小的报文段进行响应,最后客户向服务器返回确认。其中前两次握手为一个RTT。客户结合第三次握手(确认)向服务器发送请求报文,一旦服务器接收到,便返回HTML文件,这一部分又用去了一个RTT。总的时间为:两次RTT+HTML文件的传输时间。
持续连接:所有的请求响应经同一个TCP连接发送(HTTP默认持续联系,但也可以使用非持续联系)
HTTP请求报文:
HTTP响应报文:
4、Cookie
cookie技术四个组件:
- 在HTTP响应报文中的一个cookie首部行
- 在HTTP请求报文中的一个cookie首部行
- 在用户的端系统保留一个cookie文件,并由用户的浏览器进行管理
- 位于web站点的一个后端数据库
5、web缓存(内容分发网络)
web缓存也叫做代理服务器,有自己的磁盘存储空间,保存最近请求过的对象的副本。(命中率在0.2-0.7)
例如:当请求一个目标网站,首先客户端会和缓存服务器建立连接,并向其发送HTTP请求。web缓存进行检查看本地是否包含该对象的副本,如果有则直接返回该对象。如果没有,则向目标服务器建立一个TCP连接,并发送HTTP请求,服务器向代理服务器发送具有目标对象的HTTP响应。web缓存保留该对象的副本,并向客户浏览器用HTTP响应报文发送该副本。
6、条件GET方法
- 问题:对于web缓存,可能存在缓存里的内容是旧的,在网站存里面之后就被修改了。
- 解决方案:HTTP协议中的条件GET机制
- 条件GET请求报文:①请求报文使用GET方法,并且②请求报文中包含一个“If-Modified-Since”首部行
- 在缓存器将对象转发给客户端时,不仅在本地保存了对象,而且存储了最后的修改日期。假如一个星期后,用户通过缓存器请求同一个对象
1 | #请求报文示例 |
- 服务器返回响应报文:
1 | HTTP/1.1 200 OK |
- 由于该对象可能已经被修改了,该缓存器发送一个条件GET执行最新检查。 该报文告诉浏览器,仅当执行日期之后该对象被修改过才发送该对象:
1 | GET /fruit/kiwi.gif HTTP/1.1 |
- 若没有被修改过,则不需要返回对象,如下:
1 | HTTP/1.1 304 Not Modified |
三、因特网中的电子邮件
3个组成部分:用户代理、邮件服务器、简单邮件传输协议(SMTP)
1、SMTP
- SMTP不使用中间邮件服务器发送邮件。
- 若接收方服务器未开机,则报文一直保留在发送端的邮件服务器上并等待进行新的尝试。
使用SMTP发送邮件
之后输入邮箱名在@前面的内容的base64编码,如2470290795@qq.com只要前面的2470290795转为base64编码。(转化工具)
回车后输入邮箱授权码的base64编码(邮箱授权码获取步骤)
登陆成功后就可以发送邮件
2、SMTP和HTTP对比
- HTTP是拉协议,是由接收方主动连接。而SMTP是推协议,被动接收,(垃圾邮件)
- SMTP要求每个报文采用7比特ASCII码格式
- HTTP把每个对象封装到自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文中
3、邮件报文格式
上面发的邮件没邮件头,可以在FROM TO之后加上一个Subject:题目
4、邮件访问协议
对于邮件的传输,我们已经知道SMTP是推协议,是由发出端推到接收端的邮件服务器上,而并没到接收端的代理服务器 ,接收方不可以使用SMTP得到报文,因为这是一个拉操作,这就有了邮件访问协议。
①POP3
三个阶段:
- 特许:用户代理发送用户名和口令以鉴别用户
- 事务处理阶段:用户代理取回报文,对报文做删除标记及取消,获取邮件统计信息
- 更新阶段:结束POP3会话,删除被标记删除的报文
②IMAP
- IMAP服务器把每个报文和一个文件夹相连,
- 可以允许用户代理只获取报文的某些部分,例如当低带宽连接时,用户可能并不想获取大的文件的所有部分。
③基于web的电子邮件(HTTP)
用浏览器和邮件服务器进行收发邮件,这就要用HTTP协议。这里浏览器就是用户代理。
四、DNS:因特网的目录服务
识别主机的方式:主机名、IP地址
1、DNS提供的服务
DNS:域名系统,提供由主机名到IP地址转换的目录服务。
DNS是:
①一个由分布式DNS服务器实现的分布式数据库
②一个使得主机能够查询分布式数据库的应用层协议。
DNS服务器通常是运行BIND软件的UNIX机器
DNS协议运行在UDP上,使用53号端口。
属于应用层协议
使用DNS的过程:
同一台主机上运行着DNS应用的客户端,浏览器从URL中获取主机名,然后通过DNS客户端,发送到服务器,最后DNS客户端会收到DNS服务器的包含IP的响应,浏览器收到IP后,就会向HTTP服务器发送请求建立连接。
其他服务:
- 主机别名
- 邮件服务器别名
- 负载分配:对于一个繁忙的站点,它可能有多个服务器,因此对应多个IP地址,DNS会返回一个这些地址的集合,,而客户通常是向这些集合中IP地址最靠前的发送请求,所以,DNS将这些IP地址循环分配,(每次一个IP被访问后,就放在集合的后面)。
2、DNS工作机理
(1)DNS设计
① 最简单的DNS设计:只用一个DNS服务器
问题有:
- 单点故障:一个崩溃,全部完蛋
- 通信容量:必须处理所有的DNS查询
- 远距离集中式数据库
- 维护:困难
② 分布式、层次数据库
DNS服务器三种类型:根DNS服务器、顶级域(TLD Top-Level Domain)DNS服务器、权威DNS服务器
3、DNS记录和报文
共同实现分布式数据库的所有DNS服务器存储了资源记录(Resource Record,RR),RR提供了主机名到IP地址的映射。资源记录:(Name,Value,Type,TTL)
- TTL是生存时间,决定资源应当从缓存删除的时间。
- if Type==A, name=主机名,Value=该主机名对应的IP地址
- if Type==NS,Name=个域,Value是知道如何获取该域中主机IP地址的权威DNS服务器的主机名
- if Type==CNAME,Value是别名为name的主机对应的规范主机名
- if Type==MX,Value是别名为name的邮件服务器的规范主机名
①DNS报文
查询和回答报文,格式相同:
五、P2P文件分发
1、分发速度(扩展性)
- 传统C/S结构:
- 假设文件包含F个比特,服务器向N个对等方发送文件,服务器上载速度为u_s。则分发时间至少为NF/u_s
- d_min表示最小下载速度的对等方的下载速率,即d_min={d1,d2,……,dN},最小分发时间至少为F/d_min
综上
- P2P结构:
- 服务器至少发送每个比特一次,其他的对等方直接发送,最少F/u
- 最低下载速度的对等方时间至少为F/d_min
- 系统总上载能力 u_total = u_s+u1+u2+…+uN,文件总大小NF,最小时间:NF/u_total
综上:2、BitTorrent
参与一个特定文件分发的所有对等方的集合称为一个洪流,一个洪流的所有对等方彼此下载等长度的块,典型的长度为256kb。当一个对等方首次加入洪流,没有块,随时间流失,它积累更多的块,在它下载块时也上载块。当对等方获得了文件,它可以继续大公无私的上载块,也可以自私离开。同时,任何对等方在任何时候只有块的子集就离开洪流,之后再加入洪流。
每个洪流都有一个追踪器,当一个对等方加入洪流,就会向追踪器注册自己,并周期性通知追踪器仍在该洪流中。
两个问题:1、向邻居请求哪些块? 2、向哪些向她请求块的邻居发送块?
- 请求哪些块?最稀缺优先:针对没有的块,在邻居中副本数量最少的块。(目的:均衡每个块在洪流中的数量)
- 向谁发送块?当前能够以最高速率向她提供数据的邻居,给出优先权。并且它要确定出最高速率的四个邻居,每十秒,重新计算速率,修改四个对等方的集合。每过30秒,要随机选择另一个邻居向他发送块。
六、视频流和内容分发网
1、HTTP流和DASH
HTTP流
视频存储在HTTP服务器中作为一个普通文件,用户看视频就建立TCP连接,服务器以尽快速度发送数据。客户端将字节收集在客户应用缓存中,一旦超过预定的门限就开始播放。流式视频一接收到视频就开始播放,同时缓存后面的帧。DASH
HTTP流的缺陷:客户带宽大小不一。改进后:经HTTP的动态适应性流(DASH),每个版本有不同的比特率,对应 不同的质量水平
2、内容分发网(Content Distribution Network,CDN)
视频数据放哪?
- 1、建立单一的大规模数据中心
缺点:- 若客户远离中心,时延
- 流行的视频可能沿着相同路径发送多次
- 2、CDN
- 两种不同的服务器安置原则:
- ①深入:通过在编辑全球的接入ISP中部署服务器集群来深入到ISP的接入网中。目标是靠近端用户,减少通过链路和路由器数量,减少延迟。
- ②邀请做客:在少量关键位置建造大集群邀请ISP做客,通常放在今特网交换点IXP
(1)CDN操作
当用户主机中的浏览器检索一个特定视频时:
- 确定此时适合用于该用户的CDN服务器集群
- 将客户的请求重定向到该集群的某台服务器。
(2)集群选择策略
动态的将客户定向到CDN中某个服务器集群或数据中心的机制
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2470290795@qq.com
文章标题:应用层
文章字数:3.9k
本文作者:runze
发布时间:2020-04-15, 20:17:08
最后更新:2020-04-20, 00:14:16
原始链接:http://yoursite.com/2020/04/15/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E5%BA%94%E7%94%A8%E5%B1%82/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。