在计算机网络中,进行通信的是进程而不是程序。不同端系统上,进程通过计算机网络交换报文而相互通信。
进程通过称为套接字的软件接口向网络发送报文和从网络接收报文,套接字就相当于进程这个“房子”的“门”。套接字也可称为应用程序可编程接口(API,Application Programming Interface)。
应用程序开发者可以控制套接字在应用层端的一切,但对运输层的控制仅限于:
所有因特网标准协议周知端口号列表可在:http://www.iana.org 找到。
特点
面向连接的服务(三次握手之后建立TCP连接以传输数据)
可靠的数据传送服务
全双工连接
结束报文发送后必须拆除连接
TCP拥塞控制机制
不一定为通信进程带来之间好处,为因特网整体带来好处
UDP服务
不提供不必要服务的轻量级运输协议,仅提供最小服务。
C/S模型是指Client/Server模型,是一种常见的网络应用程序架构。在这种模型中,有一个客户端程序(Client)和一个服务器程序(Server),客户端和服务器通过特定的协议进行通信。
在这个模型中,客户端程序向服务器发送请求,服务器接收请求并返回响应,客户端再根据响应进行相应的操作。C/S模型可以通过网络实现,使得客户端和服务器可以位于不同的计算机上,从而实现分布式计算和数据存储
。
客户端:
服务器:
通信是加密的
,因此数据传输比较安全。C/S模型的应用非常广泛,例如网上银行、在线购物、社交网络等都需要使用这种模型。
在C/S模型中,客户端通常需要安装独立的的应用程序,而服务器则是提供公共服务的的地方,可以被多个客户端同时访问。
例如网络游戏、在线银行、电子商务等。
P2P模型是指对等点模型(Peer-to-Peer模型)。这是一种网络架构模式,每个节点都充当着客户端和服务器的角色,可以向其他节点请求和提供服务。使得网络中的每个节点都可以直接相互通信,而不需要通过中央服务器进行中转。
可扩展性好
:P2P模型可以无限扩展,不受服务器数量的限制,使得大规模的分布式计算和文件共享成为可能。网络健壮性强
:网络不容易瘫痪,P2P网络中的每个节点都可以提供数据,因此部分主机或节点坏掉或者大量主机涌入网络时,主机之间依然可以正常请求与提供服务(资源足够,带宽不受限),不会影响整个网络的功能。任意端系统之间可以进行通信
自扩展性-新peer节点带来新的服务能力,当然也带来新的服务请求
参与的主机间歇性连接且可以改变IP 地址
P2P模型也存在缺点:
搜索特定资源需要遍历整个网络
,效率较低。因此,对于P2P模型的管理需要采取一些特殊的措施,如基于信誉的系统、过滤器、内容审查等,来实现对P2P网络的有效管理。
P2P模型可以应用于各种领域,例如文件共享、分布式计算、网络存储等。P2P模型适用于大规模、分布式的计算和文件共享场景,如BitTorrent、Emule等文件共享软件。
* 例子: Gnutella,迅雷
C/S(客户端/服务器)模型
中,分发时间通常指的是客户端向服务器请求数据或服务,以及服务器响应并返回数据或服务所需的时间。P2P模型
中,指N个对等方得到文件副本所需要的时间。在一个洪流中对等方下载等长的文件块,典型块长度为256KB。
DHT(Distributed Hash Table )属于结构化P2P模型。
各个节点之间维护的是一种树状或环状有序拓扑。每个节点 把自己的IP地址的哈希作为16字节id值。
以环状拓扑为例,各个节点将id值按照大小构成一个环,形成有序网络拓扑结构。
文件内容也作16字节哈希值为id值,6-88维护在88节点位置,查找该文件时直接向88节点请求,找到文件所在位置。
混合体:客户-服务器和对等体系结构是一种结合了客户-服务器模型和对等体系结构的网络结构模式。在混合体中,客户端和服务器端之间的通信和对等节点之间的通信可以同时进行,相互协作完成特定的任务。
混合体结构具有以下优点:
扩展性:混合体结构具有良好的扩展性,可以随时增加新的节点或组件,提高系统的性能和容量。
灵活性强:混合体结构中的节点可以直接相互通信,无需经过中心服务器,使得网络连接更加灵活。
可靠性高:混合体结构中的每个节点都承担着一定的负载,使得网络更加可靠和稳定。
但是,混合体结构也存在一些缺点:
复杂性高:混合体结构需要同时处理客户-服务器通信和对等节点之间的通信,系统设计和实现相对复杂。
资源共享问题:在混合体结构中,资源共享需要占用网络带宽和节点计算资源,可能会影响网络性能。
混合体结构适用于需要同时支持客户-服务器通信和对等节点之间的通信的场景,如一些分布式计算、文件共享、社交网络等应用。
链接
)。web网页嵌套着许多对象的链接,而不是对象本身。URL
对每个对象进行引用(访问)
访问协议,用户名,口令,端口等
定义:
统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序(www)上用于指定信息位置的表示方法
格式:
URL的一般语法格式为:
protocol :// hostname[:port] / path / [:parameters][?query]#fragment
其中带方括号的为可选项
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(片段标识符):用于指定资源的一部分,例如视频中的时间戳或文档中的页码等等。
“超文本”(Hyper Text,HT )是超级文本的中文缩写。
对象
通过超链接连接在一起形成网状结构,允许从当前阅读位置直接切换到超文本连结所指向的位置。超文本传输协议(Hypertext Transfer Protocol,HTTP)
请求和响应消息的头以ASCII形式给出
;
- 面向无连接的服务
指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线进行传输
- 面向连接的服务
通信双方在通信时,要事先建立一条通信线路,其过程有建立连接、使用连接和释放连接三个过程
在计算机网络中,有状态和无状态是指网络协议是否保存网络连接状态的信息。
1.无状态协议是指协议不保存关于网络连接状态的信息。无状态协议不对先前请求或响应进行记录,每次请求都需要提供完整的信息。例如,HTTP协议就是一个无状态的协议,它不会保存客户端发送的请求信息,每个请求都是独立的。
2.有状态协议则是指协议保存关于网络连接状态的信息。有状态协议会对先前的请求或响应进行记录,以便后续处理。例如,FTP协议就是一个有状态的协议,它会在服务器端保存客户端的连接状态信息,以便后续处理。
在计算机网络中,有状态和无状态协议各有优缺点。无状态协议可以更好地支持并发处理和负载均衡,因为无状态协议不会保存连接状态信息,因此更容易实现多个请求的处理,同样的服务器资源条件下支持用户数量更多。
而有状态协议则可以更好地支持需要保存连接状态信息的场景,例如需要保持会话的Web应用程序。
需要注意的是,有状态协议如果处理不当容易受到攻击,例如FTP服务器的匿名访问权限容易导致FTP服务器被攻击。因此,在实际应用中需要根据具体情况选择合适的协议。
HTTP连接分为 持续(持久)连接
和 非持续(非持久)连接
如果想看某次HTTP连接采用哪种方式可以抓包后根据HTTP请求或响应报文中Connection的值来判断。
非持续连接指在客户端和服务器建立连接后,客户端和服务器只能在一次请求和响应之间进行通信(即TCP连接只进行一次数据传输),之后连接将被关闭
一个对象
在TCP连接上发送HTTP规范[RFC:1945;RFC2616;RFC7540]包含对HTTP报文格式的定义。
HTTP报文类型:
实体体在使用POST方法时被才会被使用,当使用GET方法时实体体为空。
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服务器上的对象。
HTTP状态行
首部行:
服务器从它的文件系统中检索到对象,将该对象插入到响应报文并发送该响应报文的时间
)用户第一次访问使用cookie的电子商务时,服务器为他分配一个ID(以关联该用户的行为,把其之后的行为和用户信息等归结到一个ID下,便于为用户提供个性化服务,同时也会保存用户信息以识别。)
之后发往该服务器的请求都会携带一个首部行 cookie:xxx。(数字或字母代码)
由于cookie存储用户信息的功能,可以使HTTP从无状态协议变为“有状态协议”,便于支撑更多应用,提供更多服务。
推高速缓存和拉高速缓存都是网络缓存的一种,主要用来缓解网络延迟和提高数据传输速度。
推高速缓存是指将数据从服务器推到客户的浏览器,当客户需要这些数据时,浏览器直接从缓存中获取,而不需要再次从服务器下载。一些浏览器会将经常访问的网页缓存到本地,以减少网络延迟和提高访问速度。
拉高速缓存是指客户浏览器发起请求时,服务器将数据缓存在本地网络中,当客户需要这些数据时,直接从本地网络中获取,而不需要再次从服务器下载。这种方式常用于视频、图片等大数据的缓存,可以减少网络延迟和提高数据传输速度。
总的来说,推高速缓存和拉高速缓存都是为了提高网络性能,减少网络延迟,提高数据传输速度。
If-Modified-Since首部行的值为服务器发送的响应报文中 Last-Modified 首部行的值
网络管理员维护FTP服务器。分享者(某个用户)通过FTP客户端上载(上传)文件来分享。其他用户通过FTP客户端访问这些内容。
TFTP:TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进
行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
TFTP通常用于从TFTP服务器下载或上传文件,
例如操作系统引导程序、配置文件等。TFTP客户端和TFTP服务器之间的通信是基于UDP协议进行的,端口号为69。
与FTP协议相比,TFTP协议更加简单和轻量级,但功能较少。TFTP协议不支持用户认证,只能以匿名方式进行文件传输。
此外,TFTP协议不支持文件目录操作,只能进行文件传输。
在TFTP协议中,有两种传输模式,分别是读写模式(读写模式)和只读模式(只读模式):
读写模式:客户端可以从服务器下载文件,也可以向服务器上传文件。
只读模式:客户端只能从服务器下载文件,不能向服务器上传文件。
需要注意的是,由于TFTP协议的安全性较低,因此在实际应用中,通常会使用FTP协议来代替TFTP协议。
Windows系统自带FTP命令
用户可以通过以下步骤使用FTP命令:
打开命令提示符。
输入“ftp”并按下回车键,进入FTP模式。
输入FTP服务器的地址,并按照提示进行操作。
需要注意的是,在使用FTP命令时,用户需要具备一定的计算机基础知识和技能,以及正确的安全措施和操作流程,以确保数据的安全和可靠性2
当FTP客户端向FTP服务器发送连接请求时,FTP服务器会向客户端发送连接应答,建立起FTP控制连接
。
然后,FTP客户端需要向FTP服务器发送用户名和密码进行身份验证,如果身份验证成功,就可以开始进行文件传输等操作
用户身份验证属于控制连接的内容,是在连接建立之后进行的,控制连接参见后面。
建立连接后会建立(不是同时建立)两个不同的TCP连接,分别称为控制连接和数据连接。
在控制连接上进行指令的传输,在数据连接上传输文件数据。
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服务器被攻击。因此,在实际应用中需要根据具体情况选择合适的协议。
电子邮件是利用计算机网络进行的一种通信方式,可以用于在互联网上发送和接收数字信息。
电子邮件的基本构成包括邮件头和邮件体,其中邮件头包括发件人、收件人、主题、日期等信息,邮件体是邮件内容的主要部分,可以包含文字、图片、链接等元素。
电子邮件的发送和接收过程一般需要经过三个环节:用户编写邮件并发送到发件服务器,发件服务器根据收件人的地址将邮件转发到中转服务器,中转服务器再将邮件转发到最终的收件服务器。
收件人可以通过客户端程序(如Outlook、Thunderbird等)连接到收件服务器并下载邮件,就可以阅读邮件内容。
使用电子邮件需要设置SMTP、POP3等协议,这些协议规定了电子邮件的传输和接收标准。
电子邮件包括:用户代理,邮件服务器,协议
电子邮件协议包括发送协议(SMTP)和拉取协议(POP3,IMAP,HTTP)。由于发送和接收邮件是推送和拉取报文的操作,它们也可以称为“推”式协议,“拉”式协议。
发送方(用户代理),发送协议SMTP
,发送方邮件服务器,SMTP协议
,接收方邮件服务器,拉取协议
,接收方(用户代理)。
SMTP是“推”式的协议,发送方将邮件数据推送到SMTP服务器的外出报文队列;
HTTP主要是“拉”式协议,通过浏览器客户端将服务端的文件随时拉取下来。基于web浏览器的电子邮件中,HTTP协议也可以起到发送协议的作用。
SMTP(Simple Mail Transfer Protocol)是一种用于电子邮件传输的协议。
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后面应为邮件文本,并以单行“.”结束。
要点:
HTTP主要是”拉“,也可以“推”。
POP3是一个非常简单的邮件访问协议,在接收方阅读邮件时,由于SMTP不支持拉文件,因此有弊端。诞生了第三代邮件阅读协议POP3,作用是从接收方的SMTP服务器把邮件送到接收方邮箱。
POP3有两种工作方式:下载并保留(保留在接收方服务器),这种工作方式可以使多个客户端(如手机,mac,电脑,传真机等)都能下载并阅读。
下载并删除 工作方式则仅支持下载一次就会删除。比如用手机接收了邮件,那么就不能在其他设备在次从邮件服务器接收到。
MIME支持将非ASCII字节进行编码再转换为ASCII转交给SMTP进行传输。常见是将汉字等进行base64编码再转换。
POP3协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法,为了解决这个问题,产生因特网邮件访问协议IMAP。
用户到邮件服务器都是HTTP协议,包括发送方与接收方。但是邮件服务器与邮件服务器之间的传输依然是使用SMTP协议
。
由来:
计算机的标识方式有 IP地址 和 主机名 两种。
其中主机名因易于记忆而被人们普遍接受,但主机名几乎不提供计算机在因特网中位置的信息。
而路由器更喜欢定长的,有层次结构的IP地址。
为了折中这两种需求,需要一种能将主机名转换为IP地址的目录服务,也就是域名系统DNS(Domain Name System)的主要任务。
特点:
功能:
域名由两种不同的字符集组成:ASCII和Unicode。ASCII字符集包括128个字符,如数字、字母和符号。Unicode字符集包括几乎所有国家和地区的文字、符号和符号。
在ASCII字符集中,每一级域名长度不超过63个字符。而在Unicode字符集中,虽然域名长度没有明确的限制,但仍然需要遵守域名系统规范(DNS)的限制。根据DNS规范,每一级域名长度不能超过253个字符。
需要注意的是,虽然每一级域名长度有限制,但整个域名的长度是没有限制的
域名可以用来在数据传输时标识计算机的电子方位,有时也指地理位置
例如:我们常用的门户网站,如搜狐、新浪等,它们都是用大写字母来作域名的。
单点故障:如果只有一个DNS服务器,一旦其损坏将影响巨大
通信容量:一个DNS服务器处理所有DNS查询,工作量过大
维护问题:一台DNS服务器需要为所有因特网主机保留记录,使得中央数据库庞大,并且还要因添加新的主机而更新。
远距离的集中式数据库:因为一台DNS服务器无法”邻近“所有用户,传播时将经过低速和拥塞链路导致严重时延。
下图中 "叶" 只是一个通用代指,并不是说所有域名都归于一个主机或设备。“根”同理
(DNS根服务器共有13个)
从树根到树叶,上层域有一个指向其子域服务器的指针。
顶级域分为两类:
下图出现的反向域名 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:日本的一个顶级域名
互联网共有13个根服务器 (分布在:欧洲,北美(大部分),日本),不同国家域名划分不一定一样。
定义
是否是某个域的权威DNS服务器看是否维护中这个区域的域名到IP地址对应关系
权威服务器 :清楚本区域内部域名与IP对应关系
为了改善时延性能并减少在互联网上传输的DNS报文数量,DNS广泛采用了缓存技术。
由于主机和主机名与IP地址间的映射不是永久的,DNS服务器在一段时间后(通常设置为两天),将丢弃缓存信息。
共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record,RR):提供主机名到IP的映射。
资源记录是一个包含了下列字段的四元组:
(Name,Vaule,Type,TTL),具体见下图:
资源记录可以类比于数据库的记录方法
下面给出的例子,忽略掉TTL字段。Name和Vaule的值取决于Type:
如果本地服务器有缓存,则直接返回缓存信息(主机与IP映射)。如果没有缓存,需要查询具体映射。
查询方法有以下两种:
简单来说就是主机任意找一个根服务器,由于通常上一级知道下一级信息
,然后从根服务器开始一级一级往下查找,直到最终查到结果。
上一级不会明确下一级的信息,但会有一个指定方向,相当于"踢皮球"。
DNS报文有查询报文和回答报文两种,它们的格式都是相同的。结构如下图:
总的来说,DNS比较健壮
一幅未压缩,数字编码的图像由像素阵列组成,其中每个像素是用来表示颜色和亮度的比特编码。
视频流是指将视频数据以流的形式进行传输。这种传输方式可以实时观看视频内容,而不需要等待整个视频文件下载完成
。视频流技术使用了流媒体协议,例如HTTP Live Streaming(HLS)和Real-time Messaging Protocol(RTMP)等,使得视频可以在各种设备上流畅播放。视频流技术广泛应用于在线视频播放、直播、视频会议等领域。
因此,视频流是一种传输方式,而流式视频是一种播放方式。视频流可以以流式视频的方式进行播放,而流式视频必须使用视频流技术进行传输
。
平均端到端吞吐量是指单位时间内成功地传送数据的数量,也就是传输速率。吞吐量和带宽是两个不同的概念,带宽是指链路的能力,单位是比特每秒(bps),是设计值;而吞吐量是实际测试的传输速率,单位也是bps。平均端到端吞吐量通常用来衡量网络传输性能,可以通过网络延迟、传输速度等指标来评估。
定义:
HTTP流(HTTP streaming)是一种在HTTP协议下进行实时数据传输的技术。它允许服务器将数据以流的形式发送给客户端,而无需等待整个响应完全生成。这种方式可以实现实时性要求较高的应用,如视频直播、音频流传输等。HTTP流可以通过多种方式实现,包括长轮询、服务器推送事件(Server-Sent Events)和WebSocket等。这些技术都允许服务器主动向客户端发送数据,而不需要客户端主动请求。HTTP流的实现可以提供更好的用户体验和更高效的网络通信。
特点:
在HTTP流中,视频只是存储在HTTP服务器中作为一个普通文件,每个文件有一个特定的URL
HTTP流播放视频的工作原理:
1.客户端发起请求
客户端使用HTTP协议向服务器发起视频播放请求(TCP连接)。请求中通常包含视频的URL或其他必要的参数。
服务器接收到客户端的请求后,开始准备视频数据。服务器使用一种支持流式传输的视频格式,如MPEG-DASH(Dynamic Adaptive Streaming over HTTP)或HLS(HTTP Live Streaming)。
客户端接收的视频字节被收集在应用缓存中,当缓存中的字节数量超过设定门限时,客户应用程序开始播放。特别的,流式视频应用程序周期性的从客户应用程序缓存中抓取帧,对这些帧解压缩并呈现在用户屏幕上,因此,流式视频应用接收到视频就开始播放,同时缓存视频后面部分的帧。
通过以上步骤,HTTP流播放视频实现了实时的视频传输和播放。这种方式可以根据网络条件和设备性能进行自适应调整,提供更好的观看体验。同时,使用分段传输的方式,可以在保证视频连续播放的同时,提高网络传输的效率。
DASH(Dynamic Adaptive Streaming over HTTP)(基于 / 经HTTP的动态适应性流)
使用DASH后,每个视频版本存储在HTTP服务器,每个版本都有一个不同的URL
使用HTTP GET请求报文一次选择一个不同的块
。对于一个因特网视频公司提供流式视频服务最直接的方法或许时建立一个单一的大规模数据中心,存储所有视频,并向全世界范围客户传输流式视频。
但存在三个问题:
1.出现停滞时延的可能性随中间通信链路数量增加而增加。
2.流行的视频可能经过相同通信链路多次发送,导致网络带宽的浪费和公司需要给ISP的费用增加
。
3.单点故障。数据中心崩溃则无法发送视频。
定义:
内容分发网 (CDN : Content Delivery Network)是一种分布式网络系统,通过将内容缓存到多个地理位置和服务器上,以提高网站或其他互联网应用的性能和可靠性。
分类:
专用CDN,由内容提供商自己所有。例如,谷歌的CDN分发YouTube视频和其他类型内容。
第三方CDN,代表多个内容提供商发表内容。
CDN的工作原理:将网站的内容分发到靠近用户的地方,以便用户可以快速获取所需的内容。这可以通过将内容存储在分布在全球的各个节点上实现。当用户请求网站内容时,CDN会根据用户的地理位置和网络条件选择最合适的节点将内容传递给用户
。
CDN的主要优点包括:
性能提升:CDN可以将内容存储在靠近用户的地方,从而减少内容的传输延迟和网络拥塞,提高用户访问网站的速度和性能。
可靠性增强:CDN可以通过多个节点同时提供内容,如果某个节点出现故障或网络故障,其他节点可以自动接替,
确保用户可以继续访问网站。
安全性提高:CDN可以提供DDoS攻击防护、CC攻击防护等安全服务,保护网站免受网络攻击。
节省成本: 使用CDN可以减少服务器负载和带宽成本,提高网站的成本效益。
CDN被广泛用于各种互联网应用,如网站、视频流媒体、游戏等,可以提高用户体验和网站性能。
客户端使用浏览器指令检索特定视频(由URL标识)时,
CDN必须截获该请求以便能够:
1.确定适合的CDN服务集群。
2.将 客户请求重定向到该集群某台服务器。
大多数CDN利用DNS来截获和重定向请求。如下图示:
CDN的集群选择策略是CDN部署的核心之一,目的是将客户定向到CDN中某个服务器集群或数据中心的机制。常见的集群选择策略包括:
地理最近策略:指派客户到地理上最为临近的集群,这种选择策略忽略了时延和可用带宽随因特网路径时间而变化,总是为特定的客户指派相同的集群。
实时测量策略:基于集群和客户之间的时延和丢包性能执行周期性检查,这种策略可以实时测量集群和客户之间的网络路径,并根据测量结果选择最优的集群。
此外,还有其他集群选择策略,如基于负载均衡的策略、基于DNS解析的策略等。总之,CDN的集群选择策略是为了提高网站的性能和可靠性,根据不同的因素选择最优的集群,并提供更好的用户体验。
推高速缓存和拉高速缓存都是网络缓存的一种,主要用来缓解网络延迟和提高数据传输速度。
推高速缓存是指将数据从服务器推到客户的浏览器,当客户需要这些数据时,浏览器直接从缓存中获取,而不需要再次从服务器下载。一些浏览器会将经常访问的网页缓存到本地,以减少网络延迟和提高访问速度。
拉高速缓存是指客户浏览器发起请求时,服务器将数据缓存在本地网络中,当客户需要这些数据时,直接从本地网络中获取,而不需要再次从服务器下载。这种方式常用于视频、图片等大数据的缓存,可以减少网络延迟和提高数据传输速度。
总的来说,推高速缓存和拉高速缓存都是为了提高网络性能,减少网络延迟,提高数据传输速度。
2005年4月开始服务,在2006年11月被谷歌公司收购。谷歌/Youtube设计和协议是专用的。
将被重定向或提前终止
浪费的带宽和服务器资源,获取视频目标量后使用HTTP字节范围请求来限制传输的数据流。看看(迅雷公司拥有并运行)使用P2P交付而不是客户-服务器交付。
比特率是指每秒传送的比特数,单位为bps(Bit Per Second)。表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示,而比特就是二进制里面最小的单位,要么是0,要么是1。 ↩︎