一、应用层协议原理
网络应用的核心部件是软件,网络的应用软件分布于两个或以上的端系统中。(例如Web应用:运行在用户主机的浏览器软件和运行在Web服务器的Web服务器软件)。彼此通信的并不是软件部件本身,而是进程。运行在不同端系统的进程通过网络交换消息彼此通信。
1.应用层协议
1.应用层协议仅仅是网络应用的一部分。
Web应用:一个文档格式的标准(HTML)/Web浏览器软件(如IE浏览器)/Web服务器软件(如Microsoft服务器)/一个应用层协议(HTTP)
电子邮件应用:邮件服务器/邮件阅读器/电子邮件消息结构标准/一个应用层协议(SMTP)
应用层协议定义运行在不同端系统上的应用程序进程如何彼此传递消息。
具体定义了:(1)所传递消息的类型(请求消息和响应消息);(2)各种消息类型的语法(消息中的各个字段以及如何定界);(3)各个字段的语义;(4)确定一个进程何时以及如何发出消息或响应所收到消息的规则。
2.客户和服务器
一个网络应用协议通常由客户端和服务器端两个对等的“端”或实体,他们分别对应运行客户程序的客户进程和运行服务器程序的服务器进程。处于一个端系统中的客户端和处于另一个端系统中的服务器端彼此通信。(例如Web浏览器实现的是HTTP客户端,Web服务器实现的是HTTP服务器端)我们把发起会话的主机标记为客户。
3.进程间跨网络的通信
一个网络应用涉及两台不同主机中跨网络彼此通信的两个进程,这两个进程通过各自的套接字(socket)发送和接收消息彼此通信。(可以把套接字看作相应进程上的“门”)
套接字是单台主机内应用层和传输层之间的接口。
应用程序开发人员可以完全控制套接字的应用层一侧,对于传输层一侧却只能控制:(1)传输协议的选择;(2)诸如最大缓冲区大小和最大片段大小等有限几个传输层参数的调整。
4.进程寻址
为了让发送进程能够识别接收进程,用于标识接收进程的消息有两个:(1)接收主机的主机名或主机地址;(2)在接收主机内部识别接收进程的标识符(接收进程的端口号)
5.用户代理(user agent)
用户代理是一个位于用户和网络应用之间的接口。
例如Web应用的用户代理是浏览器,浏览器使得用户可以看web页面,提供表单输入,与Java小程序交互等等。
2.应用所需的服务
1.可靠性(无数据丢失)
2.带宽(以特定的持续速率传送数据)
3.实时性
3.由因特网传输协议提供的服务
1.TCP服务
TCP服务模型包括面向连接的服务和可靠的数据传输服务。TCP还包括一个拥塞控制机制。
面向连接的服务指客户端和服务器端的TCP在开始传输应用层消息之前,先交换传输层控制信息。(TCP连接:全双工连接/松散方式)
可靠的传输服务指的是彼此通信的进程可以依赖TCP无错地顺序递送所有数据。
TCP没有提供的服务:(1)不保证最小传输率,不允许发送进程以想要的任意速率发送;(2)不提供任何延迟保证
2.UDP服务
不提供非必要服务/轻量级传输协议/无连接的/没有握手过程/提供不可靠数据传输服务/不保证消息最终到达接收套接字的顺序/不包含拥塞控制机制/不提供定时保证
二、Web:HTTP
1.HTTP概貌
Web页面由多个对象构成,对象是可由单个URL寻址的文件如HTML文件、JPEG图像等。大多数Web页面由单个基本HTML文件和若干个所引用的对象构成。基本HTML文件使用相应的URL来引用本页面的其他对象。每个URL由存放该对象的服务器主机名和该对象的路径名两部分构成。
HTTP定义Web客户如何从Web服务器请求页面,以及服务器如何把Web页面传送给客户。
(1)1997年底,实现了RFC 1945中定义的HTTP/1.0版本
(2)1998年底,实现了RFC 2616中定义的HTTP/1.1版本
HTTP把TCP作为底层传输协议。
HTTP是一个无状态的协议(stateless protocol),HTTP服务器不维护客户的状态信息。
2.非持久连接和持久连接
非持久连接:每次服务器发出一个对象后,相应的TCP连接就被关闭,也就是说每个连接都没有持续到可用于传送其他对象。每个TCP连接只用于传输一个请求消息和一个响应消息。
非持久连接每个对象都有2个RTT(round-trip time)的响应延长,每个对象都遭受TCP缓启动(slow start)。
持久连接:服务器在发出响应后让TCP连接继续打开着,同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。通常,HTTP服务器在某个连接闲置一段特定时间后关闭它。(缓启动延迟比较小)
不带流水线(without pipelining)的持久连接:客户只在收到前一个请求的响应后才发出新的请求。(每个对象都有1个RTT的响应延长、空等请求)
带流水线(with pipelining)的持久连接(HTTP/1.1默认):HTTP客户每碰见一个引用就立即发出一个请求。(所有引用对象一共只经历1个RTT的延迟)
3.HTTP消息格式
HTTP请求消息
HTTP响应消息
4.用户-服务器交互:身份认证和cookie
HTTP提供了两种帮助服务器标识用户的机制:身份认证和cookie。
用户认证:Web站点要求用户提供一个用户名-口令对才能访问存放在其服务器中的文档。HTTP提供特殊的状态码和头部来帮助Web站点执行身份认证。
cookie:cookies是一种可由Web站点用来跟踪用户的候选机制。
一个客户首次联系一个使用cookie的Web站点。服务器会在其响应中吧phan一个Set-Cookie:头部。客户收到这个响应消息,往存放在客户主机中的某个特殊的cookie文件中添加一行,这一行一般包含服务器主机的主机名和这个与用户关联的标识数。一段时间后请求同一个服务器时,由同一个用户启动的新客户会在请求消息中包含一个Cookie:头部,其值为早先由该服务器产生的标识数。
目的:用户认证时不用每次都输入用户名和口令/记住用户偏好以便投放广告/建立虚拟购物车
5.带条件的GET
在允许客户进行高速缓存的同时,仍确保传递给浏览器的所有对象都是最新的。
满足(1)使用GET方法(2)包含If-Modified-Since:头部的HTTP请求消息就是所谓的带条件的GET消息。
6.Web高速缓存服务器
Web高速缓存服务器是具有高速缓存功能的Web代理服务器,它们在代表客户执行HTTP请求的同时,在自己的硬盘空间中保存进来请求到的对象的一个拷贝。
优势:(1)可以充分缩短客户请求的响应时间(特别是在客户与目标服务器之间的瓶颈带宽比它与高速缓存服务器之间的瓶颈带宽小得多时);(2)显著降低因特网得总体Web流量;(3)可提供一个用于迅速散布内容得基础设施。
三、文件传送:FTP
FTP也运行在TCP之上。FTP使用两个并行得TCP连接来传送文件,(1)控制连接,用于在客户主机和服务器主机之间发送控制信息,如用户名和口令、改变远程目录得命令、取或放文件的命令;(2)数据连接用于真正发送文件。
带外(out-of-band)发送控制信息:FTP/RTSP
带内(in-band)发送控制信息:HTTP/SMTP
在整个会话期间,控制连接一直打开着,FTP服务器必须维护关于用户的状态,必须把控制连接与特定的用户关联起来,必须随用户在远程目录树中的游动跟踪其当前目录。而数据连接则有可能为每次文件传送请求重新打开一次。
FTP命令:由4个大写的ASCII字符构成(如USER/PASS/LIST/RETR/STOR)
FTP应答:一个3位数值(如331/125/425/452)
4.电子邮件
1.SMTP
邮件服务器构成了电子邮件系统的核心。每个收信人都有一个位于某个邮件服务器上的邮箱,用于管理和维护已经发送给他的邮件消息。
SMTP通常不使用中间的邮件服务器主机中转邮件,即便源端和目的端邮件服务器主机位于地球上相反的位置也一样。
SMTP命令:HELO , MAIL FROM , RCPT TO , DATA , QUIT
2.与HTTP的比较
相同:(1)都用于一台主机向另一台主机传送文件(2)都使用持久连接
不同:(1)HTTP是内拉式协议(pull protocol)---TCP连接是想接收文件的主机发起的(拉过来);SMTP是外推式协议(push protocol)---TCP连接是想发送文件的主机发起的(推出去)(2)SMTP要求包括信体部分在内的每个邮件信息都是7位ASCII文本格式(二进制数据应以一定的方式先编码成ASCII文本)(3)处理包含文本和图像或其他媒体类型的文档:HTTP是把每个对象封装在各自的HTTP响应消息中,SMTP则是把同一个邮件内的各个对象置于同一个邮件消息中。
3.邮件消息格式和MIME
邮件消息的每个信头必须有一个From:头部和一个To:头部,还可以有一个Subject:头部和其他头部。
SMTP命令是SMTP握手协议的一部分,邮件消息头部则属于邮件消息的一部分。
非ASCII数据的MIME扩展(Multipurpose Internet Mail Extensions)
支持多媒体的两个关键MIME头部是Content-Type:和Content-Transfer-Encoding:。
Received:头部(由SMTP接收服务器插到每个邮件消息的顶端),给出了发出本消息的SMTP服务器的主机名(“from”)、收取本消息的SMTP服务器的主机名(“by”)以及接收服务器收取本消息的时间。
4.邮件访问协议
用户代理不可能使用SMTP从邮件服务器获取邮件消息,因为邮件消息的获取是一个内拉操作,SMTP是一个外推协议。
POP3
POP3服务器与邮件服务器运行在相同的服务器主机上,前者从用户的邮箱中读取并可能删除邮件消息,后者往用户的邮箱中写入邮件消息。
TCP连接建立好之后,POP3依次经历授权认证、处理和更新3个阶段。
授权阶段两个基本命令:user <用户名> 和 pass<口令>
处理阶段有两种模式:(1)下载并删除(2)下载并保留 list,retr,dele,quit 命令
在POP3会话期间,用户代理发出命令,POP3服务器则对每个命令响应一个应答。
在用户代理和邮件服务器之间的POP3会话期间,POP3服务器维护一定的状态信息,不过POP3服务器不会跨会话保存状态信息。
IMAP
为用户提供了在自己的邮件服务器主机中创建文件夹以及将邮件从一个文件夹移动到另一个文件夹的命令
为用户提供了在远程文件夹中查询邮件的命令,按指定条件去查询匹配的邮件
维护了会话的用户状态信息
允许用户代理获取邮件消息部件
基于Web的电子邮件
通过HTTP传输邮件
五、DNS--因特网的目录服务
1.DNS提供的服务
DNS既是一个在由名称服务器主机构成的层次结构中实现的分布式数据库,又是一个允许客户主机和名称服务器主机通信以使用域名转换服务的应用层协议。
DNS协议是应用层协议,由其他应用层协议(HTTP、SMTP、FTP)所使用,运行在UDP上。
DNS提供的服务:(1)主机名到IP地址的转换(2)主机别名(3)邮件服务器别名(4)负载分担
2.DNS工作机理
集中式设计的问题:单点故障/巨大访问量/远距离集中式数据库/维护
DNS是一个在因特网中实现分布式数据库的范例。
为了处理扩展性的问题,DNS使用了大量的以层次方式组织的DNS服务器。没有一台DNS服务器拥有Internet中所有主机的映射。层级结构中有3种DNS服务器:根DNS服务器、顶级域DNS服务器、权威DNS服务器
递归查询和迭代查询
DNS caching:本地DNS服务器缓存了主机/IP地址对,当再次接受相同请求时可以直接返回请求结果
3.DNS记录
共同实现了DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record,RR),每个DNS应答消息携带一个或多个资源记录
资源记录包含了下列字段:(Name,Value,Type,TTL)