slacr_

Just to record my life and thoughts.
笔记/编程/杂乱/极简

[计算机网络]应用层

May 1, 2023Network4377 words in 29 min

在运输层协议之上,还需要有应用层协议(application layer protocol)。这是因为,每个应用层协议都是为了解决某一类应用问题,而问题的解决又必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用进程之间的这种通信必须遵循严格的规则。应用层的具体内容就是精确定义这些通信规则。

互联网公共领域的标准应用的应用层协议是由RFC文档定义的,大家都可以使用。

域名系统DNS

域名系统DNS(Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。域名系统其实就是名字系统。

早在ARPANET时代,整个网络上只有数百台计算机,那时使用一个叫作hosts的文件,列出所有主机名字和相应的IP地址。只要用户输入一台主机名字,计算机就可很快地把这台主机名字转换成机器能够识别的二进制IP地址。

在1983年互联网就开始采用层次树状结构的命名方法,并使用分布式的域名系统DNS [RFC 1034,RFC 1035,STD13]。

互联网的域名系统DNS被设计成为一个联机分布式数据库系统,并采用客户服务器方式。DNS使大多数名字都在本地进行解析(resolve)",仅少量解析需要在互联网上通信,因此DNS系统的效率很高。

域名到IP地址的解析是由分布在互联网上的许多域名服务器程序(可简称为域名服务器)共同完成的。域名服务器程序在专设的节点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器。

互联网的域名结构

域名服务器

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


==277==

  • 根域名服务器(root name server)
  • 顶级域名服务器(即TLD服务器)
  • 权限域名服务器(Authoritative Name Server)或权威域名服务器(Permission-based Name Server)
  • 本地域名服务器(local name serve)

域名的解析过程

主机向本地域名服务器的查询一般都采用递归查询(recursive query)。
本地域名服务器向根域名服务器的查询通常采用迭代查询(iterative query)。

  • 首先,浏览器会检查本地host文件和浏览器缓存中是否有对应的域名与IP地址的映射关系。如果有,它会直接使用该映射关系进行访问。
  • 如果本地缓存中没有对应的映射关系,浏览器会向本地DNS服务器发送查询请求。本地DNS服务器可以是由您的互联网服务提供商(ISP)提供的,也可以是您自己设置的其他DNS服务器。
  • 本地DNS服务器使用迭代查询的方式,它会首先查询自己的缓存,如果有对应的域名与IP地址的映射关系,则返回给浏览器。否则,它会向根域名服务器发送查询请求。
  • 根域名服务器会返回顶级域名(TLD)的权威域名服务器的地址,例如.com的顶级域名服务器的地址。本地DNS服务器接收到这个地址后,会向顶级域名服务器发送查询请求。
  • 顶级域名服务器会返回次级域名(Second-Level Domain)的权威域名服务器的地址,例如slacr.com的权威域名服务器的地址。本地DNS服务器接收到这个地址后,会向权威域名服务器发送查询请求。
  • 权威域名服务器会返回与该域名相关的IP地址或其他DNS记录。本地DNS服务器接收到这些记录后,会将其缓存,并将结果返回给浏览器。
  • 浏览器使用返回的IP地址进行访问。同时,本地DNS服务器会将查询结果保存到缓存中,以便下次查询时可以快速响应。

文件传送协议FTP

文件传送协议FTP(File Transfer Protocol)[RFC 959,STD9]曾是互联网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
基于TCP的FTP和基于UDP的简单文件传送协议TFTP,它们都是文件共享协议中的一大类,即复制整个文件,其特点是:若要存取一个文件,就必须先获得一个本地的文件副本。如果要修改文件,只能对文件的副本进行修改,然后再将修改后的文件副本传回到原节点。
文件共享协议中的另一大类是联机访问(on-line access)。联机访问意味着允许多个程序同时对一个文件进行存取。和数据库系统的不同之处是用户不需要调用一个特殊的客户进程,而是由操作系统提供对远地共享文件进行访问的服务,就如同对本地文件的访问一样。这就使用户可以用远地文件作为输入和输出来运行任何应用程序,而操作系统中的文件系统则提供对共享文件的透明存取。透明存取的优点是:将原来用于处理本地文件的应用程序用来处理远地文件时,不需要对该应用程序做明显的改动。属于文件共享协议的有网络文件系统NFS(Network File System)[COME06]。

FTP的基本工作原理

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

简单文件传送协议TFTP

TCP/IP协议族中还有一个简单文件传送协议TFTP(Trivial File Transfer Protocol),它是一个很小且易于实现的文件传送协议[RFC 1350,STD33]。虽然TFTP也使用客户服务器方式,但它使用UDP数据报,因此TFTP需要有自己的差错改正措施。TFTP只支持文件传输而不支持交互。TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。

远程终端协议TELNET

TELNET是一个简单的远程终端协议[RFC 854,STD8]。用户用TELNET就可在其所在地通过TCP连接注册(即登录)到远地的另一台主机上(使用主机名或IP地址)。TELNET能将用户的击键传到远地主机,同时也能将远地主机的输出通过TCP连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上的。因此,TELNET又称为终端仿真协议

TELNET定义了数据和命令应怎样通过互联网。这些定义就是所谓的网络虚拟终端NVT(Network Virtual Terminal)

万维网WWW

万维网WWW(World Wide Web)是一个大规模的、联机式的信息储藏所,英文简称为Web,而不是什么特殊的计算机网络。万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点(也就是所谓的“链接到另一个站点”),从而主动地按需获取丰富的信息。

万维网是欧洲粒子物理实验室的Tim Berners-Lee最初于1989年3月提出的。1993年2月,第一个图形界面的浏览器(browser)开发成功,名字叫作Mosaic。
万维网是一个分布式的超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。
客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。

统一资源定位符URL

超文本传送协议HTTP

协议HTTP定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务的(transaction-oriented)"应用层协议,它是万维网上能够可靠地交换文件(包括文本、声
音、图像等各种多媒体文件)的重要基础。

