自顶向下 第二章 应用层


# 应用层

应用层协议原理

网络应用程序的核心就是写出能够运行在不同的端系统和能通过网络彼此通信的程序。这里的端系统一般都是指较边缘的网络设备,即PC,手机等智能设备,因为这些设备才有应用层一说。网络核心设备这种,路由器,分组交换机这些都是只在较低层起作用,因此网络核心设备并不会在应用层上起作用。

网络应用程序体系结构

现代网络应用程序中所使用的两种主流体系结构

  • 客户-服务器体系结构

    集中式,客户之间不能直接进行通信,例子:web应用,FTP,Telnet以及电子邮件

  • 对等(P2P)体系结构

    分布式,客户之间可以直接进行通信。例子:文件共享(BitTorrent)、对等方协助下载加速器(迅雷),因特网电话和视频会议(Skype)

进程通信

进行通信的实际上是进程,而不是程序。一个进程可以被认为是运行在端系统中的一个程序。当多个进程运行在一台端系统上时,它们使用进程间通信机制进行通信。通信机制由操作系统来确定。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QE2OXwhO-1639495082416)(E:\note-基础知识\images\进程通信.jpg)]

  • 客户进程和服务器进程

    文件从一个进程传输到另一个对等方中的进程。我们通常将这对进程标识为,客户进程和服务器进程。

    客户进程:发起通信的进程,即在该会话开始时发起与其他进程的联系的进程

    服务器进程:在会话开始时等待联系的进程是服务器

    有时也用应用程序的客户端和服务器端来表示。

  • 进程与计算机网络之间的接口 socket

    多数应用程序是由通信进程对组成,每对中的两个进程互相发送报文。从一个进程向另一个进程发送的报文必须通过 socket 的软件接口来向网络发送报文和从网络接受报文。socket 是 同一台主机内的应用层与传输层的接口。开发者可以控制 socket 在应用层端的一切,但是对运输层端几乎没有操作权限。开发者的对运输层的控制仅限于

    • 选职责运输层协议
    • 设定几个运输层参数,最大缓存,最大报文段长度等。

    一旦应用程序开发者选择了一个运输层协议,则应用程序就建立在由该协议提供的运输层服务之上。

  • 进程寻址

    为了向特定目的地发送报文,目的地需要有一个唯一的地址来标识。在这里为了标识接收进程,定义了两种信息

    • IP地址,标识主机的地址
    • 端口号,标识进程的地址

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

一个运输层协议能够为上层所提供的服务

  • 可靠数据传输

    可以确保一端发送的数据正确地,完整地交付给另一端的服务,这样的服务被称为可靠数据传输服务

    相应不能确保的被称为不可靠数据传输服务

  • 吞吐量

    运输层协议提供这样一种服务,能够以某种特定的速率提供确保的可用吞吐量,使用这种服务,该应用程序能够请求 r 比特/秒的确保吞吐量,并且该运输协议能够确保可用吞吐量总是为至少 r 比特/秒

  • 定时

    运输层协议也能提供定时保证

  • 安全性

    还能为应用程序提供一种或者多种安全性服务。

因特网提供的运输服务

  • TCP服务

    面向连接的服务

    可靠的数据传送服务

  • UDP服务

    无连接的

    不可靠的

  • 因特网运输协议所不提供的服务

    吞吐量保证(带宽保证)、定时保证

    为什么时间敏感应用仍然能很好地运行在因特网上,因为这些应用已经被设计成尽最大可能对付这种保证的缺陷。

应用层协议

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

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

区分网络应用和应用层协议

  • 应用层协议只是网络应用的一部分

Web 和 HTTP

HTTP概况

Web的应用层协议——HTTP协议,HTTP使用TCP运输协议。HTTP是一个无状态协议,即HTTP服务器并不会保存关于客户的任何信息。Web使用了客户-服务器应用程序体系结构。

非持续连接和持续连接

非持续连接:每个请求/响应对是经一个单独的 TCP 连接发送

持续连接:所有的请求及其响应经相同的 TCP 连接发送,HTTP默认使用持续连接方式。

