应用层
- 2.1应用层协议原理
-
- 2.1.1网络应用程序体系结构
- 2.1.2进程通信
-
- 1.客户机服务器进程
- 2.进程与计算机网络之间的接口
- 2.1.3可控应用程序使用的运输服务
-
- 1.可靠数据传输
- 2.吞吐量
- 3.定时
- 4.安全性
- 2.1.4因特网提供的运输服务
-
- 1.TCP
- 2.UDP
- 3.因特网运输层协议不提供的服务
- 4.进程寻址
- 2.1.5应用层协议
- 2.2Web应用和HTTP协议
-
- 2.2.1HTTP概况
- 2.2.2非持久连接和持久连接
- 2.2.3HTTP报文格式
-
- 1.请求报文
- 2.响应报文
- 2.2.4用户与服务器的交互:cookie
- 2.2.5缓存服务器
- 2.2.6条件Get方法
- 2.3文件传输协议:FTP
- 2.4因特网中的电子邮件
-
- 2.4.1SMTP
- 2.4.2与HTTP的对比
- 2.4.3邮件报文格式和MIME
-
- 1.非ASCII码数据的MIME扩展
- 2.接收的报文
- 2.4.4邮件访问协议
-
- 1.POP3
- 2.IMAP
- 3.基于Web的电子邮件
- 2.5DNS:因特网的目录服务
-
- 2.5.1DNS提供的服务
- 2.5.2DNS工作机理概述
-
- 1.分布式、层次数据库
- 2.DNS缓存
- 2.5.3DNS记录和报文
- 2.6P2P应用
-
- 2.6.1P2P文件分发
-
- 1.P2P体系结构的扩展性
- 2.BitTorrent
- 2.6.2在P2P区域中搜索信息
- 2.6.3P2P因特网电话:Skype
- 2.7TCP套接字编程
- 2.8UDP套接字编程
2.1应用层协议原理
2.1.1网络应用程序体系结构
两种主流体系结构:客户机/服务器和P2P
客户机/服务器体系结构:一个总是打开的主机(服务器),服务于来自许多其他称为客户机的主机请求。服务器具有固定的、周知的地址(IP地址)。
P2P体系结构:总是打开的基础设施服务器依赖最小,任意间断连接的主机对(对等方),直接相互通信。不用通过专门的服务器,适用于流量密集型应用程序,如文件分发、文件搜索/共享、因特网电话和IPTV。
2.1.2进程通信
1.客户机服务器进程
客户机:发起通信的进程
服务器:会话开始等待联系的进程
2.进程与计算机网络之间的接口
进程通过套接字的软件接口在网络上发送和接收报文。
套接字:应用程序和网络之间的应用程序编程接口(API)。
应用程序开发者可以控制套接字在应用层端的所有东西,但对套接字的运输层端几乎没有控制。对运输层的控制:①选择运输层协议;②设定运输层参数,如最大缓存、最大报文段长度等。
2.1.3可控应用程序使用的运输服务
1.可靠数据传输
2.吞吐量
3.定时
4.安全性
2.1.4因特网提供的运输服务
因特网上的应用使用两个运输层协议:TCP、UDP
1.TCP
面向连接的服务、可靠数据传输服务、拥塞控制
2.UDP
不提供不必要服务的轻量级运输层协议,仅提供最小服务。无连接、无拥塞控制
3.因特网运输层协议不提供的服务
无吞吐量和定时保证
4.进程寻址
识别接收进程需定义两种信息:
①主机的名称或地址
②指定目的主机上接收进程的标识。即IP地址+端口号
2.1.5应用层协议
应用层协议定义了:
①交换的报文类型,如请求和响应报文
②各种报文类型的语法,如报文中各个字段及其详细描述
③字段的语义,即包含在字段中的信息的含义
④进程何时、如何发送报文及对报文进行响应的规则。
2.2Web应用和HTTP协议
2.2.1HTTP概况
HTTP:超文本传输协议,Web的核心。两部分程序实现:一个客户机程序和一个服务器程序。
HTTP:定义报文格式以及客户机和服务器如何报文交换。
Web页面:对象组成的。对象:文件。
Web浏览器:实现HTTP的客户端。
Web服务器:用于存储Web对象,每个对象由URL寻址。
服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息。HTTP服务器并不保存关于客户机的任何信息,所以HTTP是一个无状态协议。
2.2.2非持久连接和持久连接
非持久连接:每个请求/响应对是经一个单独的TCP连接发送
持久连接:所有的连接及相应的响应经相同的TCP连接发送。
HTTP既可以使用非持久连接,也可以使用持久连接,默认方式使用持久连接。
2.2.3HTTP报文格式
HTTP报文:请求报文、响应报文
1.请求报文
①请求行
②首部行:方法字段、URL字段和HTTP协议版本字段
③Connection:Close首部行,是否使用持久连接
④User-agent:用户代理,请求的浏览器的类型
⑤Accept-language:用户想得到对象的语言版本
2.响应报文
三部分组成:一个初始状态行、6个首部行、实体主体。
状态行有三个字段:协议版本、状态码和相应状态信息。
2.2.4用户与服务器的交互:cookie
Cookie技术有4个组成部分:
①HTTP响应报文中有一个cookie首部行;
②在HTTP请求报文中有一个cookie首部行;
③用户端系统中保留一个cookie文件(用户浏览器管理);④Web站点有一个后端数据库。
2.2.5缓存服务器
Web缓存器:代理服务器,代表初始Web服务器来满足HTTP请求的网络实体。有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的拷贝。
2.2.6条件Get方法
条件get方法:允许缓存器证实它的对象是最新的。满足一下两个条件为条件GET方法:
①请求报文使用GET方法;
②请求报文中包含一个if-modified-since:首部行。
2.3文件传输协议:FTP
FTP使用两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。
控制连接:两个主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“put”和“get”文件命令。
数据连接:实际传输一个文件。
FTP使用一个分离的控制连接,所以FTP的控制信息是带外传送的。
FTP服务器必须在整个回话期间保留用户的状态信息。
2.4因特网中的电子邮件
电子邮件的3个主要组成部分:用户代理、邮件服务器、简单邮件传输协议。
2.4.1SMTP
SMTP一般不使用中间邮件服务器发送邮件,邮件并不在中间的某个邮件服务器上存留。
2.4.2与HTTP的对比
相同点:都用于从一台主机向另一台主机传送文件;
传送文件的方式不同
HTTP使用Web服务器向Web客户机传送文件;SMTP从一个邮件服务器向另一个邮件服务器传送文件。
传送方向不同
HTTP主要是一个拉协议,可以装载Web服务器上的信息。
SMTP是一个推协议,发送邮件服务器吧文件推向接受邮件服务器。
数据格式不同
SMTP要求报文使用7位ASCII码格式。如果报文包含非7位ASCII字符或二进制数据,则报文必须按照7位ASCII码进行编码,HTTP无此限制。
处理其他媒体类型的文档时不同
HTTP将每个对象封装到自己的HTTP响应报文,SMTP将所有报文对象放在一个报文中。
控制方式不同
HTTP使用带内控制,FTP使用带外控制。
2.4.3邮件报文格式和MIME
邮件报文首部必须含有一个From:首部行和一个To:首部行,可以包含一个Subject:首部行或者其他可选首部行。首部行之后是一个空白行,然后是以ACSII格式表示的报文主体。
1.非ASCII码数据的MIME扩展
MIME:多用途因特网邮件扩展,满足多媒体报文或携带有非ASCII文本格式的报文的需求。
支持多媒体的两个关键MIME首部是Content-Type:和Content-Transfer-Encoding:
Content-Type:首部允许接收用户代理对报文采取适当的动作。如启用图形解压缩程序处理报文中的图形。
Content-Transfer-Encoding:提示用户代理该报文主体已使用ASCII编码,支出所使用编码类型。
根据Content-Transfer-Encoding:将报文主体还原成非ASCII格式,根据Content-Type决定采取何种动作处理报文主体。
2.接收的报文
接收报文会在报文的顶部添加Received:首部行,表示发送该报文的SMTP服务器名称(from),接收该报文的SMTP服务器的名称(by)以及接收服务器收到的时间。如果有多条Received则是因为其中经过了多个SMTP服务器。
2.4.4邮件访问协议
解决现在用户通过客户机/服务器体系结构,通过本地运行代理阅读邮件服务器上的电子邮件问题。(传统的是用户代理与邮件服务器在一台主机上)
本地用户代理不能使用SMTP取回邮件,因为取邮件是一个拉操作,SMTP是一个推协议,这就需要邮件访问协议将邮件服务器上的邮件传送到本地PC。目前多个流行的邮件访问协议:第三版的邮局协议(POP3)、因特网邮件访问协议(IMAP)以及HTTP。
1.POP3
协议简单、功能有限。
端口:110
POP3按照三各阶段进行工作:
特许:用户代理(明文发送)发送用户名和口令鉴别
事务处理:用户代理取回报文,对报文做删除标记,取消报文删除标记,获取邮件的统计信息
更新:出现在客户机发出了quit命令之后,目的是结束POP3会话,邮件服务器删除那些被标记为删除的报文。
2.IMAP
POP3协议只能建立本地文件夹,将下载的邮件放入本地文件夹中,不能创建远程文件夹以及为报文指派文件夹的方法。
IMAP将每个报文与一个文件夹联系起来,报文第一次到达服务器,放在收件人的收件箱文件夹里。IMAP为用户提供了创建文件夹以及在文件夹之间移动邮件的命令。
还提供了在远程文件夹中查询邮件的命令,按指定条件去查询匹配的邮件。维护了IMAP会话的用户状态信息。允许用户代理获取报文组件的命令。
3.基于Web的电子邮件
使用Web浏览器收发电子邮件。
用户代理是普通的浏览器,用户和其远程邮箱之间的通信通过HTTP进行。
2.5DNS:因特网的目录服务
2.5.1DNS提供的服务
DNS协议是应用层协议的原因:
1.使用C/S模式在通信的端系统之间运行
2.在通信的端系统之间通过下面的端到端运输层协议传送DNS报文。
识别主机的两种方式:
1.主机名
2.IP地址
域名系统(DNS):进行主机名到IP地址转换的目录服务。
DNS:
1.一个分层的DNS服务器实现的分布式数据库;
2.一个允许主机查询分布式数据库的应用层协议。
DNS协议运行在UDP上,使用53端口,运行BIND软件的UNIX机器。
DNS除了进行主机名到IP地址的转换外,还提供了一些重要的服务:
-
主机别名
复杂主机名的主机可以拥有一个或者多个别名。
- 邮件服务器别名
-
负载分配
繁忙站点被冗余分配在多台IP地址不同的服务器上,一个IP地址集合对应于同一个规范主机名。DNS数据库中存储着这些IP地址集合,客户机为映射到这个IP地址集合的名字发出一个DNS请求时,服务器用包含这些地址的报文进行回答,但回答中旋转这些地址排放的顺序。(客户机放IP地址在前面的服务器发送HTTP请求报文)。
2.5.2DNS工作机理概述
1.分布式、层次数据库
DNS服务器有3中类型:
-
根DNS服务器
因特网上有13个根DNS服务器(标号A到M),大部分位于北美洲。
-
顶级域DNS服务器
这些服务器负责顶级域名(如com、org、net、edu、gov)和所有国家的顶级域名(如uk、fr、ca、jp)
-
权威DNS服务器
因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机名-》IP地址。组织机构的权威DNS服务器保存DNS记录。
组织机构可以选择实现自己的权威DNS服务器保持记录或者支付费用将记录存储在某个服务提供商的权威DNS服务器中。
本地DNS服务器:主机的本地DNS服务器临近本主机、机构ISP的本地DNS服务器可能与主机在同一局域网;居民ISP的本地DNS服务器与主机相隔不超过几个路由器。
2.DNS缓存
目的:为了改善时延性能并减少在因特网上到处传输的DNS报文数量。
DNS缓存原理:一个DNS服务器将回答中的信息缓存在本地存储器。由于主机与主机名和IP地址间的映射绝不是永久的,所以DNS服务器在一段时间(通常2天)后将丢弃缓存的信息。
2.5.3DNS记录和报文
实现DNS分布式数据库的所有DNS服务器共同存储着资源记录(RR),RR提供主机名到IP地址的映射。
资源记录是一个包含下列字段的4元组:(Name,Value,Type,TTL)
Type:
A:Name:主机名,Value:主机名的IP地址
NS:Name:域,value:获得域中主机IP地址的权威DNS服务器的主机名。
CNAME:Name:主机名,value:规范主机名
MX:Name:邮件服务器,value:规范主机名
1.DNS报文
DNS只有查询和回答报文。
2.在DNS数据库中插入记录
注册登记机构:一个商业实体,验证域名的唯一性,将域名输入DNS数据库,对所提供的服务收取少量费用。
DDoS带宽洪泛攻击:攻击者向每个DNS根服务器连续不断发送大量分组,使大多数合法DNS请求得不到回答。
中间人攻击:攻击者截获来自主机的请求并返回伪造的回答。
2.6P2P应用
2.6.1P2P文件分发
1.P2P体系结构的扩展性
对于客户机/服务器体系结构,随着对等方数量的增加,分发时间呈线性增长且没有界。对于P2P体系结构,最小分发时间总小于C/S体系结构的分发时间,且任何多的对等方总是小于一个数。
2.BitTorrent
用于文件分发的流行P2P协议。
重要的机制:每个洪流具有一个基础设施节点,称为追踪器。当一个对等方加入洪流时,向追踪器注册,并周期性的通知追踪器它仍在洪流中。
过程:选择对等方-》建立并行TCP连接-》询问每个临近对他们所具有的块列表-》对没有的块发出请求(最稀罕优先:根据没有的块从邻居中确定最稀罕的块,优先请求那些最稀罕的块)-》响应邻近块请求(对换算法:确定邻居优先权,这些邻居以最高速率供给他数据,将数据块发给邻居,每过10秒选择4个对等方,每过30秒随机选择另外一个邻居发送块)。
2.6.2在P2P区域中搜索信息
P2P文件共享系统有一个索引,它动态跟踪对等方可供共享的文件。对于对等方区域可供共享的每个文件的靠背,索引维护一个记录,该记录将有关拷贝的信息映射到具有该拷贝对等方的IP地址。随着对等方进入和退出以及对等方获得文件的新拷贝,索引进行动态更新。
及时讯息应用程序中,有一个映射用户名与位置(IP地址)的索引。
组织和搜索索引的3种方法:
1.集中式索引
一台大型服务器提供索引服务。当用户启动P2P文件共享应用程序时,该应用程序将它的IP地址以及可供共享的文件名称通知索引服务器。索引服务器从每个活动的对等方那里收集这些信息,从而建立一个集中式的动态索引,将每个文件拷贝映射到一个IP地址集合。
集中式索引的缺点:
- 单点故障。索引服务器崩溃,整个P2P应用随之崩溃。
- 性能瓶颈和基础设施费用。大型P2P系统中,有成千上万用户,集中式服务器必须维护一个庞大索引,每秒钟必须对数千次查询做出响应。
- 侵犯版权。P2P文件共享系统允许用户免费获取受版权保护的内容。当P2P文件共享公司有一台集中式索引服务器时,法律程序迫使索引服务器关闭。
2.查询洪范
完全分布式方法。建立在GnutElla协议基础上,索引全面的分布在对等方的区域中,每个对等方索引可供共享的文件而不索引其他文件。
这种设计中,对等方通过已经存在的TCP连接,向覆盖网络中的相邻对等方发送报文。当Alice要定位“network love”时,她的客户机向所有的邻居发送一条查询报文,该报文包括关键词“network love”。Alice的所有邻居向他们所有邻居转发该报文,这些邻居又接着向他们的所有邻居转发该报文。这个过程被称为查询洪范。
该查询会在连接对等方的支撑网络中产生大量流量。因此设计了范围受限查询洪范。(通过设置路径计数实现)
覆盖网络中的一个基本问题:如何处理对等方的加入和离开,假定新对等方X要加入覆盖网络:
1)对等方X必须首先发现某些已经位于覆盖网络中的其他对等方。解决引导跨接问题的一种方法:让X维护一张对等方列表,这些对等方经常在覆盖网络中开机;另一种方法:X联系维护这种列表的跟踪站点。
2)与列表上的对等方建立一个TCP连接,直到与某个对等方Y创建一个连接为止。
3)创建TCP连接后,发送一个Ping报文(包括计数字段)。一旦接受到ping报文,向覆盖网络中所有邻居转发,直到计数字段为0.
4)只要一个对等方Z接收到一个Ping报文,通过覆盖网络回发一个Pong报文(包括Z的IP地址)
5)X接收pong报文,就直到覆盖网络中许多对等方的IP地址,然后建立TCP连接,从而在覆盖网络中创建多条边。
3.层次覆盖
层次覆盖中并非所有对等方都是平等的。与因特网高速连接并具有高可用性的对等方被指派为超级对等方,承担更多的任务。一个超级对等方可能有几百个普通对等方作为其自对等方。
一个新对等方与超级对等方之一创建一个TCP连接,新对等方将可共享的所有文件高速超级对等方,超级对等方维护一个索引,索引包括其自对等方正在共享的所有文件标识符、有关文件的元数据和保持这些文件的子对等方的IP地址。
超级对等方之间相互建立TCP连接,形成一个覆盖网络,超级对等方可以向其相邻超级对等方转发查询。
与范围受限查询洪范设计相比,层次覆盖设计允许数量多得多的对等方检查匹配,而不会产生过量的查询流量。
2.6.3P2P因特网电话:Skype
用户定位:包括一个用于将Skype用户名映射到当前IP地址的索引,该索引跨越超级对等方进行分布。
Skype中继:归属网络中主机使用中继呼叫对方。归属网络中被配置成通过搭建NAT的路由器提供对因特网的访问。NAT阻止归属网络以外的主机向归属网络中的主机发起通信。两个Skype主叫方均具有NAT,则他们都不能接受他人发起的呼叫。可以通过超级对等方和中继解决这个问题。Alice向系统注册时被分配到一个非NAT的超级对等方,Alice向超级对等方发起会话,NAT只不接受归属网络之外发起的会话。Alice可以和超级对等方通过会话交换报文。Bob注册同样,放Alice呼叫Bob时,她通知超级对等方,超级对等方通知Bob的超级对等方,Bob的超级对等方通知Bob来自Alice的入呼叫。Bob接受呼叫,两个超级对等方选择一个非NAT第三方超级对等方(中继节点),该中继节点可以在Alice和Bob之间转发数据。
2.7TCP套接字编程
网络应用程序有两类:
一类是网络应用程序,如RFC所定义的标准协议的实现。客户机程序和服务器程序必须满足该RFC所定义的规则。
另一类网络应用程序是专用的网络应用程序。客户机程序和服务器程序使用的应用层协议不必符合任何现有RFC。
运行在不同机器上的进程彼此通过向套接字发送报文来进行通信,套接字是应用进程和TCP之间的门。应用程序开发者在套接字的应用层一侧可以控制所有东西,但是不能控制运输层一侧。
客户机进程可以向套接字发送任意字节的数据,TCP保证服务器进程能够按发送的顺序接收到每个字节的数据。TCP在客户机进程和服务器进程之间提供可靠字节流服务。
2.8UDP套接字编程
UDP是无连接的服务,两个进程间没有创建管道时所需的初始握手阶段。一个进程需要向另一个进程发送一批字节时,该发送进程需为这批字节附上目的进程地址。