《计算机网络-自顶向下方法第七版》学习笔记——第二章应用层

一、应用层协议原理

        现代网络应用程序中的两种主流体系结构:客户-服务器体系结构、对等(P2P)体系结构。

1.进程通信

        以操作系统角度来说,进行通信的是进程而不是程序。当多个进程运行在相同的端系统上时,他们使用进程间通信机制相互通信。进程间通信的规则由端系统上的操作系统确定。在两个不同端系统上的进程通过跨越计算机网络交换报文相互通信

        网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。

        进程通过一个称为套接字的软件接口向网络发送报文和从网络接收报文。套接字是同一台主机内应用层与运输层之间的接口,由于该套接字是建立网络应用程序的可编程接口,因此也被称为应用程序和网络之间的应用程序编程接口(API)。

《计算机网络-自顶向下方法第七版》学习笔记——第二章应用层_第1张图片

 2.可供应用程序使用的运输服务

        在发送端的应用程序将报文推进套接字,在套接字的另一侧,运输层协议负责从接收进程的套接字得到该报文。大体可以从四个方面对应用程序服务要求进行分类:可靠数据传输、吞吐量、定时和安全性。

3.因特网提供的运输服务

        因特网(更一般的是TCP/IP网络)为应用程序提供两个运输层协议,即UDP和TCP。

        TCP服务包括面向连接服务和可靠数据传输服务。一个全双工的、无差错按序交付数据的TCP连接通过三次握手建立,在结束报文发送后要关闭连接。同时TCP的拥塞控制机制在网络拥堵时可以抑制发送进程。TCP的加强版是安全套接字层(Secure Sockets Layer,SSL)。

        UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务,没有拥塞控制机制,是无连接的。它没有握手过程,数据可能是乱序到达的,是一种不可靠数据传送服务。

4.应用层协议

        应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。主要定义了以下四点内容:

  • 交换的报文类型。
  • 各种报文类型的语法。
  • 字段的语义。
  • 确定一个进程何时以及如何发送报文,对报文进行响应的规则。

二、web和HTTP

        web的应用层协议是超文本传输协议HTTP,客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话。

        web页面由对象组成,一个对象就是一个文件,比如一个HTML文件,一个JPEG图片等。

        HTTP使用TCP作为它支撑运输协议,不保存关于客户的任何信息,所以说HTTP协议是一个无状态协议。同时HTTP既可以使用持续连接(默认),又可以使用非持续连接。当采用非持续连接时,必须为每一个请求的对象建立和维护一个全新的连接,加重了web服务器的负担。

1.HTTP报文格式

《计算机网络-自顶向下方法第七版》学习笔记——第二章应用层_第2张图片

        HTTP请求报文的第一行叫做请求行,其后继的行叫做首部行。请求行有3个字段:方法字段、URL字段和HTTP版本字段。首部航Host指明对象所在主机;Connection表示是否长链接;User-agent指明用户代理,即向服务器发送请求的浏览器的类型;Accept-language表示用户想得到对象的语言类型,其是一个内容协商首部行。下边是HTTP请求报文、响应报文的通用格式:

《计算机网络-自顶向下方法第七版》学习笔记——第二章应用层_第3张图片

 请求报文(上)和响应报文(下)

《计算机网络-自顶向下方法第七版》学习笔记——第二章应用层_第4张图片

 2.用户和服务器交互:cookie

        虽然无状态的HTTP简化了服务器的设计,但是一个web站点通常希望能够识别用户,为此,HTTP使用了cookie,它允许站点对用户进行跟踪。

        cookie有4个组件:1.在HTTP响应报文中的一个cookie首部行;2在HTTP请求报文中的一个cookie首部行;3.在用户端系统中保留有一个cookie文件,并由用户的浏览器管理;4.位于web站点一个后端数据库。用cookie跟踪用户状态流程如下图:

《计算机网络-自顶向下方法第七版》学习笔记——第二章应用层_第5张图片

3.web缓存

         web缓存器也叫代理服务器,是能够代表初始web服务器来满足HTTP请求的网络实体。Web缓存器有自己的磁盘存储空间, 并在存储空间中保存最近请求过的对象的副本。通过使用内容分发网络(Content Distribution Network, CDN) , Web缓存器正在因特网中发挥着越来越重要的作用。CDN公司在因特网上安装了许多地理上分散的缓存器,因而使大量流量实现了本地化。

4.条件GET方法

        条件GET方法是一种允许缓存器证实它所缓存的对象是最新的机制。如果请求报文使用GET方法,并且请求报文中包含一个“If-Modified-Since”首部行,那么这个HTTP请求报文就是一个条件GET请求报文。

        If-Modified-Since的值是最近一次服务器发送的响应报文的Last-Modified首部行的值,条件GET报文告诉服务器,仅当指定日期后该对象被修改过,才发送该对象。如果没有修改,那么web服务器的响应报文状态行是304Not Modified,且响应体为空。

三、因特网中的电子邮件

        因特网中的电子邮件系统主要由用户代理、邮件服务器和简单邮件传输协议(SMTP)组成。其中邮件服务器形成了电子邮件系统的核心。总体描述图如下:

