计算机网络-应用层

应用层

每一种应用层协议,都是为了解决某一类问题,而问题的解决必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。

应用层协议应当定义:

应用进程交换的报文类型,如请求报文和响应报文。各种报文类型的语法,如报文中各个字段的含义及其详细描述。字段的语意,即包含在字段中的信息的含义。进程何时、如何发送报文,以及对报文进行响应的规则。

域名系统 DNS(Domain Name Systen)

DNS 的作用:将互联网上的主机名字转换为 IP 地址,域名到 IP 地址的解析,由分布在互联网上许多域名服务程序(即域名服务器)共同完成的。

互联网的域名系统 DNS 被设计为成为一个联机分布式数据库,并采用客户服务器方式。

互联网的域名结构

示例:mail.cctv.com ---> 三级域名.二级域名.顶级域名

顶级域名的分类:

国家顶级域名 nTLD。eg:cn 中国us 美国uk 英国通用顶级域名 gTLD。eg:com 公司企业net 网络服务机构org 非营利性组织int 国际组织edu 教育机构gov 政府部门mil 军事部门基础结构域名。仅有一个:arpa 用于反向域名解析

域名服务器

域名服务器的四种类型:

根域名服务器(root name server)所有的根域名服务器,都知道所有的顶级域名服务器的域名和IP。所有的根域名服务器,共同使用 13 个 IP 地址。互联网中有 13 套装置,构成了 13 组根域名服务器。顶级域名服务器(即 TLD 服务器)负责在管理在该顶级域名服务器注册的所有二级域名。权限域名服务器一个服务器所负责管辖的(或有权限的)范围叫区。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。本地域名服务器(local name server)每一个互联网服务提供者 ISP,或一个大学,甚至大学的一个系,都可以拥有一个本地域名服务器。

域名的解析过程:

主机向本地域名服务器的查询,一般采用递归查询(recursive query)。本地域名服务器向根域名服务器的查询,通常采用迭代查询(iterative query)。也可以采用递归查询,由请求报文的设置决定。

DNS 查询优化:

为了减轻根域名服务器的负荷和减少互联网上的 DNS 查询报文数量,域名服务器中广泛使用高速缓存(也称为高速缓存域名服务器),存放最近查询过的域名以及从何处获得域名映射信息的记录。

# linux环境下,使用host命令解析域名的IP> host baidu.combaidu.com has address 220.181.38.148baidu.com has address 220.181.38.251

文件传送协议

属于文件共享协议的有:

文件传送协议 FTP(File Transfer Protocol),基于 TCP 协议;简单文件传送协议 TFTP,基于 UDP 协议。联机访问(on-line access)。允许多个程序同时对同一个文件进行存取。由操作系统提供对远地共享文件进行访问服务,就如同对本地文件的访问一样。操作系统对文件,提供透明存取,即将原来用于处理本地文件的应用程序用来处理本地文件时,不需要对程序做明显的改动。网络文件系统 NFS(Network File System)可使本地计算机共享远地的资源,就像这些资源在本地一样。

FTP 的基本工作原理

FTP 采用客户端/服务端模式,使用 TCP。

FTP 服务端的特点:

一个主进程,用与接受新的请求。若干个从属进程,负责处理单个请求。控制进程数据传送进程

进行文件传输时,FTP 的客户端和服务端之间要建立两个并行的 TCP 连接:

控制连接特点:整个会话期间,一直保持打开客户端发出的传送请求,通过控制连接发送给服务器端的控制进程数据连接特点:用于传输文件

简单文件传送协议 TFTP(Trivial File Transfer Protocol)

使用 UDP,只支持文件传送,不支持交互。优点:

可用于 UDP 环境TFTP 代码占用内存小

网络文件系统 NFS

NFS 允许应用进程打开一个进程文件,并能在该文件的某一特定的位置上开始读写数据。简单的说,就是像读写本地文件一样读写远地文件。

实战训练,CentOS 7 中搭建 NFS 文件共享存储服务的完整步骤。

NFS 可能的使用场景:

vscode 上有一款 ssh 插件,可以在本地编辑远程文件云文件存储

Question: rpcbind 服务的作用?

远程终端协议 TELNET

作用:

通过 TELNET 就可在其所在地通过 TCP 连接注册(登录)到远地的另一台主机上。能将击键传到远地主机,同时也能远地主机的输出通过 TCP 连接返回到用户屏幕。

特点:

是一个简单的远程终端协议。使用 TCP。使用客户服务器方式。本地运行 TELNET 客户端进程,远地服务器运行 TELNET 服务器进程。类似 FTP,服务器中的主进程等待新的请求,并产生从属进程来处理每一连接。也被称为终端仿真协议。

网络虚拟终端 NVT(Network Virtual Terminal)

TELNET 能适应许多计算机和操作系统的差异,它定义了数据和命令应怎样通过互联网,这些定义就是所谓的网络虚拟终端 NVT(Network Virtual Terminal)