HTTP规定在HTTP客户与HTTP服务器之间的每次交互,都由一个ASCI码串构成的请求和一个类似的通用互联网扩充,即“类MIME(MIME-like)”的响应组成。HTTP报文通常都使用TCP连接传送。

HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,协议HTTP本身是无连接的。这就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。
协议HTTP是无状态的(stateless)


==289==

代理服务器

代理服务器(proxy server)是一种网络实体,它又称为万维网高速缓存(Web cache)。代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去互联网访问该资源.


==290==
以代理服务器方式构成的内容分发网络CDN(Content Distribution Network)在互联网应用中起到了很大的作用

HTTP的报文结构


==292==

状态码(Status-Code)都是三位数字的,分为5大类

在服务器上存放用户的信息

HTTP是无状态的。在RFC 6265中对Cookie进行了定义,规定万维网站点可以使用Cookie来跟踪用户。

万维网的文档

超文本标记语言HTML(HyperText Markup Language)就是一种制作万维网页面的标准语言
XML(Extensible Markup Language)是可扩展标记语言,它和HTML很相似。但XML的设计宗旨是传输数据,而不是显示数据(HTML是为了在浏览器上显示数据)。更
另一种语言XHTML(Extensible HTML)是可扩展超文本标记语言,它与HTML 4.01几乎是相同的。但XHTML是更严格的HTML版本,也是一个W3C标准(2000年1月制定),是作为一种XML应用被重新定义的HTML,并将逐渐取代HTML。
还有一种语言CSS (Cascading Style Sheets)是层叠样式表,它是一种样式表语言,用于为HTML文档定义布局。

动态文档和静态文档之间的主要差别体现在服务器一端。这主要是文档内容的生成方法不同。
增加了一个机制,叫作通用网关接口CGI(Common Gateway Interface)。CGI是一种标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。

CGI程序的正式名字是CGI脚本(script)。按照计算机科学的一般概念,“脚本”“指的是一个程序,它被另一个程序(解释程序)而不是计算机的处理机来解释或执行。有一些语言专门作为脚本语言.CGI已被更高效的技术如服务器端脚本语言(如PHP、Python、Ruby等)和Web框架所取代。

电子邮件

电子邮件的两个最重要的草案标准,是2008年更新的简单邮件传送协议SMTP (Simple MailTransfer Protocol)[RFC 5321]和互联网文本报文格式[RFC 5322]。
由于互联网的SMTP只能传送可打印的7位ASCII码邮件,因此在1996年又发布了通用互联网邮件扩充MIME(Multipurpose Intemet Mail Extensions)[RFC 2045,草案标准]。

一个电子邮件系统应具有图所示的三个主要组成构件,这就是用户代理、邮件服务器,以及邮件发送协议(如SMTP)和邮件读取协议(如POP3)。POP3是邮局协议(Post Office Protocol)的版本3

邮件读取协议POP3和IMAP

现在常用的邮件读取协议有两个,即邮局协议第3个版本POP3网际报文存取协议IMAP(Internet Message Access Protocol)

基于万维网的电子邮件

在浏览器和互联网上的邮件服务器之间传送邮件时,仍然使用HTTP协议。但是在各邮件服务器之间传送邮件时,则仍然使用SMTP协议。

通用互联网邮件扩充MIME

MIME并没有改动或取代SMTP。MIME的意图是继续使用原来的邮件格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则

内容传送编码

quoted-printable
对于任意的二进制文件,可用base64编码

内容类型

MIME标准规定Content-Type说明必须含有两个标识符,即内容类型(type)和子类型(subtype),中间用“/”分开。

动态主机配置协议DHCP

在协议软件中给这些参数赋值的动作叫作协议配置。一个协议软件在使用之前必须是已正确配置的。具体的配置信息有哪些则取决于协议栈。
互联网现在广泛使用的是动态主机配置协议DHCP(Dynamic Host Configuration Protocol),它提供了一种机制,称为即插即用连网(plug-and-play networking)。这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。DHCP最新的RFC文档还是互联网草案标准[RFC 2131—2132]。
==316==
但是我们并不愿意在每一个网络上都设置一个DHCP服务器,因为这样会使DHCP服务器的数量太多。因此现在是使每一个网络至少有一个DHCP中继代理(relay agent), 通常是一台路由器

DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP协议称这段时间为租用期(lease period).

简单网络管理协议SNMP

网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能、服务质量等。网络管理常简称为网管。

在每一个被管设备中都要运行一个程序以便和管理站中的管理程序进行通信。这些运行着的程序叫作网络管理代理程序,或简称为代理(agent)

简单网络管理协议SNMP(Simple Network Management Protocol)中的管理程序和代理程序按客户服务器方式工作。管理程序运行SNMP客户程序,而代理程序运行SNMP服务器程序。
==327==

参考

  1. 计算机网络(第八版)
  • Author:

    slacr_

  • Copyright:

  • Published:

    May 1, 2023

  • Updated:

    May 1, 2023

Buy me a cup of coffee ☕.

1000000