应用层笔记

来源:互联网 发布:网络身份认证技术 编辑:程序博客网 时间:2024/06/08 17:36

以下内容是我阅读机械工业出版社出版的《计算机网络》自顶向下第六版是根据自己的理解和不足所做的笔记,想更了解这本书的同学可以去购买阅读。

1.应用程序的进程

1.进程

    进行网络通信的是进程。进程由应用程序开发者控制。对于进程来说,其是运行在端系统上的一个程序,当两个进程运行在一个端系统上时,它们使用进程间通信机制进行通信。当在不同的端系统上时,进程通过网络互相发送报文。在P2P系统中,进程可以分为客户和服务器,并可以相互转换身份。进程与另一个端系统通信时,需要通过一个叫做套接字的接口,该接口是建立网络应用程序的可编程接口,也称为应用程序和网络之间的应用程序编程接口(Application Programming Interface,API)。不管是源主机还是目的主机都有套接字,以便报文通过。

2.运输服务

    包括因特网在内的很多种网络都提供了不同的运输层协议。对于不同的进程,可以根据报文的格式选择不同的运输层协议。从四个方面对应用程序要求进行分类:可靠数据传输,吞吐量,定时以及安全性。

可靠数据传输:提供确保数据交付服务。发送进程只要将数据传递到套接字就够了。

吞吐量:发送进程能够向接收进程交付比特的速率。其他会话共享沿着该网络路径的带宽,并且因为这些会话会交付或者离开,该可用吞吐量会波动。有些具有吞吐量的应用程序被称为带宽敏感的应用弹性应用能够根据情况或多或少地利用可供使用的吞吐量。吞吐量越多越好。

定时:对于实时交互性应用程序,提供的服务使得程序能以较低的时延运行,能够提高使用的体验。

安全性:发送主机运输协议加密由发送进程传输的所有数据,在接收主机中,运输层协议能够在交付给接收进程之前解密这些数据。

    以上为计算机网络能够一般性提供的运输服务。以下为因特网提供的运输服务:

·作为一名软件工作者,当创建一个应用程序时,需要决定选择UDP还是TCP。

(1)TCP

   TCP服务模型包括面向连接服务和可靠数据传输服务。面向连接服务:在应用层数据报文开始流动之前,TCP让客户和应用程序互相交换运输层应用信息。这个所谓的握手过程提示客户和服务器,使它们为大量分组的到来做好准备。在握手阶段之后,一个TCP连接,就在两个进程之间的套接字建立了。这条连接是全双工的。当传输结束之后,必须拆除该连接。可靠数据传输服务:通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据。当应用程序的一端将字节流传进套接字的时候,它能够依靠TCP将相同的字节流交付给接收方的套接字,而没有字节流的丢失与冗余。TCP协议还有拥塞控制机制,当发收间网络出现拥塞的时候,TCP拥塞控制机制会抑制发送进程。也试图限制每个TCP连接,达到公平共享网络带宽的目的。对于TCP安全,无论TCP还是UDP都没有提供任何加密机制。因此TCP的加强版本出生,称为安全套接字层(Secure Socket Layer,SSL),SSL不是跟TCP,UDP在一个层次而是TCP的加强版本。如果应用程序需要使用SSL的服务,它需要在该应用程序的客户端和服务器端包括SSL代码。SSL有自己的套接字API。一个应用程序向SSL套接字传递一串明文数据,在发送主机中的SSL则加密数据并将加密的数据传递给TCP套接字。
应用TCP的应用有:电子邮件,远程终端访问,Web,文件传输,流式多媒体。

(2)UDP

  UDP是一种不提供不必要服务的轻量级运输协议,它提供最小的服务。其是无连接的,因此两个进程间通信前没有连接的建立过程。UDP提供不可靠的数据传输服务。当一个报文被发送进UDP套接字的时候,UDP不保证该数据报会被传输到目的程序中。而且,到达接收进程的报文也可能是乱序的。而且没有拥塞控制

