《计算机网络自顶向下方法》知识梳理——第二章:应用层

    技术2026-10-05  5

    应用层

    应用程序体系结构

    客户机/服务器体系结构(client-server architecture) 服务器与客户机不同之处: 服务器时刻工作具有固定、周知的地址/域名利用大量的服务器实现可扩展性服务器程序必须使用周知端口号 P2P体系结构(P2P architecture) 自拓展性:每个用户都为系统增加服务能力成本较低 混合结构(Hybrid) 如Napster

    运输层为应用程序提供的服务

    可靠数据传输吞吐量 对于吞吐量敏感的应用,可请求运输层为其提供至少为r bps的吞吐量对于弹性应用(电子邮件、文件传输、Web传输),则对吞吐量没有要求 安全性:运输层可以加密进程送来的报文,解密从报文段中剥出的加密报文定时:限制数据进入套接字后传输到对方进程不超过指定时间应用程序所需的服务:

    两种模式:

    客户服务器模式与P2P模式。P2P是特殊的客户服务器模式。

    域名系统DNS(Domain Name System):

    命名系统,将机器名称转换为IP地址。域名适合人用,IP地址适合机用。为避免单点故障、提高效率,使用层次树状结构命名方法和分布式域名系统(联机分布式数据库)。大部分名字在本地解析,提高访问速度、减轻互联网负担。域名服务器→域名服务器程序;客户端→解析程序。使用UDP。域名结构(…三级域名标号.二级域名标号.顶级域名标号);标号由字母和数字组成,不超过63个字符,不区分大小写,完整域名不超过255个字符。各级域名由其上一级域名管理机构管理,顶级域名由ICANN管理。顶级域名分类: 国家顶级域名nTLD(ccTLD):cn、us等。通用顶级域名gTLD:com、net、org等。基础结构域名(反向域名):只有一个arpa,用于反向域名解析。??? 二级域名分类:类别域名和行政区域名。中国互联网网络信息中心CNNIC。域名树结构:第一层为根(无意义)、第二层为顶级域名、第三层为二级域名…,树叶为单台计算机的名字。互联网的域名划分与物理网络结构和IP划分无关。域名服务器服务范围划分:每一个结点设置一个域名服务器显然太多余,于是采用分区(zone)的方法。管辖范围以区为单位,区不大于域。每个区设置一个权限域名服务器,存储该区内所有域名到IP的映射。域名服务器树:根域名服务器→顶级域名服务器→权限域名服务器。为避免单点故障,共在588个地点设置根域名服务器,共享13个使用不同IP地址的域名。使用相同域名的根服务器互为镜像根服务器。常用前13个字母表示某组根域名服务器。域名服务器种类: 根域名服务器:知道所有顶级域名服务器的映射。采用任播技术,DNS客户请求遵循就近原则。根域名服务器的分布密度影响用户的访问速度。顶级域名服务器:知道在该顶级域名下注册的所有二级域名的映射。权限域名服务器:知道该区内所有域名的映射。本地域名服务器:不属于域名服务器树。客户通过指定的(最近的)本地域名服务器间接查询,同时起到Cache作用。 为避免单点故障,树中的每个域名服务器都分为主域名服务器和辅助域名服务器(备 份)。查询方式分为:递归查询和迭代查询。 通常如根域名服务器这种流量较大的域名服务器都不使用递归查询。域名服务器普遍使用高速缓存,减轻根域名服务器的负担。主机也使用高速缓存,比如在启动时下载本地域名服务器的全部数据库,并动态维护。

    万维网WWW:大规模的、联机式的信息储藏所。万维网站点之间相互链接。

    万维网是分布式的超媒体系统,是超文本系统的扩充。 超文本(万维网的基础):包含指向其他文档的链接的文本(有多个信息源,分布在世界各地)。内容仅包含文本信息。超媒体:内容包含文本、图形、图像、声音、动画以及视频图像等信息。 客户服务器模式。客户运行浏览器程序,服务器保存文档。文档定位:统一资源定位符URL(Uniform Resource Locator)。链接实现:超文本传输协议HTTP(Hyper Text Transfer Protocol)。

    统一资源定位符URL:

    格式:<协议>://<主机(域名)>:<端口>/<路径> 端口为协议默认端口号,常忽略。不分大小写。

    超文本传输协议HTTP:

    从层次的角度看,HTTP面向事务:每一次事务(一系列的信息交换)要么都发生,要么一次都不发生。使用TCP。请求文档过程: 服务器进程不断监听TCP的端口80。用户使用DNS获取所需域名的IP地址,浏览器向该地址的80端口发送请求。服务器监听到请求并与客户通过三次握手建立TCP连接。浏览器发出浏览某个页面的请求。服务器返回请求的页面。释放TCP连接。 HTTP协议是无状态的。简化了服务器的设计,同时更容易支持大量并发的请求。 无状态原因: 原始的静态网页不需要维护状态;维护状态会给服务器带来巨大的负担;可以使用开销小的cookies + session来维护状态。 HTTP/1.0使用非持续连接,每一个文档单独建立TCP连接。文档请求时间为2RTT+τ(建立TCP连接、发送HTTP请求、发送文档)。 非持久连接的缺点: 增加了每个对象的响应延时(1个RTT);总是处于慢启动状态。每请求一个文件,就要建立一个全新的链接,服务器负担巨大/l。 分为串行和并行方式,并行通常为5到10和TCP连接同时工作,但必须先获取页面的html文档。 HTTP/1.1使用持续连接,访问同一服务器上的文档都用该条连接。持续连接分为两种工作方式: 非流水线方式:客户在收到前一个请求的响应后才能发送下一个请求。文档请求时间为RTT+τ。流水线方式:客户将所有请求一连串发送。所有文档的请求时间为RTT+τ。 HTTP协议常搭配代理服务器使用:高速缓存,存储近期的请求和响应。用户先与代理服务器建立TCP连接,代理服务器查询缓存,无匹配则代替用户发出请求。 优点:在用户与代理服务器之间的链路瓶颈远小于代理服务器和目标服务器之间的链路瓶颈时,能大大减少客户机请求时间,而且可以大大减少一个机构内部网与因特网接入链路上的通信量。报文结构:分为请求报文和响应报文,详情见课本。Cookie用来保存用户的状态。用户首次浏览网站,网站在响应报文中添加Set-cookie:XXX首部行,为该用户分配以个标识码。用户下一次访问时携带首部行Cookie:XXX。用户端Cookie存放在Cookie文件中,服务器将用户的Cookie放在Cookie数据库中。

    电子邮件系统组成部分:用户代理(电子邮件客户端软件)、邮件服务器、协议(邮件发送协议和邮件读取协议)。

    用户代理UA(User Agent):用户与电子邮件系统的接口。邮件服务器必须24h运行邮件服务器程序来接受邮件,否则会造成丢失。

    简单邮件传送协议SMTP:

    使用TCP。使用持久连接。发送过程: MAIL命令:MAIL FROM:<发件人邮箱>。RCPT命令:RCPT TO:<收件人邮箱>。当有多个收件人时发出多个RCPT命令。先弄清对方服务器是否有目标用户,以免浪费资源。DATA命令表示要开始传送数据了。QUIT命令申请释放TCP连接。 缺点: 发送电子邮件不需要经过鉴别(垃圾邮件肆虐);不能传送二进制数据,报文首部和主体都必须是7位ASCII编码7;传送明文,不利于保密;传输效率低。 和HTTP的共同点: 都是用TCP;都是命令/响应式(客户/服务器式);命令(请求头、响应头)都使用ASCII编码;新版本HTTP和SMTP都使用持久连接; 和HTTP的不同点: HTTP是一个“拉协议”,而SMTP是一个“推协议”;HTTP报文体可以不用ASCII编码; MIME扩展: 目的:用来发送非ASCII文本的内容(如图片、音频);方式:要发送非ASCII文本的文件时,在头部加入content-type和content-transfer-encoding字段;

    邮局协议第3个版本POP3:

    客户服务器模式。使用TCP。只要用户读取了某邮件,邮件服务器就将该邮件删除。

    网际报文存取协议IMAP:

    客户服务器模式。使用TCP。联机协议,用户在主机上可以操纵邮件服务器上的邮箱。当用户需要打开某个邮件时,邮件才传输到客户机上。用户不主动删除邮件,邮件会一直保留在服务器中。可只访问邮件的一部分。

    协议软件参数化:通用可移植。

    动态主机配置协议DHCP(Dynamic Host Configuration Protocal):

    使用UDP。配置项:IP地址、子网掩码、默认路由器的IP地址、域名服务器的IP地址。即插即用连网。客户服务器模式。客户的IP地址动态配置,服务器的IP地址为永久地址。工作过程: 主机启动时广播发现报文(DHCPDISCOVER);(源IP地址为全零)DHCP服务器接收发现报文,并回复提供报文(DHCPOFFER)。若在数据库中找到了该主机的配置信息则返回找到的信息,若没有找到则在IP地址池中取一个地址发给该主机。客户选择一个DHCP服务器发送DHCP请求报文。被选服务器发送确认报文(DHCPACK)。进入已绑定状态。租用期过半,客户发送请求报文(DHCPREQUEST)要求更新租用期。服务器同意则回复确认报文,客户获得新的租用期并重置计时器。不同意则回复否认报文,客户立刻停用此IP,并重新申请。若服务器对(5)无响应则在租用期过87.5%时重复(5)步骤。 每一个网络至少有一个DHCP中继代理(常为一台路由器),接收到广播报文后以单播形式发送给DHCP服务器。IP地址的分配是临时的,有“租用期”。
    Processed: 0.010, SQL: 9