6.1 网络应用模型
6.1.1 客户\服务器(Customer/Server)模型
总是打开的主机:服务器,工作流层:
- 处于接受请求的状态;
- 客户机发出服务请求,等待接收结果;
- 服务器收到请求,分析并处理。
客户程序必须知道服务器的地址,客户机上一般不需特殊硬件和操作系统,服务器必须有特定程序。服务器不必知道客户程序地址。
客户/服务器模型的主要特征:
- 客户是服务请求方,服务器是服务提供方。如web应用、FTP、远程登录、电子邮件。
- 网络中各计算机地位不平等,服务器可以管理权限
- 客户机相互不直接通信
- 可扩展性不佳
6.1.2 P2P模型
服务器性能好坏决定了整个系统的性能,大量用户请求服务,则服务器出现瓶颈。P2P的思想是整个网络中的传输内容不再被保存在中心服务器上,每个结点同时具有下载、上传功能,权利和义务大致对等。
P2P中计算机没有固定的客户机和服务器划分,任意两方称为对等方(Peer)直接相互通信。
特点在于:
- 减轻服务器压力
- 多个客户机之间直接共享
- 可扩展性好
- 网络健壮
缺点:对于单个机器资源开销大,占用总网络流量大,被ISP反对。
6.2 DNS系统
域名系统DNS(Domain Name System)是因特网的明明系统,用于将易于记忆的主机名转为IP地址。运行在UDP上,使用53端口。
分为3部分:
- 层次域名空间
- 域名服务器
- 解析器
6.2.1 层次域名空间
任何主机或路由器都有一个唯一的层次结构名,即域名(Domain Name)。
域:名字空间中一个被管理的划分。还可以划分为子域、子域的子域等,形成顶级域、二级域、三级域等。每个域由标号序列组成,标号之间用.
隔开。如www.baidu.com,从后往前依次为顶级域名、二级域名、三级域名。
特点:
- 英文不分大小写
- 标号中只能使用连字符
-
,不能用其他特殊符号 - 每个标号不超过63个字符
- 级别低的域名在左边
顶级域名分类:
- 国家级nTLD,如cn、hk、jp
- 通用gTLD,如gov,com,net,org
- 基础结构域名:只有一个,arpa,用于反向域名解析
6.2.2 域名服务器
域名到IP的解析是由域名服务器上的程序完成的。一个服务器有权限管辖的范围是“区”(而不是“域”),一个区中各节点必须联通。每个区有自己的权限域名服务器保存这个域中所有的映射。此外还需要有连到其他服务器的信息,以便不能解析时知道应该去哪找另一个域名服务器。
1. 根域名服务器
最高层次,知道所有顶级域名服务器的IP,总共有13个(ipv4),都是服务器集群。
2. 顶级域名服务器
管理在特定顶级域名服务器注册的所有二级域名。当收到DNS查询请求,给出相应请求。
3. 授权域名服务器(权限域名服务器)
每一个主机必须在该服务器上登记,来保证更可靠的工作。一个主机最好有至少两个。域名服务器也可以同时充当本地域名服务器和授权域名服务器。总是能够将其管辖的主机名转为IP地址。
4. 本地域名服务器:每一个ISP或组织都可拥有本地域名服务器。主机发出的DNS查询请求首先发送给该本地域名服务器。
6.2.3 域名解析过程
正向解析:域名到IP;反向解析:IP到域名。
客户端需要进行解析,通过本机DNS客户端发送UDP报文到本地域名服务器进行递归查询或递归迭代结合查询方式。前者开销过大。
- 主机向本地域名服务器的查询:递归查询
本地主机询问的域名服务器不知道IP,则交给根域名服务器继续发送查询请求报文(替换主机查询) - 本地区域名服务器向根域名服务器的查询:迭代查询
根域名服务器收到本地域名服务器的迭代请求报文,给出IP地址或告诉本地域名服务器应该向下一个顶级域名服务器进行查询。
实例:
- 客户机想本地域名服务器发送DNS请求报文
- 本地服务器收到请求查询本地缓存,没有则向根域名服务器发送请求
- 根域名服务器收到请求,判断该域名属于.com域,将对应顶级域名服务器IP发给本地域名服务器
- 本地域名服务器向顶级域名服务器dns.com发送解析请求报文
- 顶级域名服务器dns.com收到请求,判断域名属于的xxx.com域,将对应的授权域名服务器dns.xxx.com的IP返回给本地域名服务器。
- 本地域名服务器向授权域名服务器发起解析请求报文
- 授权域名服务器dns.xxx.com收到请求将查询结果返回本地域名服务器
- 本地域名服务器将内容保存到本地缓存,并返回给客户机。
域名服务器中使用高速缓存,因此一段时间后会丢失之前的信息。
6.3 文件传输协议FTP
6.3.1 FTP工作原理
提供交互式访问允许客户指明文件类型和格式,允许文件具有存取权限。屏蔽了计算机系统的细节,适合在异构网络中传送。
提供的功能:
- 提供不同种类主机系统之间的文件传输能力
- 以用户权限管理方式提供用户对远程FTP服务器文件的管理能力
- 以匿名FTP的方式提供公用文件共享的能力
使用TCP提供可靠传输服务。一个FTP服务器进程可为多个客户进程服务。工作步骤:
- 打开控制端口21,保证客户连接上
- 等待客户请求
- 启动从属进程处理客户请求,主进程和从属进程并发进行
- 回到等待状态
6.3.2 控制连接和数据连接
FTP工作时的两个并行TCP连接:控制连接、数据连接。
1. 控制连接
服务器监听21端口等待客户链接。建立在这个端口的连接称为控制连接,控制连接用来传输控制信息(连接请求、传送请求等),控制信息以7位ASCII格式传送,不用于传送文件。传输文件时依然保持打开并传输命令。
2. 数据连接
服务器端的控制进程收到客户端发来的传输请求,创建数据传送进程和数据连接,数据连接用来连接客户端和服务器的数据传送进程。完成实际的文件传送,并在传送结束后关闭数据传送链接。
控制连接是分离的,因此称FTP的控制信息为带外(out-of-band)。若要修改服务器文件,则应该先将文件传到本地主机,修改后将副本传送到服务器。网络文件系统(NFS)允许进程打开一个远程文件,并在某个特定位置开始读写数据,实现断点续传。
6.4 电子邮件
6.4.1 电子邮件系统的组成结构
是一种异步通信。包含三个最重要的组成结构:
- 用户代理(user agent)
是用户和电子邮件系统的接口。至少具有撰写、显示、处理功能。通常就是一个PC上的程序,如Outlook - 邮件服务器
电子邮件系统的核心,收发邮件并报告传送情况。 - 协议(SMTP、POP3、IMAP等)
SMTP属于发送协议,采用“Push”;POP3属于读取协议,采用“Pull”。
电子邮件收发过程:
- 发信人调用用户代理,撰写和编辑邮件。用户代理使用SMTP将邮件传送给邮件服务器
- 发送方邮件服务器将邮件放入邮件缓存队列,等待发送
- 运行在发送方服务器的SMTP客户进程发现邮件缓存中有带发送的邮件,则向运行在接收方邮件服务器的SMTP服务器进程发起建立TCP
- TCP建立后进行发送,发送完毕后关闭连接
- 运行在接收方邮件服务器的SMTP服务器进程收到邮件,放入收信人的用户邮箱,等待读取。
- 收信人调用用户代理,使用POP3或IMAP将自己的邮件从接收方服务器的用户邮箱取回。
6.4.2 电子邮件格式、MIME
1.电子邮件格式
RFC 822 规定了邮件的首部格式,内容由用户自定。
首部关键字有:
- From:发送方地址
- To:必须,一个或多个收件人
- Subject:可选,邮件主题
2.MIME(多用途网际邮件扩充, Multipurpose Internet Mail Extensions)
SMTP只能传送ASCII,对于其他语言需要进行扩充,是SMTP的上层协议,即MIME邮件可在SMTP中传送。有三部分:
- 5个新的邮件首部字段,包括MIME版本、内容描述、内容标识、内容传送编码、内容类型。
- 邮件内容格式的标准化
- 传送编码,保证内容格式转换,不会被邮件系统改变
6.4.3 SMTP和POP3
1.SMTP
TCP连接,端口25。三个阶段如下:
-
建立连接
SMTP客户每隔一段时间对邮件缓存进行扫描,发现邮件则使用25端口和服务器建立TCP连接,接收方SMTP服务器发出220 service ready
,客户向服务器发送HELO
或EHLO
命令,附上发送方主机名。 -
邮件传送
此时发送方的MAIL
命令后才有发送方的地址,格式为:MAIL FROM: <发件人地址>
。当SMTP准备好接收,则回答250 OK
,客户端发送多个RCPT(recipient),格式为:RCPT TO: <收件人地址>
每发送一个RCPT都应该有相应信息从SMTP返回,如250 OK
或505 No such user here
客户端之后使用DATA
命令表示开始传输邮件内容。正常情况:服务器返回354 Start mail input: end with <CRLF>.<CRLF>
,<CRLF>
是回车换行。用<CRLF>.<CRLF>
表示邮件内容结束。 -
连接释放
SMTP客户发送QUIT
,服务器返回221
表示同意释放。
2.POP3
邮局协议(Post Office Protocol,POP)简单而功能有限,使用Pull的方式,每当用户需要读取时,用户代理才向服务器发出请求。使用110端口,和TCP协议。
两种工作方式:
- 下载并保留
- 下载并删除
不同xxx.com的电子邮件服务器之间是通过HTTP协议,而不同邮件服务器之间才使用SMTP。