有一种应用程序同时采用TCP和UDP:因特网电话。因为有一些防火墙被设置为阻挡UDP流量,所以采用TCP作为备份(如果通信失败)。

3.应用层协议的定义

·交换的报文类型,如请求报文和响应报文

·各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的。

·字段的语义,即这些字段中包含的信息的含义。

·一个进程何时以及如何发送报文,对报文进行响应的规则。

区分网络应用和运输层协议,运输层协议只是网络应用的一部分。

2.网络应用

1.Web和HTTP

1.1 HTTP(超文本传输协议)

   Web的应用层协议就是超文本传输协议HTTP,HTTP由两个程序实现,一个客户程序一个服务器程序。HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式。HTTP定义了Web客户向Web服务器请求Web的方式,以及服务器向客户传送Web页面的方式。HTTP使用TCP作为它的支撑运输协议。客g户向套接字接口发送HTTP请求报文,这个HTTP请求报文就脱离了客户应用程序的控制,转为进入TCP的控制,然后进入服务器的套接字接口,之后服务器发送HTTP响应报文,经过类似的过程,进入客户的应用程序。注意,服务器在处理用户的请求分组的时候是不存储用户的状态信息,即当用户重新发送HTTP请求报文的时候,服务器还是会传送Web页面。这称为HTTP的无状态协议(stateless protocol)。Web服务器总是打开的,具有一个固定的IP地址。

1.2 非持续连接和持续连接

1.2.1 非持续连接

    HTTP客户进程在端口号80发起一个到服务器的TCP连接,该端口号是HTTP的默认端口。在客户和服务器上分别有一个套接字与该连接相关联。接下来是HTTP请求报文,Web页面,HTTP响应报文的传送,客户端接收到的是HTML文件以及其他网页对象的引用,最后是TCP连接的关闭,之后重新开启和关闭。每个TCP连接只传送一个请求报文和一个响应报文。而每一个TCP连接的响应时间是两个RTT(Round-Trip Time,RTT)加上服务器传输HTML文件的时间。
    缺点:必须为每一个请求的对象建立和维护一个全新的连接。对于这样的连接,额客户和服务器中都要分配TCP的缓冲区和保持TCP变量。

1.2.2 持续连接

   一个完整的Web页面可以用单个持续TCP连接进行传送,有时候位于同一个服务器的多个Web页面在发送给多个用户的时候,可以在单个持续TCP连接上进行。可以一个接一个地发出对对象的这些请求,而不用等待对未决请求(流水线)的回答。如果一条连接经过一定时间间隔仍未被使用,HTTP服务器就关闭该连接。HTTP使用的是带流水线的持续连接。

1.3 HTTP报文格式

1.4 用户与服务器的交互:cookie

    HTTP服务器是无状态的,但是当用户增多的时候,服务器可能不堪重负,于是cookie应运而生,其在[RFC 6265]中定义,它允许站点对用户进行跟踪。cookie计数有4个组件:①在HTTP响应报文中的一个cookie首部行;②在HTTP请求报文中的一个cookie首部行;③在用户端系统中保留有一个cookie文件,由用户的浏览器进行管理;④位于Web站点的一个后端数据库。交互过程:客户首先发起请求报文,然后服务器校验请求报文里有没有cookie,没有的话,给其提供一个ID,然后将ID和HTTP响应报文一起发送给客户端,客户随后保存cookie。然后客户主机连同cookie以及请求报文发送给服务器确认一遍,随后服务器发送通常HTTP报文给客户主机。交互完毕。以后客户想要登录的话,主要将HTTP请求报文连同cookie一起发送给服务器,服务器在其数据库中查找检验。服务器随后以通常HTTP报文回应,登录成功。

1.5 Web缓存

