计算机网络5-应用层

网络4-应用层

  • 网络应用模型
    客户/服务器模型;P2P模型
  • 域名系统DNS
    层次域名控件;域名服务器;域名解析过程
  • 文件传输协议FTP
    FTP的工作原理;控制连接与数据连接
  • 电子邮件E-mail
    电子邮件系统的组成结构;电子邮件格式与MIME;SMTP与POP3
  • 万维网WWW
    WWW的概念与组成结构;HTTP

网络应用模型

客户/服务器模型

C/S模型中,服务器总是处于打开状态,它服务于许多来自其他客户机的主机请求,工作流程如下

  • 服务器处于接收请求的状态
  • 客户机发出服务请求,并等待接收结果
  • 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机

P2P模型

P2P模型的思想是整个网络中的传输内容不再被保存在中心服务器上,每个结点都同时又下载,上传的功能

P2P优点是减轻服务器压力,可扩展性好,网络健壮性强,多个客户机之间可以直接共享文档;缺点是占用内存,对硬盘损伤大,使网络非常拥塞

域名系统DNS

DNS是计算机网络应用层一个很重要的服务,了解它基本就了解了整个网络中域名到IP转换的过程。

DNS是什么

在《计算机网络-自顶向下方法》中有这么一句话

DNS:因特网的目录服务

DNS(Domain Name System)其实就是一个目录,他的作用是通过用户给定域名,查出对应的IP地址。

而更为严格的定义就是:
DNS是:

  • 一个由分层的DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议

或者说DNS是一个黑盒子,它提供了主机名到IP地址的转换,一个简便的DNS黑盒子过程如下:

  1. 同一台用户主机上运行着DNS应用的客户端
  2. 浏览器从URL中抽取出主机名,传给DNS应用的客户端
  3. DNS客户向DNS服务器发送一个包含主机名的请求
  4. DNS客户最终收到一份回答报文,其中含有对应该主机名的IP地址
  5. 一旦浏览器获得该地址,就可以向位于该IP地址的80端口的HTTP服务器进程发起一个TCP连接

DNS主要任务是主机名到IP地址转换的目录服务
DNS除了有主机名到IP地址的转换服务外,还有如下服务:

  • 主机别名
  • 邮件服务器别名
  • 负载分配

值得一提的是,DNS协议运行在UDP之上,使用53端口。

DNS分布式,层次数据库

DNS是一个分布式,层次数据库,大致有三类:根DNS服务器,顶级域(TLD)DNS服务器和权威DNS服务器。
还有一类是本地DNS服务器,每个ISP都有一台本地DNS服务器,本地DNS服务器起着代理的作用,将请求转发到DNS服务器的层次结构中。

在说服务器分层作用之前,先要说一下域名,常见的域名是例如www.example.com,但是它真正的域名是www.example.com.root,只是省略了后面的.root.root称为根域名,.com.net等等称为顶级域名(TLD),.example称为次级域名,这个域名是用户可以注册的,再下一级是主机名(host),比如www,又称为三级域名。

总结一下,域名的层级结构如下:

主机名(三级域名).次级域名.顶级域名.根域名

host.sld.tld.root

根DNS服务器

它将返回顶级域名的TLD服务器的IP地址,根域名服务器的NS记录和IP地址一般是不会变化的

顶级域DNS服务器

它返回权威服务器的IP地址

权威DNS服务器

它返回主机名(如www.amazon.com)的IP地址

本地DNS服务器

严格上来说它不属于DNS层次结构,但它也很重要。本地DNS服务器由ISP提供,当主机发出DNS请求时,通常被发往到本地DNS服务器,由本地DNS服务器代理转发到DNS服务器层次结构

工作机理

以主机cis.poly.edu请求gaia.cs.umass.edu的IP地址为例,假设cis.poly.edu的本地DNS为dns.poly.edu,并且gaia.cs.umass.edu的权威DNS服务器为dns.umass.edu

  1. 主机cis.poly.edu首先向它的本地DNS服务器dns.poly.edu发送一个DNS查询报文
  2. 本地DNS服务器dns.poly.edu将报文转发到根DNS服务器,根DNS服务器注意到edu前缀并向本地DNS服务器返回负责edu的TLD的IP地址列表
  3. 该本地DNS服务器则再次向这些TLD服务器之一发送查询报文
  4. 该TLD服务器注意到umass.edu前缀,并用权威DNS服务器的IP地址进行响应
  5. 最后,本地DNS服务器直接向dns.umass.edu重发查询报文,dns.umass.edugaia.cs.umass.edu的IP地址进行响应

