应用层
一、应用层协议原理
-
网络应用程序体系结构
- 客户-服务器(CS)体系结构
- 对等(P2P)体系结构
-
进程通信
了解运行在多个端系统上的程序是如何互相通信的——不同端系统上的进程,通过跨越计算机网络交换报文而相互通信
-
客户和服务器进程
-
进程与计算机网络之间的接口
进程通过称为套接字(socket)的软件接口向网络发送报文和从网络接收报文;
应用程序开发者可以控制套接字在应用层端的一切,但是对套接字的运输层端几乎没有控制权,仅限于选择运输层协议、设置某些运输层参数等。
-
进程寻址
- IP地址唯一地标识主机
- 端口号指定接收主机上的接收进程
-
-
可供应用程序使用的运输服务
- 可靠数据传输
- 吞吐量
- 定时
- 安全性
选择一个最能为你的应用需求提供恰当服务的运输层协议
-
因特网提供的运输服务
-
TCP服务
-
面向连接的服务
握手过程——提示客户和服务器,使它们为大量分组的到来做好准备。握手阶段后,一个TCP连接(TCP connection)就在两个进程的套接字之间建立了。
-
可靠的数据传送服务:无差错、按序交付
还具有拥塞控制机制
安全套接字层(SSL)—— TCP的加强版本
-
-
UDP服务
一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。UDP是无连接的,因此在两个进程通信前没有握手过程。
不可靠数据传送服务、数据可能乱序到达、不包含拥塞控制机制
-
因特网运输协议所不提供的服务
对吞吐量或定时保证的讨论,目前的因特网运输协议并没有提供。
但能够通过设计来为时间敏感应用提供满意的服务,只是不能提供任何定时或带宽保证。
-
-
应用层协议
定义了:
- 交换的报文类型
- 各种报文类型的语法
- 字段的语义,即这些字段中包含的信息的含义
- 一个进程何时以及如何发送报文,对报文进行相应的规则
二、Web和HTTP
-
HTTP概况
Web的应用层协议是超文本传输协议(HTTP)
Web页面(Web page)是由对象组成的,一个对象表示一个文件,如HTML文件,JPEG图形等等。
多数Web页面含有一个HTML基本文件以及几个引用对象,HTML基本文件通过对象的URL地址引用页面中的其他对象。
- Web浏览器——实现HTTP的客户端
- Web服务器——实现HTTP的服务器端
HTTP基于TCP,是一个无状态协议(HTTP服务器并不保存关于客户的任何信息)
-
非持续连接和持续连接
-
采用非持续连接的HTTP
每个TCP连接在服务器发送一个对象后关闭,即该连接并不为其他的对象而持续下来。
往返时间(RTT):一个短分组从客户到服务器然后再返回客户所花费的时间。
用户点击超链接的总响应时间是两个RTT加上服务器传输HTML文件的时间。
-
采用持续连接的HTTP
服务器在发送响应后保持该TCP连接打开,HTTP的默认模式是使用带流水线的持续连接。
-
-
HTTP报文格式
-
HTTP请求报文
例:
GET /somedir/page.html HTTP/1.1 # 请求行是第一行,有3个字段:方法字段、URL字段和HTTP版本字段 后面的四行是首部行 Host: www.someschool.edu # 指明了对象所在的主机,该信息是Web代理高速缓存所要求的 Connection: close # 告诉服务器使用非持续连接 Use-agent: Mozilla/5.0 # 指明用户代理,这里的浏览器类型是火狐浏览器 Accept-language: fr # 语言是法语
-
HTTP响应报文
HTTP/1.1 200 OK # 初始状态行,有3个字段:协议版本字段、状态码和相关状态信息 Connection: close Date: True, 09 Aug 2011 15:44:04 GMT Server: Apache/2.2.3 (CentOS) Last-Modified: True, 09 Aug 2011 15:11:03 GMT Content-Length: 6821 Content-Type: text/html (data data data...) 实体(entity body)
常见的状态码和相关短语:
- 200 OK:请求成功
- 301 Moved Permanently:请求的对象已经被永久转移了,新的URL定义在响应报文的Location:首部行中。客户软件将自动获取新的URL。
- 400 Bad Request:一个通用差错代码,指示该请求不能被服务器理解。
- 404 Not Found
- 505 HTTP Version Not Supported
-
-
用户与服务器的交互:cookie
cookie技术的四个组件:
-
在HTTP响应报文中的一个cookie首部行
-
在HTTP请求报文中的一个cookie首部行
-
-
在用户端系统中保留有个cookie文件,并由用户的浏览器进行管理
-
位于Web站点的一个后端数据库:保存为用户创建的ID
cookie的作用:
使用cookie可以在无状态的HTTP之上建立一个用户会话层。
-
-
Web缓存
Web缓存器通常由ISP安装,又称代理服务器,是能够代表初始Web服务器来满足HTTP请求的网络实体。它有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。
简单来说,就是ISP为机构提供了Web代理服务器,浏览器请求某个对象时,首先与代理服务器建立TCP连接,并向其发送HTTP请求,如果代理服务器保存了请求的对象则直接返回给浏览器,否则再替我们去向初始服务器发起请求,访问到的对象自己保存一份。
为什么需要Web缓存器:
1、大大减少对客户请求的响应时间,特别是客户与初始Web服务器之间的瓶颈带宽远低于客户与Web缓存器之间的瓶颈带宽时;
2、大大减少一个机构的接入链路到因特网的通信量。
三、文件传输协议:FTP
FTP和HTTP都运行在TCP上,但有一些重要的区别:FTP使用了两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。
-
控制连接用于两主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“存放”和“获取”文件的命令。
-
数据连接用于实际发送一个文件。
四、因特网中的电子邮件
3个主要组成部分:
-
用户代理
例:微软的Outlook和Apple Mail
-
邮件服务器
-
简单邮件传输协议(SMTP)——”推协议“
基于TCP,从发送方的邮件服务器向接收方的邮件服务器发送邮件;
实例应用:基于telnet与SMTP服务器进行一次直接对话(QQ邮箱)
与HTTP的对比:
- HTTP——pull protocol;SMTP——push protocol
- HTTP:每个对象被封装到它自己的响应报文中;SMTP:把所有报文对象放在一个报文中。
邮件报文格式
RFC822:文本报文格式的标准
-
首部行
- To:
- From:
- Subject:
不同于上面实例中使用的一些SMTP握手协议中的命令,这里的from和to是邮件报文的一部分
-
报文体
只能是ASCII格式
-
邮件访问协议——“取协议”
-
POP3
三个阶段:
-
特许(authorization)
用户输入用户名和密码
-
事务处理
用户代理取回报文;
对报文做删除标记;
取消报文删除标记;
获取邮件的统计信息
-
更新
客户发出quit命令,邮件服务器删除那些被标记为删除的报文
-
-
IMAP
所有的报文都在服务器端,允许用户在文件夹中组织报文
-
基于Web的电子邮件
HTTP
-
五、DNS:因特网的目录服务
我们使用主机名或IP地址来标识一台主机
-
DNS提供的服务
DNS通常是由其它应用层协议所使用的,包括HTTP、SMTP和FTP,将用户提供的主机名解析为IP地址。
其他服务:
- 解析主机别名(host aliasing)为规范主机名
- 解析邮件服务器别名为规范主机名
- 负载分配:一个IP地址集合与同一个规范主机名相联系,DNS服务器用整个IP地址集合进行响应,为了实现负载分配,每次响应时集合中地址顺序是循环改变的。
-
DNS工作机理概述
DNS协议运行在UDP之上,使用53端口
-
分布式、层次数据库
-
根DNS服务器
-
顶级域(TLD)服务器
-
权威DNS服务器
还有一类本地DNS服务器,起代理的作用,将请求转发到DNS服务器层次结构中
域名解析的两种形式:
1. 迭代的方法
2. 递归的方法
-
-
DNS缓存
本地DNS服务器将DNS回答中的信息缓存在本地存储器中,改善时延性能并减少在因特网上到处传输的DNS报文数量
-
DNS记录和报文
资源记录(RR)格式:(name, value, type, ttl)
资源记录的四种类型,以name和value映射作为区分:
- A:主机名—>IP地址
- NS:域名—>权威DNS服务器主机名,用于沿着查询链来路由DNS查询
- CNAME:别名—>规范主机名
- MX:邮件服务器别名—>规范主机名
”取数据“:DNS报文:DNS只有查询和回答报文,且有相同的格式
“插入数据”:在DNS数据库中插入记录——注册登记机构
-
六、P2P应用
-
P2P文件分发
-
P2P体系结构的拓展性
分发时间是所有N个对等方得到该文件的副本所需要的时间
对于P2P体系结构,最小分发时间不仅总是小于客户-服务器体系结构的分发时间,并且对于任意的对等方数量N,总是小于1小时——自拓展的。
-
BitTorrent
用于文件分发的流行P2P协议
洪流(torrent):参与一个特定文件分发的所有对等方的集合
在一个洪流中的对等方彼此下载等长度的文件块(chunk)
每个洪流具有一个基础设施结点,称为追踪器(tracker)。当一个对等方加入某洪流时,它向追踪器注册自己,并周期性的通知追踪器它仍在该洪流中。
请求块:最稀缺技术,先请求那些最稀缺的快
发送块:tit-for-tat “一报还一报”
P2P网络实际上是因特网逻辑上的重叠
-
-
分布式散列表DHT