王道408--CN---应用层
一、历年选择题考点
二、⽹络应⽤模型
客户/服务器模型
1、服务器特点
提供永久服务
服务器IP地址固定不变
2、客户端特点
与服务器通信,使用服务器提供的服务
间歇性接入网络
可能使用动态的IP地址
不与其他客户端直接通信
3、模型特点
1)客户程序必须知道服务器程序地址,服务程序不需要知道客户程序地址
2)网络中各计算机的地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的,使它们不能随意存储/删除数据,或进行其他受限的网络活动。
3)客户机相互之间不直接通信。例如,在Web应用中两个浏览器并不直接通信。
4)可扩展性不佳。受服务器硬件和网络带宽的限制,服务器支持的客户机数有限。
4、常见的C/S模型应用
Web、文件传输协议(FTP)、远程登录和电子邮件等。
P2P模型
peer to peer 点到点模型
特点/优点
1)减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,因此大大提高了系统效率和资源利用率(例如,播放流媒体时对服务器的压力过大,而通过P2P模型,可以利用大量的客户机来提供服务)。
2)多个客户机之间可以直接共享文档。
3)可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求。
4)网络健壮性强,单个结点的失效不会影响其他部分的结点。
缺点
在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度。例如,经常进行P2P下载还会对硬盘造成较大的损伤。
当前P2P程序已占互联网50%~90%的流量,使网络变得非常拥塞
三、DNS
DNS:Domain Name System : 域名系统
1、DNS作用:把域名转换为IP地址
2、DNS采用C/S模型
3、DNS协议运行在UDP上,使用53端口
从概念上可将DNS分为3部分:层次域名空间、域名服务器和解析器。
DNS---层次域名空间
顶级域名(.com)
二级域名(server.com)
三级域名(www.server.com)
多个标号组成的完整域名总共不超过255个字符
DNS---域名服务器
根域名服务器
1、所有的根域名服务器都知道所有的顶级域名服务器的IP地址
2、因特网有13个根域名服务器
3、需要注意的是,根域名服务器用来管辖顶级域(如.com),通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。
顶级域名服务器
这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
授权域名服务器(权限域名服务器)
1、每台主机都必须在授权域名服务器处登记。
2、许多域名服务器都同时充当本地域名服务器和授权域名服务器。
3、授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。
本地域名服务器
本地域名服务器对域名系统非常重要。每个因特网服务提供者(ISP),或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。
事实上,我们在Windows系统中配置“本地连接”时,就需要填写DNS地址,这个地址就是本地DNS(域名服务器)的地址。
DNS---域名解析过程
当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。
域名解析方法一---递归查询
本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的[步骤③~⑥]。在步骤⑦中,本地域名服务器从根域名服务器得到了所需的IP地址,最后在步骤⑧中,本地域名服务器把查询结果告诉发起查询的主机
由于该方法给根域名服务造成的负载过大,所以在实际中几乎不使用。
域名解析方法二---递归与迭代相结合的查询
(1)主机向本地域名服务器的查询采用的是递归查询
(2)本地域名服务器向根域名服务器的查询采用迭代查询
流程
1, 主机m.xyz.com先向其本地域名服务器dns.xyz.com进行递归查询。
2, 本地域名服务器采用迭代查询。它向一个根域名服务器查询。
3, 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
4, 本地域名服务器向顶级域名服务器dns.com进行查询。
5, 顶级域名服务器dns.com告诉本地域名服务器,下一次查询的权限域名服务器的dns.baidu.com的IP地址
6, 本地域名服务器向权限域名服务器dns.baidu.com进行查询。
7, 权限域名服务器dns.baidu.com告诉本地域名服务器,所查询的主机的IP地址。
8, 本地域名服务器dns.xyz.com最后把查询结果告知主机m.xyz.com。
8个步骤共要使用8个UDP用户数据报(使用UDP是为了减少开销)的报文
DNS高速缓存
在域名服务器中使用DNS缓存的目的:
1、为了提高DNS查询效率
2、减轻根域名服务器的负荷和减少互联网上的DNS查询报文数量
DNS服务器将在一段时间后丢弃高速缓存中的信息
四、FTP
FTP: File Transfer Protocol 文件传输协议
1、FTP使用TCP可靠的传输服务
2、FTP必须在整个会话期间保留用户的状态信息
3、服务器必须追踪用户在远程目录树上的当前位置
FTP特点
1、提供交互式访问
2、运行客户指明文件的类型与格式,运行文件具有存取权限
3、适合在异构网络中的任意计算机之间传送文件
FTP功能
1、提供不同种类主机系统(软硬件都可)之间的文件传输能力
2、以用户权限管理的方式提供用户对远程FTP服务器的文件管理能力
3、以匿名FTP的方式提供公用文件共享的能力,使用anonymous作为用户名
FTP组成
1、一个主进程,负责接收新的请求
2、若干个从属进程,负责处理单个请求
主进程步骤
1、服务端打开21端口,使客户进程能够连接上。
2、等待客户进程发出连接请求。
3、启动从属进程处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
4、回到等待状态,继续接受其他客户进程发来的请求。
FTP工作时用到两个并行的TCP连接---控制连接与数据连接
FTP使用两个独立的连接的好处
1、使协议更加简单和容易实现
2、在传输文件的时候可以利用控制连接对文件的传输进行控制(如用户可以在文件传输过程中发送“请求中止服务”)
采用7位ASCII格式传输,在传输的过程中会插入一位奇偶校验码
传输模式:
1、文本模式: ASCII模式,以文本序列传输数据
2、二进制模式: 以二进制序列传输数据
带外传输的概念
带外: Out-of-band
送的。使用FTP时,若要修改服务器上的文件,则需要先将此文件传送到本地主机,然后再将修改后的文件副本传送到原服务器,来回传送耗费很多时间。网络文件系统(NFS)采用另一种思路,它允许进程打开一个远程文件,并能在该文件的某个特定位置开始读写数据。这样,NFS可使用户复制一个大文件中的一个很小的片段,而不需要复制整个大文件。
TFTP
TFTP: Trivial FTP
是一个很小且易于实现的文件传输协议,非常适合UDP环境
五、电⼦邮件系统
电子邮件系统是一种异步通信方式
发送接收过程
电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可以随时上网到自己使用的邮件服务器进行读取。
1、用户代理,用户与电子邮件系统的接口。如Outlook,Foxmail
2、邮件服务器,用来发送和接收邮件,邮件服务器采用客户/服务器方式工作,但它必须能够同时充当客户和服务器。
3、邮件发送协议SMTP【类似于Push】和读取协议pop3【类似于Pull】
邮件系统常用的协议
SMTP协议(Simple Mail Transfer Protocol: 简单邮件传输协议):
SMTP不使用中间的邮件服务器。TCP连接总是在发送方和接收方这两个邮件服务器间直接建立,而不管它们相隔多远,不管在传送过程中要经过多少个路由器。当接收方邮件服务器因
不能发送二进制数据
POP3协议(Post Office Protocol : 邮局协议):
1、一种非常简单但功能有限的邮件读取协议
2、两种工作模式: 下载并保留,下载并删除
在“下载并保留”方式下,用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件:而使用“下载并删除”方式时,邮件一旦被读取,就被从邮件服务器上删除,用户不能再次从服务器上读取。
3、协议基于ASCII码,不能发送二进制数据
IMAP协议(因特网报文存取协议):
1、它比POP复杂得多,IMAP为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件等联机命令,为此IMAP服务器维护了会话用户的状态信息。
2、允许用户代理只获取报文的某些部分,例如可以只读取一个报文的首部,或多部分MME报文的一部分。这非常适用于低带宽的情况,用户可能并不想取回邮箱中的所有邮件,尤其是包含很多音频或视频的大邮件。
MIME协议:
因为SMTP/POP3只能传送一定长度的ASCII码邮件,不能传输其他国家语言,且无法传送可执行文件及其他二进制对象,所以提出MIME
MIME继续使用SMTP的格式,增加了邮件主题的结构,定义了传送非ASCII码的编码规则
其中MIME与SMTP作用相似,POP3与IMAP作用相似
一些新型的邮件协议
比如Hotmail与Gmail
这种电子邮件的特点是,用户浏览器与Hotmail或Gmail的邮件服务器之间的邮件发送或接收使用的是HTTP,而仅在不同邮件服务器之间传送邮件时才使用SMTP。
六、万维网WWW
WWW: World Wide Web,万维网是一个分布式,联机式的信息存储空间
组成部分
统⼀资源定位符URL-----------怎么标志分布在整个互联网上的万维网文档
超⽂本传送协议HTTP---------用什么样的协议实现WWW上的各种连接
超⽂本标记语⾔HTML--------怎么使不同风格的文档在互联网上的主机上显示
URL的形式:
URL是对可以从因特网上得到的资源的位置和访问方法的一种简洁表示
<协议>://<主机>:<端口>/<路径>,如https:ddy-ddy.com/login, https:172.16.86.81:80/login
HTTP
HTTP: Hypertext Transport Protocol
它定义了浏览器想服务器请求web⻚⾯的⽅式,以及服务器向浏览器传送⻚⾯的⽅式
HTTP操作过程
万维网的大致工作过程如图所示。每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80(默认),当监听到连接请求后便与浏览器建立TCP连接。
然后,浏览器就向服务器发送请求获取某个Wb页面的HTTP请求。服务器收到请求后,将构建所请求Web页的必需信息,并通过HTTP响应返回给浏览器。浏览器再将信息进行解释,然后将Web页显示给用户。
最后,TCP连接释放。
在浏览器和服务器之间的请求与响应的交互,必须遵循规定的格式和规则,这些格式和规则就是HTTP。
因此HTTP有两类报文:请求报文(从Web客户端向Wb服务器发送服务请求)和响应报文(从Web服务器对Web客户端请求的回答)。
HTTP的特点
1、HTTP使⽤⾯向连接的TCP作为传输层协议,保证了数据的可靠传输
2、HTTP协议本身是⽆连接的
3、HTTP协议是⽆状态的
4、不需要保存客户的状态信息,可以减少服务器的CPU及内存的消耗
HTTP是无状态的。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。
Cookie的使用
1、Cookie是⽹站为了辨别⽤户身份,进⾏会话跟踪⽽存储在客户端上的数据
2、Cookie的组成
在HTTP响应报⽂中的⼀个cookie⾸部⾏。
在HTTP请求报⽂中的⼀个cookie⾸部⾏。
在⽤户端系统中保留⼀个cookie⽂件,由⽤户的浏览器进⾏管理。
位于Web站点的⼀个后端数据库。
3、Cookie原理
当用户浏览某个使用Cookie的网站时,该网站服务器就为用户产生一个唯一的识别码,如“123456”,接着在给用户的响应报文中添加一个Set-cookie的首部行“Setcookie:123456”。用户收到响应后,就在它管理的特定Cookie文件中添加这个服务器的主机名和Cook识别码,当用户继续浏览这个网站时,会取出这个网站的识别码,并放入请求报文的Cookie首部行“Cookie:123456”。服务器根据请求报文中的Cookie识别码就能从数据库中查询到该用户的活动记录,进而执行一些个性化的工作,如根据用户的历史浏览记录向其推荐新产品等。
HTTP持久连接和⾮持久连接
1、对于非持久连接,每个网页元素对象(如JPEG图形、Flash等)的传输都需要单独建立一个TCP连接
2、持久连接,是指万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求和响应报文
3、非持久性连接传输时间:文档传输时间+两倍的往返时间RTT,此外每个对象引用都导致2xRTT的开销 (第一个RTT用于TCP连接,第二个RTT用于请求文档(第三次握手的报文捎带了客户对万维网文档的请求))
4、流水线持久性连接时间: 共经历1个RTT延迟
5、什么是流水线连接和非流水线连接
非流水线就是发一个,确认一个,才能再发下一个 流水线就是一个个连着发,然后多个确认和之前的停止等待协议,后退N帧协议和选择重传协议很像
HTTP/1.0默认方式是非持久化连接
HTTP/1.1的默认方式是流水线的持久连接
6、connection状态
标志为close,说明是非持久连接
标志为keep-alive,说明是持久连接
HTTP报文结构
HTTP是面向文本的(Text-Oriented),因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。
报文的组成
1、开始⾏【请求报⽂为请求⾏】【响应报⽂为状态⾏】
开始行的三个字段之间都以空格分隔,最后的“CR”和“LF”分别代表“回车”和“换行“
请求报文的此行有三个内容:方法、请求资源的URL及HTTP的版本
其中,“方法”是对所请求对象进行的操作,这些方法实际上也就是一些命令:
响应报文的URL字段的位置变为了状态码:
比如202(接受),301(重定向),404(访问失败)
2、⾸部⾏
首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有几行,但也可以不使用。
每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
3、实体主体
在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段
七、其他一些知识点
应用层协议端口号
互联网、因特网和万维网的区别是什么?
互联网(internet)泛指由多个计算机网络按照一定的通信协议相互连接而成的一个大型计算机网络。
因特网(Internet)是指在ARPA网基础上发展而来的世界上最大的全球性互联网络。因特网和其他类似的由计算机相互连接而成的大型网络系统,都可算是“互联网”,因特网只是互联网中最大的一个。
万维网是无数个网络站点和网页的集合,它们一起构成了因特网最主要的部分(因特网也包括电子邮件、Usenet和新闻组)
域名高速缓存
每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录,可大大减轻根域名服务器的负荷,使因特网上的DNS查询请求和回答报文的数量大为减少。
为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(如每个项目只存放两天)。
当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,减少此时间值可以提高域名转换的准确性。
八、错题6.1
无
九、错题6.2
一个域名可以对应多个ip地址(负载均衡),一个ip地址也可以对应多个域名(T1)
在DNS的递归查询中,由最开始连接的服务器给客户端返回地址
有点文字游戏的感觉
08.(C)可以将其管辖的主机名转换为主机的P地址。
A.本地域名服务器
B.根域名服务器
C.授权域名服务器
D.代理域名服务器
还记的那几句话吗?
1、每台主机都必须在授权域名服务器处登记。
2、授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。
DNS缓存存放在本地域名服务器上而不是主机上
windows主机上的hosts文件不是DNS缓存,但它也可以完成域名到IP之间的映射,且优先级更高
DNS解析在理想状态下是不会消耗时间的,也就是硕它的解析工作通过查本地的hosts文件即可完成
十、错题6.3
FTP的控制信息带外传输 (T3)
十一、错题6.4
pop3明文传输,不能传输二进制数据,由客户端选择是"下载并保留"或“下载并删除”
十二、错题6.5
HTTP/1.0使用的是非持久连接 (T6)
O7.仅需Wb服务器对HTTP报文进行响应,但不需要返回请求对象时,HTTP请求报文应该使用的方法是(D)。
A.GET
B.PUT
C.POST
D.HEAD
使用HEAD方法时服务器可对HTTP报文进行响应,但不会返回请求对象,其作用主要是调试。
1、GET:向特定的资源发出请求。
2、HEAD:向服务器索要与GET请求相一致的响应,只不过响应body将不会返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取不包含在响应消息头中的元信息\
HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息
3、POST:向特定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求body中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
4、CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
我们在实际应用中常用的也就是get和post,其他的请求方式也可以通过get和post间接实现。
Cookie是服务器产生的,存储在用户主机中
非持续连接中读取一个包含100个图片对象的Wb页面,需要打开和关闭100次TCP连接
非持续连接对每次请求/响应都建立一次TCP连接。在浏览器请求一个包含100个图片对象的Web页面时,服务器需要传输1个基本HTML文件和100个图片对象,因此一共是101个对象,需要打开和关闭TCP连接101次。
十三、大题
P255-T3
DNS使用UDP而非TCP,如果一个DNS分组丢失,没有自动恢复,那么这会引起问题吗?如果会,应该如何解决?
DNS使用传输层的UDP而非TCP,因为它不需要使用T℃P在发生传输错误时执行的自动重传功能。实际上,对于DNS服务器的访问,多次DNS请求都返回相同的结果,即做多次和做一次的效果一样。因此DNS操作可以重复执行。当一个进程做一次DNS请求时,它启动一个定时器。如果定时器计满而未收到回复,那么它就再请求一次,这样做不会有害处。
文件传输协议的主要工作过程是怎样的?主进程和从属进程各起什么作用?
FTP的主要工作过程如下:在进行文件传输时,FTP客户所发出的传送请求通过控制连接发送给服务器端的控制进程,并在整个会话期间一直保持打开,但控制连接不用来传送文件。
服务器端的控制进程在接收到FTP客户发送来的文件传输请求后,就创建数据传送进程和数据连接,数据连接用来连接客户端和服务器端的数据传输进程,数据传送进程实际完成对文件的传送,在传送完毕后关闭“数据传送连接”,并结束运行。
FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求:若干从属进程,负责
处理单个请求。
为什么FTP要使用两个独立的连接,即控制连接和数据连接
在FTP的实现中,客户与服务器之间采用了两条传输连接,其中控制连接用于传输各种TP命令,而数据连接用于文件的传送。之所以这样设计,是因为使用两条独立的连接可使FTP变得更加简单、更容易实现、更有效率。
同时在文件传输过程中,还可以利用控制连接控制传输过程,如客户可以请求终止、暂停传输等。
主机A想下载文件ftp:ftp.abc.edu.cn/fle,大致描述下载过程中主机和服务器的交互过程。
大致过程如下:
①建立一个TCP连接到服务器ftp.abc.edu.cn的21号端口,然后发送登录账号和密码。
②服务器返回登录成功信息后,主机A打开一个随机端口,并将该端口号发送给服务器。
③主机A发送读取文件命令,内容为get file,服务器使用20号端口建立一个TCP连接到主机A的随机打开的端口。
④服务器把文件内容通过第二个连接发送给主机A,传输完毕后连接关闭。
电子邮件系统使用TCP传送邮件,为什么有时会遇到邮件发送失败的情况?为什么有时对方会收不到发送的邮件?
有时对方的邮件服务器不工作,邮件就发送不出去。对方的邮件服务器出故障也会使邮件丢失。有时网络非常拥塞,路由器丢弃大量的IP数据报,导致通信中断。