2. 应用层

宏观

我们使用过哪些网络应用?
百度,qq,email,迅雷, alipay, wechat, baidu cloud, taobao

网络应用和单机应用有哪些本质性不同?
需要有网络的基础环境。

网络应用的体系结构

  1. client - sever
    (服务器是对外提供服务的)
    7*24,永久性访问地址/域名,利用大量服务器实现可扩展性
    客户机不会与其他客户机直接通信
  2. p2p
    没有永远在线的服务器,任意节点都可以直接通讯,节点可以改变ip,可以间歇接入网络(bt文件下载)
    优点: 高度可伸缩
    缺点: 难管理
  3. hybrid
    混合能够利用两者的优点同时规避两者的缺点。
    napster(文件传输用p2p,搜索用cs)

网络应用如何构成

同一主机进程如何通信? 进程间通信机制,操作系统提供
不同主机呢? 消息交换。客户机(发起通信),服务器(等待通信的进程)
利用socket发送接受消息


10803273-e87980dd9639af6c.png
image.png

socket是网络的api

如何寻址进程?

不同主机的进程通信,每个进程必须有标识符
如何寻址呢? 用ip地址。
同一主机可能同时有多个进程需要通信。所以ip地址不够。所以我们还需要有端口号。
为主机上每个需要的通信进程分配一个端口号。
80->http server
25->mail server

进程的标识符: ip+port

应用层协议

网络应用遵循应用层协议
公开协议(允许互操作):rfc,http,smtp
私有协议:多数p2p 文件共享应用

网络应用对传输服务的需求

某些网络应用能够容忍一定的数据丢失:电话
100%可靠: 文件传输
有些应用在延迟足够低才有效,比如网游
带宽限制的:网络视频
能适应任何带宽的: EMAIL

TCP VS UDP

10803273-24c1c7dfa1b01c4e.png
image.png

10803273-f673e5f1b7d30ed6.png
image.png

微观

WEB 应用

10803273-a6d40c7434ff332d.png
image.png

10803273-5b35f7410d7e099e.png
image.png

HTTP 是个无状态的,服务器不维护任何有关客户端历史所发请求的信息。
为什么要用无状态的?有状态的协议更加复杂,需要维护状态,一旦服务器挂了,会产生状态不一致。解决这种不一致代价高。

HTTP连接

10803273-647ebf7c05902b45.png
image.png

先看非持久链接


10803273-f5bc86d331e701de.png
image.png

10803273-e9da98da83b158b6.png
image.png

RTT:从客户端发送一个很小的数据报到服务器并返回所经历的时间。
发起,建立TCP 链接: 1个RTT
发送HTTP请求消息到HTTP响应消息:1个RTT
响应消息中所含的文件传输时间
total = 2 * rtt + 文件发送时间


10803273-5be7f1adae2be680.png
image.png

缺点:
每个对象需要2个RTT。(10个JPG,就需要20个RTT)
操作系统需要尾每个TCP链接开销资源
浏览器会打开多个并行的TCP链接以获取网页所需对象。服务器端压力过大。

这时就需要持久性连接,建立后尽可能多利用。

这个又分为无流水线机制的持久性连接。客户端只有收到前一个响应后才发送新的请求。每个被引用的对象耗时1个RTT。

带有流水机制的持久性连接, HTTP 1.1默认,理想情况下收到所有引用对象只需耗时1个RTT。

HTTP 请求消息

10803273-c0cd70f6b2625e41.png
image.png

HTTP 响应消息

10803273-158a6fc2ec390fc8.png
image.png

10803273-d510651ccb36946f.png
image.png

cookie

为什么需要cookie?
因为http协议无状态,如何保存购物车呢?
有时我们需要记录用户的会话,原有的http协议不够用了,就引入的cookie
网站为了辨别用户身份,进行session跟踪而存储在用户本地的加密数据


10803273-d60dc6b6ecad9073.png
image.png
10803273-dcc4960a56babd05.png
image.png

缓存/代理服务器

在能够不访问服务器的前提下满足客户端的http请求。
缩短客户请求响应时间
减少机构/组织的流量
大范围内实现有效的内容分发(cdn)。

请求先发给代理服务器,如果内容在缓存服务器有,就把内容直接给用户。如果没有,代理服务器转发到对应的原始的server

一般由isp来架设。

10803273-c93216290015885a.png
image.png

解决方案1,花钱升级


10803273-f0e94d83c1f09cf5.png
image.png

解决方案2, web缓存


10803273-9e6977bad0577f99.png
image.png

如何保证缓存版本 和 远端版本一致呢?