HTTP报文格式

  • HTTP请求报文

    请求行 + 首部 + 报文主体

    GET ../page.html HTTP/1.1  请求行
    
    Host: www.someschool.edu  首部行
    Connection: close         首部行
    User-agent:Mozilla/5.0	  首部行
    
    ....(报文主体)
    

    请求的方法

    • GET 常用于请求Web服务器上的资源,一般不用于表单的提交,因为这样的话表单中的数据就会出现在URL中
    • POST 通常用于表单的提交,这样报文主体内容就是表单的内容
    • HEAD 通常用于开发者调试跟踪
    • PUT 上传对象到指定的Web服务器
    • DELETE 删除Web服务器上的对象
  • HTTP响应报文

    HTTP/1.1 200 OK  初始状态行
    Connetion:OK  首部行
    Server:Apache/2.2.3 (CentOS) 首部行
    Last-Modified:Tue,.... 首部行
    Content-Length:6821 首部行
    
    data data data .........
    

    常见状态码

    • 200 OK
    • 301 Moved Permanently 重定向
    • 400 Bad Request 请求的代码错误
    • 404 Not Found
    • 505 HTTP Version Not Supported

    HTTP报文的首部由浏览器自身等众多因素来决定。

用户与服务器的交互:cookie

cookie 允许站点对用户进行追踪,cookie技术有4个组件

  • 在 HTTP 响应报文中的一个 cookie 首部行
  • 在 HTTP 请求报文中的一个 cookie 首部行
  • 在用户端系统中保留有一个 cookie 文件
  • 位于 Web 站点的一个后端数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-puLQozXh-1639495082418)(E:\note-基础知识\images\cookie.jpg)]

Web缓存

Web缓存器,也称代理服务器

为什么要部署代理服务器

  • 代理服务器可以大大减少对客户请求的响应时间
  • 如果用户所请求的对象在代理服务器上,则可以迅速将该对象交给用户

条件 GET 方法

如果请求报文满足

  • 该请求报文使用GET方法
  • 请求报文中包含一个 “If-Modified-Since:” 首部行

那么这个HTTP请求行报文就是一个条件GET请求报文

因特网中的电子邮件

一般由三部分组成

  • 用户代理(例如qq邮箱)
  • 邮件服务器(服务器上存储了多个用户邮箱)
  • 应用层协议

SMTP 邮件传输协议

SMTP采用的运输层协议是TCP连接

SMTP一般不适用中间邮件服务器发送邮件,即使这两个邮件服务器相隔甚远。即建立的TCP连接直接两台邮件服务器。

与HTTP的对比

相同:在传送文件的时候,都采用持续连接的方式

不同:

  • HTTP主要是一个拉协议,及用户使用HTTP从服务器上拉取信息。SMTP基本上是一个推协议,即发送邮件服务器把文件推向接受邮件服务器
  • SMTP要求每个报文(包括主体)采用 7 比特 ASCII 码格式,如果包含了其他字符则必须将该字符编码为 7 比特 ASCII 码 进行编码(受历史因素影响),HTTP则没有这种限制

邮件访问协议

邮件访问使用了客户-服务端体系结构

流行的邮件访问协议

  • 第三版的邮局协议(POP3)
  • 因特网邮件访问协议(IMAP)
  • HTTP

邮件访问协议主要用来将邮件从接收方的邮件服务器传输到接收方的邮件代理

DNS:因特网的目录服务

一个记录主机名->IP地址映射的分布式数据库

DNS提供的服务

  • 一个由分层的 DNS服务器 实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议

DNS服务器通常是运行在BIND软件的Unix机器上,DNS协议运行在UDP之上,使用 53 号端口

DNS通常是由其他应用层协议所使用,下面简单说明浏览器输入 url 向 DNS 发送请求的过程

  • 同一台用户主机上运行着 DNS 应用的客户端
  • 浏览器从上述 URL 中抽取出主机名 www.someschool.edu ,并将这个主机名传给 DNS 应用的客户端
  • DNS 客户端 向 DNS 服务器发送一个包含主机名的请求
  • DNS 客户最终会收到一份回答报文,其中含有对应于该主机名的IP地址
  • 一旦浏览器接收到来自DNS的该IP地址,它能够向位于该IP地址 80 端口 HTTP 服务器进程发起一个 TCP 连接

DNS 还提供一些重要的服务

  • 主机别名

    应用程序可以调用 DNS 来获得主机别名对应的规范主机名以及主机的 IP 地址

  • 邮件服务器别名

  • 负载分配

DNS工作机理概述

  • 分布式、层次数据库(类似因特网的层次)
  • DNS 缓存

P2P文件分发

P2P体系结构,对等方(成对间歇连接的主机)彼此直接通信,对等方包括用户控制的PC等。

例子:从单一服务器向大量对等方分发一个大文件,在P2P文件分发中,每个对等方能够向任何其他对等方重新分发它已经收到的该文件的任何部分,从而在分发过程中协助该服务器。

P2P体系结构的扩展性