《计算机网络-自顶向下方法第七版》学习笔记——第二章应用层_第6张图片

1.SMTP

         SMTP是使用TCP可靠数据传输服务的应用层协议,用于向邮件服务器上推邮件。限制所有邮报文的体部分只能采用简单的7比特ASCII表示,即在使用SMTP传邮件之前,需要将二进制多媒体数据编码为ASCII码,并且在传输后要解码还原。

        SMTP一般不使用中间邮件服务器发送邮件,如果接收方邮件服务器没有开机,那么报文会保留在发送方的邮件服务器上等待尝试。

2.SMTP与HTTP对比

        首先,HTTP主要是一个拉协议,用户使用HTTP从服务器拉取信息,TCP连接由接收文件的机器发起;SMTP是一个推协议,发送邮件服务器把文件推向接收邮件服务器,TCP连接由发送文件的机器发起的。

        其次,SMTP要求报文采用7比特ASCII码格式,HTTP数据不受限制。

        其三,HTTP将每个对象封装到其自己的HTTP响应报文中,而SMTP把所有报文对象放在一个报文中。

3.邮件报文格式

        每个首部必须包含有一个From:首部行和一个To:首部行。也许会包含一个可选首部行Subject:。首部之后是一个空白行,然后是以ASCII格式表示的报文体。

4.邮件访问协议

        目前有第三版邮局协议(POP3)、因特网邮件访问协议(IMAP)以及HTTP三种流行的访问协议。

        POP3是一个极简单的邮件访问协议,随着建立TCP连接,POP3按照三个阶段进行工作:特许、事务处理以及更新。在特许阶段,用户代理以明文形式发送用户名和口令以鉴别用户,在事务处理阶段,用户代理取回报文,同时也可以对报文进行删除即取消删除标记。更新阶段出现在客户发送quit命令之后,目的是结束该POP3会话,这时邮件服务器会删除已经标记为删除的报文。

        因为POP3协议不能远程访问,所以IMAP诞生了,IMAP的另一个重要特性是它具有允许用户代理获取报文某些部分的命令。例如,一 个用户代理可以只读取一个报文的报文首部,或只是一个多部分MIME报文的一部分。

        基于web的电子邮件,使用这种服务,用户代理就是普通的浏览器,用 户和他远程邮箱之间的通信则通过HTTP进行。

四、DNS域名系统

        DNS提供主机名到IP地址转换的目录服务。是一个由分层的DNS服务器实现的分布式数据库,是一个使主机能够查询分布式数据库的应用层协议。运行在UDP上,使用53号端口。同时DNS还提供主机别名、邮件服务器别名、负载分配服务。

        DNS层次体现在其主要有三中DNS服务器,分别是根DNS服务器、顶级域DNS服务器、权威DNS服务器,本地DNS服务器通过迭代或递归的方式访问,最终根据主机名(域名)得出主机的IP地址。

        DNS也有缓存的功能,可以极大的减少延迟,加快转换速度。

五、视频流和内容分发网

1.HTTP流和DASH

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

        但是HTTP流有严重缺陷,即所有客户接收到相同编码的视频,尽管对不同的客户 或者对于相同客户的不同时间而言,客户可用的带宽大小有很大不同。这导致了一种新型的基于HTTP的流的研发,它常常被称为经HTTP的动态适应性流(DASH)。

        在DASH中,视频编码为几个不同的版本,其中每个版本 具有不同的比特率,对应于不同的质量水平。 ’客户动态地请求来自不同版本且长度为几秒 的视频段数据块。当可用带宽量较高时,客户自然地选择来自高速率版本的块;当可用带 宽量较低时,客户自然地选择来自低速率版本的块。

        使用DASH后,每个视频版本存储在HTTP服务器中,每个版本都有一个不同的 URL。HTTP服务器也有一个告示文件(manifest file),为每个版本提供了一个URL及其 比特率。客户首先请求该告示文件并且得知各种各样的版本。然后客户通过在HTTP GET 请求报文中对每块指定一个URL和一个字节范围,一次选择一块。在下载块的同时,客 户也测量接收带宽并运行一个速率决定算法来选择下次请求的块。

2.内容分发网CDN

        为了应对向分布于全世界的用户分发巨量视频数据的挑战,几乎所有主要的视频流公司都利用内容分发网(Content Distribution Network, CDN)。 CDN管理分布在多个地理位置 上的服务器,在它的服务器中存储视频(和其他类型的Web内容,包括文档、图片和音 频)的副本,并且所有试图将每个用户请求定向到一个将提供最好的用户体验的CDN位置。

        CDN的服务器安置原则主要有两种。一种是深入,即在全球ISP中部署服务器来深入到ISP的接入网中。另一种是邀请做客,通过在少量关键位置建造大集群来邀请到ISP做客。

        CDN的集群选择策略主要有地理上最邻近和实时测量两种。

【P104-P112是套接字编程讲解,主要以python实现TCP和UDP两种】

你可能感兴趣的:(计算机网络,学习,网络)