一、网络应用体系结构
1. 客户机/服务器结构
2. 点对点结构P2P
-
没有永远在线的服务器
-
任意端系统之间可以直接通讯
-
节点间歇性接入网络
-
例如:文件共享
3.混合结构
-
Napster:文件传输使用P2P结构,文件的搜索采用 C/S结构(集中式)
4. 进程间通信
-
不同主机上运行的进程间如何进行通信——消息交换(利用Socket)。
-
不同主机上的进程间通信,那么每个主机必须拥有标识符——IP地址,每个进程需要拥有标识符——端口号。消息的具体交换依靠的是协议
-
消息类型:请求消息 & 响应消息
-
消息语法& 语义
二、网络应用的服务需求
-
数据丢失/可靠性
-
时间/延迟
-
带宽
三、Internet传输层服务模型
1.TCP服务
-
面向连接
-
可靠数据传输
-
流量控制
-
拥塞控制
-
不提供时间/延迟保障
-
不提供最小带宽保障
2.UDP服务
-
无连接
-
不可靠数据传输
-
不提供 :
-
可靠保障
-
流量控制
-
拥塞控制
-
延迟保障
-
带宽保障
-
四、特定的网络应用及协议
1.HTTP (超文本传输协议)
-
C/S结构
-
使用TCP传输服务
-
无状态协议:服务器不维护任何优选科幻段过去所发请求的信息
-
为什么采用无状态机制?—— 因为有状态的协议更复杂,需要维护状态 ;如果客户或服务器失效,会产生状态不一致
-
2、Http连接类型
-
非持久性连接:每个tcp连接最多允许传输一个对象(一个网页包含多个图片时就需要多次连接)
-
每个对象需要2个RTT
-
操作系统需要为每个tcp连接开销资源
-
浏览器怎么做?—— 打开多个并行的tcp连接以获取网页所需对象
-
-
持久性连接:每个tcp连接允许传输多个对象
-
无流水的持久性连接:客户端只有收到前一个响应后才发送新的请求,每个被引用的对象耗时一个RTT
-
流水机制的持久性连接:客户端只要遇到一个引用对象就尽快发出请求,理想状态下所有引用只需1个RTT
-
3.http消息
-
请求消息:ASCII:人直接可读。
-
响应消息:
4.cookie技术
-
因为http协议是无状态的,某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据
-
cookie组件
-
http响应消息的cookie头部行
-
http请求消息的cookie头部行
-
保存在客户端主机上的cookie文件,有浏览器管理
-
web服务器端的后台数据库
-
-
原理:
5. web 缓存/代理服务器技术
-
功能:在不访问服务器的前提下满足客户端的HTTP请求
-
为什么要发明这种技术:
-
缩短请求的响应时间
-
减少计算时间
-
大范围的内容分发
-
-
缓存既充当客户端也充当服务端 ,如果缓存有最新版本,则不需要发送请求对象
1. Email 应用
-
组件:客户端、服务器、SMTP协议
-
为什么不直接建立连接,为什么采用邮件服务器?
-
PC机不能7*24 小时在线
-
如果发送不成功,就需要自己不断的尝试。邮件服务器起了一个中间过渡的作用
-
-
传输阶段:握手、消息传输、关闭
-
特点:
-
Email消息只能包含 7位ASCII码
-
SMTP依赖TCP进行可靠传输
-
以 . 表示结束
-
-
与HTTP对比:
-
HTTP:拉式 ; SMTP:推式
-
HTTP:每个对象封装在独立的响应消息中;SMTP:多个对象在由多个部分构成的消息中发送
-
都使用命令/ 交互模式
-
命令和状态代码都是 ASCII 码
-
2. Email消息格式
-
头部行: TO From Subject
-
消息体:消息本身,只能是 ASCII字符
-
为了在Email中发送二进制文件(图片、视频),所以在邮件头部增加额外的行以声明MIME的内容类型
3. 邮件访问协议:从服务器获取邮件
-
POP:post office protocol——命令/响应模式
-
IMAP:Internet Mail Access Protocol—— 更多功能、更加复杂
-
HTTP:163、QQMail
1. DNS
-
域名解析
-
负载均衡
-
为什么不使用 集中式DNS?
-
单点失效问题
-
流量、距离问题
-
-
DNS域名解析过程
-
缓存(浏览器中)
-
系统中的 hosts 文件
-
请求域名服务器 LDNS —主要
-
请求 root Server 域名服务器(.)
-
向 gTLD 域名解析服务器发送请求(.com) – name server(taobao.com)
-
查询请求的域名对应的 Ip地址
-
-
迭代查询
-
递归查询
2.DNS记录
-
Type = A:name是主机名,value 是该主机名对应的IP地址。因此一条类型为A 的资源记录提供了标准的主机名到IP地址的映射
-
Type= NS:则name是个域,value 是个知道 如何获得该域中主机IP地址的权威DNS服务器的主机名。这个记录用于沿着查询链来路由DNS查询
-
Type = CNAME:name 是别名,value 是其对应的规范主机名
-
Type= MX:value 是个别名为那么的邮件服务器的规范主机名。允许一个公司的邮件服务器和其他服务器可以使用相同的别名
分布式、层次数据库:DNS服务器实现了分布式数据库
当一个客户要主机名为 www.amazon.com 的IP地址时,客户首先与根服务器之一联系,他将返回顶级域名 com的TLD 服务器的IP地址。该客户则与这些TDL 服务器之一联系,它将为amazon.com返回权威服务的IP地址。最后该客户与amazon.com的权威服务器之一联系,他为主机名www.amazon.com返回其IP地址