从请求主机到本地DNS服务器的查询是递归的,其余的查询是迭代的

DNS缓存

为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛采用了缓存技术

它能够把回答中的信息缓存在本地存储器中,但该缓存不是永久的,由于主机和主机名与IP地址间的映射并不是永久的,所以DNS服务器一般在一段时间后(通常为2天)将丢弃缓存的信息。

DNS报文和记录

DNS记录

共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record,RR),RR提供了主机名到IP地址的映射。

RR是一个包含了下列字段的4元组:
(Name, Value, Type, TTL)

TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间

  • 如果Type=A,则Name是主机名,Value是该主机名对应的IP地址
  • 如果Type=NS,则Name是个域(如foo.com),Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。这个记录用于沿着查询链来路由DNS查询。(如(foo.com, dns.foo.com, NS)就是一个NS记录)
  • 如果Type=CNAME,则Value是别名为Name的主机对应的规范主机名
  • 如果Type=MX,则Value是个别名为Name的邮件服务器的规范主机名

如果一台DNS服务器是用于某特定主机名的权威DNS服务器,那么该DNS服务器会有一条包含该主机名的类型A记录
如果服务器不是用于某主机名的权威服务器,那么该服务器将包含一条类型NS记录,该记录对应包含主机名的域;它还包括一条类型A记录,提供在NS记录的Value字段中的DNS的IP地址
(比如edu TLD服务器不是主机gaia.cs.umass.edu的权威DNS服务器,则该服务器将包含一条包括主机cs.umass.edu的域记录,如(umass.edu, dns.umass.edu, NS),该TLD服务器还将包含一条类型A记录,如(dns.umass.edu, 128.199.40.111, A),该记录将名字dns.umass.edu映射为一个IP地址)

DNS报文

对分级查询的进一步解释

所谓”分级查询”,就是从根域名开始,依次查询每一级域名的NS记录,直到查到最终的IP地址,见下面的DNS记录可知

  1. 从”根域名服务器”查到”顶级域名服务器”的NS记录和A记录(IP地址)
  2. 从”顶级域名服务器”查到”次级域名服务器”的NS记录和A记录(IP地址)
  3. 从”次级域名服务器”查出”主机名”的IP地址

(根域名服务器的NS记录和IP地址一般是不会变化的,所以内置在DNS服务器中)

文件传输协议FTP

FTP提供以下功能:

  • 提供不同种类主机系统之间的文件传输能力
  • 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
  • 以匿名FTP的方式提供公用文件共享的能力

FTP采用C/S工作方式,使用TCP可靠传输服务,FTP服务器进程由两大部分组成:一个主进程负责就收新的请求;另外若干从属进程,负责处理单个请求,工作步骤如下:

  • 打开端口21(控制端口),等待客户进程发连接请求
  • 启动从属进程来处理客户进程发来的请求

控制连接与数据连接

FTP工作时使用两个并行的TCP连接,一个是控制连接(端口21),一个是数据连接(端口20)

控制连接用来传输控制信息(连接请求,传送请求,中止传输等),并且控制信息都以7位ASCII格式传送

电子邮件

组成结构

电子邮件系统主要由用户代理,邮件服务器和电子邮件协议组成,常见电子邮件协议是SMTP,POP3等

常见的用户代理是Outlook,Foxmail等,邮件服务器采用C/S工作方式,但它能同时充当客户和服务器,发送方是客户,接收方的服务器,SMTP采用”推”的他通信方式,SMTP客户端是主动将邮件”推”到SMTP服务器的,POP3采用的是”拉”的通信方式,用户读取邮件时,用户代理向邮件服务器发出请求,”拉”取用户邮箱中的邮件

发送方发送邮件到邮件服务器和发送方邮件服务器发送邮件到接收方服务器采用的都是SMTP

电子邮件格式与MIME

电子邮件分为信封和内容两大部分,邮件内容又分为首部和主体两部分

常见的邮件内容如下:

1
2
3
4
From: xxx@xxx.com
To : xxx@xxx.com
Subjuect: xxxxx
主体

SMTP只能传送一定长度的ASCII码,MIME(多用途网际邮件扩充)的意图是继续使用目前SMTP的格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则

  • MIME增加了5个新的邮件首部字段,包括MIME版本,内容描述,内容标识,内容传送编码和内容类型
  • 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
  • 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变

