文章目录
应用层
网络应用模型
客户/服务器模型
- 在客户/服务器模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求;
- 工作流程:
- 服务器处于接收请求的状态;
- 客户机发出服务请求,并等待接收结果;
- 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机;
- 客户程序必须知道服务器程序的地址,服务器程序不需要知道客户程序的地址;
- 客户/服务器模型最主要的特征:
- 客户是服务请求方,服务器是服务提供方;
- 网络中各计算机地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的,整个网络的管理工作有少数服务器担当,因此网络的管理非常集中和方便;
- 客户机相互之间不直接通信;
- 可扩展性不佳,受服务器硬件和网络带宽的限制,服务器支持的客户机数有限;
- 客户/服务器模型
P2P模型
- 思想:
- 整个网络中的传输内容不再被保存在中心服务器上,每个结点同时具有下载、上传的功能,其权利和义务都是大体对等的;
- 任意一对计算机称为对等方,直接相互通信;
- 本质上看仍然使用客户/服务器模型,每个结点既作为客户访问其他结点的资源,也作为服务器提供资源给其他结点访问;
- 与C/S模型相比,P2P模型的优点:
- 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,因此大大提高了系统效率和资源利用率;
- 多个客户机之间可以直接共享文档;
- 可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求;
- 网络健壮性强,单个结点的失效不会影响其他部分的结点;
- P2P模型的缺点:
- 在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度;
- 经常进行P2P下载会对硬盘造成较大的损伤;
- 在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度;
- P2P模型
域名系统 DNS
- 域名系统是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名转换为便于机器处理的IP地址;
- 概念上可分为3部分:层次域名空间、域名服务器和解析器;
注意
- DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口;
层次域名空间
- 采用层次树状结构的命名方法;
- 任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名;
- 域:名字空间中一个可被管理的划分;
- 域还可以划分为子域,而子域还可以继续划分为子域的子域,形成顶级域、二级域、三级域等;
- 域名中的标号需要注意:
- 标号中的英文不区分大小写;
- 标号中除连字符_外不能使用其他的标点符号;
- 每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符;
- 级别最低的域名写在最左边,级别最高的顶级域名写在最右边;
- 顶级域名:
- 国家顶级域名nTLD:国家和某些地区的域名;
- 通用顶级域名gTLD:常见的有.com-公司,.net-网络服务机构,.org-非营利性组织,.gov-国家或政府部门;
- 基础结构域名:arpa,用于反向域名解析,又称反向域名;
- 域名空间的树状结构
域名服务器
- 因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型;
- DNS使用了大量的域名服务器,它们以层次方式组织,没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS上;
根域名服务器
- 根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址
- 根域名服务器用来管辖顶级域,通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询;
顶级域名服务器
- 负责管理在该顶级域名服务器注册的所有二级域名;
- 收到DNS查询请求时,就给出相应的回答,可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址;
授权域名服务器(权限域名服务器)
- 每台主机都必须在授权域名服务器处登记;
- 为了更加可靠地工作,一台主机最好至少有两个授权域名服务器;
本地域名服务器
- 当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器;
- 事实上,我们在window系统中配置“本地连接”时,就需要填写DNS地址,这个地址就是本地DNS(域名服务器)的地址
- DNS层次结构
域名解析过程
- 域名解析是指把域名映射成为IP地址或把IP地址映射成域名的过程,前者称为正向解析,后者称为反向解析;
- 当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器;
- 域名解析的两种方式:
- 递归查询;
- 递归与迭代相结合的查询;
递归查询
- 递归查询过程
- 缺点:
- 给根域名服务造成的负载过大,实际中几乎不使用;
递归域迭代相结合的查询
- 递归与迭代相结合的查询过程
-
主机向本地域名服务器的查询采用的是递归查询
- 如果本地主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文,而不是让该主机自己进行下一步的查询;
-
本地域名服务器向根域名服务器的查询采用迭代查询
- 一个例子:
- 客户机向其本地域名服务器发出DNS请求报文-递归查询;
- 本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求报文-迭代请求;
- 根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器;
- 本地域名服务器向顶级域名服务器dns.com发出解析请求报文-迭代查询;
- 顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,因此将对应的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器;
- 本地域名服务器向授权域名服务器dns.abc.com发起解析请求报文-迭代查询;
- 授权域名服务器dns.abc.com收到请求后,把查询结果返回给本地域名服务器;
- 本地域名服务器将查询结果保存到本地缓存,同时返回给客户机;
- 当一个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中,这样当另一个相同的域名查询到该DNS服务器时,该服务器就能直接提供所要求的IP地址,无需向其他DNS服务器询问;
- 主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息;
- 一个例子:
文件传输协议
FTP的工作原理
- FTP提供交互式的访问,允许客户指明文件类型,并允许文件具有存取权限;
- FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件;
- FTP功能:
- 提供不同种类主机系统之间的文件传输能力;
- 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力;
- 以匿名FTP的方式提供公用文件共享的能力;
- FTP采用客户/服务器的工作方式,使用TCP可靠的传输服务,一个FTP服务器进程可同时为多个客户进程提供服务;
- FTP的服务器进程由两大部分组成:
- 一个主进程,负责接受新的请求;
- 有若干从属进程,负责处理单个请求;
- 工作步骤:
- 打开熟知端口21-控制端口,使客户进程能够连接上;
- 等待客户进程发连接请求;
- 启动从属进程来处理客户进程发来的请求,主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止;
- 回到等待状态,继续接收其他客户进程的请求;
控制连接与数据连接
- FTP在工作时使用两个并行的TCP连接:控制连接端口号21,数据连接端口号20;
- 控制连接和数据连接:
控制连接
- 服务器监听21好端口,等待客户连接;
- 控制连接用来传输控制信息,如连接请求、传输请求等,并且控制信息都以7位ASCLL格式传送;
- FTP客户发出传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件;
- 在传输文件是还可以使用控制连接,因此控制连接在整个会话期间一直保持打开状态;
数据连接
- 服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传送进程”和“数据连接”;
- 数据连接:用来连接客户端的服务器端的数据传送进程;
- 数据传送进程:实际完成文件的传送,在传送完毕后关闭“数据传送连接”;
- 两种传输模式:
- 主动模式PORT:
- 工作原理:客户端连接到服务器的21端口,登录成功后读取数据时,客户端随机开放一个端口,并发送命令告知服务器,服务器收到PORT命令和端口号后,通过20端口和客户端开放的端口连接,发送数据;
- 被动模式PASV:
- 工作原理:客户端要读取数据时,发送PASV命令到服务器,服务器在本地随机开放一个端口并告知客户端,客户端再连接到服务器开放的端口进行数据传输;
- 总结:
- 主动模式传送数据是“服务器”连接到“客户端”的端口;
- 被动模式传送数据是“客户端”连接到“服务器”的端口;
- 主动模式PORT:
电子邮件
电子邮件系统的组成结构
- 一种异步通信方式,通信时不需要双方同时在场;
- 电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可随时上网到自己使用的邮件服务器进行读取;
- 三个主要组成构件:
- 用户代理UA:用户与电子邮件系统的接口;
- 至少应该具有撰写、显示和邮件处理功能;
- 通常情况下,用户代理就是一个运行在PC机上的程序;
- 邮件服务器:功能是发送和接收邮件,还要向发件人报告邮件传送的情况;
- 采用客户/服务器方式工作,但必须能够同时充当客户和服务器;
- 邮件发送协议和读取协议:
- 邮件发送协议用于用户代理向邮件服务器发送邮件或在邮件服务器间发送邮件,如SMTP;
- 邮件读取协议用于用户代理从邮件服务器读取邮件,如POP3;
- 用户代理UA:用户与电子邮件系统的接口;
- 电子邮件的收发过程:
- 发件人调用用户代理来撰写和编辑要发送的邮件,用户代理 用SMTP把邮件传送给发送端邮件服务器;
- 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送;
- 运行在发送端邮件服务器的SMTP客户进程,发现邮件缓存中有待发送的邮件,向运行在接收端邮件服务器的SMTP服务器进程发起建立TCP连接;
- TCP连接建立后,SMTP客户进程开始向远程SMTP服务器进程发送邮件,所有邮件发送完毕后,SMTP关闭所建立的TCP连接;
- 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收件人用户邮箱,等待收件人方便时读取;
- 收件人打算收件时,调用用户代理,使用POP3(或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中取回;
电子邮件格式与MIME
电子邮件格式
多用途网际邮件扩充MIME
- 增加了邮件主题的结构,并定义了传送非ASCLL码的编码规则;
- SMTP与MIME的关系
- MIME包括以下三部分:
- 5个新的邮件首部字段,包括MIME版本、内容描述、内容标识、传送代码和内容类型;
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化;
- 定义了传送编码,可对任何内容形式进行转换,而不会被邮件系统改变;
SMTP和POP3
SMTP
- 是一种提供可靠且有效的电子邮件传输的协议,控制两个相互通信的SMTP进程交换信息;
- TCP连接,端口号25;
- SMTP通信三个阶段:
- 连接建立
- 发件人的邮件发送到邮件服务器的缓存中后,SMTP客户就每隔一定时间对邮件缓存扫描一次;
- 发现有邮件,使用SMTP的熟知端口号25与接收方邮件服务器的SMTP服务器建立TCP连接;
- 连接建立后,接收方SMTP服务器发出220 Service Ready;
- SMTP客户向SMTP服务器发送HELO命令,并附上发送方主机名;
- 邮件传送
- 若SMTP服务器准备好,则回答250 OK;
- SMTP客户端发送一个或多个RCPT命令,返回相应的250 OK或No such user here;
- 连接释放:邮件发送完毕后SMTP客户应发送QUIT命令,SMTP服务器返回信息是221,表示SMTP同意释放TCP连接;
- 连接建立
POP3和IMAP
- POP3
- 使用客户/服务器工作方式,在传输层使用TCP,端口号位110;
- 两种工作方式:
- 下载并保留:用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件;
- 下载并删除:邮件一旦被读取,就被从邮件服务器上删除,用户不能再次从服务器上读取;
- IMAP
- 为用户提供了创建文件夹、在不同文件夹之间移动邮件以及远程文件夹中查询邮件等联机命令;
- 允许用户代理只获取报文的某些部分;
- 适用于低带宽的情况;
万维网WWW
WWW的概念与组成结构
- 万维网是一个分布式、联机式的信息存储空间,在这个空间中:
- 资源:一样有用的事物称为一样资源;
- 由一个全域“统一资源定位符”URL标识;
- 资源通过超文本传输协议HTTP传送给使用者;
- 万维网内核部分的三个标准:
- 统一资源定位符URL:负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL;
- <协议>://<主机>:<端口>/<路径>
- 超文本传输协议HTTP:一个应用层协议,使用TCP连接进行可靠传输;
- 超文本标记语言HTML:一种文档结构的标记语言,使用一些约定的标记对页面上的各种信息、格式进行描述;
- 统一资源定位符URL:负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL;
- 万维网以客户/服务器方式工作
- 工作流程:
- web用户使用浏览器与web服务器建立连接,并发送浏览请求;
- web服务器把URL转换为文件路径,并返回信息给web浏览器;
- 通信完成,关闭连接;
- 工作流程:
超文本传输协议HTTP
- 定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器;
- 从层次角度看,HTTP是面向事务的应用层协议,规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件的重要基础;
HTTP的操作过程
- 客户端连接到Web服务器
- 一个HTTP客户端与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接;
- 发送HTTP请求
- 通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成;
- 服务器接受请求并返回HTTP响应
- Web服务器解析请求,定位请求资源;
- 服务器将资源复本写到TCP套接字,由客户端读取;
- 一个响应由状态行、响应头部、空行和响应数据4部分组成;
- 释放连接TCP连接
- 若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;
- 若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
- 客户端浏览器解析HTML内容
- 客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码;
- 然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集;客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示;
- 一个例子:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
- 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
- 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
- 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
- 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
- 释放 TCP连接;
- 浏览器将该 html 文本并显示内容;
HTTP的特点
- 支持客户/服务器模式;
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径,由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快;
- 灵活:HTTP允许传输任意类型的数据对象,传输的类型由 Content-Type 加以标记;
- 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间;
- 无状态:HTTP协议是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就较快;
HTTP的报文
- HTTP是面向文本的,因此报文中的每个字段都是一些ASCLL码串,并且每个字段的长度都是不确定的;
- 请求报文:从客户向服务器服务器发送的请求报文;
- 响应报文:从服务器到客户的回答;