计算机网络学习笔记(二)应用层

1.应用层协议原理

(1)进程通信

   用操作系统的术语来说,在端系统上进行通信的实际上是进程而不是程序,它们使用进程间通信机制进行相互通信。在两个不同端系统的进程,通过跨越计算机网络交换报文而相互通信。发送进程生成并向网络中发送报文,接收进程接收这些报文并可能通过回送报文进响应。

客户端和服务器进程

   我们通常将一组收发进程中的一个称为客户,另一个称为服务器。发起通信的进程被标识为客户,在会话开始时等待联系的进程是服务器。

进程与计算机网路之间的接口

   进程通过一个称为套接字的软件接口向网路发送报文和从网络接收报文。套接字是是同一台主机内应用与传输层之间的接口。由于套接字是建立网络应用程序的可编程接口,因此套接字也称为应用程序和网络之间的应用程序编程接口。应用开发者可以控制套接字在应用层的一切,但对传输层几乎没有控制权,应用开发者仅能:

  • 选择传输层协议
  • 设定几个传输层参数

进程寻址

   在一台主机上运行的进程为了向在另一台主机上运行的的进程发送分组,接收进程需要有一个地址。为了标识接收进程,需要知道:主机的地址和在目的主机中指定接收进程的标识符。在因特网中,主机由IP地址标识。而目的主机中指定接收进程的表示符就是端口号了。

(2)可供应用层使用的传输层服务

  • 可靠的数据传输
  • 吞吐量
  • 定时
  • 安全性

(3)因特网提供的传输层服务

TCP

  • 面向连接的服务
  • 可靠的数据传输服务
  • 拥塞控制

UDP

  • 面向无连接的服务
  • 提供不可靠的传输服务

(4)应用层协议

应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文

2.Web和HTTP

(1)HTTP

   Web的应用层协议是超文本传输协议(HTTP),它是Web的核心。HTTP由两个程序实现:一个客户端程序和一个服务器程序。客户端程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话。HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式。

(2)Web术语

  • Web页面,是由对象组成的。一个对象只是一个文件,且它们可以通过一个URL地址寻址。多数HTML页面具有一个HTML文件和多个引用对象。Web服务器实现了HTTP的服务器端,它用于存储Web对象,每个对象由URL寻址。
  • HTTP,定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。因此,HTTP被称为无状态协议。

(3)持续连接和非持续连接

   每个请求/响应式经一个单独的TCP连接发送,那么该类程序被为非持续连接,所以请求和响应都经由一条TCP连接发送,那么这类程序被吃呢各位持续连接。TCP默认是持续连接的。

采用非持续连接的HTTP

   采用非持续连接的HTTP,每条连接只进行一次发送和接收服务。缺点:必须为每一个请求的对象建立和维护一个全新的连接,这会给Web服务器带来严重的负担;每一个对象经受两倍的RTT交付时延,一个用于创建,另一个用于请求和接收对象。

采用持续连接的HTTP

   采用持续连接的HTTP,所有的发送和接收服务均在这条连接上进行。

(3)HTTP报文格式

请求报文

GET /somedir/page ・html HTTP/1.1
Host: www someschool•edu
Connection: close
User-agent: Mozilla/5•0
Accept-language: fr

   请求报文的第一行叫做请求行,后继部分为首部行(headers)。请求行有三个字段:请求方法、URL和HTTP版本。首部中Host指定了对象所在的主机,Connection: false,表明在请求完成之后应当关闭连接。User-agent用于指定用户代理,Accept-language: fr表明用户想要得到该对象的法语版本。而在POST请求报文中,还会有第三个请求实体部分。

响应报文

HTTP/1.1 200 OK
Connection: close
Date: Tue, 18 Aug 2015 15:44:04 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tuer 18 Aug 2015 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html
(data data data data data •••)

   响应报文也由三部分组成,一个初始状态行,6个首部行,然后是响应实体。状态行有三个参数,第一个参数描述HTTP版本信息,第二个参数是状态码,第三个参数是状态描述。

   然后首部行,Connection: close通知客户端发送完将关闭TCP连接,Date:首部行指示服务器产生并发送该响应报文的日期和时间;Server: Apache/2.2.3 (CentOS):首部行指示该报文是由一台Apache服务器产生的;Last-Modified:对象最后的修改时间;Content-Length:发送对象的字节数;Content-Type:发送对象的类型。

(4)cookie

   通常一个Web站点希望能够标识用户,为此HTTP使用了cookie。cookie技术有四个组件:

  • 在HTTP响应报文中的一个cookie首部行
  • 在HTTP请求报文中的一个cookie首部行
  • 在用户端系统中保留有一个cookie文 件,并由用户的浏览器进行管理
  • 位于Web站点的一个后端数据库。

