linux下基于tcp的ftp编程,Linux网络编程基础_6_应用层(上)--网络应用模型,DNS,FTP...

应用层(上)

--网络应用模型,DNS,FTP

TCP/IP协议族中的应用层

a478ae8c1d249028f30b00f097fe62f0.png

一、网络应用模型

在网络边缘的端系统中运行的程序之间的通信方式通常可划分为两大类:

1.客户/服务器模型

客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被服务的关系。客户是服务的请求方,服务器是服务的提供方。

客户软件被用户调用后运行,在打算通信时首先主动向远地服务器发起通信(请求服务),随后服务器向客户提供相应的服务。因此,客户进程必须知道服务器的地址,它一般不需要特殊的硬件和很复杂的操作系统。

服务器软件是一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。系统启动后即被调用,一直不断地在后台运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址,它一般需要强大的硬件和高级的操作系统支持。

2.P2P模型

P2P(peer-to-peer,对等连接)是指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方。只要两个主机都运行了对等连接软件(P2P软件),它们就可以进行平等的、对等连接通信。双方都可以下载对方已经存储在硬盘中的共享文档。

对等连接方式从本质上看仍然是使用客户/服务器方式,只是对等连接中的每一个主机既是客户又同时是服务器。例如主机C请求D的服务时,C是客户,D是服务器。但如果C又同时向F提供服务,那么C又同时起着服务器的作用。

二、DNS系统

域名系统DNS(Domain Name System):是描述名字-地址映射的分布式计算机系统的实现。DNS的本质是一种层次结构的基于域的命名方案和实现这种命名方案的分布式数据库,其作用是提供主机名和IP地址间的映射关系和提供电子邮件的路由信息。

1、层次域名空间

912c7fd5920635094c2235d592ac1eb8.png

Internet被划分成几百个顶级域,每个顶级域又分成一系列二级域,二级域如果需要还可以再进一步划分,所有这些域被组织在一个树状结构中,所有顶级域连接到一个根结点上。

顶级域有三种类型:通用域、国家域和arpa域。

任何一个连接在因特网上被其它机器访问的主机或路由器,都有一个唯一的层次结构的名字,即域名。域名的结构由若干个分量组成,各分量之间用点隔开,格式如下

….三级域名.二级域名.顶级域名

各分量分别代表不同级别的域名。

2、域名服务器

负责名字到域名的解析。域名服务器程序在专设的结点上运行,使用53号端口,运行该程序的机器称为域名服务器。

一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。

DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。

域名服务器有以下四种类型

1)根域名服务器--最高层次的域名服务器。它是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。在因特网上共有13个不同IP地址的根域名服务器,它们的名字是a到m:

a.rootservers.net,b.rootservers.net,…,m.rootservers.net

它们都有镜像服务器,因此全世界现有100多个:这是为了能让各地的本地域名服务器就近找到根域名服务器。

在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的IP地址告诉本地域名服务器。

2)顶级域名服务器(即TLD服务器)--这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址)。

3)权限域名服务器--是负责一个区域的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应当找哪一个权限域名服务器。

4)本地域名服务器--当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。每一个因特网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。

DNS域名服务器为了提高可靠性,常把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。

3、域名的解析过程

(1)客户应用程序调用客户端一个称为解析器的库函数,将目的主机的域名作为参数传给解析器;

(2)解析器通过网络向本地域名服务器53号端口发送一个以UDP数据报封装的DNS请求报文,询问与该域名对应的IP地址;

(3)本地域名服务器查找自己的域名数据库(映射文件),将域名对应的IP地址组成一个以UDP数据报封装的DNS响应报文,返回给解析器;若在本地域名数据库中查不到,则此域名服务器就暂时成为全球DNS中的另一个客户,并向其它域名服务器发出查询请求,直至找到能回答请求的域名服务器为止,并将解析结果响应给本地域名服务器;本地域名服务器再将解析结果返回给客户端解析器;

(4)客户端解析器最终收到响应报文后,再将解析得到的IP地址返回给应用程序。

三种查询方式:

1)递归查询

b934f795f2fa026de9732436e20eb06d.png

2)迭代查询

cee13c15589d7a699b5de5b9c849d403.png3)递归与迭代查询相结合查询(减轻根域名服务器一半负担,实际上的大多数查询)

ca017150409818a025adeaea48e61ca1.png

3、名字的高速缓存

每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。可大大减轻根域名服务器的负荷,使因特网上的DNS查询请求和回答报文的数量大为减少。

为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项。当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。

三、FTP

FTP使用客户服务器方式。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,每个负责为一个客户进行FTP服务。

1、概述

FTP使用两条TCP连接来完成文件传输,一条是控制连接,另一条是数据连接。平时服务器总在端口21等待客户的连接请求,当用户需要传输文件时,客户首先主动与服务器端口21建立一个控制连接,用来传送客户的命令和服务器的应答。客户还会告知服务器自己将用的数据端口号。该连接会一直保持到客户与服务器FTP全部通信结束为止。

当客户发出文件下载、文件上传、列目录的数据传输请求时,服务器端口20主动与客户端告知的数据端口建立数据连接,并在其上传输数据,在该次数据传输完毕后立即关闭数据传输连接。

使用了两个连接,一方面使协议更加简单和更容易实现;另一方面在传输文件时还可以同时利用控制连接与服务器进行交互(如客户发送请求终止文件传输)。FTP使用了一个分离的控制连接,因此叫“带外”(outof band)传送。

2、控制连接与数据连接

1)控制连接在客户与服务器的整个交互操作期间必须保持,而数据连接在传送完一个文件后即关闭,如欲传送另一个文件时需要再建立连接。

数据连接是当有以上三种文件传输操作需要时根据请求临时动态地建立和关闭的。

2)数据连接有三种用途:

客户用来向服务器发送一个文件;

服务器用来向客户发送一个文件;

服务器用来向用户发送一个文件目录列表。

关于FTP服务器的详细配置信息,请参考以下博客:

Linux学习笔记_12_文件共享服务_2_FTP应用--vsftpd

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值