**计算机网络(自顶向下方法)**内容重点
第二章 应用层
- 对应用程序的通信提供服务。
- 功能:文件的传输、访问和管理;电子邮件;虚拟终端;查询服务和远程作业登录
2.1应用层协议
2.1.1网络应用程序体系结构
- 客户-服务器体系结构 C/S:
**服务器:**永久性提供计算服务;永久性访问地址/域名;固定的周知的IP地址
**客户:**请求计算服务;与服务器通信,使用服务器提供的服务;间歇性接入网络;可能使用动态IP地址;不与其他客户机直接通信 - P2P体系结构:
- 不存在永远在线的服务器;
- 每个主机既可以提供服务,也可以请求服务任意端系统/节点之间可以直接通讯;
- 节点间歇性接入网络;
- 节点可能改变lP地址;
- 可扩展性好;
- 网络健壮性强
2.1.2进程通信
在两个不同端系统上的进程,通过跨越计算机网络交换报文而互相通信。
- 客户与服务器进程
- 网络应用程序由成对的进程组成,这些进程通过网络互相发送报文。
- 对于Web而言,浏览器是一个客户进程;web服务器是一个服务器进程。
- 对于P2P文件共享,下载文件的对等方标识为客户,上载文件的对等方标识为服务器。
- 发起通信的进程被标识为客户,等待联系的进程被标识为服务器。
- 进程与计算机网络之间的接口
- 进程通过一个称为套接字的软件接口向网络层发送、接收报文。
- 套接字是建立网络应用程序的可编程接口,因此套接字被称为应用程序和网络之间的应用程序编程接口(API)。
- 进程寻址
- 发送进程必须指定报文发往目的地的主机地址和运行在主机上的接收进程。
2.1.3可供应用程序使用的运输服务
- 可靠数据传输
- 当运输层能提供这种服务时,将数据传入套接字即可。否则某些数据可能无法到达接收进程。
- 一些多媒体应用是容忍丢失的应用。
- 吞吐量:发送进程能够向接收进程交付比特的速率。
**宽带敏感的应用:**具有吞吐量要求的应用程序。 - 定时
- 安全性
2.1.5应用层协议
定义了交换报文类型,语法,字段的语义,响应规则
- web应用包括:文档格式的标准(HTML)、Web浏览器、Web服务器、应用层协议(HTTP)
- HTTP:定义了在浏览器和Web服务器之间传输的报文格式和序列。
- 电子邮件的主要应用层协议为SMTP。
2.2Web和HTTP
2.2.1HTTP概况
超文本传输协议,由两个程序实现:客户程序和服务器程序。
- HTTP定义了客户向服务器请求web页面的方式。
- 使用TCP作为支撑传输协议。
- 服务器向客户发送被请求的文件,而不储存任何关于该客户的状态信息。所以HTTP是一个无状态协议。
2.2.2非持续连接和持续连接
- 非持续连接的HTTP:每次建立TCP连接只传输一个文件对象,然后关闭连接。
- 持续连接的HTTP:在相同客户与服务器之间的后续请求和响应报文能够通过相同的连接进行传送。特别是,一个完整的Web页面可以用单个持续TCP进行传送。
2.2.3HTTP报文格式
- 请求报文
- 第六版 P69页
- 请求行和首部行
- GET,POST,HEAD方法
- 响应报文
- 状态行:包含协议版本字段、状态码、相应状态信息
- Date
- Server
- Last-Modified
- Content-Length
- Content-Type
2.2.4用户与服务器的交互:cookie
2.2.5Web缓存
- Web缓存器也叫代理服务器
- 是服务器,也是客户,拥有自己的磁盘存储空间,保存着最近请求过的对象的副本。
- 浏览器先和代理服务器建立TCP连接,并向代理发送HTTP请求。
- 代理检查本地是否有该对象的副本,若有,直接向客户浏览器发送响应报文返回该对象。否则代理再向初始服务器建立TCP连接,初始服务器向代理发送具有该对象的HTTP响应报文。
- 代理收到该对象后,在本地存储一份副本,并向浏览器发送HTTP响应报文。
- web缓存器的优点:减少对客户请求的时间;减少一个机构接入链路到因特网的通信量(不必增加带宽,减少费用)。
2.3文件传输协议:FTP
- 用户通过一个FTP用户代理与FTP交互,用户首先提供远程主机的主机名,使本地的FTP主机客户进程建立一个到远程主机FTP服务器进程的TCP连接。
- 该用户提供用户标识和口令作为FTP命令的一部分在该TCP连接上传送。
- 一旦该服务器向该用户授权,用户即可将存放在本地文件系统中的一个或者多个文件复制到远程文件系统。
- HTTP与FTP的对比
- 都是文件传输协议。
- 都运行在TCP连接上。
- FTP使用了两个并行的TCP连接来传输协议:控制连接(在两个主机间传输控制信息)、数据连接(实际发送一个文件)
- FTP的控制连接是独立的,所以控制信息是带外传送的。
- 21端口进行控制传输,20端口进行数据传输。
- HTTP协议是在传输文件的同一个TCP连接中发送请求和响应首部行的,所以HTTP是带内发送控制信息的。
- FTP命令和回答
- 从客户到服务器的命令和从服务器到客户的回答,都是以7比特ASCII格式在控制连接上传送的。因此人可读(与HTTP协议的命令类似)。
- 每个命令后跟回车换行符,以区分连续的命令。每个命令由4个大写字母ASCII字符组成,有些还具有可选参数。
2.4电子邮件
- 电子邮件是一种异步通信媒介。因特网电子邮件的3个主要组成部分:用户代理、邮件服务器、简单邮件传输协议。
- 用户代理允许用户阅读、回复、转发、保存和撰写报文。
- 邮箱服务器形成了电子邮件体系结构的核心。每个接收方在其中的某个邮件服务器上有一个邮箱。
- 发送方撰写完邮件后,邮件代理向其邮件服务器发送邮件,此时邮件放在邮件服务器的外出报文队列中。
- 如果发送方的服务器不能将邮件交付给接收方的服务器,发送方的邮件服务器在一个报文队列中保持该报文并在以后尝试再次发送。
- 通常每隔30分钟左右进行一次尝试;如果几天后仍不能成功,服务器就删除该报文并以电子邮件的形式通知发送方。
- 发邮件用SMTP,收邮件用POP、IMAP。
2.4.1SMTP
- 使用TCP可靠数据传输服务。
- 有两个部分:运行在发送方邮件服务器的客户端和运行在接收方邮件服务器的服务器端。每台邮件服务器既运行客户端也运行服务器端。
- SMTP一般不使用中间邮件服务器发送邮件。
- 如果接收方的邮件服务器没有开机,邮件将保存在发送方的邮件服务器上并等待进行新的尝试,并不在中间的某个邮件服务器存留。
2.4.2与HTTP的对比
- 都是从一台主机向另一台传送文件:HTTP从Web服务器向Web客户(浏览器)传送文件(网页中的对象);SMTP从一个邮件服务器向另一个传送文件(电子邮件报文)。
- 进行文件传送时,都使用持续连接。
- HTTP是一个拉协议,方便时在Web服务器上装载信息,用户使用HTTP从服务器拉取这些信息,TCP连接是由想接收文件的机器发起的。
- SMTP是一个 推协议,发送邮件服务器把文件推向接收邮件服务器,TCP是由要发送文件的机器发起的。
- SMTP要求每个报文使用7比特ASCII码格式;HTTP数据不受这种限制。
- HTTP把每个对象封装到HTTP响应报文中;SMTP把所有报文对象放在一个报文中。
2.4.4邮件访问协议
SMTP用来将邮件从发送方的邮件服务器传输到接收方的邮件服务器,从发送方的用户代理传送到发送方的邮件服务器;如POP3这样的邮件访问协议将用来将邮件从接收方的邮件服务器传送到接收方的用户代理。
- POP3
- 当用户代理(用户)打开了一个到邮件服务器的TCP连接后POP3开始工作。
- **特许阶段:**用户代理发送(以明文形式)用户名和口令以鉴别用户。
- **事务处理阶段:**用户代理取回报文。(还可以对报文做删除标记、取消删除标记、获取邮件的统计信息)
- **更新阶段:**出现在客户发出quit命令之后,目的是结束POP3会话。此时邮件服务器删除带有删除标记的报文。
- IMAP
- IMAP服务器把每个报文与一个文件夹联系起来;当报文第一次到达服务器时,它与收件人的INBOX文件夹相关联。
- 收件人能把邮件移到一个新的用户创建的文件夹中,阅读、删除邮件等。
- IMAP协议为用户提供了创建文件夹以及将邮件从一个文件夹移动到另一个文件夹,在远程文件夹中查询邮件的命令。
- 与POP3不同,IMAP服务器维护了IMAP会话的用户状态信息。
- IMAP允许用户代理获取报文组件的命令。
2.5DNS:因特网的目录服务
2.5.1DNS提供的服务
将主机名转换为其背后的IP地址。
- DNS是:一个由分层的DNS服务器实现的分布式数据库;一个使得主机能够查询分布式数据库的应用层协议。
- DNS服务器通常是运行BIND软件的UNIX机器。
- DNS协议运行在UDP连接上,使用53号端口。
- DNS通常是由其他应用层协议所使用的。
- 主机别名
主机别名比主机规范名更加容易记忆,应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址。 - 邮件服务器别名
- 负载分配
用于冗余的服务器之间的负载分配
2.5.2DNS工作机理概述
- 所有DNS请求和回答报文使用UDP数据报经端口53发送。
- 如果全世界只有一个DNS服务器,这种集中式设计的问题包括:
单点故障:如果该服务器崩溃,将导致整个因特网随之瘫痪。
通信容量:无法处理所有的DNS查询。
远距离的集中式数据库:非临近的查询用户可能经过低速和拥塞的链路,将导致严重的时延。
维护:需要为所有的因特网主机保留记录,将使中央数据库非常庞大,还需要为每个新添加的用户频繁更新。 - 分布式、层次数据库
三种类型的DNS服务器:根DNS服务器、顶级域名(DNS)服务器、权威DNS服务器。
- 根DNS服务器:每台服务器实际上是一个冗余服务器的网络,以提供安全性和可靠性。
根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
-
顶级域名(DNS)服务器:负责顶级域名以及所有国家的顶级域名。
顶级域名服务器管理在该顶级域名服务器注册的所有二级域名 -
权威DNS服务器:在因特网上具有公共可访问主机(如Web服务器和邮件服务器)的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。一个组织的权威DNS服务器收藏这些DNS记录。
管理某个区的域名 -
本地DNS服务器:
每一个ISP都有一台本地DNS服务器(又名默认名字服务器)。
当一个主机与某个ISP连接时,该ISP提供一台主机的IP地址,该主机具有一台或多台本地DNS服务器的IP地址。
本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。 -
递归查询
-
迭代查询
由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。
- 域名系统
- 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。
- 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
- 完整的域名不超过255个字符。
- 域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
- 各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。
- 顶级域名:
国家级域名如:cn,us,uk
通用顶级域名: com(公司企业,net(网络服务机构),org(非营利性组织)、int(国际组织),edu(美国教育结构),gov(美国政府部门) ,mil(美国军事部门)。
反向域arpa:用于反向域名解析,即IP地址反向解析为域名。 - 在国家顶级域名下注册的二级域名均由该国家自行确定。例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不用edu和com。
- 我国则将二级域名划分为以下两类:
类别域名: ac(科研机构),com(工、商、金融等企业),edu(教育机构),gov(政府部门), net(提供网络服务的机构),mi(军事机构),org (非营利性组织)。共7个
行政区域名:适用于我国的各省、自治区、直辖市。例如: bj为北京市、sh为上海市等等共34个。