10803273-b5fad4250296c25d.png
image.png

Email 应用

一般有邮件客户端,邮件服务器,和smtp协议
客户端:读写email,与服务器交互。
服务器:存储发给用户的email,消息队列存储等待发送的email
使用tcp 进行email消息的可靠传输
端口25
传输过程的三个阶段:握手,消息的传输,关闭
命令,响应交互模式
命令: ascii文本
响应: 状态代码和语句
email消息只能包含7位ascii码

交互示例


10803273-c926acfa5df36ac7.png
image.png

smtp 使用持久性连接,要求消息必须由7位ascii 码构成,smtp服务器利用crlf.crlf确定消息的结束。

email消息格式 与pop3协议

因为消息体只支持ascii码,如何发图片和视频流呢?

mime(多媒体邮件扩展),通过在邮件头部增加额外的行以声明mime的内容类型。


10803273-913fde6175ecedfc.png
image.png

邮件访问协议:从服务器获取邮件。
pop协议(post Office protocol)
imap: internet mail access protocal(更多功能)
http: (基于web email)

pop协议


10803273-41127875ef4224ee.png
image.png

下载并删除 模式(如果用户换客户端,无法重读该邮件)
下载并保持模式:不同客户端都可以保留消息的拷贝。
pop3是无状态的。

IMAP 协议

10803273-c9a3f00cbab308c6.png
image.png

POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。

IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。

同时,IMAPPOP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。此外,IMAP 更好地支持了从多个不同设备中随时访问新邮件。

10803273-b474f303a9a9a6fe.gif
IMAP及POP3有什么区别?

总之,IMAP 整体上为用户带来更为便捷和可靠的体验。POP3 更易丢失邮件或多次下载相同的邮件,但 IMAP 通过邮件客户端与webmail 之间的双向同步功能很好地避免了这些问题。

DNS 应用

DNS的主要作用就是将域名翻译为IP地址。
难点就在于为整个互联网提供服务,全世界有几十亿台机器。要保障不间断的服务。
域名向IP地址翻译,主机别名,邮件服务器别名,负载均衡。

为什么不是用集中式的DNS?
1.单点失败
2.流量问题
3.距离问题
4.维护性问题

10803273-265fe19c13d0890c.png
image.png

从上往下,分别是根服务器,顶级域名服务器,服务器。

如查询www.amazon.com
1.查询跟服务器,找到COM 域名服务器
2.查询COM域名服务器,找到AMAZON.COM域名解析服务器
3.查询AMAZON.COM域名解析服务器,获得WWW.AMAZON.COM IP地址

当本地域名解析服务器无法解析域名时,访问根服务器。(全球有13个根域名服务器)
顶级域名服务器,负责COM,ORG,NET, EDU
权威域名服务器: 组织的域名解析服务器,提供组织内部服务器的解析服务。组织负责维护。
本地域名解析服务器:不严格属于层级体系,每个ISP都有个本地域名服务器。作为代理将查询转发给层级式域名解析服务器系统。

迭代查询


10803273-d972fccc5dd640ff.png
image.png

递归查询


10803273-7eca74ec712cd092.png
image.png

递归查询VS迭代查询

本地域名服务器一般会缓存顶级域名服务器的映射,所以根域名服务器不经常被访问。

DNS记录

资源记录(name,value,type,ttl)


10803273-18621c5a07a4165f.png
image.png

如何注册域名

10803273-f3b4830b6d247316.png
image.png

P2P应用

没有服务器,任意端系统可以作为服务器。
传统架构


10803273-0a2fbd4adf2cca18.png
image.png

10803273-9f8f5962c1a5cab8.png
image.png

p2p架构


10803273-e9c914c3fa6292eb.png
image.png

10803273-ce8cc4d9d778d409.png
image.png

bitTorrent


10803273-9f035be2abb8aa16.png
image.png
10803273-4dfa209e75d105a7.png
image.png
10803273-df42f1ac9df38063.png
image.png

p2p 索引技术

p2p系统的索引: 信息到节点位置(ip+port)的映射
文件共享: 利用索引动态跟踪节点所共享文件的位置

集中式索引


10803273-e8b213c44cbf957b.png
image.png

单点失效问题,性能瓶颈,版权问题。

分布式索引


10803273-2252ca2905de0eea.png
image.png

10803273-26baa7d335f20126.png
image.png

混合索引(介于集中式和分布式)


10803273-b5b60985c265b470.png
image.png

10803273-b9e37d2173b15a7d.png
image.png

猜你喜欢

转载自blog.csdn.net/weixin_34090562/article/details/86892202