网络应用
计算机网络应用体系结构
客户/服务器(c/s)结构网络应用
最典型、最基本的网络应用。
客户端发送请求,服务器响应请求。
纯P2P结构网络应用
端对端的应用,每个对等端同时扮演客户端和服务器的角色。
混合结构网络应用
以上两种结构的混合态。
网络应用通信基本原理
网络应用的本质是运行在不同的主机上(当然也可运行在同一主机上)的应用之间的通信。
进程之间通信并非是高层与高层之间直接通信,而是层层封装,最终形成比特流在物理链路上进行传输。到达目的端的相应层之后,再拆分开来,取出每一层对应的头部信息。
两个应用进程看起来就像在直接通信一样,其实并非如此,而是逻辑上可以这样抽象地看待,所以也称为逻辑通信。
域名系统
为服务器主机ip地址起的一个更容易读懂和记忆的别名。
域名解析就是将这个别名映射为真实的ip地址的过程,实现域名解析需要域名服务器。
层次化域名空间
树形结构
域名服务商
一个服务器所负责管辖的(或有权限的)范围叫做区。每个区设置相应的权威域名服务器,用来保存该区中所有的主机域名到ip地址的映射。
每台主机在进行网络配置时,都会配置一个域名服务器作为默认域名服务器,这个域名服务器被称为本地域名服务器。
根据域名解析过程中的作用和保存的域名信息,可以将域名服务器分为4类:
根域名服务器:最重要的域名服务器。全球13个,知道所有的顶级域名服务器的域名和ip地址,当本地域名服务器无法解析地址,首先请求根域名服务器。
顶级域名服务器:对应域名最后一个名字,对一个行业的命名,如com、org等,或对一个区域的命名,如cn、us等。
权威域名服务器:负责一个区的域名服务器,任何一个拥有域名的的主机,其域名和ip信息都保存在所在网络的权威域名服务器上。
中间域名服务器:不属于前三者。比如www.abc.xyz.com,则com是顶级域名服务器,中间域名服务器xyz.com,权威域名服务器abc.xyz.com。
域名解析过程
递归解析和迭代解析:
提供递归解析的域名服务器,会进行层层递归查询,将最终的结果返回给查询主机或服务器。
提供迭代解析的域名服务器,则会将下一步需要查询的域名服务器信息返回给查询主机和服务器。
通常本地域名服务器都提供递归查询服务。
根域名服务器通常只提供迭代查询服务。
为了缓解根域名服务器的压力,通常通过机制来达到:
- 各域名服务器将每次的结果缓存起来,下次查询到相同的域名时候直接从本机取。
- 本地域名服务器中存储顶级域名服务器的信息。
万维网应用
world wide web.
使用超文本传输协议(http)进行数据交互。
Http
概述
web应用的应用层协议,定义web服务器与客户端如何进行交互。
Http连接
http基于传输层的Tcp传输报文。在发送请求之前需要建立tcp连接。
- 非持久连接
- 并行连接
- 持久连接
HTTP报文
由起始行、首部行、空白行、实体主题组成。
可分为请求报文和响应报文两类。
cookie
解决Http无状态的问题。
cookie技术包括下面4部分内容:
- 响应头的set-cookie字段。
- 客户端本地存储cookie文件。
- 再次请求时会发送存储的cookie头行。
- 服务器根据cookie的id维护用户数据。
### Internet电子邮件
电子邮件系统结构
邮件的发送与接收过程:
- 用户A首先利用用户代理撰写邮件,包括填写收件人邮箱地址等,然后基于SMTP将邮件发送到其注册的邮件服务器A的外出邮件队列中,等待邮件服务器发送;
- 邮件服务器A从队列中取出用户A的邮件,基于SMTP发送给邮件服务器B;
- 邮件服务器B将邮件存放到用户B的邮箱中;
- 在某个时刻,用户B利用用户代理连接邮件服务器B上运行的邮件读取服务,基于邮件读取协议(POP、IMAP),将其邮箱中的邮件传输到本地,或者对邮箱中的邮件进行阅读、移动等操作。
用户代理指的是客户端软件
SMTP
电子邮件中核心应用层协议,实现邮件服务器之间或客户端到邮件服务器之间的邮件传输。
熟知端口号25。
电子邮件格式与MIME
MIME是SMTP的扩展,实现了将非7位ASCII码转换成7位ASCII码文本内容的标准,然后再利用SMTP进行传输。
邮件读取协议
POP3、IMAP、HTTP,其中HTTP被用作web mail系统的邮件读取协议。
- POP3:
最简单的邮件读取协议。熟知端口110。明文传输。
下载到客户端本地查看。 - IMAP:
对服务器远程操作。 - HTTP:
客户端和邮件服务器之间的交互无论是发送还是接收邮件都是http协议。
FTP
文件传送协议。
使用两个并行的tcp连接,一个是控制连接(熟知端口21),一个是数据连接(熟知端口21)。
p2p应用
优势:每个对等端既是客户端(上传者)又是服务端(下载端),随着对等端的增加几乎不会影响网络性能,而相对的c/s结构的性能瓶颈在于服务器的带宽。
socket编程
socket套接字:应用层调用传输层的接口。