一.网络应用体系结构
- clinet/server:常见的网络应用体系,例如手机上的应用或网站绝大多数都是采用client/server结构
- P2P
- 没有永远在线的服务器
- 任意端系统/节点之间可以通讯
- 节点间歇性计入网络
- 高度可伸缩,但难于管理
- 混合结构:Napster应用采用了混合结构,文件传输使用P2P结构,文件的搜索采用C/S结构(每个节点向中央服务器登记自己的内容,节点向中央副武器提交查询请求)
网络应用进程通过消息交换进行通信,利用socket发送/接收消息。
网络应用的服务需求
- 可靠性
- 带宽
- 时延
二.特定网络应用及协议
HTTP(HyperText Transfer Protocol)
使用TCP传输服务
-
服务器在80端口等待客户请求
-
浏览器发起到服务器的TCP连接
-
服务器接收来自浏览器的TCP连接
-
浏览器与Web服务器交换HTTP消息
-
关闭TCP连接
HTTP是无状态协议,服务器不维护任何有关客户端所发请求的信息
HTTP连接
非持久性连接:每个TCP连接最多允许传输一个对象,HTTP1.0版本使用
持久性连接:每个TCP连接允许传输多个对象,HTTP1.1版本默认使用。持久性连接又分为无流水的持久性连接和带有流水机制的持久性连接。
无流水的持久性连接:客户端只有收到其哪一个相应后才发送新的请求。每个被引用的对象耗时1个RTT。
带有流水机制的持久性连接:HTTP1.1的默认选项,客户端只要遇到一个引用对象就尽快发出请求,理想状态下,收到所有引用对象只耗时1个RTT。
HTTP消息格式
分为请求消息和相应消息,都是ASCII码,人直接可读。
请求消息
method:http请求方式。常用请求方式为post/get,在HTTP/1.0中:有get,post和head(请server不要将所请求的对象放入响应消息中,常用来测试超链接的有效性、可用性和最近的修改)。在HTTP/1.1中除了get,post,head外,还有put(将消息体中的文件上传到URL字段所指定的路径)和delete(删除URL字段所指定的文件)
url:请求地址
version:http版本
响应消息
响应状态码:200 OK;301 Moved permanently;400 Bad Request;404 NOT Found;505 HTTP Version Not Supported
Cookie技术
由于HTTP协议是无状态的,但很多情况下服务器需要掌握客户端的状态,所以引入了Cookie技术,用于辨别用户身份,进行session跟踪而储存在用户本地终端的数据。
使用的是HTTP消息的头部:Set-cookie字段。简单来说就是在浏览器保存一个临时的userId用于对用户的识别。
Web缓存/代理服务器技术(CDN)
为了缩短客户请求的响应时间,减少机构/组织的流量,在大范围内实现有效地内容分发
浏览器向缓存/代理服务器发送HTTP请求,若请求对象在缓存中,直接返回对象。否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象。
缓存服务器一般由ISP架设。
条件性GET方法,用于缓存服务器定期更新内容。在HTTP请求消息中声明所持有版本的日期,若服务器检测版本是新的,则返回304,Not Modified,否则返回最新内容。
Email应用
构成组件:邮件客户端,邮件服务器,SMTP协议。
邮件服务器主要有邮箱:存储发给该用户的Email,消息队列:存储等待发送的Email
SMTP协议
SMTP协议是邮件服务器之间传递所使用的的协议。使用TCP进行email消息的可靠传输,端口为25。Email消息只能包含7位ASCII码。使用持久性连接,SMTP服务器利用CRLF.CRLF(回车换行)确定消息的结束。
Email消息格式
头部行:To,From,Subject
消息体:初期,消息本身只能是ASCII字符后面为了支持邮件传输图片视频等多媒体,增加了多媒体扩展MIME
在邮件头部增加额外的行声明MIME的内容类型,如下图
邮件访问协议
邮件访问协议指的是从服务器获取邮件,有三种方式:
- POP(Post Office Protocol)
- IMAP(Internet Mail Access Protocol)
- HTTP:163,QQ mail(在浏览器中打开邮箱都是使用HTTP的)
POP协议
认证过程
User,Pass
OK,ERR
事务阶段
List:列出消息数量
Retr:用编号获取消息
Dele:删除消息
Quit:退出
有两种模式,一种为下载并删除模式,用户若下载该邮件,在其他客户端,是无法重读该邮件的;另一种为下载并保持模式,不同客户端都可以保留消息的拷贝。POP是无状态的。
IMAP协议
所有消息统一保存在一个地方:服务器;允许用户利用文件夹组织消息。两者的区别:
DNS(Domain Name System)
DNS是为了解决IP和域名之间的映射。DNS是多层命名服务器构成的分布式数据库。不使用集中式DNS的原因:
- 单点失败问题
- 流量问题
- 距离问题
- 维护性问题
全球目前有13个根域名服务器。
顶级域名服务器:负责com,org,net,edu等顶级域名和国家级域名,例如cn,uk,fr等
权威域名服务器:组织的域名服务器,提供组织内部服务器的解析服务
本地域名服务器:对计算机比较了解的同学应该会在计算机中看到使用下面的DNS服务器地址,一般会选择自动获得。每个ISP有一个本地域名服务器,当主机进行DNS查询时,查询会被发送到本地域名服务器,作为代理,将查询转发给域名解析服务器系统。查询方式有两种,分别为迭代查询和递归查询。
只要域名解析服务器获得域名-IP映射,会缓存此映射。一段时间后,缓存条目失效并被删除。一般本地域名服务器会缓存顶级域名服务器的映射,因此根域名服务器不经常被访问。
DNS记录与消息格式
DNS记录被称为资源记录(RR,resource records,是一个四元组(name,value,type,ttl)
-
type = A表明name是主机域名,value是IP地址。
-
type = NS表明name是域(edu.cn),value是该域权威域名解析服务器的主机域名
-
type = CNAME:name是某一真实域名的别名,value是真实域名
-
type = MX:value是与name相对应的邮件服务器。
DNS协议消息分为查询和回复消息,消息格式相同,如图
Identification:16位查询编号,回复时使用相同编号
flags:查询或回复,期望递归,递归可用,权威回答。
如何注册域名
-
例如:你刚刚创建了一个公司“Network Utopia”
-
在域名管理机构(Network Solutions)注册域名networkutopia.com。向域名管理机构提供你的权威域名服务器的名字和IP地址,域名管理机构向com顶级域名解析服务器中插入两条记录
(networkutopia.com, dns1.networkutopia.com,NS)
(dns1.networkutopia.com,212.212.212.1,A) -
在权威域名解析服务器中为www.networkupotia.com加入type为A的记录,为networkutopia.com加入type = MX的记录。
P2P应用
P2P应用的典型特点是没有服务器,任意端系统之间直接通信,节点阶段性接入Internet,节点可能更换IP地址。
经计算得出,向N个主机传输文件,使用C/S架构,传输时间是随着N线性增长。而使用P2P结构,传输时间会随着N增长越来越慢。