Web缓存器也叫做代理服务器。它跟主机一同连接在一个局域网内。Web缓存器可以大大减少一个机构的接入链路到因特网的通信量。Web缓存器内有存储空间,当客户想要连接某个Web的时候,浏览器首先和缓存器建立一个TCP连接,发送HTTP请求报文。缓存器会从其存储器中找出备份。如果没有,缓存器打开一个与该对象的初始服务器的TCP连接,Web缓存器就在TCP连接上发送一个对该对象的HTTP请求。收到该对象之后,初始服务器发送一个具有该对象的HTTP响应报文,之后缓存器保存该对象的副本,然后用HTTP响应报文回报给浏览器。Web缓存器通常由ISP储存并安装。

1.6 条件GET方法

当缓存器中保存的副本时间过长可能会有更新的版本出来,可能产生滞后,用户没法体验最新版本。之后Web服务器会跟缓存器约定一个时间,比如一个星期。一个星期后Web缓存区会重新连接服务器查看是否有新版本的出现。如果没有,服务器发送一个没有包含该对象的响应报文,而后缓存器向相应的浏览器发送该对象的副本。

2.文件传输协议:FTP

即用户跟远程主机之间文件交互所需要的一个协议。用户首先提供远程主机的主机名,使本地主机的FTP客户进程建立一个到远程主机FTP服务器进程的TCP连接。该用户接着提供用户标识和口令,然后对远程主机上的文件进行操作。FTP协议运行在TCP上,使用两个并行的TCP连接来传输文件,称为控制连接以及数据连接。控制连接用于在两个主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“存放”和“获取”文件的命令。当客户连接的时候,首先建立一个TCP控制连接,然后FTP服务器回传要求输入用户标识和用户口令。FTP使用一个独立的控制连接,所以称FTP的控制信息是带外传送的。在整个用户会话期间,控制连接是一直连接着的,当需要收传文件的时候,客户就会发起一个TCP数据连接,传输文件结束之后,关闭TCP数据连接。即每次发送一系列文件的时候操作一次便需要建立一个TCP数据连接。

3.因特网中的电子邮件

电子邮件是一种异步通信媒介即随时收发邮件。因特网电子邮件有三个组成部分:用户代理,邮件服务器,和邮件简单传输协议。发送方发送邮件是从其用户代理发到其所在服务器,然后由服务器来分发邮件,发送到接收方所在的服务器,之后再由接收方所在服务器来分发邮件。

3.1 SMTP

   SMTP是因特网电子邮件中主要的应用层协议。它使用TCP可靠数据传输服务。SMTP有两个部分:运行在发送方邮件服务器的客户端以及运行在接收方邮件服务器的服务器端。发送过程是:发送者提供报文和地址发送给本地邮件服务器,邮件服务器上的SMTP发现这个报文,于是就与接收方的服务器的SMTP建立TCP连接。经历过初次握手之后,发送报文,该报文会直接到达接收方的服务器,不会有其他服务器转发或者存留,而且这个TCP连接同时发送其他内容,SMTP用的是持续连接。当接收方的服务器没有打开,发送方的服务器课等待,后不断尝试进行连接,一通的话就发送邮件。最后接收方在其用户代理上阅读邮件。

3.2 与HTTP的对比

HTTP是一种拉协议,即当客户想要读取Web的时候,就使用HTTP从Web缓存器中拉取信息,TCP连接是由想接收文件的机器发起的。而SMTP是一种推协议,TCP连接是由想发送文件的机器发起的。

②SMTP要求每个报文使用7比特ASCII码格式。

③最后是如何处理一个既包含文本又包含图形(也可能是其他媒体类型)的文档。HTTP把每个对象分装到它自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文之中。

3.3 邮件访问协议

我们知道当邮件发送到接收方的邮件服务器上的时候,接收方是可以登录到服务器在其主机上面阅读其邮件。现在邮件访问使用客户-服务器体系结构,即客户通过在用户端系统上运行的客户程序来阅读电子邮件。这里就有两个问题:①如果接收方需要及时处理其收到的每个文件,但是又不能时刻保持PC开机,这时候就可以使用共享邮件服务器上的邮箱,通常由用户的ISP进行维护。②用户代理不能使用SMTP取回报文,因为取报文是一个拉操作,这个时候就有第三版的邮局协议(POP3)、因特网邮件访问协议(IMAP)以及HTTP

