1.42k likes | 1.56k Views
第五部分 应用层协议. 应用的体系结构. 客户 / 服务器体系结构 有一个总是打开的服务器,在固定的众所周知的地址上为客户机提供服务,客户机之间不直接通信,如:电子邮件、文件传输、 WWW … P2P 体系结构: 没有一个总是打开的服务器,任意一对主机(对等方)之间直接通信,如 P2P 文件共享; 混合体系结构 同时使用客户 / 服务器结构和 P2P 结构,如具有联系人列表的即时讯息。. 应用层协议. 应用层协议定义了运行在不同端系统上的应用程序如何进行通信,包括: 相互交换的报文类型、各种报文类型的语法、各个字段的语义、各种报文的处理等。
E N D
应用的体系结构 • 客户/服务器体系结构 • 有一个总是打开的服务器,在固定的众所周知的地址上为客户机提供服务,客户机之间不直接通信,如:电子邮件、文件传输、WWW… • P2P体系结构: • 没有一个总是打开的服务器,任意一对主机(对等方)之间直接通信,如P2P文件共享; • 混合体系结构 • 同时使用客户/服务器结构和P2P结构,如具有联系人列表的即时讯息。
应用层协议 • 应用层协议定义了运行在不同端系统上的应用程序如何进行通信,包括: • 相互交换的报文类型、各种报文类型的语法、各个字段的语义、各种报文的处理等。 • 应用层协议只是网络应用的一部分,如Web应用包括: • 文档格式标准 • Web浏览、Web服务器 • 应用层协议HTTP
客户-服务器模型 • 建立互联网的目的是向用户提供服务,Internet主要采用客户-服务器模式向用户提供服务: • 一台计算机运行一个提供服务的程序(称服务器),另一台计算机运行一个请求服务的程序(称客户)。客户向服务器请求服务,而服务器完成所请求的服务。因而一个应用程序总是成对出现。 • 一个服务器可以向任何客户提供服务。
客户和服务器 • 客户: • 运行在本地计算机上向服务器请求服务的程序。 • 客户程序是有限的,它由用户或另一个应用程序启动,服务完成时终止。 • 客户使用远程计算机的IP地址以及在该远程计算机上提供该服务的端口号建立通信通道(称主动打开),发送请求和接收响应,服务结束后主动关闭通信通道。 • 服务器: • 运行在远程计算机上向客户提供服务的程序。 • 服务器程序是无限的,启动后就一直运行,除非出问题或被关闭。 • 服务器一直在指定的端口上等待服务请求,当服务请求到来时建立通信通道(被动打开),处理请求并发回响应。
第17章 BOOTP和DHCP • 连接到TCP/IP网络的每一台计算机需要知道以下配置信息: • 自己的IP地址,自己的子网掩码,路由器的IP地址,名字服务器的IP地址。 • 配置信息的获取: • 配置信息通常存储在一个配置文件中,计算机在引导过程中读取该文件。 • 对于无盘工作站或第一次启动的计算机,需要使用配置协议获取配置信息。 • 两个这样的协议:BOOTP和DHCP
17.1 引导协议BOOTP • BOOTP协议用于将上述四种信息提供给无盘计算机或第一次启动的计算机。 • BOOTP使用客户-服务器模式,客户请求配置信息,服务器响应配置信息。 • BOOTP是一种静态配置协议,客户信息必须预先保存在配置信息表中。 • BOOTP包括了RARP的功能
选项格式 • 选项只在回答报文中出现,用于携带附加信息或某些特定厂商的信息。
BOOTP的操作 • BOOTP使用UDP协议,服务器和客户分别使用熟知端口号67和68。 • 客户发送BOOTP请求报文,报文先被封装成UDP用户数据报,然后再封装成IP数据报(源地址为全0,目的地址为全1),IP数据报再封装在广播帧中发送。 • 服务器查找相应的配置信息,构造BOOTP响应报文。封装响应报文的IP数据报的目的地址仍为全1地址,但可使用广播帧或单播帧发送。使用单播帧发送时,目的地址为服务器从携带BOOTP请求报文的帧中获取的源MAC地址。 • 若客户需要引导程序,服务器在BOOTP响应报文中只是给出了文件的路径名。客户需要使用TFTP协议从相应的文件服务器获取所需要的引导程序。
中继代理 • 若使用一个BOOTP服务器为好几个局域网提供服务,则必须在每个局域网中安装一个中继代理。 • 中继代理是一个路由器,负责在本地计算机和远程服务器之间转发请求和响应。 • 收到客户请求的中继代理在网关IP地址字段中填入自己的地址,用单播方式发送给BOOTP服务器;BOOTP服务器将响应报文发送给中继代理;中继代理再转发给请求计算机。
差错控制 • BOOTP使用以下差错控制策略: • BOOTP要求UDP使用检验和 • BOOTP使用超时重传机制进行差错恢复。
17.2 动态主机配置协议DHCP • DHCP扩充了BOOTP协议,支持动态配置,特别是可提供临时IP地址。 • 永久地址和临时地址: • 永久地址一般分配给服务器。 • 临时(租用)地址一般分配给普通客户。当临时地址将到期时,客户必须与DHCP服务器协商延长租期,否则不能再使用该IP地址。 • DHCP服务器使用两个数据库: • 静态配置数据库:类似于BOOTP服务器中的配置数据库。 • 动态配置数据库:拥有一个可用IP地址池。 • 当收到客户请求时,DHCP服务器先查找静态数据库;若存在请求的表项,返回这个客户的永久IP地址;否则,从可用IP地址池中选择一个分配给客户,并添加表项到动态数据库中。
DHCP新增的选项 这些新增的选项用来定义在客户和服务器之间交互的类型。
DHCP的操作 • DHCP客户启动时发送DHCPDISCOVER报文。 • 提供DHCP服务的服务器发送DHCPOFFER报文,向客户提供一个临时IP地址,并锁定该IP地址。 • DHCP客户从收到的响应中选择一个IP地址,向提供该IP地址的服务器发送DHCPREQUEST报文。 • DHCP服务器发送DHCPACK报文进行响应,并绑定客户的物理地址与IP地址。 • 在租期经过一半后,客户发送一个DHCPREQUEST报文请求更新。若收到DHCPACK,续约完成;若收到DHCPNACK或租期超过,重新申请一个IP地址。
练习 • 28,29,30
第18章 域名系统DNS • 网络内部使用IP地址来引用资源,而人们往往倾向于使用便于记忆的ASCII名字,这就需要在资源的ASCII名字和它的IP地址之间建立起一种映射关系。 • 早期的Internet使用主机文件来实现映射: • 名字冲突 • 更新慢 • 域名系统是一种分级结构的基于域的命名方案和实现这种命名方案的分布式数据库: • 层次命名解决了大规模网络中名字冲突的问题; • 分布式数据库解决了表的维护与传播问题。
命名空间 • DNS在概念上将因特网分成了200多个顶级域,每个顶级域被进一步划分成若干个二级子域,每个二级子域还可以再分子域,依次类推。
域名和标号 • 一个指定的域是指树中一个特定的节点以及该节点以下所有的节点。 • 树上每一个节点都有一个标号(最多63个字符),根标号是空字符串。 • 某个域的域名用从该域开始向上直到树根(为空)的标号序列表示,标号之间用句点隔开。 • 域名的任一后缀也是一个域。
顶级域 • 顶级域分为组织域、国家域和反向域三种。 • 组织域:由美国国内机构及一些国际组织使用。 • 国家域:使用二字符的国家代码,每个国家对应一个。 • 反向域:域名为arpa,用来把一个地址映射为名字。
DNS解析过程 • DNS的一般工作过程: • 应用程序调用一个称为解析器的库例程,将名字作为参数传递进去。 • 解析器的内部配置了本地DNS服务器的地址。解析器将需要查询的信息封装成一个DNS请求报文,发送给本地域名服务器。 • 若本地数据库中有所需的信息,本地域名服务器将查到的信息封装成DNS响应报文,发回给解析器。 • 解析器从DNS响应报文取出查询结果,返回给调用者。
DNS服务器的组织方式 • 三种类型的DNS服务器: • 根服务器:知道所有顶级域服务器的IP地址,因特网上共有13个根服务器。 • 顶级域(TLD)服务器:每个顶级域至少有一个顶级域服务器,每个TLD服务器知道本域下所有二级子域的权威DNS服务器的IP地址。 • 权威DNS服务器:存放各组织机构公共可访问DNS记录的服务器。
本地数据库中没有找到所需的信息 • 递归解析:由域名服务器逐层向上查询,并将最终解答返回给解析程序。 • 迭代解析:域名服务器将需要进一步查询的域名服务器的IP地址返回给解析器,由解析器向推荐 的服务器发送查询请求。 • 使用DNS缓存:当服务器收到不在它域中的名字-IP地址映射关系时,将收到的映射关系保存在其高速缓存中,以备下一个客户查询。
物理服务器的层次 • 一个物理服务器保存的信息可能涉及域名空间的若干层,它也可以把它的域划分成若干子域,把其中的一些子域委托给其它服务器。 • 因此,实际的物理服务器的层次与域名空间的逻辑层次不同。
资源记录 • DNS数据库的每一个表项称为一个资源记录。 • 每个域都有一组与之相关联的资源记录,解析器从DNS得到的其实是和域名相关联的资源记录。因此可以说,DNS的主要功能是将域名映射到资源记录上。 • 一条资源记录是一个六元组,包括: • 域名:该资源记录适用的域; • 生存期:表示资源记录的稳定性; • 信息类型:对于因特网信息,该字段总为1; • 资源记录类型:共有20多种资源记录 • 资源数据长度 • 资源数据
DNS报文的封装 • DNS可以使用UDP,也可以使用TCP,服务器的熟知端口都是53。 • 当响应报文的长度小于512字节时,使用UDP。 • 当响应报文的长度超过512字节时,使用TCP。 • 当解析程序事先不知道响应报文的长度时,先使用UDP;若响应报文的长度超过512字节,服务器截断这个报文,置DNS报文首部的TC标志为1;解析程序打开TCP连接,并重复这个请求,以便得到完整的响应。
第19章 Telnet • 我们需要一种通用的客户-服务器程序,允许用户注册到远程计算机上,然后使用远程计算机提供的服务,并把结果返回到本地计算机上。 • Telnet是提供虚拟终端服务的TCP/IP协议,使用户能够建立一条到远程系统的连接,好像本地终端就连接在远程系统上一样。
19.1 注册 • 在分时环境中,大型计算机支持许多个用户,用户通过终端与计算机交互。 • 当用户在键盘上输入字符时,字符被发送到计算机,同时回送到显示器上,让用户有使用专用计算机的感觉。用户可以运行程序,使用系统资源。 • 在分时环境中,用户是系统的一部分,并具有使用资源的某些权利。 • 每一个授权用户都有一个标识和一个口令,当用户需要使用计算机时必须注册,提供用户标识和口令,供计算机进行鉴权。
本地注册 • 用户注册到本地分时系统时,称为本地注册。 • 用户在终端上的击键被终端驱动程序接受,操作系统解释字符的组合,并调用所需的程序。
远程注册 • 用户注册到远程计算机上,称为远程注册。 • 用户的击键输入不在本地解释,而是通过Internet发送到远程计算机上,由远程操作系统交付给应用程序。 • 用户输入的字符被送到telnet客户,telnet客户将字符转换成网络虚拟终端(NVT)字符,经因特网传输到远程机器,telnet服务器将NVT字符转换成本机可理解的字符,再通过伪终端驱动程序交给适当的应用程序。
19.2 网络虚拟终端NVT • 每一个计算机及其操作系统接受特殊的字符组合作为一些记号。 • NVT是Telnet为异构系统之间通信而定义的通用接口。 • Telnet客户将来自本地终端的字符转换成NVT形式,交付给网络;Telnet服务器把来自NVT形式的字符转换成远程计算机可接受的形式。 • VNT使用两个字符集,每一个字符都为8位: • 数据字符:最高位为0,低7位与US ASCII相同。 • 远程控制字符:最高位为1。
19.3 Telnet传输 • Telnet仅使用一个TCP连接,服务器使用熟知端口23。 • NVT的远程控制字符嵌入在数据流中一起传输,控制字符前加上IAC以区别于数据。
19.4 选项协商 • Telnet允许客户与服务器之间协商选项,如终端类型、终端速率、回显、行模式等。 • Telnet使用四种控制字符进行选项协商。
选项协商示例 • 客户希望服务器把发送给服务器的每一个字符回显。 • 回显选项仅能被服务器启动,因而客户使用DO来请求启动这个选项,服务器用WILL表示接受这个请求。
19.5 对服务器进行控制 • 需要一些控制字符来控制在远程计算机上运行的程序。
带外信令 • 为使控制字符在特殊情况下有效,Telnet使用带外方式将控制字符发送给远程操作系统,方法是使用TCP的紧急报文段。 • 在控制字符序列后面插入特殊字符DM(数据标记),TCP报文段紧急指针指向DM。 • 接收端TCP根据DM找到控制字符,交给上层,丢弃DM之前的数据,从DM开始的数据按正常数据处理。