(5)Web缓存

   也叫代理服务器,能够代表初 始Web服务器来满足HTTP请求的网络实体。Web缓存器有自己的磁盘存储空间, 并在存储空间中保存最近请求过的对象的副本。

部署缓存服务器的原因:

  • 可以减少对客户请求的响应时间
  • 可以大大减低因特网上的Web流量,从而改善所有应用的性能

3.电子邮件

电子邮件系统主要由三个部分组成:用户代理、邮件服务器和简单邮件传输协议。

(1)SMTP

   SMTP是因特网电子邮件和核心。SMTP用于从发送方的邮件服务器发送报文到接收方的邮件服务器。SMTP不使用中间层服务,无论通信双方身在何处,它都会直接进行连接。且邮件发送方的邮件在发送时,会被放入发送方邮件服务器的邮件队列,如果不能连接上接收方,那么发送方将会不断尝试向接收方发送连接请求,知道邮件被放弃或是连接成功。

(2)SMTP和HTTP的对比

相同点

  • 都是从服务器向客户传送文件
  • 持续的HTTP和SMTP都是使用持续连接

不同点

  • HTTP是一个拉协议,用户使用HTTP从服务器上拉取信息。SMTP是一个推协议,发送邮件服务器把文件推向接收邮件服务器
  • SMTP要求每个报文采用7比特ASCII码格式。HTTP数据不受这种限制
  • HTTP把每个对象封装到它自己的HTTP响应报文中,SMTP则把所有报文对象放在一个报文中

(3)邮件报文格式

From: alice@crepes ・ fr
To: bob@hamburger.edu
Subject: Searching for the meaning of life.

(4)邮件访问协议

POP3

   POP3按照三个阶段进行工作:特许、事务处理以及更新。在特许阶段用户代理发送用户名和口令以鉴别用户,在事务处理阶段,用户代理取回报文,同时在这个阶段,用户代理还可以添加和取消报文删除标记,获取邮件统计信息。最后是更新阶段,它出现在用户使用quit命令之后,目的是结束POP3会话,此时邮件服务器会删除那些被添加了删除标记的邮件。

IMAP

   在使用POP3访问邮件时,一旦用户将邮件下载到本地文件,就能创建邮件文件夹,并将下载的邮件放入邮件文件夹中。然后用户可以删除、移动报文,以及查询报文。但是相较于这种文件夹和报文都保存在本地的方式,移动用户更加喜欢使用一个在远程服务器上的层次文件夹,这样他可以从任何一台机器上对所有报文进行访问。

   IMAP服务器把每个报文和一个文件夹联系起来,当报文第一次到达服务器时,它与收件人的INBOX文件夹相关联。收件人可以将邮件移动到一个新的、由用户创建的文件夹,并进行阅读、删除等操作。与POP3不同,IMAP会在会话中,维护用户的状态信息。IMAP的另一个重要特性就是,它具有允许用户代理获取报文某些部分的命令。

基于Web的电子邮件

   使用这种服务,用户代理就是普通的浏览器,用户和他远程邮箱之间的通信则通过HTTP进行。用户从收件箱到邮件服务器之间使用的都是HTTP协议,但是邮件服务器之间的通信使用的还是SMTP协议。

4.DNS

   因特网上的主机通常由主机名或者IP地址进行标识。

(1)DNS提供的服务

   刚才提到了,主机通常是由主机名称和IP地址进行标识打,而DNS提供的服务,就是进行主机名和IP地址的转换。DNS是:一个由分层的DNS服务器实现的分布式数据库;一个使得主机能够查询分布式数据库的应用层协议。DNS使用UDP协议,端口号为53。

  • 主机别名,有着复杂主机名的主机可以拥有一个或多个别名
  • 邮件服务器别名,邮件服务器同样可以拥有一个或多个别名
  • 负载均衡,在冗余的服务器之间,分配繁忙服务器上的任务

(2)DNS工作机理

只使用一台DNS服务器的因特网

  • 单点故障,如果DNS服务器瘫痪,整个因特网将随之瘫痪
  • 通信容量,单个DNS服务器将要处理所有的DNS查询
  • 远距离集中式数据库,会产生因为通信距离而导致的时延问题
  • 维护,单台服务器将维护整个因特网上的记录

   总之,在单台服务器上运行的DNS服务完全没有任何的扩展能力,因此DNS服务采用了分布式的设计方案。

(2)分布式、层次数据库

   为了解决扩展性的问题,DNS使用了大量的DNS服务器,它们以层次方式组织,并且分布在全世界的范围内。没有一台DNS服务器拥有因特网上的所有主机的映射。相反,这些映射分布在所有的DNS服务器上。总体来说,有三种类型的DNS服务器:根DNS服务器、顶级域DNS服务器和权威DNS服务器。主机向本地DNS服务器的查询过程是递归的,其他过程都是迭代的