3.3.1 POP3

POP3是一个极为简单的邮件访问协议。当用户代理打开一个到邮件服务器端口110上的TCP连接后,POP3就开始工作。POP3按照三个阶段进行工作:特许,事务处理以及更新。特许阶段,客户发送(明文)用户名以及口令以鉴别用户。在第二个阶段,客户取回报文,同时可以对报文做删除标记,取消代理取回报文,以及获取邮件的统计信息。在客户与邮件服务器之间的POP3会话期间,POP3保留一些状态信息,而不会携带状态信息。

3.3.2 IMAP

IMAP也是一个邮件访问协议。IMAP服务器把每个报文与一个文件夹联系起来;当报文到达到达服务器的时候,收件人可以对邮件进行移动到文件夹的操作,IMAP还提供仔远程文件夹中查询邮件的操作,IMAP服务器维护了IMAP会话的用户状态信息。IMAP的另一个重要特性是具有允许用户代理获取报文组件的命令。即不用打开整个邮件来查看信息,可以避免可能包含音频或视频片段的大邮件。

3.3.3 基于Web的电子邮件

基于Web的电子邮件,浏览器就是一个用户代理,用户和他的远程邮箱之间的通信则通过HTTP进行。电子邮件从邮件服务器发送到用户代理用的是HTTP协议。然而,邮件服务器之间的通信仍然使用SMTP协议。

4.DNS:因特网的目录服务

DNS是:①一个由分层的DNS服务器(DNS server)实现的分布式数据库;②一个使得主机能够查询分布式数据库的应用层协议。DNS是应用层协议的原因在于:①使用客户-服务器模式运行在通信的端系统之间;②在通信的端系统之间通过下面的端到端运输协议来传送DNS报文。DNS通常是其他应用层协议使用的,包括HTTP,SMTP,FTP,将用户的主机名解析为IP地址。工作过程:在一台用户主机上运行着DNS应用的客户端,浏览器从URL中抽取出主机名,发送给DNS应用的客户端。DNS客户向DNS服务器发送一个包含主机的请求。DNS客户最终得到一个回答报文,其中包含IP地址,浏览器得到该IP地址后,就能通过80端口的HTTP协议向服务器进程发起一个TCP连接。这会产生时延,但是“附近的”DNS服务器会减少DNS的网络流量和DNS的平均时延。DNS还有的服务:

·主机别名:能够减少主机名的记忆

·邮件服务器别名:有助于邮件地址的记忆

·负载分配:一个主机名对应不同的服务器和不同的IP地址,IP地址循环使用

4.1 DNS工作机理概述

所有的DNS请求和回答报文都使用UDP数据报经端口53发送。用户主机上的DNS接收到一个提供所希望映射的DNS回答报文。这个映射结果被传递到调用DNS的应用程序。单一DNS服务器是没有能力处理集中的DNS请求报文的,所以普遍采用分布式,层次服务器

4.1.1 分布式,层次服务器

·根服务器

·顶级域(DNS)服务器:负责com,org,net,edu和gov这类域名

·权威DNS服务器:在因特网上的公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。一个权威DNS服务器记录这些DNS记录。

还有一种本地DNS服务器,每个ISP都有一台本地DNS服务器。当主机与某个ISP连接时,该ISP提供一台主机的IP地址,该主机具有一台或多台本地DNS服务器的IP地址(通常称为DHCP)。当主机发送DNS请求的时候,该请求被发送往本地DNS服务器,之后本地DNS服务器向DNS根服务器发送DNS查询报文,然后DNS根服务器通过查询顶级域名,然后给本地DNS服务器发送负责该顶级域名的TLD的IP地址列表。然后本地DNS服务器向TLD服务器之一发送查询报文,以获取权威服务器的IP地址。然后再对权威服务器发起询问,最后获取IP地址。总共发起4次查询报文,4次回应报文。如果TLD服务器不知道目的IP地址所在的权威服务器的IP地址,就需要多询问一次,所以最后是10次报文的传递。查询可以是递归查询,也可以是迭代查询。