SMTP和POP3

SMTP采用C/S方式,TCP连接,端口号25,有连接建立,邮件传送,连接释放三个阶段

OPO3采用C/S方式,TCP连接,端口号110

万维网WWW

万维网是一个资料空间,这个空间中:一样有用的事务称为一样”资源”,并由一个全域”统一资源定位符”(URL)标识,这些资源通过超文本传输协议HTTP传送给使用者

万维网使用链接的方法能让用户非常方便从因特网一个站点访问另一个站点,万维网内核部分由3个标准构成:统一资源定位符URL,超文本传输协议HTTP,超文本标记语言HTML

URL一般格式是:<协议>://<主机>:<端口>/<路径>
常见协议有http,ftp等,主机是存放资源的主机在因特网的域名,也可以是IP地址,端口和路径有时可以省略,URL不区分大小写

万维网以C/S方式工作,浏览器是客户机

超文本传输协议HTTP

每个万维网站点都有一个服务器进程,它不断监听TCP的端口80,当监听到连接请求后便与浏览器建立连接,用户单击鼠标后发生的事件按顺序如下:

  1. 浏览器分析链接指向页面的URL
  2. 浏览器向DNS请求解析
  3. 域名系统DNS解析出服务器的IP地址
  4. 浏览器与该服务器建立TCP连接(HTTP默认端口80)
  5. 浏览器发出HTTP请求,GET /xx/index.html
  6. 服务器通过HTTP响应把文件index.html发送给浏览器
  7. TCP连接释放
  8. 浏览器解释文件index.html,并将WEB页显示给用户

HTTP特点

HTTP是无状态的,通常使用Cookie加数据库的方式来跟踪用户的活动,HTTP采用TCP作为运输层协议,但HTTP本身是无连接的,通信双方交换HTTP报文之前不需要先建立HTTP连接

HTTP非持久连接会对网页元素对象(JPEG图形,Flash等)的传输单独建立一个TCP连接,HTTP/1.1支持持久连接,服务器发送响应后仍保持这条连接,这样可以继续上传后续HTTP请求与响应报文
持久连接又分为流水线和非流水线,非流水线是客户收到前一个响应之后才能发出下一个请求,HTTP/1.1默认是流水线的持久连接,客户每遇到一个对象引用就立即发出一个请求,客户可以逐个地连续发出对各个引用对象的请求

HTTP/1.0与HTTP/1.1的区别

  • 长连接:HTTP/1.0发送一个响应后就关闭连接,可以使用keep-alive参数来告知服务器建立一个长连接,而HTTP/1.1默认就支持长连接
  • 节约带宽:HTTP/1.1支持只发送header信息(不带任何body),如果服务器认为客户端有权限请求服务器,就返回100,客户端接收到100才开始把请求body发送到服务器,当服务器返回401,客户端就可以不用发送请求body了,节约了带宽
  • HOST域:HTTP/1.0认为每台服务器都绑定一个唯一的IP地址,因此请求消息中的URL并没有传递主机名,现在一台物理服务器可以存在多个虚拟主机,且他们共享同一个IP地址,所以HTTP/1.1引入HOST头域

HTTP/1.1与HTTP/2.0的区别

  • 多路复用:HTTP/2.0同一个连接可以并发处理多个请求,且并发数量比HTTP/1.1大了好几个数量级
  • 数据压缩:HTTP/1.1不支持header数据的压缩,HTTP/2.0使用HPACK算法对header的数据进行压缩
  • 服务器推送:当我们请求数据的时候,HTTP/2.0的服务器可以顺便把一些客户端需要的资源一起推送到客户端

HTTP报文

请求报文,CR LF是回车和换行,sp是空格

响应报文

HTTP请求常用的几个方法如下:

方法 意义
GET 请求读取由URL标识的信息
HEAD 请求读取由URL标识的信息的头部
POST 给服务器添加信息

CONNECT 用于代理服务器

请求报文一般用不到实体主体

常见应用层的协议和熟知端口

应用程序 FTP数据连接 FTP控制连接 TELNET SMTP DNS TFTP HTTP POP3 SNMP HTTPS
使用协议 TCP TCP TCP TCP UDP UDP TCP TCP TCP TCP
熟知端口号 20 21 23 25 53 69 80 110 161 443

思维导图