(3)DNS缓存

   DNS缓存的原理是,当接收到一条DNS回答时,它能将映射缓存存储在本地存储器中。

(4)DNS记录和报文

   共同实现DNS分布式数据库的所有DNS服务器存储了资源记录RR,RR提供了主机名到IP地址的映射。每个DNS回答报文包含了一条或多条记录,资源记录是一个包含了下列字段的元组:(Name, Value Type TTL)。TLL是记录的生存时间,决定了记录应当从缓存中删除的时间。而Name和Value的取值,取决于Type:

  • 如果Type=A,则Name是主机名,Value是主机名对应的IP地址。
  • 如果Type=NS,则Name是域,而Value是个知道如何获得该域 中主机IP地址的权威DNS服务器的主机名。
  • 如果Type=CNAME,则Value是别名为Name的主机对应的规范主机名。该记录能够向査询的主机提供一个主机名对应的规范主机名。
  • 如果Type=MX,则Value是个别名为Name的邮件服务器的规范主机名。

5.P2P文件分发

   使用P2P体系结构,对总是打开的基础设施服务有最小的依赖,成对间歇连接的主机彼此直接通信。在P2P文件分发中,每个对等方能够向任何其他对等方重新分发它已经收到的该文件的任何部分,从而在分发的过程中,协助服务器。

(1)BitTorrent

   BitTorrent是一种用于文件分发的流行P2P协议。使用BitTorrent的术语来讲,参与一个特定文件分发的所有对等方的集合被称为一个洪流。在一个洪流中的对等方彼此下载等长度的文件块,典型的块长度为256KB。当一个对等方首次加入一个洪流时,它没有块。随着时间的流逝,它累积了越来越多的块。当它下载块时,也为其他对等块上载了多个块。一旦某对等方获得了整个文件,它也许离开洪流,或留在该洪流中并继续向其他对等方上载块。同时,任何对等方可能在任何时候仅具有块的子集就离开该洪流,并在以后重新加入该洪流。

6.视频流和内容分发网络

(1)HTTP流和DASH

   在HTTP流中,视频只是存储在HTTP服务器中作为一个普通的文件,每个文件有一个特定的URL。当用户要看视频时,客户与服务器创建一个TCP连接并发送对该URL的HTTP GET请求。服务器则以底层网络协议和流量条件允许的尽可能快的速率,在一个HTTP响应报文中发送该视频文件。在客户一侧,字节被收集在客户应用缓存中。一旦该缓存中的字节数量超过预先设定的门限,客户应用程序就开始播放,特别是,流式视频应用程序周期性地从客户应用程序缓存中抓取帧,对这些帧解压缩并且在用户屏幕上展现。因此,流式视频应用接收到视频就开始播放,同时缓存该视频后面部分的帧。

   尽管HTTP流在实践中得到广泛部署,但它仍然具有很严重的缺陷,比如说,对于不同用户,或者同一用户的不同时间,用户带宽的大小有很大的不同。因此,DASH(经HTTP的动态适应流)出现了。在DASH中,视频的编码为几个不同的版本,其中每个版本具有不同的比特率,对应于不同的质量水平。客户动态地请求来自不同版本且长度为几秒的视频段数据块。当可用带宽较高时,客户自然地选择来自高速率版本的块,当可用带宽较低时,客户自然地选择来自低速率版本的块。客户用HTTP GET请求报文一次选择一个不同的块。

   DASH运行客户使用不同的以太网速率接入速率流式播放具有不同编码速率的视频。使用低速3G连接的客户能够接收一个低比特率的版本,使用光纤连接的客户能够接收高质量的版本。如果端到端带宽在会话过程中改变的话,DAS允许客户适应可用带宽。

   使用DASH服务后,每个视频版本存储在HTTP服务器中,每个版本都有一个不同的URL。HTTP服务器也有一个告示文件,为每个版本提供了一个URL及其比特率。客户首先请求该告示文件并且得知各种各样的版本。然后客户通过在HTTP GET请求报文中对每块指定一个URL和一个字节范围,一次选择一块。在下载块的同时,客户也测量接收带宽并运行一个速率决定算法来选择下次的请求块。自然的,如果客户缓存的视频很多,并且测量的带宽较高,它将选择一个高速率的版本,否则则会选择一个低速率的版本。因此DASH运行客户自由地在不同的质量等级之间切换。

(2)内容分发网络

   CDN管理分布在多个地理位置上的服务器,在它的服务器中存储视频的副本,并且所有试图将每个用户请求定向到一个将提供最好的用户体验的CDN位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

volit_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值