4.1.2 DNS缓存

4.2 DNS记录和报文

共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record,RR),RR提供了主机名到IP地址的映射。

如果一台DNS服务器是用于某特定主机的权威DNS服务器,那么该DNS服务器会有一条包含该主机名的类型A记录(即使该DNS服务器不是其权威DNS服务器,它也可以在缓存中包含有一条类型A记录),类型A记录对应的是在权威服务器中的数据。(一条类型A的资源记录提供了标准的主机名到IP地址的映射)。

 5.P2P应用

5.1 P2P文件分发

在P2P文件分发中,每个对等方能够重新分发它所有的该文件的任何部分,从而在分发过程中协助该服务器。即当一个对等方接收到某些文件数据,它能够使用自己的上载能力重新将数据分发给其他对等方。系统的整体的总上载能力等于服务器的上载速率加上每个单独的对等方的上载能力。具有P2P体系结构的应用程序能够是自扩展的。这种扩展的成因是:对等方除了是比特的消费者外还是它们的重新分发者。

BotTorrent是一种用于文件分发的流行P2P协议,用BotTorrent的术语来讲,参与一个特定文件分发的所有对等方的集合称为一个洪流。对等方可以随时退出洪流,也可以随时加入洪流。每个洪流中有一个基础设施结点,称为追踪器。每一个对等方加入洪流,就会向追踪器注册自己,并周期性的通知追踪器自己还在洪流中,追踪器会向新的对等方发送其他对等方的一个子集。后新的对等方会和其他对等方发起TCP连接。对等方会从其邻近对等方中根据稀缺优先(以便使稀缺的块能够尽快的分发,均衡每一个块在洪流中的副本数量)的技术,得到块。当收到多个传输请求时,对等方会选择一个具有最高速率的邻居给予其优先权。

5.2 分布式散列表

对于某些键值对,一个数据库不可能存储所有的数据。在P2P系统中,每个对等方将保存(键值)对仅占总体的一个小子集。我们允许任何对等方用一个特别的键来查询分布式数据库。分布式系统使用标识符的方式来标识对等方和键值对,然后依靠键值对来分发键值对,交给对等方来储存处理。分布式数据库将定位拥有该相应(键值)对的对等方

5.2.1 环形DHT

每个对等方只知道两个对等方,即它的直接后继和直接前任。但是,对等方是随时进入随时离开的。所以环形DHT必须考虑这种情况

5.2.2 对等方扰动

为处理以上情况,对等方需要知道它的第一和第二后继。也必须周期性地证实它的两个后继是存活的。对等方通过询问后继来更新它的后继表。

6. TCP套接字编程

典型的网路应用是由一对程序(即客户程序和服务器程序)组成的,它们位于两个不同的端系统中。当运行这两个程序的时候,创建了一个客户进程和一个服务器进程,同时它们通过从套接字读出和写入数据彼此之间进行通信。

6.1 UDP套接字编程

使用UDP的时候,必须先将目的地址附在该分组之上。一台主机可能运行许多网络应用进程,每一个进程具有一个或者多个套接字,所以在目的主机指定特定的套接字也是必要的。当生成一个套接字时,就分配一个端口号。分组的目的地址也有该套接字的端口号。

6.2 TCP套接字编程

使用TCP发送数据之前,首先需要建立TCP连接,之后只需要把数据经过套接字扔进TCP连接就能够传输数据。客户进程想要跟服务器通信的话就必须生成TCP套接字,它指定了服务器中的欢迎套接字的地址,生成套接字后,客户发起一个三次握手并创建与服务器的一个TCP连接。发生在运输层的三次握手,对客户和服务器程序是完全透明的。

原创粉丝点击