TELNET 工作流程:

客户端把用户的击键、命令转化为NVT格式,并递交给服务端。服务端将收到的NVT格式,转化为远地服务器所需的格式。向用户返回数据时,服务端将远地服务器的格式转化为 NVT 格式,返回到客户端。客户端再将 NVT 格式,转化为本地系统所需的格式。

万维网 WWW(World Wide Web)

万维网是一个大规模的、联机式的信息储存所,英文简称 Web。

万维网以客户服务器方式工作,客户程序(eg:浏览器)向服务端程序(万维网服务器)发出请求,服务端程序向客户端程序送回客户所要的万维网文档。

万维网需要解决的问题:

如何唯一标志分布在整个互联网上的每一个文档?统一资源定位符URL(Uniform Resource Locator)用什么协议实现万维网上的各种连接?超文本传送协议HTTP(HyperText Transfer Protocol)怎么展示不同风格的万维网文档?超文本标记语言HTML(HyperText Markup Language)

统一资源定位符 URL(Uniform Resource Locator)

URL 的一般格式:

<协议>://<主机>:<端口>/<路径>

超文本传送协议 HTTP(HyperText Transfer Protocol)

HTTP 定义了浏览器(即万维网客户端进程)如何向万维网请求万维网文档,以及服务器怎样把文档传给浏览器。HTTP 协议是面向事物的应用层协议。

事务:指一系列的信息交换,而这一系列的信息交换是一个不可分割的整体。即要么所有信息交换都完成,要么一次交换都不进行。

HTTP 协议的特点:

使用了面向连接的 TCP 协议作为运输层协议,保证了数据的可靠传输。HTTP 协议不考虑在数据传输过程中,被丢弃后又怎么被传重。HTTP 协议本身是无连接的,即通信的双方在交换 HTTP 报文之前不需要先建立 HTTP 连接。HTTP 协议是无状态的。即同一客户,第二次访问同一个服务器上的页面时,服务器的相应与第一次相同。请求一个万维网文档

流程:

使用三次握手建立连接。三次握手的前两部分完成后,客户端的请求报文,作为建立连接的三握手中的第三个报文,发送到万维网服务器。服务器收到 HTTP 请求报文后,将所请求的文档作为响应报文返回客户端。

耗时 = {两倍往返 RTT} + {文档传输时间}

RTT(Round trip time),以毫秒为单位的网络请求从起点到目的地并再次返回到起点所需的持续时间。

HTTP/1.0 缺点:

每请求一个文档的两倍 RTT 开销。服务器每一次建立 TCP 连接都要分配缓存和变量。

HTTP/1.1 优点:采用持续连接。即万维网服务器在发送响应报文后,仍然在一段时间内保持这个连接。持续连接的有两种工作模式:

非流水线方式特点是,客户端收到前一个响应后,才能发送下一个请求。优点,节省建立 TCP 连接所需的一个 RTT 时间;缺点,服务器在发送完响应报文后,其 TCP 连接处于空闲状态。流水线方式特点是,客户端收到 HTTP 响应报文之前,就能够接着发送新的请求报文,服务器可连续发回响应报文。代理服务器(proxy server)

代理服务器是一种网络实体,又被称为万维网高速缓存。代理服务器的作用:

把最近的一些请求和响应暂存在本地磁盘当新请求到达时若请求内容与缓存匹配,则直接返回否则,作为客户去互联网获取资源,存储在代理服务器,再返回HTTP 报文

HTTP 报文分为两类:

请求报文,从客户端向服务端发送请求报文。响应报文,从服务端到客户的应答。

HTTP 是面向文本的

请求报文的一些方法:

OPTION。请求一些选项的信息HEAD。请求读取由 URL 所标志的信息TRACE。用于进行回环测试的请求报文CONNECT。用于代理服务器GetPOSTDELETEPUT

响应报文的状态码:

1xx 表示通知信息,如请求收到了活正在处理2xx 表示成功,如接收或知道了3xx 表示重定向,4xx 表示客户的差错5xx 表示服务器的差错在服务器上存放客户的信息

HTTP 是无状态的,可以使用 Cookie 识别、追踪用户。当网站使用 Cookie 时,工作流程:

服务器为用户A产生一个唯一的识别码,并以此作为索引在服务器的后端数据库中产生一个项目。服务器给用户 A 的响应中添加一个为Set-Cookie的首部行。用户 A 收到带有Set-Cookie首部行的响应后,其浏览器就在它管理的特定 Cookie文件中添加一行,记录包含服务器的主机名和 Set-Cookie 中的识别码。之后,A 的所有 HTTP 请求,其浏览器都会从 Cookie 文件中读取这个网站的识别码,并放到 HTTP 请求报文的 Cookie 首部中。

万维网的文档

HTML 不是应用层的协议,是万维网浏览器使用的一种语言。

万维网的文档,分为两种:

静态文档动态文档

