网络应用模型
客户/服务器模型
有个总是打开的主机,称为服务器
-
服务器处于接收请求的状态
-
客户机发出服务请求,等待接收结果
-
服务器收到请求后,分析请求,进行处理,得到结果发送给客户机
客户是服务请求方,服务器是服务提供方
常见应用:Web,文件传输协议(FTP),远程登录和电子邮件
- 管理方便
- 客户机间不直接通信
- 可扩展性不佳
P2P
整个网络中的传输内容不再被保存在中心服务器上,每个节点都同时有下载,上传的功能。每个节点既作为客户访问其他节点的资源,也作为服务器提供资源给其他节点访问。
- 减轻服务器压力
- 可扩展性好
- 网络健壮性好
- 多个客户机间可以直接共享文档
缺点:需要给其他节点提供服务,占内存多,影响整机速度。
DNS(域名系统)
采用客户/服务器模型,协议运行在UDP上,使用 53 号端口
分为三部分:层次域名空间,域名服务器和解析器
层次域名空间
每个域名都由标号序列组成,各标号之间用 . 隔开。级别最低的域名写左边,最高的写右边
域名服务器
域名系统是分布式数据库系统
域名到IP地址的解析是由运行在域名服务器上的程序完成的
根域名服务器
本地服务器对一个域名若无法自己解析,首先就求助于根域名服务器
总共有 13 个根域名服务器
用来管辖顶级域,不直接转 IP ,而是告诉本地域名服务器下一步到哪个顶级域名服务器进行查询
顶级域名服务器
管理在该顶级域名服务器注册的所有二级域名,收到请求返回的结果可能是 IP 也可能是下一步要查询的域名服务器 IP 地址
授权域名服务器
每台主机都必须在授权域名服务器处登记,授权域名服务器总能将其管辖的主机名转换为该主机的 IP 地址
本地域名服务器
主机发出 DNS 查询时,首先发给本地域名服务器
域名解析过程
正向解析:域名 -> IP
反向解析:IP -> 域名
- 递归查询
- 一个帮一个问,最后返回结果
- 这种使根域名服务器负载过大,通常不用
- 递归与迭代相结合
- 本地域名服务器帮主机问
- 本地服务器问后面的,后面告诉他去哪问,本地服务器自己去问
域名服务器中广泛使用高速缓存
文件传输协议(FTP)
使用的最广泛的文件传输协议,允许客户指明文件的类型与格式,允许文件具有存取权限
- 以用户权限管理的方式提供用户对远程 FTP 服务器上的文件管理能力
使用 TCP
FTP服务进程分为
- 一个主进程:负责接收新增的请求
- 若干从属进程:负责处理单个请求
使用两个 TCP 连接
- 控制连接,端口号 21
- 服务器监听 21 号端口,等待客户连接。用于传输控制信息(开始,结束,终止等),会话期间一直保持打开
- 数据连接,端口号 20
- 接收到客户连接请求,建立数据连接
- 主动:通过 20 号端口与客户开放的端口(随机)连接
- 被动:服务器随机开放端口,告知客户端,等客户端来连接
若要修改服务器上文件,需要先将文件传送到本地主机,改完,把副本发回原服务器
电子邮件
电子邮件系统三个主要构件:用户代理,邮件服务器,使用的协议(SMTP,POP3 等)
用户代理
用户与电子邮件系统的接口,就是一个客户端软件
邮件服务器
发送和接收邮件,还能向发件人报告邮件发送情况
要能做客户端和服务器(发给别的服务器,从其他服务器接收)
邮件发送和读取协议
发送协议:用于用户代理向服务器发或者服务器之间发
- SMTP,用的是 push 的通信方式
读取协议:用户代理从服务器读
- POP3,用的是 pull 的通信方式
SMTP
简单邮件传输协议,控制两个相互通信的 SMTP 进程交换信息,用客户 / 服务器方式,使用 TCP 连接,端口号 25
-
连接建立
-
SMTP 客户用 25 号端口与接收方 SMTP 服务器建立 TCP 连接
-
连接建立后,接收方发送服务就绪
-
SMTP客户向 SMTP 服务器发 HELO 命令,附上发送方主机名
-
SMTP 不使用中间的邮件服务器,不论相隔多远,总是在发送方和接收方这两个邮件服务器之间直接建立连接
-
-
邮件传送:先弄清接收方系统是否已做好接收邮件的准备,然后再发送数据
-
连接释放:发完后,客户发送 quit 命令
POP
邮局协议
使用客户 / 服务器的工作方式,使用 TCP,端口 110。
用户代理运行 POP 客户程序,服务器运行 POP 服务器程序
可选择下载并保留 或者 下载并删除 两种方式、
万维网(WWW)
分布式,联机式的信息存储空间,每个资源都由一个 URL 标识
万维网内核由三部分组成
- 统一资源定位符 URL:负责标识万维网上的各种文档,URL中不区分大小写
- 超文本传输协议 HTTP:应用层协议,使用 TCP 连接进行可靠的数据传输
- 超文本标记语言 HTML
以客户 / 服务器方式工作
- Web 用户使用浏览器与Web服务器建立连接,发送浏览请求
- Web 服务器把 URL 转换为文件路径,返回信息给 Web 浏览器
- 通信完成,关闭网络
HTTP
是面向事物的应用层协议
有两类报文:请求报文和响应报文
流程:
- 浏览器分析链接指向 URL
- DNS请求得 IP
- 建立 TCP 连接
- 发出 HTTP 请求
- HTTP 响应
- 释放 TCP 连接
- 浏览器解释文件,显示页面
HTTP 本身是无连接(短连接),无状态的,使服务器更容易支持大量并发的 HTTP 请求
- 可以用 Cookie + 数据库的方式来跟踪用户活动
HTTP可以使用非持久连接和持久连接
- 非持久:每个网页元素对象(网页中的图像等)的传输都要单独建立一个 TCP 连接,这使得万维网服务器负担很重
- 持久:服务器在发送响应后,仍保持这条连接,后续仍可在这个连接上请求信息
- 非流水线:客户在收到前一个响应后才能发出下一个请求,浪费服务器资源
- 流水线:每遇到一个对象引用就立即发出一个请求
报文结构
有请求报文和响应报文
都由三个部分组成
-
开始行:用于区分是请求报文还是响应报文
- 请求报文中称为请求行
- 方法,URL,HTTP版本,换行
- 响应报文中称为状态行
- HTTP 版本,状态码,短语(比如 404 not found),换行
- 请求报文中称为请求行
-
首部行:用来说明浏览器,服务器,报文主体的一些信息。每行是 首部字段 + 值 + 换行。可以有几行,也可以没有。结束后,空一行,和后面的一个部分分开。
-
实体主体