计算机网络网--应用层

目录

  • 应用层概述
  • 一.网络应用模型
  • [1.1 C/S模型(client/server,客户/服务器模型)](#1.1 C/S模型(client/server,客户/服务器模型))
  • [1.2 P2P(peer to peer)模型 与 P2P文件分发](#1.2 P2P(peer to peer)模型 与 P2P文件分发)
  • [1.3 混合体:客户-服务器和对等体系结构](#1.3 混合体:客户-服务器和对等体系结构)
  • 二.应用程序相关
  • [2.1 Web和HTTP](#2.1 Web和HTTP)
    • [1.1 一些术语](#1.1 一些术语)
    • [1.2 HTTP概述](#1.2 HTTP概述)
    • [1.3 HTTP连接](#1.3 HTTP连接)
      • [3.1 非持续连接的HTTP](#3.1 非持续连接的HTTP)
      • 响应时间模型与RTT
      • [3.2 持续连接的HTTP](#3.2 持续连接的HTTP)
    • [1.4 HTTP报文格式](#1.4 HTTP报文格式)
      • [4.1 HTTP请求报文](#4.1 HTTP请求报文)
        • [1. HTTP请求报文通用格式](#1. HTTP请求报文通用格式)
        • [2. 提交表单输入](#2. 提交表单输入)
        • [3. HTTP版本类型](#3. HTTP版本类型)
      • [4.2 HTTP响应报文](#4.2 HTTP响应报文)
        • [1. 响应报文格式](#1. 响应报文格式)
        • [2. 响应状态码](#2. 响应状态码)
    • [1.5 用户与服务器的交互:Cookie](#1.5 用户与服务器的交互:Cookie)
      • [5.1 用户-服务器状态:Cookies](#5.1 用户-服务器状态:Cookies)
      • [5.2 Cookies:维护状态](#5.2 Cookies:维护状态)
      • [5.3 Cookies便利与隐私问题](#5.3 Cookies便利与隐私问题)
    • [1.6 Web缓存](#1.6 Web缓存)
      • [6.1 定义解释](#6.1 定义解释)
      • 推高速缓存与拉高速缓冲
      • [6.2 缓存示例](#6.2 缓存示例)
        • [1. 更快的接入链路](#1. 更快的接入链路)
        • [2. 安装本地缓存](#2. 安装本地缓存)
    • [1.7 条件GET方法](#1.7 条件GET方法)
  • [2.2 文件传输协议FTP](#2.2 文件传输协议FTP)
  • [2.3 电子邮件Email](#2.3 电子邮件Email)
    • [2.3.1 电子邮件概述](#2.3.1 电子邮件概述)
    • [2.3.2 电子邮件系统组成结构](#2.3.2 电子邮件系统组成结构)
    • [2.3.3 邮件报文格式](#2.3.3 邮件报文格式)
    • [2.3.4 简单邮件传输协议SMTP](#2.3.4 简单邮件传输协议SMTP)
      • 1.SMTP协议工作
      • [2. 局限](#2. 局限)
      • [3. 示例](#3. 示例)
      • [4. SMTP格式](#4. SMTP格式)
      • [5. 总结](#5. 总结)
    • [2.3.5 第三版邮局协议POP3](#2.3.5 第三版邮局协议POP3)
      • [1. 工作位置图示](#1. 工作位置图示)
      • [2. 工作方式](#2. 工作方式)
      • [3. POP3工作阶段](#3. POP3工作阶段)
    • [2.3.6 多媒体扩展 MIME](#2.3.6 多媒体扩展 MIME)
    • [2.3.7 因特网邮件访问协议IMAP](#2.3.7 因特网邮件访问协议IMAP)
    • [2.3.8 基于万维网的电子邮件](#2.3.8 基于万维网的电子邮件)
  • [2.4 DNS(域名系统)](#2.4 DNS(域名系统))
    • [2.4.1 域名](#2.4.1 域名)
    • [2.4.2 域名服务器](#2.4.2 域名服务器)
    • [2.4.3 DNS工作机理方面](#2.4.3 DNS工作机理方面)
      • [1. DNS缓存](#1. DNS缓存)
      • [2. 资源记录](#2. 资源记录)
      • [3. DNS工作过程:](#3. DNS工作过程:)
      • 查询
      • 递归查询
      • 迭代查询
      • [4. DNS协议与报文](#4. DNS协议与报文)
      • [5. 维护问题:新增域](#5. 维护问题:新增域)
    • [2.4.4 DNS安全问题](#2.4.4 DNS安全问题)
  • [2.5 万维网WWW](#2.5 万维网WWW)
  • [2.6 CDN](#2.6 CDN)
    • [1. 因特网视频](#1. 因特网视频)
    • [2. HTTP流和DASH](#2. HTTP流和DASH)
      • [2.1 HTTP流](#2.1 HTTP流)
      • [2.2 DASH](#2.2 DASH)
    • [3. 内容分发网CDN](#3. 内容分发网CDN)
      • [3.1 CDN](#3.1 CDN)
      • [3.2 CDN操作](#3.2 CDN操作)
      • [3.3 集群选择策略](#3.3 集群选择策略)
    • [4. 学习案例](#4. 学习案例)
      • [4.1 案例学习: Netflix视频分发](#4.1 案例学习: Netflix视频分发)
      • [4.2 案例学习: Youtube](#4.2 案例学习: Youtube)
      • [4.3 案例学习: 看看](#4.3 案例学习: 看看)

应用层概述

  • 特点
    • 网络核心中没有应用层软件
    • 网络核心没有应用层功能
    • 网络应用只在端系统上存在,快速网络应用开发和部署

1.进程通信

在计算机网络中,进行通信的是进程 而不是程序。不同端系统上,进程通过计算机网络交换报文而相互通信。

  • 进程与计算机网络接口
    • 进程通过称为套接字的软件接口向网络发送报文和从网络接收报文,套接字就相当于进程这个"房子"的"门"。套接字也可称为应用程序可编程接口(API,Application Programming Interface)

    • 应用程序开发者可以控制套接字在应用层端的一切 ,但对运输层的控制仅限于:

      • 选择运输层协议
      • 也许能设定几个运输层参数,如最大缓存和最大报文段长度
  • 进程寻址
    • 为了标识接收进程,定义了:①主机地址;②目的主机中指定接收进程的标识符

      • 主机由IP地址(32比特的量)唯一标识
      • 端口号可以用于指定目的主机的接收进程(接收套接字)

      所有因特网标准协议周知端口号列表可在:http://www.iana.org 找到。

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

  • 可靠数据传输
    分组在计算机网络中可能由于路由器缓存溢出或比特损毁而被丢弃
    • 部分应用程序在数据传输过程,数据丢失一小部分对文件影响不会很大,如多媒体应用(音频/视频等,出现小干扰不会影响过大)
    • 但有些应用程序如电子邮件,文件传输,远程主机访问,web文档传输以及金融应用等,数据丢失会产生灾难性后果,因此需要提供可靠数据传输以保证数据完整。
  • 吞吐量
    • 带宽敏感 应用
      对吞吐量有特定要求,如果吞吐量比所需吞吐量低,则会或以较低速率对数据进行编码,或放弃发送数据(吞吐量过低而几乎没有或根本没有用)。如:因特网电话应用程序。
    • 弹性 应用
      根据可用带宽大小利用可用吞吐量(当然还是越多越好)。如:电子邮件,文件传输,web传送。
  • 安全性
    • 由运输协议 对 主机发送数据前加密,数据交付给接收进程之前解密。(在发送与接收之间提供机密性)
    • 运输协议还提供 数据完整性与端点鉴别

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

  • TCP服务
    • 特点

      • 面向连接的服务(三次握手之后建立TCP连接以传输数据)

      • 可靠的数据传送服务

        • 无差错,适当顺序交付数据
        • 没有字节丢失和冗余
      • 全双工连接

      • 结束报文发送后必须拆除连接

    • TCP拥塞控制机制

      • 出现网络拥塞时,TCP会抑制发送进程
      • 拥塞控制也试图限制每个TCP连接,使达到公平共享网络带宽。

不一定为通信进程带来之间好处,为因特网整体带来好处

  • UDP服务

    不提供不必要服务的轻量级运输协议,仅提供最小服务。

    • 特点:
      • 无连接(因此没有握手过程)
      • 不可靠数据传送
        • 数据可能丢失
        • 数据可能无序到达
    • 没有拥塞控制机制
      • 发送端可以选定任何速率向网络层注入数据(由于中间链路带宽受限或拥塞可能会导致实际吞吐量小于该速率
  • 其他

一.网络应用模型

1.1 C/S模型(client/server,客户/服务器模型)

定义

C/S模型是指Client/Server模型,是一种常见的网络应用程序架构。在这种模型中,有一个客户端程序(Client)和一个服务器程序(Server),客户端和服务器通过特定的协议进行通信。

工作原理

在这个模型中,客户端程序向服务器发送请求,服务器接收请求并返回响应,客户端再根据响应进行相应的操作。C/S模型可以通过网络实现,使得客户端和服务器可以位于不同的计算机上从而实现分布式计算和数据存储

功能特点

  • 客户端:

    • 主动与服务器通信
    • 与互联网有间歇性的连接
    • 可能是动态IP 地址
    • 不直接与其它客户端通信
  • 服务器:

    • 需要保持运行以提供服务
    • 固定的IP地址和周知的端口号(约定)
    • 数据中心进行扩展

优势

  • 交互性:客户端可以实时地与服务器进行交互,实现数据的实时交换。
  • 可扩展性:C/S模型具有良好的扩展性,可以根据需要增加客户端或服务器,实现系统的可扩展性。
  • 安全性 :由于客户端和服务器之间的通信是加密的,因此数据传输比较安全。

应用

C/S模型的应用非常广泛,例如网上银行、在线购物、社交网络等都需要使用这种模型。

在C/S模型中,客户端通常需要安装独立的的应用程序,而服务器则是提供公共服务的的地方,可以被多个客户端同时访问。

例如网络游戏、在线银行、电子商务等。

1.2 P2P(peer to peer)模型 与 P2P文件分发

2.1 P2P模型

定义

P2P模型是指对等点模型(Peer-to-Peer模型)。这是一种网络架构模式,每个节点都充当着客户端和服务器的角色,可以向其他节点请求和提供服务。使得网络中的每个节点都可以直接相互通信,而不需要 通过中央服务器进行中转

特点

  • IP地址可改变:节点可以有动态IP地址
  • 可扩展性好:P2P模型可以无限扩展,不受服务器数量的限制,使得大规模的分布式计算和文件共享成为可能。
  • 网络健壮性强:网络不容易瘫痪,P2P网络中的每个节点都可以提供数据,因此部分主机或节点坏掉或者大量主机涌入网络时,主机之间依然可以正常请求与提供服务(资源足够,带宽不受限),不会影响整个网络的功能。
  • (几乎)没有一直运行的 "服务器"
  • 任意端系统之间可以进行通信

  • 自扩展性-新peer节点带来新的服务能力,当然也带来新的服务请求

  • 参与的主机间歇性连接且可以改变IP 地址

  • P2P模型也存在缺点

    • 1.搜索效率:在P2P模型中,搜索特定资源需要遍历整个网络,效率较低。
    • 2.资源共享问题:在P2P模型中,资源共享需要占用网络带宽和节点计算资源,可能会影响网络性能。
    • 3.难以管理
      • 原因主要有以下几点:
        • 去中心化:P2P模型取消了中心服务器,每个节点都充当着客户端和服务器的角色,管理变得分散和复杂。
        • 节点匿名性:在P2P模型中,节点之间的通信通常是基于匿名的方式,这使得管理者难以识别和定位特定节点。
        • 动态性:P2P模型中的节点是动态变化的,随时可能加入或离开网络,这使得管理者难以跟踪和监控网络状态。
        • 资源共享问题:在P2P模型中,资源共享需要占用网络带宽和节点计算资源,可能会影响网络性能。同时,也存在一些资源共享的问题,如版权侵犯、非法内容等。

因此,对于P2P模型的管理需要采取一些特殊的措施,如基于信誉的系统、过滤器、内容审查等,来实现对P2P网络的有效管理。

应用

P2P模型可以应用于各种领域,例如文件共享、分布式计算、网络存储等。P2P模型适用于大规模、分布式的计算和文件共享场景,如BitTorrent、Emule等文件共享软件。

* 例子: Gnutella,迅雷

2.2 P2P文件分发

  • 分发时间:
    C/S(客户端/服务器)模型中,分发时间通常指的是客户端向服务器请求数据或服务,以及服务器响应并返回数据或服务所需的时间
    P2P模型中,指N个对等方得到文件副本所需要的时间。
  • F:文件长度
  • dn:第n节点下载速率
  • un:第n节点上载速率

1.P2P体系结构的拓展性

文件分发:C/S vs P2P


C/S模式

P2P模式

2.Bittorrent

2.1 概述

  • 定义:一种用于文件分发的流行P2P协议。
  • 洪流:用Bittorrent术语讲,是参与一个特定文件分发的所有对等方集合。
    一个对等方可以在任何时候仅具有块的子集就离开洪流。

在一个洪流中对等方下载等长的文件块,典型块长度为256KB。


2.2 请求,发送文件块

  • 最稀缺优先技术:一个对等方优先请求在他的邻居中副本数量最少的块,以均衡每个块在洪流中的副本数量。

2.3 其他






*2.4 DHT

DHT(Distributed Hash Table )属于结构化P2P模型。

各个节点之间维护的是一种树状或环状有序拓扑。每个节点 把自己的IP地址的哈希作为16字节id值。

以环状拓扑为例,各个节点将id值按照大小构成一个环,形成有序网络拓扑结构。

文件内容也作16字节哈希值为id值,6-88维护在88节点位置,查找该文件时直接向88节点请求,找到文件所在位置。
5 88 1011 199

1.3 混合体:客户-服务器和对等体系结构

定义

混合体:客户-服务器和对等体系结构是一种结合了客户-服务器模型和对等体系结构的网络结构模式。在混合体中,客户端和服务器端之间的通信和对等节点之间的通信可以同时进行,相互协作完成特定的任务

  • C/S和P2P体系结构的混合体 应用实例
    • Napster(MP3下载软件)
      • 文件搜索:集中
        • 主机在中心服务器上注册其资源
        • 主机向中心服务器查询资源位置
      • 文件传输:P2P
        • 任意Peer节点之间
    • 即时通信
      • 在线检测:集中
        • 当用户上线时,向中心服务器注册其IP地址
        • 用户与中心服务器联系,以找到其在线好友的位置
      • 两个用户之间聊天:P2P

优点

混合体结构具有以下优点:

扩展性:混合体结构具有良好的扩展性,可以随时增加新的节点或组件,提高系统的性能和容量。

灵活性强:混合体结构中的节点可以直接相互通信,无需经过中心服务器,使得网络连接更加灵活。

可靠性高:混合体结构中的每个节点都承担着一定的负载,使得网络更加可靠和稳定。

缺点

但是,混合体结构也存在一些缺点:

复杂性高:混合体结构需要同时处理客户-服务器通信和对等节点之间的通信,系统设计和实现相对复杂。
资源共享问题:在混合体结构中,资源共享需要占用网络带宽和节点计算资源,可能会影响网络性能

应用

混合体结构适用于需要同时支持客户-服务器通信和对等节点之间的通信的场景,如一些分布式计算、文件共享、社交网络等应用。

二.应用程序相关

2.1 Web和HTTP

1.1 一些术语

基本概念

  • Web页面:(也叫文档)由一些对象组成。
  • 对象:可以是HTML,JPEG图像,Java小程序,声音剪辑文件等。
  • Web页面 含有一个基本的HTML文件,该HTML文件又包含若干对象的引用(链接)。web网页嵌套着许多对象的链接,而不是对象本身。
    web页面的对象数量 = HTML基本文件+其他(图像,视频等)个数
  • 通过URL对每个对象进行引用(访问)
    • 访问协议,用户名,口令,端口等

WWW

URL

  • 定义:

    统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序(www)上用于指定信息位置的表示方法

  • 格式:

    URL的一般语法格式为:
    protocol :// hostname[:port] / path / [:parameters][?query]#fragment

    其中带方括号的为可选项

    • protocol(协议):用于指定所使用的协议,例如常用的协议名有:HTTP (超文本传输协议),HTTPS(安全超文本传输协议),FTP (文件传输协议),FTPS (安全文件传输协议),SFTP (SSH 文件传输协议)等等。

    HTTPS,是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。它使用安全套接字层(SSL)进行信息交换,因此加密的详细内容就需要SSL。

    https://前缀的URL是使用 SSL/TLS 安全协议,在请求和响应之间进行加密。

    HTTPS协议的主要作用是将http协议进行加密,通过建立安全通道来保证数据传输的安全。

    在HTTPS通信过程中,使用了数字证书来进行身份验证和加密通信。

    数字证书是由可信任的第三方机构颁发的,用于验证通信双方的的身份是否合法。

    HTTPS使用的是443端口号,而不是像HTTP使用的80端口号。

    • hostname(主机名):是指存放资源的服务器的域名系统(DNS) 主机名或 IP 地址。部分网站支持匿名访问,有些则需要输入用户名与口令才能访问。在主机名前包含连接到服务器所需的用户名和密码(格式:username:password@hostname)。

    • port(端口号) :用于指定资源所在的端口号。默认情况下,HTTP 使用的端口号是80,HTTPS 使用的端口号是443。

    标准的 URL 语法中端口号是放在主机名后面 的,而不是放在 URL 的最后面。例如,以下是一个包含端口号的 URL:

    http://www.example.com:8080/index.html

    在这个例子中,主机名为 www.example.com,端口号为 8080,路径为 /index.html。

    然而,有些非标准的 URL 可能会将端口号放在最后面 ,但这并不是标准的 URL 语法。这样的 URL 可能在某些特定情况下能够正常工作,但在大多数情况下可能会导致问题

    因此,建议遵守标准的 URL 语法规范,将端口号放在主机名后面。

    • path(路径):用于指定资源所在的路径,即文件或目录的相对路径。

    • parameters(查询参数):用于指定一些查询参数,以便在请求时向服务器传递一些额外的信息。

    • query(查询)

      可选,用于给动态网页 (如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数可有多个参数,用"&"符号隔开,每个参数的名和值用"="符号隔开

    • fragment(片段标识符):用于指定资源的一部分,例如视频中的时间戳或文档中的页码等等。

1.2 HTTP概述

HTTP与HTTPS
RFC解释

"超文本"(Hyper Text,HT )是超级文本的中文缩写。

  • 超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。显示文本及与文本之间相关的内容。
  • 其中的文字包含有可以链结到其他位置或者文档的连结,将不同对象通过超链接连接在一起形成网状结构,允许从当前阅读位置直接切换到超文本连结所指向的位置。

超文本传输协议(Hypertext Transfer Protocol,HTTP)

  • 简单的请求-响应协议
  • 它通常运行在TCP之上
  • 它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
  • 请求和响应消息的头以ASCII形式给出
  • 消息内容则具有一个类似MIME的格式。
  • 套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象
  • TCP(Transmission Control Protocol):是一种可靠的、面向连接的传输协议,可以实现数据包的可靠传输和流量控制等功能。
  • UDP(User Datagram Protocol):
    是一种不可靠的无连接协议,可以实现快速数据传输,但可能会存在数据丢失等问题。
  • 面向无连接的服务
    指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线进行传输
  • 面向连接的服务
    通信双方在通信时,要事先建立一条通信线路 ,其过程有建立连接、使用连接和释放连接三个过程
    在计算机网络中,有状态和无状态是指网络协议是否保存网络连接状态的信息。
    1.无状态协议是指协议不保存关于网络连接状态的信息。无状态协议不对先前请求或响应进行记录,每次请求都需要提供完整的信息。例如,HTTP协议就是一个无状态的协议,它不会保存客户端发送的请求信息,每个请求都是独立的。
    2.有状态协议则是指协议保存关于网络连接状态的信息。有状态协议会对先前的请求或响应进行记录,以便后续处理。例如,FTP协议就是一个有状态的协议,它会在服务器端保存客户端的连接状态信息,以便后续处理。
    在计算机网络中,有状态和无状态协议各有优缺点。无状态协议可以更好地支持并发处理和负载均衡 ,因为无状态协议不会保存连接状态信息,因此更容易实现多个请求的处理同样的服务器资源条件下支持用户数量更多

而有状态协议则可以更好地支持需要保存连接状态信息的场景,例如需要保持会话的Web应用程序。
需要注意的是,有状态协议如果处理不当容易受到攻击,例如FTP服务器的匿名访问权限容易导致FTP服务器被攻击。因此,在实际应用中需要根据具体情况选择合适的协议。

1.3 HTTP连接

HTTP连接分为 持续(持久)连接非持续(非持久)连接

如果想看某次HTTP连接采用哪种方式可以抓包后根据HTTP请求或响应报文中Connection的值来判断。

  • 非持续连接

  • 持续连接

    Connection: Keep-Alive
    

3.1 非持续连接的HTTP

非持续连接指在客户端和服务器建立连接后,客户端和服务器只能在一次请求和响应之间进行通信(即TCP连接只进行一次数据传输),之后连接将被关闭

  • 最多只有一个对象在TCP连接上发送
  • 下载多个对象需要多个TCP连接
  • HTTP/1.0使用非持续连接

非持续连接传输数据的流程图示例

响应时间模型与RTT

  • RTT包括:分组传播时延,分组在中间路由器和交换机上的排队时延,分组处理时延。

3.2 持续连接的HTTP

  • 持续连接指请求和响应可以交错进行,多个对象在一个(在客户端与服务器之间的)TCP连接上传输。所有的请求/响应经过相同TCP连接发送。
  • HTTP/1.1默认使用持续连接

1.4 HTTP报文格式

HTTP规范[RFC:1945;RFC2616;RFC7540]包含对HTTP报文格式的定义。

HTTP报文类型:

  • 请求报文
  • 响应报文

4.1 HTTP请求报文

1. HTTP请求报文通用格式


实体体在使用POST方法时被才会被使用,当使用GET方法时实体体为空。

  • HTTP请求行:方法字段,URL字段,HTTP版本字段

    • 方法字段类型:GET,POST,HEAD,PUT,DELETE
      • GET:经常在HTML表单中使用,并在(表单字段中)所请求的URL中包括输入的数据。在输入数据与正常URL直间要用英文状态下问号(?)隔开,多个参数用&符合结合起来,共同组成拓展URL链接。例如:http://www.somesite.com/animalsearch?monkey\&bananas。

      • POST:用户提交表单时,HTTP客户常常使用POST方法。在请求报文的实体体中包含的就是用户在表单字段中输入的值。(部分网站会对输入的值进行加密,如下图password)

      • HEAD:类似于GET。当服务器收到一个HEAD方法请求报文后,会使用一个HTTP报文进行响应,但是不会返回请求对象。常用于web应用程序的调试跟踪。

      • PUT:常与web发行工具联合工具使用,允许用户上传对象到指定web服务器指定路径(目录)。

      • DELETE:允许用户或应用程序删除web服务器上的对象。

  • 首部行:

    • HOST:对象所在主机
    • Connection:是否使用持久连接
    • User-agent:用户代理(即浏览器向服务器发送请求的浏览器类型)
    • Accept-language:表示用户想要得到的对象的版本(如果对象存在),fr表示希望得到法语版本。

2. 提交表单输入

3. HTTP版本类型

4.2 HTTP响应报文

1. 响应报文格式

  • 通用响应报文格式

  • 下图为上个例子中请求报文的响应报文

  • HTTP状态行

    • 版本:HTTP/1.1
    • 状态码:200 ,语句:OK
  • 首部行:

    • Connection:连接方式(持续,非持续)。
    • Date :服务器产生并发送该响应报文的日期和时间(服务器从它的文件系统中检索到对象,将该对象插入到响应报文并发送该响应报文的时间
    • Server:产生(响应)报文的服务器,类似于请求报文中的User-agent。
    • Last-Modified :对象创建或最后修改的日期和时间。
    • Content-Length :发送对象的字节数。
    • Content-Type :指示实体体中对象的文本格式。(图中为HTML文本)

2. 响应状态码

1.5 用户与服务器的交互:Cookie

5.1 用户-服务器状态:Cookies

  • 用户第一次访问使用cookie的电子商务时,服务器为他分配一个ID(以关联该用户的行为,把其之后的行为和用户信息等归结到一个ID下,便于为用户提供个性化服务,同时也会保存用户信息以识别。)

  • 之后发往该服务器的请求都会携带一个首部行 cookie:xxx。(数字或字母代码)

  • 由于cookie存储用户信息的功能,可以使HTTP从无状态协议变为"有状态协议",便于支撑更多应用,提供更多服务。

5.2 Cookies:维护状态

  • 使用cookie跟踪用户状态:

5.3 Cookies便利与隐私问题

1.6 Web缓存

6.1 定义解释

  • web缓存器(Web cache):也叫代理服务器(proxy server),是能够代替初始服务器来满足HTTP请求的网络实体。
  • web缓存器有自己的磁盘存储空间,保留最近请求过的对象的副本
  • 工作过程:
    • 当某次请求的对象在缓存器中存在时,web缓存器就直接用HTTP响应报文向客户浏览器返回该对象
    • web缓存器中没有该对象时,打开一个与该对象的初始服务器的TCP连接。在该缓存器到初始服务器的TCP连接上发送该对象的HTTP请求。
      • 缓存器收到该请求响应后,在本地存储空间存储一份副本,并通过客户浏览器与web缓存器之间的TCP连接发送给客户浏览器。
      • 这个过程中,web缓存器既是客户又是服务器。

推高速缓存与拉高速缓冲

推高速缓存和拉高速缓存都是网络缓存的一种,主要用来缓解网络延迟和提高数据传输速度。

推高速缓存 是指将数据从服务器推到客户的浏览器 ,当客户需要这些数据时,浏览器直接从缓存中获取,而不需要再次从服务器下载。一些浏览器会将经常访问的网页缓存到本地,以减少网络延迟和提高访问速度。
拉高速缓存 是指客户浏览器发起请求时,服务器将数据缓存在本地网络中 ,当客户需要这些数据时,直接从本地网络中获取,而不需要再次从服务器下载。这种方式常用于视频、图片等大数据的缓存,可以减少网络延迟和提高数据传输速度。
总的来说,推高速缓存和拉高速缓存都是为了提高网络性能,减少网络延迟,提高数据传输速度。

6.2 缓存示例

1. 更快的接入链路

2. 安装本地缓存


1.7 条件GET方法

  • 产生:
    高速缓存虽然能够减少响应时间,但存放在缓存器中的对象副本可能是陈旧的,为了确保对象是最新的,HTTP引入了条件GET方法。
  • 构成条件:
    • 请求报文使用GET方法
    • 请求报文包含一个"If-Modified-Since"首部行

If-Modified-Since首部行的值为服务器发送的响应报文中 Last-Modified 首部行的值

  • 该请求报文告诉服务器,仅当指定日期之后对象被修改过,才发送该对象
    • 如果对象被修改过,发送修改后的对象并更新缓存
    • 否则不发送该对象,响应报文如下图示例:

2.2 文件传输协议FTP

2.2.1 定义

  • 作用
    早期用于分享文件的协议(包括上传与下载文件),FTP服务器的作用例如当下的迅雷,百度,云盘

网络管理员维护FTP服务器。分享者(某个用户)通过FTP客户端上载(上传)文件来分享。其他用户通过FTP客户端访问这些内容。

  • 构成
    用户接口,本地文件接口。FTP服务器有存储硬盘(云硬盘),在本地文件与服务器文件目录传输文件。
sql 复制代码
TFTP:TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进
          行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
      TFTP通常用于从TFTP服务器下载或上传文件,
          例如操作系统引导程序、配置文件等。TFTP客户端和TFTP服务器之间的通信是基于UDP协议进行的,端口号为69。
      与FTP协议相比,TFTP协议更加简单和轻量级,但功能较少。TFTP协议不支持用户认证,只能以匿名方式进行文件传输。
      此外,TFTP协议不支持文件目录操作,只能进行文件传输。
      在TFTP协议中,有两种传输模式,分别是读写模式(读写模式)和只读模式(只读模式):
          读写模式:客户端可以从服务器下载文件,也可以向服务器上传文件。
          只读模式:客户端只能从服务器下载文件,不能向服务器上传文件。

      需要注意的是,由于TFTP协议的安全性较低,因此在实际应用中,通常会使用FTP协议来代替TFTP协议。
  • FTP服务器与客户端

Windows系统自带FTP命令
用户可以通过以下步骤使用FTP命令:

打开命令提示符。
输入"ftp"并按下回车键,进入FTP模式。
输入FTP服务器的地址,并按照提示进行操作。

需要注意的是,在使用FTP命令时,用户需要具备一定的计算机基础知识和技能,以及正确的安全措施和操作流程,以确保数据的安全和可靠性2

2.2.2 工作阶段

1.建立连接

FTP客户端向FTP服务器发送连接请求时,FTP服务器会向客户端发送连接应答,建立起FTP控制连接

然后,FTP客户端需要向FTP服务器发送用户名和密码进行身份验证,如果身份验证成功,就可以开始进行文件传输等操作

2.身份验证

用户身份验证属于控制连接的内容,是在连接建立之后进行的,控制连接参见后面。

  • 输入用户名密码进行登录(FTP服务器进行用户名密码传输采用明文传输,具有安全风险,容易被黑客使用抓包工具截获)
  • 匿名登录

3.文件操作与传输

建立连接后会建立(不是同时建立)两个不同的TCP连接,分别称为控制连接和数据连接。

在控制连接上进行指令的传输,在数据连接上传输文件数据。

2.2.3 FTP控制连接与数据连接

FTP控制连接与数据连接分开

控制连接

在控制连接上

  • 用户身份认证

    user,password 使用的是明文传输

  • 客户端向服务器发送指令,如切换目录,删除,上传、下载文件的指令。

    数据命令的传输称之为"带外的"

FTP命令与响应状态码解释示例:
上图中命令样例中小写单词为可变参数,具体的值。大写单词为专有名词,是固定的。

RETR(retrieve)指令是从服务器下载文件指令,指定某个文件名。

STOR上载(上传)。
上载 下载 客户端 服务器

当客户端向服务器发送下载文件命令之后,服务器的使用自己的20号端口主动与客户端建立数据连接

数据连接

在数据连接上:

  • 进行文件的下载,上载(上传)等数据流的传输。

数据的传输在数据连接上进行。数据传输称之为"带内的"

在FTP的数据连接过程中,客户端发送一个FTP命令给服务器,告诉服务器需要传送或者接收数据。服务器在收到命令后,会用自己的20号端口向客户端发送一个确认响应。客户端在收到响应后,会打开一个数据传输连接,并向服务器发送一个数据连接请求。服务器在收到请求后,会用自己的20号端口与客户进程建立数据传送连接。
需要注意的是,FTP的数据连接端口是动态分配的,不是固定的20号端口。但是一般来说,FTP的数据连接端口都是20号端口,因为FTP协议规定使用20号端口进行数据连接。

FTP是有状态的协议,服务器需要维护客户端状态。

HTTP的传输是在一条TCP连接上进行的。HTTP初始设计是无状态的,通过cookie的作用可以把它变成有状态的协议

图解

具体工作过程可参见下图:

在计算机网络中,有状态和无状态是指网络协议是否保存网络连接状态的信息。

无状态协议是指协议不保存关于网络连接状态的信息。无状态协议不对先前请求或响应进行记录,每次请求都需要提供完整的信息。例如,HTTP协议就是一个无状态的协议,它不会保存客户端发送的请求信息,每个请求都是独立的。

有状态协议则是指协议保存关于网络连接状态的信息。有状态协议会对先前的请求或响应进行记录,以便后续处理。例如,FTP协议就是一个有状态的协议,它会在服务器端保存客户端的连接状态信息,以便后续处理。

在计算机网络中,有状态和无状态协议各有优缺点。无状态协议可以更好地支持并发处理和负载均衡,因为无状态协议不会保存连接状态信息,因此更容易实现多个请求的处理。而有状态协议则可以更好地支持需要保存连接状态信息的场景,例如需要保持会话的Web应用程序。

需要注意的是,有状态协议如果处理不当容易受到攻击,例如FTP服务器的匿名访问权限容易导致FTP服务器被攻击。因此,在实际应用中需要根据具体情况选择合适的协议。

2.3 电子邮件Email

2.3.1 电子邮件概述

电子邮件是利用计算机网络进行的一种通信方式,可以用于在互联网上发送和接收数字信息。

电子邮件的基本构成包括邮件头和邮件体,其中邮件头包括发件人、收件人、主题、日期等信息,邮件体是邮件内容的主要部分,可以包含文字、图片、链接等元素。

电子邮件的发送和接收过程一般需要经过三个环节:用户编写邮件并发送到发件服务器,发件服务器根据收件人的地址将邮件转发到中转服务器,中转服务器再将邮件转发到最终的收件服务器。

收件人可以通过客户端程序(如Outlook、Thunderbird等)连接到收件服务器并下载邮件,就可以阅读邮件内容。

使用电子邮件需要设置SMTP、POP3等协议,这些协议规定了电子邮件的传输和接收标准。

2.3.2 电子邮件系统组成结构

电子邮件包括:用户代理,邮件服务器,协议

电子邮件协议包括发送协议(SMTP)和拉取协议(POP3,IMAP,HTTP)。由于发送和接收邮件是推送和拉取报文的操作,它们也可以称为"推"式协议,"拉"式协议。

发送方(用户代理),发送协议SMTP,发送方邮件服务器,SMTP协议,接收方邮件服务器,拉取协议,接收方(用户代理)。

SMTP是"推"式的协议,发送方将邮件数据推送到SMTP服务器的外出报文队列;
HTTP主要是"拉"式协议,通过浏览器客户端将服务端的文件随时拉取下来。基于web浏览器的电子邮件中,HTTP协议也可以起到发送协议的作用。

  • 总体工作流程


2.3.3 邮件报文格式

2.3.4 简单邮件传输协议SMTP

SMTP(Simple Mail Transfer Protocol)是一种用于电子邮件传输的协议。

SMTP协议定义了邮件传输过程中邮件的发送方和接收方之间的通信协议,包括邮件的格式、传输方式、认证机制等方面的规定。

1.SMTP协议工作

SMTP协议工作流程如下:

TCP三次握手。

发送连接申请SMTP HELO。

发送发件人信息SMTP MAIL FROM。

发送收件人信息SMTP RCPT TO。

发送邮件内容指令SMTP DATA。

发送邮件内容。

邮件传输完毕,SMTP QUIT。

SMTP中有一些重要的协议命令,例如:

HELO:用于向接收方服务器标识自己的主机名。

MAIL FROM:用于指定发件人的地址。

RCPT TO:用于指定收件人的地址。

DATA:SMTP DATA命令用于指定邮件正文的开始,并告诉SMTP服务器可以开始接收邮件内容。DATA后面应为邮件文本,并以单行"."结束。

要点:

  • C/S:客户端/服务器模式
  • TCP连接
  • 直接传输
    从发送方服务器直接传输到接收方服务器,中间不经过其他服务器转存储。
  • 端口号
    默认使用25号端口在客户端与服务器传输报文。
  • 通信阶段
    • 连接建立(握手)
    • 邮件发送(传输报文)
    • 连接释放(关闭)
  • 命令/响应交互
    • 命令:ASCII文本(14条命令,几个字母)
    • 响应:状态码和状态信息(21种应答信息:三位数字代码+简单文字说明)
  • 限制
    • 报文必须为7位ASCII码
  • 持久连接
    • 一次TCP连接可以按顺序发送多个邮件,全部发送完毕后关闭连接。

2. 局限

  • SMTP协议不足:只能传输7比特ASCII邮件数据,包括邮件首部和主体。如果邮件中存在没有经过ASCII编码的数据,将对其编码后再传输。 在因特网最初时代这种设计是明智的,因为没有人会在邮件中传输视频,图片等大型数据流。

3. 示例

  • 简单SMTP交互

4. SMTP格式

5. 总结

HTTP主要是"拉",也可以"推"。

2.3.5 第三版邮局协议POP3

POP3是一个非常简单的邮件访问协议,在接收方阅读邮件时,由于SMTP不支持拉文件,因此有弊端。诞生了第三代邮件阅读协议POP3,作用是从接收方的SMTP服务器把邮件送到接收方邮箱。

1. 工作位置图示

2. 工作方式

POP3有两种工作方式:下载并保留(保留在接收方服务器),这种工作方式可以使多个客户端(如手机,mac,电脑,传真机等)都能下载并阅读。

下载并删除 工作方式则仅支持下载一次就会删除。比如用手机接收了邮件,那么就不能在其他设备在次从邮件服务器接收到。

3. POP3工作阶段

  • 特许阶段
    用户代理发送(明文形式)用户名与口令以鉴别用户。
  • 事务处理阶段
    • 用户代理取回报文
    • 对报文作删除标记,取消报文删除标记
    • 获取邮件统计信息
  • 更新阶段:在用户发出quit命令之后出现
    • 结束POP3会话
    • 删除被标记为删除的报文

2.3.6 多媒体扩展 MIME

MIME支持将非ASCII字节进行编码再转换为ASCII转交给SMTP进行传输。常见是将汉字等进行base64编码再转换。

2.3.7 因特网邮件访问协议IMAP

POP3协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法,为了解决这个问题,产生因特网邮件访问协议IMAP。

POP3与IMAP

2.3.8 基于万维网的电子邮件


用户到邮件服务器都是HTTP协议,包括发送方与接收方。但是邮件服务器与邮件服务器之间的传输依然是使用SMTP协议

2.4 DNS(域名系统)

由来:

计算机的标识方式有 IP地址 和 主机名 两种。

其中主机名因易于记忆而被人们普遍接受,但主机名几乎不提供计算机在因特网中位置的信息。

而路由器更喜欢定长的,有层次结构的IP地址。

为了折中这两种需求,需要一种能将主机名转换为IP地址的目录服务,也就是域名系统DNS(Domain Name System)的主要任务。

特点:

  • 分层的、基于域的命名机制
  • 若干分布式的数据库完成名字到IP地址的转换
  • 运行在UDP上端口为53的应用服务
  • 核心的Internet功能,但以应用层协议实现
    • 在网络边缘(端系统,主机的应用层)处理复杂性

功能:

2.4.1 域名

  • 定义:
    域名 (Domain Name)是因特网的一项核心服务,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,它采用分级结构。

域名由两种不同的字符集组成:ASCII和Unicode。ASCII字符集包括128个字符,如数字、字母和符号。Unicode字符集包括几乎所有国家和地区的文字、符号和符号。
在ASCII字符集中,每一级域名长度不超过63个字符。而在Unicode字符集中,虽然域名长度没有明确的限制,但仍然需要遵守域名系统规范(DNS)的限制。根据DNS规范,每一级域名长度不能超过253个字符。
需要注意的是,虽然每一级域名长度有限制,但整个域名的长度是没有限制的

域名可以用来在数据传输时标识计算机的电子方位,有时也指地理位置

例如:我们常用的门户网站,如搜狐、新浪等,它们都是用大写字母来作域名的。

  • 特点
    • 1.一个层面命名设备可能会有很多重名,但通过结合主机名和所在的域,可以唯一地标识互联网上的每一台主机
    • 2.DNS采用层次树状结构命名方法
  • 解析问题

单点故障:如果只有一个DNS服务器,一旦其损坏将影响巨大

通信容量:一个DNS服务器处理所有DNS查询,工作量过大

维护问题:一台DNS服务器需要为所有因特网主机保留记录,使得中央数据库庞大,并且还要因添加新的主机而更新。
远距离的集中式数据库:因为一台DNS服务器无法"邻近"所有用户,传播时将经过低速和拥塞链路导致严重时延。

域名的层级分类

下图中 "叶" 只是一个通用代指,并不是说所有域名都归于一个主机或设备。"根"同理(DNS根服务器共有13个)

从树根到树叶,上层域有一个指向其子域服务器的指针。
一系列划分域 一系列划分域 一系列划分域 一系列划分域 一系列划分域 根 顶级域1 顶级域2 顶级域3 顶级域... 二级域1 二级域2 二级域3 二级域... 二级域... 二级域... 三级域... ... 叶

顶级域分为两类:

  • 通用的(Generic)
  • 国家的(Countries)

下面几张图有重复,看看就行。

下图出现的反向域名 arpa 作用是将IP地址逆向解析为域名

以下拓展摘自百度AI:

arpa是逆向域名系统(逆向DNS)的缩写,用于将IP地址解析为域名。

在互联网上,IP地址是唯一标识计算机或设备的地址,而域名则是为了方便人们记忆和访问这些地址而使用的字符串。逆向域名系统的作用就是通过IP地址反向解析出对应的域名。

arpa域名字符集与一般的域名字符集不同,它只包含数字和字母,不包含国家、地区或符号等特殊字符。

arpa域名通常用于以下几种情况:
反向域名解析:通过IP地址反向解析出对应的域名,用于网络管理和安全监控等。

DNS黑名单:将恶意软件或网络攻击者的IP地址加入到arpa域名的黑名单中,以限制其访问网络资源。

邮件服务器:arpa域名用于邮件服务器,以便于接收和发送电子邮件。

临时域名:当一个域名被删除或过期时,其IP地址可能仍然需要被访问,此时可以使用arpa域名作为临时替代品。
需要注意的是,arpa域名的使用需要遵守特定的规范和标准,例如逆向DNS解析协议(DNS Reverse Resolution Protocol)等。

域名的构成

  • 命名设备的域名
    主机名.第N级域名.(...).第二级域名.顶级域名

    从树叶开始,每过一个层级用句点分隔开

  • 命名一个域的域名(对某个域做标识)

    从树枝开始到顶级域。

    如:ustc.edu.cn (中国科技大学域名)

注:(少数采用)设备也可以直接挂在顶级域名或二级域名之下,不必非要顺着所有域层级来命名。

如:

域名管理

.cn:中国的一个顶级域名

.jp:日本的一个顶级域名

2.4.2 域名服务器

DNS:根名字服务器

互联网共有13个根服务器 (分布在:欧洲,北美(大部分),日本),不同国家域名划分不一定一样

权威服务器

  • 前置

    为了解决域名的维护(域名到IP地址转换)和解析问题,划分出区域(zone)的概念:
    下图中每个圈就是一个区域。

  • 定义
    是否是某个域的权威DNS服务器看是否维护中这个区域的域名到IP地址对应关系

    权威服务器 :清楚本区域内部域名与IP对应关系

TLD服务器

本地名字服务器(Local Name Server)

地址使用手工配置或动态配置

名字服务器(Name Server)

2.4.3 DNS工作机理方面

1. DNS缓存

为了改善时延性能并减少在互联网上传输的DNS报文数量,DNS广泛采用了缓存技术。

  • 原理
    在一个请求链中,DNS服务器收到一个DNS应答(如包含某个主机名到IP地址的映射)时,它能将映射缓存在本地存储器中。

由于主机和主机名与IP地址间的映射不是永久的,DNS服务器在一段时间后(通常设置为两天),将丢弃缓存信息。

  • 产生的影响
    本地服务器也能缓存 TLD 服务器的 IP 地址,因而允许本地DNS绕过查询链中根DNS服务器。事实上,由于缓存的存在,除了少数DNS查询以外,根服务器被绕过了。

2. 资源记录

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

资源记录是一个包含了下列字段的四元组:

(Name,Vaule,Type,TTL),具体见下图:

sql 复制代码
资源记录可以类比于数据库的记录方法
  • TTL(生存时间 time to live):是指某个记录的生存时间,决定了某个资源记录删除的时间。
    • 1.TTL为无限大:指权威值
    • 2.TTL为有限值: 指缓冲值

下面给出的例子,忽略掉TTL字段。Name和Vaule的值取决于Type:

(结构图)

(原书)

  • 资源记录的一个例子:

3. DNS工作过程:

查询

如果本地服务器有缓存,则直接返回缓存信息(主机与IP映射)。如果没有缓存,需要查询具体映射。

查询方法有以下两种:

  • 递归查询
  • 迭代查询

递归查询

简单来说就是主机任意找一个根服务器,由于通常上一级知道下一级信息,然后从根服务器开始一级一级往下查找,直到最终查到结果。

迭代查询

上一级不会明确下一级的信息,但会有一个指定方向,相当于"踢皮球"。

4. DNS协议与报文

DNS报文有查询报文和回答报文两种,它们的格式都是相同的。结构如下图:

idenfication即id号

(原书参考)

5. 维护问题:新增域

2.4.4 DNS安全问题

总的来说,DNS比较健壮

2.5 万维网WWW

2.6 CDN

1. 因特网视频

视频

  • 定义:一系列以恒定速率(如每秒24或30张图像)来展现的图像。
  • 特点:可以被压缩(因而可以用比特率^1^来权衡视频质量)

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

  • 比特率与音、视频压缩的关系:
    比特率越高,传送数据速度越快,简单的说就是比特率越高,音、视频的质量就越好,但编码后的文件就越大;如果比特率越少则情况刚好相反。
    • 例如:低质量视频:100kbps;流式高分辨率电影:超过3Mbps;用于4K流式展望的超过10Mbps。


视频流

视频流是指将视频数据以流的形式进行传输这种传输方式可以实时观看视频内容,而不需要等待整个视频文件下载完成。视频流技术使用了流媒体协议,例如HTTP Live Streaming(HLS)和Real-time Messaging Protocol(RTMP)等,使得视频可以在各种设备上流畅播放。视频流技术广泛应用于在线视频播放、直播、视频会议等领域。

流式视频

  • 定义:
    流式视频是指在数据 通过互联网到达计算机的同时在显示器上播放的网络视频 。与可下载的互联网视频不同,流媒体形式在收到压缩数据后即开始播放,从而消除了下载时可能伴随病毒的担忧。但是,由于视频在接收数据时播放,视频可能会被慢速连接中断,并可能会自动暂停并重新启动,以尝试"缓冲"数据。此外,与可下载视频不同,流式视频不会"保留"在计算机上;只有当主网站决定继续发布视频时,才可以访问流式视频到网站。

因此,视频流是一种传输方式,而流式视频是一种播放方式视频流可以以流式视频的方式进行播放,而流式视频必须使用视频流技术进行传输

  • 性能度量:平均端到端吞吐量

平均端到端吞吐量是指单位时间内成功地传送数据的数量,也就是传输速率。吞吐量和带宽是两个不同的概念,带宽是指链路的能力,单位是比特每秒(bps),是设计值;而吞吐量是实际测试的传输速率,单位也是bps。平均端到端吞吐量通常用来衡量网络传输性能,可以通过网络延迟、传输速度等指标来评估。

  • 例子:使用流式视频的公司:Netflix,YouTube(谷歌),亚马逊和优酷等。

2. HTTP流和DASH

2.1 HTTP流

  • 定义:

    HTTP流(HTTP streaming)是一种在HTTP协议下进行实时数据传输的技术。它允许服务器将数据以流的形式发送给客户端,而无需等待整个响应完全生成。这种方式可以实现实时性要求较高的应用,如视频直播、音频流传输等。HTTP流可以通过多种方式实现,包括长轮询、服务器推送事件(Server-Sent Events)和WebSocket等。这些技术都允许服务器主动向客户端发送数据,而不需要客户端主动请求。HTTP流的实现可以提供更好的用户体验和更高效的网络通信。

  • 特点:

    在HTTP流中,视频只是存储在HTTP服务器中作为一个普通文件,每个文件有一个特定的URL

  • HTTP流播放视频的工作原理:

  • 1.客户端发起请求

客户端使用HTTP协议向服务器发起视频播放请求(TCP连接)。请求中通常包含视频的URL或其他必要的参数。

    1. 服务器响应

服务器接收到客户端的请求后,开始准备视频数据。服务器使用一种支持流式传输的视频格式,如MPEG-DASH(Dynamic Adaptive Streaming over HTTP)或HLS(HTTP Live Streaming)。

    1. 客户端接收和播放

客户端接收的视频字节被收集在应用缓存中,当缓存中的字节数量超过设定门限时,客户应用程序开始播放。特别的,流式视频应用程序周期性的从客户应用程序缓存中抓取帧,对这些帧解压缩并呈现在用户屏幕上 ,因此,流式视频应用接收到视频就开始播放,同时缓存视频后面部分的帧。

通过以上步骤,HTTP流播放视频实现了实时的视频传输和播放。这种方式可以根据网络条件和设备性能进行自适应调整,提供更好的观看体验。同时,使用分段传输的方式,可以在保证视频连续播放的同时,提高网络传输的效率。

  • 缺点:尽管对不同客户或相同客户的不同时间而言,可用带宽大小不同,但是所有用户接收到相同编码的视频。(这导致了新型的基于HTTP流的研发,即DASH)

2.2 DASH

DASH(Dynamic Adaptive Streaming over HTTP)(基于 / 经HTTP的动态适应性流)
使用DASH后,每个视频版本存储在HTTP服务器,每个版本都有一个不同的URL

  • 特点:
    • 在DASH中,视频编码分为几个不同版本,每个版本具有不同比特率,对应不同的质量水平。
    • 客户请求 :客户端动态地请求来自不同版本且长度为几秒的视频数据块。使用HTTP GET请求报文一次选择一个不同的块
    • 带宽与版本
      • 带宽较高 时:高速率的版本块
      • 带宽较低 时:低速率的版本块
    • 带宽变化适应性如果端到端的带宽在会话过程中发生改变,DASH允许客户适应可用带宽。(例如:当移动用户相对基站移动时,能感觉到带宽波动。)
  • 告示文件(manifest file)
  • 总述


3. 内容分发网CDN

对于一个因特网视频公司提供流式视频服务最直接的方法或许时建立一个单一的大规模数据中心 ,存储所有视频,并向全世界范围客户传输流式视频。

但存在三个问题

1.出现停滞时延的可能性随中间通信链路数量增加而增加

2.流行的视频可能经过相同通信链路多次发送,导致网络带宽的浪费和公司需要给ISP的费用增加

3.单点故障。数据中心崩溃则无法发送视频。

3.1 CDN

  • 定义:
    内容分发网 (CDN : Content Delivery Network)是一种分布式网络系统,通过将内容缓存到多个地理位置和服务器上,以提高网站或其他互联网应用的性能和可靠性。

  • 分类:

    专用CDN,由内容提供商自己所有。例如,谷歌的CDN分发YouTube视频和其他类型内容。

    第三方CDN,代表多个内容提供商发表内容。

  • CDN的工作原理 :将网站的内容分发到靠近用户的地方,以便用户可以快速获取所需的内容。这可以通过将内容存储在分布在全球的各个节点上实现。当用户请求网站内容时,CDN会根据用户的地理位置和网络条件选择最合适的节点将内容传递给用户

  • CDN的主要优点包括:

    性能提升:CDN可以将内容存储在靠近用户的地方,从而减少内容的传输延迟和网络拥塞,提高用户访问网站的速度和性能。
    可靠性增强:CDN可以通过多个节点同时提供内容,如果某个节点出现故障或网络故障,其他节点可以自动接替,
               确保用户可以继续访问网站。
    安全性提高:CDN可以提供DDoS攻击防护、CC攻击防护等安全服务,保护网站免受网络攻击。
    节省成本:  使用CDN可以减少服务器负载和带宽成本,提高网站的成本效益。
    

CDN被广泛用于各种互联网应用,如网站、视频流媒体、游戏等,可以提高用户体验和网站性能。

  • 服务器安置原则
    • 深入

    • 邀请做客

3.2 CDN操作

客户端使用浏览器指令检索特定视频(由URL标识)时,

CDN必须截获该请求以便能够:
1.确定适合的CDN服务集群。
2.将 客户请求重定向到该集群某台服务器。

大多数CDN利用DNS来截获和重定向请求。如下图示:

  • 1.用户访问目标URL的网页
  • 2.用户主机发送DNS请求
  • 3.本地DNS服务器(LDNS)把DNS请求中继给权威服务器,并得到一个KingCDN域的主机名
  • 4.LDNS发送第二个请求,发送对象为3步骤得到的主机名,并得到IP地址
  • 5.LDNS向转发内容服务CDN的IP地址
  • 6.客户接受到IP后创建TCP连接,并发送HTTP GET请求。

3.3 集群选择策略

CDN的集群选择策略是CDN部署的核心之一,目的是将客户定向到CDN中某个服务器集群或数据中心的机制。常见的集群选择策略包括:

地理最近策略:指派客户到地理上最为临近的集群,这种选择策略忽略了时延和可用带宽随因特网路径时间而变化,总是为特定的客户指派相同的集群。
实时测量策略:基于集群和客户之间的时延和丢包性能执行周期性检查,这种策略可以实时测量集群和客户之间的网络路径,并根据测量结果选择最优的集群。

此外,还有其他集群选择策略,如基于负载均衡的策略、基于DNS解析的策略等。总之,CDN的集群选择策略是为了提高网站的性能和可靠性,根据不同的因素选择最优的集群,并提供更好的用户体验。

4. 学习案例

4.1 案例学习: Netflix视频分发

  • 主要部件:亚马逊云,专用CDN基础设施
  • 亚马逊云处理的关键功能:
    • 1.内容摄取:用户分发电影之前,Netflix必须首先获取和处理该电影。接收电影母带并上载到亚马逊云主机
    • 2.内容处理:为每部电影按不同格式和比特率生成不同的版本,允许使用DASH经HTTP适应性播放流。
    • 3.向其CDN上载版本:某电影所有版本生成后 ,亚马逊云中的主机向其CDN上载它们
  • 补充:Netflix创建了自己专用的CDN,现在它从这些专用CDN发送它所有的视频,(Netflix仍使用Akamai来分发它的Web网页。)所以Netflix已经能够简化并定制其CDN设计。
  • 特点:
    • 1.包含适应性流和CDN分发
    • 2.不需要使用DNS重定向将特殊用户连接到一台CDN服务器 ;相反,Netflix软件(运行在亚马逊云中)直接告知该用户使用一台特定CDN服务器。
    • 3.Netflix CDN使用推高速缓存而不是拉高速缓存:内容在非高峰时段的预定时间被推入服务器,而不是在高峰缓存未命中时动态地被推入。

推高速缓存和拉高速缓存都是网络缓存的一种,主要用来缓解网络延迟和提高数据传输速度。
推高速缓存 是指将数据从服务器推到客户的浏览器 ,当客户需要这些数据时,浏览器直接从缓存中获取,而不需要再次从服务器下载。一些浏览器会将经常访问的网页缓存到本地,以减少网络延迟和提高访问速度。
拉高速缓存 是指客户浏览器发起请求时,服务器将数据缓存在本地网络中 ,当客户需要这些数据时,直接从本地网络中获取,而不需要再次从服务器下载。这种方式常用于视频、图片等大数据的缓存,可以减少网络延迟和提高数据传输速度。
总的来说,推高速缓存和拉高速缓存都是为了提高网络性能,减少网络延迟,提高数据传输速度。

4.2 案例学习: Youtube

2005年4月开始服务,在2006年11月被谷歌公司收购。谷歌/Youtube设计和协议是专用的。

  • 特点:
    • 谷歌使用专用CDN分发视频,从几百个ISP和IXP位置安装服务器集群及它的数据中心分发Youtube的视频。
    • 使用拉高速缓存和DNS重定向
    • 选择策略:大部分时间 ,谷歌的集群选择策略将客户定向到某个集群,使客户与集群之间RTT最低 。但有时为了平衡经集群的负载,有时客户经DNS被定向到更远的集群。
    • 没有应用适应性流(如DASH),要求用户人工选择版本。
    • 为了节省 将被重定向或提前终止浪费的带宽和服务器资源 ,获取视频目标量后使用HTTP字节范围请求来限制传输的数据流

4.3 案例学习: 看看

看看(迅雷公司拥有并运行)使用P2P交付而不是客户-服务器交付。

  • P2P流式视频特点:
    • 一个对等方请求查看视频时,它联系一个跟踪器查找具有该视频副本的其他对等方,并向其请求视频块。
    • 请求优先给予即将播放的块,以确保连续播放

  1. 比特率是指每秒传送的比特数,单位为bps(Bit Per Second)。表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示,而比特就是二进制里面最小的单位,要么是0,要么是1。 ↩︎
相关推荐
不爱学英文的码字机器19 分钟前
[Linux] Shell 命令及运行原理
linux·运维·服务器
cdut_suye30 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
qq_4336184434 分钟前
shell 编程(三)
linux·运维·服务器
网安墨雨1 小时前
常用网络协议
网络·网络协议
Tlzns1 小时前
Linux网络——UDP的运用
linux·网络·udp
丘狸尾1 小时前
[cisco 模拟器] ftp服务器配置
android·运维·服务器
黑客老陈1 小时前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss
大猫和小黄1 小时前
Windows、CentOS环境下搭建自己的版本管理资料库:GitBlit
linux·服务器·windows·git
Joyner20181 小时前
【Linux】ubuntu通过远程命令行启动桌面应用
linux·服务器·ubuntu
ghostwritten1 小时前
Linux Swap: 深入解析 mkswap, mkfs.swap, 和 swapon
linux·运维·服务器