要实现动态文档,需要对在两个方面对万维网服务器的功能进行扩充:

应增加一个应用程序(CGI程序)用来处理浏览器发来的数据并动态创建文档。应增加一个机制(通用网关接口CGI)用来使万维网服务器将浏览器发送的数据传送给这个应用程序万维网服务器能理解这个应用服务器的数据,并向浏览器返回 HTML

通用网关接口CGI(Common Gateway Interface),是一种标准,它定义了:

动态文档应如何创建浏览器输入的数据应如何提供给应用程序,应用程序的输出结果应如何应用。

在看到 CGI 这个名词时,应弄清是指 CGI 标准,还是 CGI 程序。

CGI 程序的正式名称为 CGI 脚本,也被称为 cgi-bin 脚本。

万维网的信息检索系统

搜索引擎的分类:

全文检索搜索引擎必应百度谷歌目录检索搜索引起雅虎雅虎中国)新浪搜狐网易垂直搜索引擎(Vertical Search Engine)。针对某一特定领域、特定人群或某一特定需求提供搜索服务。元搜索引擎(Meta Search Engine)。将用户提交的搜索请求发送到多个独立的搜索引擎上去搜索,然后整合检索结果,按统一格式展示。

电子邮件(e-mail)

电子邮件的两个重要标准:

简单邮件传送协议 SMTP(Simple Mail Transfer Protocol)互联网文本报文格式

电子邮件三个组成构件:

用户代理邮件服务器邮件发送协议(如 SMTP)和邮件读取协议(如 POP3)

POP3 指邮局协议(Post Office Protocol)的版本 3

用户代理UA(User Agent),也称为电子邮件客户端软件,就是用户与电子邮件系统的接口,大多数情况下就是运行在用户电脑中的一个程序,如 Outlook、Foxmail.

邮件服务器:

按照客户服务器方式工作,SMTP 服务器使用的 TCP 端口为 25。使用两种不同的协议一种用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如 SMTP一种用于用户代理从邮件服务器读取邮件,如邮局协议 POP3能够同时充当客户和服务器

邮件读取协议 POP3 和 IMAP

邮局协议 POP3 (Post Office Protocol)的特点:

客户服务器的工作方式用户从 POP3 服务器读取邮件后,POP3 就把该邮件删除

网际报文存取协议 IMAP(Internet Message Access Protocol)特点:

客户服务器的工作方式是一个联机协议。用户可以在自己的机器上操作邮件服务器的邮箱,就像在本地操作一样。可以在不同的地方、不同的机器,随时上网阅读和处理邮件

基于万维网的电子邮件,直接使用浏览器操作电子邮件。

动态主机配置协议 DHCP

DHCP 提供一种机制,称为即插即用连网(plug-and-play networking),这种机制允许一台计算加入新的网络和获取新的 IP 地址不用手工配置。

一台主机获取 IP 的流程:

方式一:本网络广播,DHCP 服务器 返回 IP 地址方式二:本网络广播,DHCP 中继代理向 DHCP 服务器单播,DHCP 服务器 返回 IP 地址

DHCP 获取的 IP 地址,是有时效期的,这段时间称为租用期(lease period),这个时长有 DHCP 服务器自己决定。

应用进程跨越网络的通信

大多数操作系统使用系统调用(system call)的机制,在应用程序和操作系统之间传递控制权。

系统调用接口,也称为应用编程接口 API(Application Programming Interface),实际上是应用进程的控制权与操作系统的控制权进行转换的一个接口。

几种常用的系统调用:

连接建立阶段bind(绑定)。指明套接字的本地地址(本地端口号和本地 IP 地址)。listen(收听)。把套接字设置为被动方式,以便随时接收客户的请求。access(接受)。把远地客户进程发送的连接请求提取出来。connect。客户端进程使用 connect 和远地服务器建立连接。数据传输阶段send。客户端、服务端都可以使用 send 发送数据recv。客户端、服务端都可以使用 send 接收数据连接释放阶段close。释放连接和撤销套接字

P2P 应用

P2P 应用指具有 P2P 体系结构的网络应用,没有(或只有极少数的)固定的服务器,绝大多数的交互都是使用对等方式(P2P 方式)进行。

实现方式:

具有集中目录服务器的 P2P 工作方式特点:集中式的目录查询服务器第一代 P2P 应用:Napster 网站具有全分布式结构的 P2P 文件共享程序特点:使用分散定位、分散传输技术特点:不采用集中式的目录查询服务器,采用有限范围的洪泛法。第二代 P2P 应用:Gnutella 网站第三代 P2P 应用:KaZaA、电骡 eMule、比特洪流 BT(Bit Torrent)

分布式散列表 DHT(Distributed Hash Table),也称作分布式哈希表,它是由大量对等方共同维护的。基于 DHT 的算法:

ChordPastryCAN(Content Address Network)Kademilia

SSH

安全登录,采用客户服务器的工作方式。