应用层概念
应用层对应用程序的通信提供服务。
应用层的功能
文件传输、访问和管理
电子邮件
虚拟终端
查询服务和远程作业登陆
应用层的重要协议
FTP
SMTP、POP3
HTTP
DNS
协议
每个应用层协议都是为了解决某一类应用文体。
问题的解决是通过位于不同主机中的多个应用进程之间的通信和协同工作完成。
应用层的具体内容是规定应用进程在通信时所遵循的协议。
应用进程之间相互通信和协同采用一定的模式:P2P模型、客户/服务器模型。
网络应用模型
1.C/S模型(客户/服务器模型)
客户(client)和服务器(server)是指通信中涉及的两个应用进程。
客户/服务器模型描述的是进程之间的服务和被服务的关系。
服务可以是任意的应用:文件传输服务、电子邮件服务等。
客户机调用运行软件,在打算通信时主动向服务器发起通信,所以客户程序必须知道服务器程序的地址。不需要特殊的硬件和复杂的操作系统。
服务器运行的软件是专门用于提供某种服务的程序,系统启动后自动调用保持运行,被动地等待并接受多个远地或本地客户的通信请求,所以不需要知道客户程序的地址,一般需要强大的硬件和高级的操作系统支持。
主要特点:
- 网络中各计算机的地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的,使它们不能随意存储数据,也不能随意删除数据,或进行其他受限的网络活动。
- 整个网络的管理工作由少数服务器承担,所以网络的管理非常集中和方便,在大规模网络中更加明显。
- 可扩展性不佳,服务器硬件和网络带宽的限制,服务器支持的客户数有限,客户数增长较快,影响应用系统的效率。
2.P2P模型(对等模型)![](https://i-blog.csdnimg.cn/blog_migrate/daebf84ab05f5c588eb2ffbb6bceae74.jpeg)
指两个主机在通信时并不区分服务请求方和服务接收方。
只要两台主机都运行了P2P软件,就可以平等的对等连接通信。
例如:通信双方可以下载对方已经存储在硬盘中的共享文档(C/S模型下,只有客户机主动发起请求,才能从服务器获得文档。多个客户机之间想要共享文档,只能通过服务器)
实际上,P2P模型从本质上来看仍使用C/S方式,只是对等连接的主机既是客户又是服务器。改变了原来需要专用服务器的模式,解决专用服务器的性能瓶颈问题(播放流媒体时对服务器的压力过大,但可利用大量客户机来提供服务)
主要特点:
- 繁重的计算机任务可以分配到各个结点,利用每个结点空闲的计算能力和存储空间,聚合实现强大的服务。
- 系统可扩展性强。传统服务器连接带宽受限,连接客户端数被限制,P2P模型中能避免该问题。
- 网络更健壮,不存在中心结点失效问题。部分结点失效,其余结点仍能形成完整的网络。
(二)DNS系统
主机向DNS服务器发送域名,DNS服务器返回对应的IP地址,主机再访问该IP地址的网站进行通信,实现域名到IP地址的解析。
如果出现访问出错,连接不到服务器,有可能网站崩溃,也有可能DNS服务器出现异常无法解析域名。
从概念上将DNS分为三部分:层次域名空间、域名服务器 、解析器。
域名中的点和点分十进制IP地址中的点并无一一对应关系。
1.层次域名空间
因特网采用层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器都有唯一的层次结构的名字,即域名。
每个域名是由标号序列组成。各标号分别代表不同级别的域名,用点隔开,每一个标号不超过63个字符,不区分大小写字母。由多个标号组成的完整域名总不超过255个字符。
格式:… .三级域名.二级域名.顶级域名. (最后一个.代表根)
顶级域名(Top Level Domain,TLD)主要分为三类
国家顶级域名(nTLD)
- cn
- us
- uk
通用顶级域名(gTLD)
- .com(公司和企业)
- .net(网络服务机构)
- .org(非营利性组织)
- .edu(美国专用的教育机构)
- .gov(美国专用的政府部门)
- .mil(美国专用的军事部门)
- .int(国际组织)
- aero(航空传输企业)
- museum(博物馆)
- travel(旅游业)
基础结构域名(Infrastructure Domain)又称反向域名,只有一个
- arpa,用于反向域名解析,
二级域名主要分为三类:
类别域名
- ac、com、edu、gov、mil、net、org(使用国家顶级域名,在其之下使用类别域名)
行政区域名:用于我国各省、自治区、直辖市
- bj(北京)
- js(江苏)
个人注册域名:全球唯一
三级域名:
四级域名:
2.域名服务器
因特网的域名系统(DNS)被设计成一个联机分布式的数据库系统,并采用客户/服务器模型。名字到域名的解析是由若干个域名服务器来完成的,域名服务器程序在专设的结点(域名服务器)上运行。
一个服务器所负责管辖的范围(有权限的范围)称为区。
- 根域名服务器(最高层次的域名服务器):
根域名服务器是最重要的域名服务器。
所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。
若本地域名服务器无法解析网络上的某一个域名,首先求助于根域名服务器。
- 顶级域名服务器:
这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
当收到DNS查询请求时,给出相应的回答(最终结果/下一步应当找的域名服务器的IP地址)。
- 权限域名服务器(授权域名服务器):
当一个权限域名服务器不能提供最终结果,则返回发出查询请求的DNS客户,下一步应当找哪一个权限域名服务器。
- 本地域名服务器:
本地域名服务器对域名系统非常重要。
当一个主机发出DNS查询请求时,该查询请求报文就发送给本地域名服务器。
每一个因特网提供商(ISP)/一所大学/大学里的一个系,拥有一个本地域名服务器(默认域名服务器),使用本地连接时,需要填写的DNS服务器就是本地DNS服务器的地址。
3.域名解析过程
- 迭代查询:
当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应当向哪一个域名服务器进行查询,然后让本苏域名服务器进行后续的查询。
- 递归查询:
本地域名服务器只需向根域名服务器查询一次,后续查询都是在其他几个域名服务器之间进行的。
高速缓存:由于IP地址的解析十分繁琐,经过多次的DNS请求,因此提高DNS效率,引入高速缓存,在本地域名服务器中存放最近查询过的域名以及从哪里获得域名映射信息的记录。(快表)
主机也设有高速缓存,在开机时会从本地域名服务器中下载域名与地址的对应数据库存入本机的高速缓存中,查询IP地址时,先查询主机的高速缓存,其次是本地域名服务器的高速缓存,最后是查询根域名服务器、顶级域名服务器、权限域名服务器等。
Q:在因特网中通过域名系统查找某台主机的IP地址和在电话系统中通过114查号台查找某个单位的电话号码相比,有何异同?
(三)文件传送协议
文件传送协议FTP(File Tranfer Protocol)
提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。通信时可以屏蔽不同操作系统的差异性。
例如上课时打开FTP地址从FTP服务器下载文件和上传实验报告(都是基于对文件的拷贝操作)
简单文件传送协议TFTP(Trivial File Tranfer Protocol)
很小,易于实践的文件传送协议,适用于UDP环境,将程序或文件同时从许多机器下载经常使用。代码块占的内存小,对小设备来说比较重要。
1.FTP的工作原理
FTP只提供文件传送的一些基本服务。
登录FTP服务器进行文件传输,在地址栏填写FTP地址,使用用户名&密码 或者 匿名登陆
匿名登陆:互联网有很大一部分FTP服务器是匿名(Anonymous)服务器,不要求用户在该服务器登陆注册也不用取的FTP服务器授权。使用特殊的用户名“anonymous”登录FTP服务器。
使用TCP可靠传输服务,FTP使用客户/服务器模型。
用户通过一个客户机程序连接至远程计算机上运行的服务器程序
一个FTP服务器进程可同时为多个客户进程提供服务。
FTP服务器进程由两部分组成:主进程负责接收新的请求、另外若干个从属进程负责处理单个请求。
主进程工作步骤:
- 打开实现文件传输的熟知端口(端口号为21),使客户进程能够连接上。
- 等待客户进程发出连接请求,进行数据的传送。
- 启动n个从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后终止,但从属进程在运行期间根据需要还可能创建一些其他的子进程。
- 回到等待状态,继续接收其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。
服务器端有两个从属进程:控制进程和数据传送进程。
客户端除了控制进程和数据传送进程,还有用户界面进程(与用户接口)
在进行文件传输时,FTP的客户和服务器之间建立两个并行的TCP连接,数据连接和控制连接。
2.控制连接与数据连接
控制连接:TCP控制连接端口21,在整个会话期间始终保持打开,FTP服务器监听在21号端口,等待客户机连接,建立在这个端口上的连接被称为控制连接。客户机可以通过控制连接向服务器发送各种请求(如登陆、改变当前目录、切换数据传输模式、列目录内容、上传文件等)通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。
数据连接:TCP数据连接端口20,当需要传送文件时,即服务器端的控制进程在接收到FTP客户发送来的文件传输请求后,服务器和客户机之间需要建立“数据连接”和“数据传送进程”,文件传送完毕则关闭。
是否使用TCP20端口建立数据连接与FTP传输模式有关(主动方式:TCP20端口;被动方式由服务器和客户端自行协商决定:端口>1024)
主动方式:客户进程向服务器进程发出建立连接的请求,客户进程寻找连接服务器进程的熟知端口21,同时告诉服务器自己的端口号用于建立数据连接,服务器端使用自己传送数据的熟知端口20与客户进程提供的端口号建立数据传送连接。
被动方式:客户端和服务器建立TCP控制连接,服务器端口号21,客户端给服务器发送命令,请求询问服务器端口号,服务器返回一个大于1024的端口号。
带外(out of band)传送控制信息:传输数据一般都是在带内传送的,FTP使用了一个分离的控制连接,控制信息不在数据连接中传送,而是在控制连接中传送。
FTP传输模式:
文本模式:ASCII模式,以文本序列传输数据
二进制模式:Binary模式,以二进制序列传输数据
Q:FTP在进行文件传输时,同时在端口20和端口21建立TCP连接,其端口21用于控制连接,端口20用于数据连接,既然是TCP,不应该是端对端吗?应该一个时间段内只被一个客户进程独占才对,这不是和一个FTP服务器可以同时为多个客户进程服务相矛盾了吗?
(四)电子邮件
1.电子邮件系统的组成结构
一个电子邮件系统有以下三个主要构件
- 用户代理:用户与电子邮件系统的接口,其基本功能是撰写、显示、处理和通信。
- 邮件服务器:因特网上所有的ISP都有邮件服务器,功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)
- 电子邮件使用的协议:如简单邮件传送协议(Simple Mail Transfer Protocol,SMTP)、邮局协议版本3(Post Office Protocol-Version3,POP3)、IMAP等。
电子邮件的发送与接收
邮件发送过程:
- 客户端建立TCP连接至服务器
- 服务器发送身份信息,确认连接已建立
- 客户端发送身份信息,服务器确认收到
- 客户端发送邮件接受者地址,服务器确认收到
- 客户端发送邮件发送者地址,服务器确认收到
- 客户端请求发送邮件内容,服务器确认准备好
- 客户端发送邮件内容,最后以一个包含一个点(.)字符的行结束,服务器发回数据已收到的确认。
邮件接收过程
- 客户端建立TCP连接至服务器
- 服务器发送身份信息,确认连接已建立
- 客户端发送USER命令+用户名,服务器确认收到
- 客户端发送PASS命令+用户密码,服务器确认收到
- 客户端发送LIST命令,服务器返回当前邮件箱的邮件个数列表
- 客户端发送RETR命令+邮件编号,服务器发回响应的邮件内容
- 客户端在接收完邮件后,可以选择是否发送DELE命令+邮件编号,通知服务器从邮箱中删除相应的邮件
只要用户从POP服务器读取了邮件,POP服务器就将该邮件删除。与其描述是否有矛盾?
2.电子邮件格式和MIME
电子邮件格式
电子邮件由信封和内容两部分构成。
邮件内容首部包含首部和主体,(首部:“To:”收信人地址,“subject:"邮件主题等)
用户写好首部后,邮件系统自动将信封所需的信息(“from”:发信人地址;“To:”收信人地址;“subject:"邮件主题;“date”:日期等)提取出来写在信封上。
一般只规定了邮件内容中的首部格式,而邮件的主体部分由用户自由撰写。
3.SMTP简单邮件传送协议
SMTP发送邮件协议,所规定在两个互相通信的SMTP进程之间应如何交换信息。
SMTP运行在TCP连接基础之上,使用25号端口和C/S模型。
SMTP规定了14条命令和21种应答信息。
SMTP通信阶段:建立连接⇒邮件传送⇒连接释放
连接建立
发送方撰写邮件后发送给发送方邮件服务器(SMTP客户),存入邮件服务器的缓存,SMTP客户每隔一定时间对服务器进行扫描,发现有邮件则使用SMTP协议和熟知端口25与接收方邮件服务器(SMTP服务器)建立TCP连接。接收方邮件服务器发出应答信息(220 Service ready)告诉发送方已经准备好接受了。SMTP客户向SMTP服务器发送HELLO命令并附上发送方主机名。如果SMTP服务器有能力接收邮件,则返回“250 OK”。否则返回应答“421 Service not available”,若在一定时间内不能发送邮件,SMTP服务器则会告诉发送方。
邮件发送
发送方邮件服务器发送“ MAIL FROM:<Jeremy@163.com>”
接收方准备好了,则返回“250 OK”,否则返回数字与英文提示信息。告知发送方邮件服务器是否已经准备好接受邮件
发送方邮件服务器收到“250 OK”后,发送一个或多个(抄送)“RCPT TO:<Rin@163.com>”,每一个RCPT命令,接收方邮件服务器返回一个“250 OK”(收件人地址正确),或者“550 Nobsuch user here ”(收件人地址错误)
发送方邮件服务器发送DATA命令,表示要开时传输邮件的内容了(未传输),接收方邮件服务器返回“354 start mail input;end with<CR><LF>.<CR><LF>”(表示SMTP服务器同意传输)。
发送方邮件服务器开始传输邮件内容,传输结束后发送方邮件服务器发送“<CR><LF>.<CR><LF>”(表示传输结束)
接收方邮件服务器返回“250 OK”
连接释放
邮件发完,SMTP客户发送QUIT命令,SMTP服务器返回“221”表示同意TCP连接释放。
SMTP缺点
- SMTP不能传送可执行文件或其他二进制对象
- SMTP仅限于传送7位ASCII码,不能传送其他非英语国家的文字
- SMTP服务器会拒绝超过一定长度的邮件
4.MIME
由于SMTP只限于传送一定长度的7位ASCII码邮件,于是提出了通用因特网邮件扩充(Multipurpose Internet Mail Extensions,MIME)。
意图继续使用目前的格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。即将其他国家的文字和可执行文件转化为7位的ASCII码通过SMTP协议进行邮件的发送和接收,SMTP协议功能上的扩充。
- quoted-printable编码
适用于所传数据中只有少量的非ASCII码。
用一个“=”后面加该字符的十六进制值来表示一个非ASCII码。
例如汉字“系统”的二进制编码为11001111 101190101 11001101 10110011(共32位,但该4字节不是ASCII码,数值已经超过127)十六进制为CFB5CDB3,quoted-printable编码为=CF=B5=CD=B3,“=”二进制代码为00111101,十六进制为3D,quoted-printable编码为“=3D”。
- base64编码
24位二进制代码 : 01001001 00110001 01111001
划分为4个6位组 : 010010 010011 000101 111001
对应的base64编码: S T F 5
用ASCII编码发送 : 01010011 01010100 01000110 00110101
24位二进制代码转换为32位,开销为(32-24)/32=25%
5.POP3邮局协议
POP3读取邮件协议
建立在TCP连接之上,端口号110,使用C/S模型。
接收端邮件服务器作为POP3服务器,接收方作为POP3客户。
工作方式:
接收方把邮件从接收端的邮件服务器读取出来后:1.下载并保留在邮件服务器2.下载并删除邮件服务器缓存中的邮件
POP3协议简单,功能有限的读取邮件协议,由此采用新的邮件读取协议IMAP。
6.IMAP网际报文存取协议
IMAP协议比POP3协议复杂。
当用户PC上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部(发信人FROM及主题Subject等),若需要打开某个邮件,该邮件才能上传到用户的PC上。
IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件的某一部分(先看正文,在网络条件允许下下载附件或视频图片等)
7.基于万维网的电子邮件
(五)WWW万维网
WWW的概念
WWW(World Wide Web,万维网)简称3W,是一个大规模、联机式的信息储藏所/资料空间,是无数个网络站点和页面的集合。
不是某种特殊的计算机网络。
用链接的方法从因特网的一个站点访问另一个站点,主动地按需获得信息。
提供各种搜索引擎,方便用户查找信息。
WWW组成结构
URL(Uniform Resource Locator)统一资源定位符,标志万维网上的各种文档,并使每一个文档在整个互联网的范围内具有唯一的标志符URL。
URL的一般格式:<协议>://<主机>:<端口号>/<路径>
协议:http或ftp;主机:域名或IP地址;端口路经可省略(如http://pku.edu.cn)
用户通过点击超链接(http://pku.edu.cn)获取资源,这些资源通过超文本传输协议HTTP传送给用户。
万维网以客户/服务器方式工作,浏览器是在用户计算机上的万维网客户程序,而万维网文档所驻留的计算机(万维网服务器)则运行服务器程序,客户程序向服务器程序发出请求,服务器程序向客户程序发回客户所要的文档。
万维网使用超文本标记语言HTML(HyperText Markup Language),使得万维网页面设计者可以很方便地使用链接,从一个页面的链接跳转到另一个页面,并能够在自己的屏幕上显示出来。
CGI:(Common Geteway Interface)通用网关接口,CGI是一种标准,定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。
浏览器:是用户主机上的万维网客户程序,万维网文档所驻留的主机则运行服务器程序,客户程序向服务器程序发出请求,服务器程序向客户程序发回客户所要的万维网文档。
超文本:包含指向其他文档的链接的文本。即一个超文本有多个信息源链接而成。这些信息源的数目不受限制,利用一个链接可使用户找到另一个文档,而这又可以链接到其它的文档。这些文档可以位于世界上任何一个接在互联网上的超文本系统中。超文玩是万维网的基础。
超媒体:与超文本的区别是文档内容不同。超文本文档仅包含文本信息,超媒体文档包含其他表示方式的信息(图形,图像、声音、动画、视频)
超链Hyperlink:超文本链接,简称链接,在客户程序的主窗口中,超链通常用不同颜色的文字表示。有时在超凡的文字下方添加了下划线,鼠标靠近后箭头会变成一只手的形状。
页面Page:在一个客户程序主窗口上显示出万维网文档。
活动文档active document技术是把所有工作都转给浏览器端。每当浏览器请求一个活动文档时,服务器就返回一段活动文档程序副本,使该程序副本在浏览器端运行。活动文档可以用户直接交互,并可联系的改变屏幕的显示。只要用户运行活动文档程序,活动文档的内容就可以联系改变。由于活动文档技术不需要服务器的连续更新传送,对网络带宽的要求不会太高。从传送角度看,浏览器和服务器都把活动文档看作是静态文档。在服务器上的活动文档的内容是不变的,这点和动态文档不同。浏览器可在本地缓存一份活动文档的副本。活动文档还可处理成压缩形式,便于存储和传送。活动文档本身并不包括其运行所需的全部软件,大部分的支持软件是事先存放在浏览器中的。
搜索引擎search engine:万维网中用来进行搜索信息的工具
2.HTTP超文本传送协议
HTTP(HyperText Transfer Protocol)超文本传送协议,是万维网客户程序(如浏览器)与万维网服务器程序之间进行交互所使用的协议。
HTTP是面向事务的应用层协议,使用TCP连接进行可靠传输,服务器默认监听80端口
用户浏览页面方法:输入URL;点击超链接
工作流程
- 浏览器分析URL
- 浏览器向DNS请求解析IP地址
- DNS解析出IP地址
- 浏览器与服务器建立TCP连接
- 浏览器发出取文件命令
- 服务器响应
- 释放TCP连接
- 浏览器显示
从协议执行的过程来说,当浏览器点击超链接,要访问WWW服务器时。
首先向WWW服务器请求解析IP地址,即域名转换IP地址,一旦获得了浏览器的IP地址,浏览器将通过TCP向服务器发送连接建立请求。
每个服务器上都有一个服务进程,不断地监听TCP的80端口,监听到HTTP请求报文后与浏览器建立连接。
TCP连接建立后,浏览器向服务器发送要求获取某一Web页面的HTTP请求,即取文件命令。
服务器收到HTTP请求后,将构建所请求的Web页的必需信息,并通过HTTP响应报文返回给浏览器。
TCP连接释放。
浏览器再将信息进行解释,然后Web页显示给用户。
HTTP协议的特点
HTTP协议是无状态的。(同一个客户第二次访问同一个服务器上的界面时,服务器的响应和第一次响应时一样,无记忆无状态的)
但实际中,一些万维网站点需要能够识别用户。
Cookie:存储在用户主机的文本文件,记录一段时间内用户(使用识别码识别)的访问记录。
HTTP采用TCP协议作为运输层协议,但HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需要建立HTTP连接)。
HTTP连接方式
{持久连接keep-alive(非流水线持久连接;流水线持久连接),非持久连接Close}
非持久连接:万维网客户(浏览器)请求万维网文档,经过一个RTT时间与服务器建立TCP连接(三次握手前俩部分),客户则发送HTTP请求报文发给万维网服务器,服务器则返回HTTP响应报文。
费时:需要两倍的RTT外加传输文档时间,如果再发一个请求报文,则在进行一次三次握手。
持久连接: 经过三次握手,如果再次发送请求报文,则不需要再次建立TCP连接。在服务器发送响应之后,一段时间内仍然保持TCP连接。
流水线式:连续发送请求,大概只需要花费一个RTT时间,可以访问所有的对象,使TCP空闲时间减少,提高文档下载效率。
非流水线式:发送一个请求,收到响应后,即接收上一个资源后才能发送新的请求。
HTTP报文结构
请求报文-从客户向服务器发送请求报文
响应报文-从服务器到客户的回答
由于HTTP是面向文本的(Text-oriented)所以在报文中每一个字段都是一些ASCII码串,因而每个字段的长度都是不确定的。
报文由3部分组成:开始行、首部行、实体主体
两个报文的区别:在请求报文中,开始行是请求行。
某请求报文
GET /indez.html HTTP/1.1 //GET命令请求读取由URL标志的信息 版本HTTP/1.1
Host: www.test.edu.cn //请求的html存放的网址
Connection:Close //连接方式:非持续连接
Cookie:123456 //用户识别码,表示用户访问过
状态码:
1xx表示通知信息,如请求收到了或者正在处理
2xx表示成功,如接收或者知道了(202 Accepted)
3xx表示重定向,如要完成请求还必须采取进一步的行动(301 Moved Permanently)
4xx表示客户的差错,如请求中有错误的语法或不能完成(404 Not Found)
5xx表示服务器的差错,如服务器失效无法完成请求
计算机网络