网络应用模型
客户/服务器模型
- 即Cient/Server模型、C/S模型
- 服务器是服务提供方,要一直保持运行状态
- 客户是服务请求方,要实现知道服务器的地址
- 工作流程
- 服务器处于接收请求状态
- 客户机发出服务请求,等待结果
- 服务器收到后,分析请求、处理、把结果发给客户机
- 特征
- 非对称
- 占少数的服务器集中管理整个网络
- 占多数的客户机的权限由服务器管理限制
- 客户机之间不能通信
- 服务器支持的客户机数有限
- 非对称
- 应用举例
- FTP
- TELNET
- SMTP
- DNS
- WWW(Web)
对等模型
- 即P2P模型
- P2P网络是由对等结点组成的逻辑网络
- 特征
- 各计算机地位对称,既是客户,又是服务器
- 获取服务的同时需要提供服务,也算缺点
- 任意一对计算机(对等方)直接相互通信
- 网络单结点失效不影响其他结点
- 各计算机地位对称,既是客户,又是服务器
- 应用举例
- PPlive
- Bittorrent
- 电驴
域名系统DNS
层次域名空间
- 域名:网络设备的一种具有层次结构的命名
- 比如www.google.com是谷歌搜索服务器的域名
- ".com"顶级域名、".google"二级域名、"www"三级域名
- 概念介绍
- 域名
- 多个标号的序列,标号间"."隔开
- 每个标号对应一个子域名,且从左到右域名级别递增,最右边是顶级域名
- 不超过255各字符
- 标号
- 由字母、数字、"-"组成
- 不区分大小写
- 不超过63个字符
- 顶级域名
- 国家顶级域名:".cn"是中国、".us"是美国
- 通用顶级域名:".com"是公司、".org"是非营利组织
- 基础结构域名:".arpa"反向域名解析(唯一的基础结构域名)
- 层次域名空间
- 各个域的关系可以用树状层次结构表示
- 各个域的管理组织不同,子域由子组织管理
- 域名
域名服务器
- 域名服务器:采用C/S模型的分布式数据库系统,提供从域名到IP地址的解析
- 若不能进行解析,则给用户提供寻找其他域名服务器的信息
- 区:一个域名服务器的管辖范围
- 域名系统(DNS):以层次方式组织大量域名服务器,提供域名解析服务
- 域名服务器按层次的分类
- 根域名服务器
- 13个相互冗余的根域名服务器组成服务器集群,管理所有顶级域名服务器的IP地址
- 提供下一步要查询的顶级域名服务器的IP地址
- 顶级域名服务器
- 管理该域名服务器所注册的所有二级域名
- 提供最终结果的IP地址或下一步要查询的域名服务器的IP地址
- 授权域名服务器(又叫权限域名服务器,可以涉及多个层次)
- 管理在服务器注册的所有主机(一台主机一般在多个服务器注册)
- 提供从主机名到主机IP地址的转换
- 本地域名服务器
- 每个因特网服务提供者(ISP)可以拥有一个本地域名服务器
- 处理本地主机的DNS查询请求
- 根域名服务器
域名解析过程
- 正向解析:域名映射到IP地址
- 反向解析:IP地址映射到域名
- DNS请求报文:由用户机的DNS客户端构造,装入UDP,发往服务器,请求域名解析服务
- 域名解析方式
- 注:
- 为描述简洁,域名服务器简写,比如“根域名服务器”简写为“根”
- 低层服务器看作是高层服务器的用户机
- 递归查询(负载较大,很少使用)
- 主机、本地、根、顶级、权限、顶级、根、本地、主机
- 递归与迭代相结合的查询(常用)
- 完整的递归迭代查询:主机、本地、根、本地、顶级、本地、权限、本地、主机
- 不完整的递归迭代查询:前三个本地的任意一个,若已经查到了域名的IP地址,可以提前结束迭代,返回主机
- 退化为递归查询:主机、本地、主机
- 注:
- 高速缓存
- DNS服务器获得DNS查询结果后,除了将其发送给用户机,还要将其保存到高速缓存
- 方便之后相同的域名查询
- 高速缓存内容不永久保存,定期丢弃
- DNS服务器获得DNS查询结果后,除了将其发送给用户机,还要将其保存到高速缓存
文本传输协议FTP
工作原理
- 功能
- 以用户登陆方式,获得远程FTP服务器的文件的管理权限
- 上传和下载
- 以匿名方式(非用户登陆方式)提供公用文件的共享
- 提供不同种主机间的文件传输
- 以用户登陆方式,获得远程FTP服务器的文件的管理权限
- 服务器的进程组成
- 一个主进程(端口号21)
- 接收新请求
- 若干从属进程
- 处理单个请求
- 一个主进程(端口号21)
- 从属进程类型
- 控制进程(端口号21)
- 数据传送进程(默认情况端口号20)
- 工作步骤
- 主进程等待客户连接请求
- 主进程收到客户连接请求,启动控制进程,建立控制连接
- 会话结束后终止控制进程
- 控制进程收到客户数据传输请求,启动数据传送进程,建立数据连接
- 传送完后终止数据传送进程
- 会话结束后,继续等待其他客户请求
控制连接和数据连接
- 控制连接
- 两端进程:控制进程
- 服务器端口号:21
- 用户端口号:用户随机分配
- 功能:以ASCII格式传送控制信息,如数据连接请求、数据传送请求、中止传输命令等
- 带外传送:指控制连接和数据连接分离的传送方式
- 数据连接
- 两端进程:数据传送进程
- 服务器端口号
- 主动模式:20
- 被动模式:服务器随机分配
- 用户端口号:用户随机分配
- 功能:完成客户端和服务器端的文件数据传送
- 传送模式:默认为主动模式
- 主动模式PORT:客户发送PORT命令和客户端口号,再由服务器发起连接
- 被动模式PASV:客户发送PASV命令获取服务器端口号,再由客户机发起连接
文件修改方式
- 传统的FTP
- 在本地复制远程文件的整个副本,修改后传回服务器,很耗时
- 网络文件系统NFS
- 在本地复制远程文件的特定片段,修改后传回服务器,速度快
电子邮件
电子邮件系统的组成结构
- 用户代理
- 用户和电子邮件系统的接口(即邮件客户端软件)
- 提供邮件撰写、显示、处理、通信的功能
- 邮件服务器
- 功能是发送和接收邮件
- 结构包括邮件缓存和用户邮箱
- 举例:qq邮件服务器、189邮件服务器等
- 电子邮件的协议
- 发送协议(SMTP协议)
- 发送方用户代理(客户)数据推到发送方邮件服务器(服务器)的邮件缓存
- 发送方邮件服务器(客户)发送数据到接收方邮件服务器(服务器)的用户邮箱
- 接收协议(POP3协议或IMAP协议)
- 接收方邮件服务器(服务器)数据拉到接收方用户代理(客户)
- 发送协议(SMTP协议)
电子邮件格式
- 信封
- 自动填写
- 内容
- 首部
- From(自动填写):[发送方用户邮箱名]@[发送方邮件服务器的域名]
- To(用户必填):[接收方用户邮箱名]@[接收方邮件服务器的域名]
- Subject(用户选填):[邮件的主题]
- 主体
- 用户撰写的邮件内容(ASCII码)
- 首部
MIME
即多用途网际邮件扩充
- 功能
- 使得SMTP除了支持ASCII码,还支持其他编码以及二进制文件的发送
- 实现
- 不改变SMTP
- 新定义了首部字段、主体结构、传送非ASCII码的规则
SMTP与POP3
- SMTP
- 连接建立
- 发送方邮件服务器定期扫描缓存
- 缓存发现邮件,则在端口25和接收方服务器建立TCP连接
- 接收方回复220 Service ready
- 发送方发出HELO,带有发送方主机名
- 邮件传送
- 发送方发出的MAIL,带有发件人地址
- 接收方回复250 OK
- 发送方发出若干RCPT,确认接收方是否做好准备
- 接收方回复250 OK或No such user here
- 发送方发出DATA,传输邮件内容
- 接收方回复354 Start mail input;end with
. - 发送方发出
. ,表示邮件内容结束
- 连接释放
- 发送方发出QUIT
- 接收方回复221
- 进行TCP的连接释放
- 连接建立
- POP3
- 端口号110,基于TCP
- 工作方式(由POP3客户决定)
- 下载并保留:下载后邮件保留在邮箱
- 下载并删除:下载后邮件删除
- 传输方式
- 明文传输
- IMAP
- 比POP3复杂,但都是用于邮件接收
HTTP
在万维网的邮件系统中使用HTTP协议 + 用户代理(浏览器)和邮件服务器以HTTP发送和接收邮件
WWW
WWW的概念和组成结构
基本概念
- 万维网(WWW):联机分布式的信息储藏所
- 万维网由大量网络站点互联
- 每个站点包含若干文档(页面、资源)
- 超链接(链接):从一个文档访问另一个文档的方法
- 超文本:包含链接的文档(纯文本)
- 超媒体:包含链接的文档(除了文本,还包含图像、声音、视频等媒体)
- 互联网、因特网、万维网的关系
- 互联网:多个计算机网络按协议连接的大型网络
- 因特网:实际已有的最大的互联网,包括网络站点、电子邮件、新闻组等
- 万维网:因特网的主要部分
组成结构
- 统一资源定位符(URL):唯一的标识万维网的文档
- 例如:"http://www.tsinghua.edu.cn:80/zjqh/xxgk1.htm"
- 结构:[传送协议]://[服务器主机域名]:[端口]/[路径]
- 注:传送协议一般是http或fps,端口一般省略
- 超文本传输协议(HTTP):基于TCP的应用层协议,在浏览器客户端和Web服务器之间传送超文本
- 超文本标记语言(HTML):对页面进行描述的语言
HTTP
操作过程
- 浏览器分析URL,得到URL的四个成分,传送协议是http
- 浏览器请求DNS解析URL中的服务器主机域名,得到服务器IP地址
- 浏览器与服务器的端口80建立TCP连接
- 浏览器发出HTTP请求,GET/[路径]
- 服务器发出HTTP响应,回复路径对应的文档
- 释放TCP
- 浏览器解释文档,并显示给用户
特点
- HTTP是无连接的
- 传送数据前不需要建立HTTP连接
- HTTP是无状态的
- 服务器不跟踪用户活动
- 可以用Cookie加数据库跟踪用户活动
- Cookie在服务器生成,在浏览器储存
- 可以非持久连接和持久连接
- 非持久连接:服务器发送响应后释放TCP
- 比如前面的操作过程
- 持久连接:服务器发送响应后保持TCP
- 非流水线方式(HTTP/1.0):浏览器收到响应才能发出下一个请求
- 流水线方式(HTTP/1.1):可以连续发送请求给浏览器
- 非持久连接:服务器发送响应后释放TCP
报文结构
注:每个字段都是ASCII码
- 请求报文
- 请求行:[方法][空格][URL][空格][HTTP版本][CRLF]
- GET方法:请求服务器响应并返回实体
- HEAD方法:请求服务器响应,不返回实体
- POST方法:给服务器发送注释
- CONNECT方法:用于代理服务器
- PUT方法:在URL处存储一个文档
- DELETE方法:删除URL对应文档
- CRLF:回车换行
- 首部:包含若干首部行,每个首部行结构为[字段名][:][空格][值][CRLF]
- Host字段:服务器主机域名
- Connection字段:close或open,表示是否持久连接
- User-Agent:浏览器名称和版本
- Accept-Language:比如cn表示请求服务器优先响应中文文档
- [CRLF]
- 实体主体:通常不用
- 请求行:[方法][空格][URL][空格][HTTP版本][CRLF]
- 响应报文
- 状态行:[版本][空格][状态码][空格][短语][CRLF]
- 状态码(3位5类):通知收到(1xx)、接受请求(2xx)、资源位置已转移(3xx)、客户差错(4xx)、服务器差错(5xx)
- 短语:对状态码简单解释
- 首部:包含若干首部行
- 首部行:[字段名][:][空格][值][CRLF]
- [CRLF]
- 实体主体:包含一个请求对象(如文本、一张图片),有时不用
- 状态行:[版本][空格][状态码][空格][短语][CRLF]