对等方除了是比特的消费者外还是它们的重新分发者。(例如迅雷P2P下载,每多一个人下载,下载速度就会越快)

BitTorrent(最为流行的用于文件分发的P2P协议)

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

每个洪流都有一个基础设施节点,称为追踪器(类比客户-服务器体系结构中传统的服务器)。当一个对等方加入某洪流时,它向追踪器注册自己,并周期性通知追踪器它仍然在该洪流中。以这种方式,追踪器跟踪参与在洪流中的对等方。追踪器随机地从参与对等方的集合中选择对等方的一个子集,并将这些子集中的每个对等方的IP地址发给 新进来的对等方。新对等方尝试通过这些IP地址建立并行的TCP连接。新对等方会根据最稀缺优先技术将对自己当前还没有的块选择邻居发出请求。最稀缺优先技术的思路是优先请求自己邻居中副本数量最少的块,其目标是均衡每个块洪流中的副本数量。

分布式散列表(另一种 P2P 应用)
  • 分布式散列表是一种简单的数据库,其数据库记录分布在一个 P2P 系统的多个对等方上。

视频流和内容分发网(CDN)

因特网视频

视频是一系列的图像,通常以一种恒定的速率来展现。

一幅未压缩、数字编码的图像由像素阵列组成,其中每个像素是由一些比特编码来表示亮度和颜色。

视频的一个重要特征就是可被压缩,因此可以用比特率来权衡视频质量。比特率:每s传送的比特数

HTTP流和 DASH

在HTTP中,当响应报文要发送视频文件时,客户端中,字节会被收集在客户应用缓存中,一旦缓存的字节数量超过预先设定的门限,客户应用程序就会开始播放。特别是流式视频应用程序周期性地从客户应用程序缓存中抓取帧,对这些帧解压缩并且在用户屏幕上展示。因此流式视频应用接收到视频就进行播放,同时缓存该视频后面部分的帧。

DASH(经HTTP的动态适应性流)

在DASH中,视频编码为几个不同的版本,其中每个版本具有不同的比特率,对应于不同的质量水平。客户动态地请求来自不同版本且长度为几秒的视频段数据块。

内容分发网(CDN)

出现的背景

  • 随着流式视频用户数量的剧增,如何向位于全世界的所有用户流式传输所有流量同时提供连续播放和高交互性显然是一项有挑战性的任务

解决方法的迭代

  • 最为直接的方法是建立单一的大规模数据中心,在数据中心中存储其所偶有视频,并直接从该数据中心向世界范围的客户传输流式视频

    缺陷:

    • 如果客户远离数据中心,服务器到客户的分组会经过很多ISP,如果期中的任一链路提供的吞吐量小于视频消耗速率,就会带来停滞时延
    • 流行的视频很可能经过相同的通信链路发送许多次,会浪费网络带宽
    • 单个数据中心代表一个单点故障,如果数据中心或者其同向因特网的链路崩溃,它将不能分发任何视频流了
  • 现在的通用解决方法——利用内容分发网 CDN

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

    CDN可以是专用CDN,即为内容供应商所拥有,例如 google

    另一种CDN 是 第三方CDN,做 to B 业务,为内容提供商提供CDN服务

CDN通常采用两种不同的服务器安置原则

  • 深入,即通过在遍及全球的接入ISP中部署服务器集群来深入到ISP的接入网中
  • 邀请做客,通过在少量关键位置建造大集群来邀请到ISP做客,通常放在因特网交换点(IXP)

CDN使用一种简单的拉策略,当一个客户向一个为存储视频的集群请求某视频,该集群会检索该视频从另一个集群请求该视频,发送的同时在本地存储一份副本,类似因特网缓存

CDN操作

  • 截获 客户端发出的请求
  • 确定此时适合用于该用户的 CDN 集群
  • 将客户的请i去重定向到该集群的某一台 CDN 服务器

大多数CDN利用DNS来完成截获和重定向请求

集群选择策略

  • 任何CDN部署的核心就是集群选择策略,即动态地将客户定向到 CDN 中的某个服务器集群或者数据中心的机制,CDN一般采用专用的集群选择策略

    • 地理上最为邻近

      字面意思,通过使用商用地理位置数据库,,将每个 LDNS IP地址都映射到一个地理位置上,每个CDN选择地理上最为接近的集群。

    • 实时测量

      CDN让它的每个集群周期性地向位于全世界的所有 LDNS 发送探测分组,动态决定最好的集群。但许多 LDNS 被配置成不会影响这些探测。

socket编程:生成网络应用

开发者创建一个网络应用时,其主要任务就是编写客户程序和服务器程序的代码

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值