数据帧是谁发出的?如何生成的?它的作用是什么?



做web开发呢,除了前端后端技术要熟练使用外,想要更进一步学习web原理,那必须还得了解计算机网络的一些基础知识。计算机网络范围其实很广,内容杂多。说来惭愧啊,上学时候,上课都没有认真思考,实验也没有充分发挥主观能动性,浪费了现有硬件资源来对网络进行更深的学习。但是,在日常工作中,对这些原理的东西也不能一概不知。就打算来说说,网络中的一些基础内容,包括:数据传输模型OSI,TCP/IP,TCP协议的建立与释放,IP数据报的传输与数据格式等等。


因为从计算机整个发展到现在的历程来看,从没有操作系统的单太计算机,只是用于数据简单处理的计算机,到后来的批处理系统,多道程序系统,到分时系统,实时系统的发展,计算机处理能力呈现爆炸性增长,伴随着处理能力提升,早起不同的计算机公司开发自己定义的计算机系统以及计算机通信协议,导致了不同的公司或者说不同的硬件底层支持的计算机的通信会很复杂,硬件的异构型造成了计算机通信的成本花费很大。特别是万维网的创建,更是将整个实验室,县城,市区到国家之间的计算机通信互联的现实需求推至顶端。

那么为了不同公司,不同类型的计算机进行通信更高效,方便,那么无规矩不成方圆。权威机构当然就联合起来,共同定制合理有效的计算机通信模型以及协议等等。也是适应时代发展的需要和推动计算机互联网的快速发展的必然结果。

该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。开放系统互联参考模型的系统结构共分7层。在该模型中层与层之间进行对等通信,且这种通信只是逻辑上的,真正的通信都是在最底层-物理层实现的,每一层要完成相应的功能,下一层为上一层提供服务,从而把复杂的通信过程分成了多个独立的、比较容易解决的子问题。--引用自

下面这张图,把整个OSI协议模型以及每层协议栈上的一些协议给列出来了:(图片来源自网络)



该OSI通信框架知道有7层,那七层,每层大致做得什么,有什么作用就够了。在此就不细说了。

TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。ARPANET是由美国国防部DoD() */

不同层次对应的硬件配置:(通常情况下,不包括三层交换机,四层交换机..)
物理层:网卡,网线,集线器,中继器,调制解调器
数据链路层:网桥,交换机

网关工作在第四层传输层及其以上
集线器是物理层设备,采用广播的形式来传输信息。
交换机就是用来进行报文交换的机器。多为链路层设备(二层交换机),能够进行地址学习,采用存储转发的形式来交换报文.。
路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率。

交换机和路由器的区别?
交换机拥有一条很高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条总线上,控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口,目的MAC若不存在则广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部MAC地址表中。

使用交换机也可以把网络“分段”,通过对照MAC地址表,交换机只允许必要的网络流量通过交换机。通过交换机的过滤和转发,可以有效的隔离广播风暴,减少误包和错包的出现,避免共享冲突。

交换机在同一时刻可进行多个端口对之间的数据传输。每一端口都可视为独立的网段,连接在其上的网络设备独自享有全部的带宽,无须同其他设备竞争使用。当节点A向节点D发送数据时,节点B可同时向节点C发送数据,而且这两个传输都享有网络的全部带宽,都有着自己的虚拟连接。假使这里使用的是10Mbps的以太网交换机,那么该交换机这时的总流通量就等于2×10Mbps=20Mbps,而使用10Mbps的共享式HUB时,一个HUB的总流通量也不会超出10Mbps。

总之,交换机是一种基于MAC地址识别,能完成封装转发数据包功能的网络设备。交换机可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址。

从过滤网络流量的角度来看,路由器的作用与交换机和网桥非常相似。但是与工作在网络物理层,从物理上划分网段的交换机不同,路由器使用专门的软件协议从逻辑上对整个网络进行划分。例如,一台支持IP协议的路由器可以把网络划分成多个子网段,只有指向特殊IP地址的网络流量才可以通过路由器。对于每一个接收到的数据包,路由器都会重新计算其校验值,并写入新的物理地址。因此,使用路由器转发和过滤数据的速度往往要比只查看数据包物理地址的交换机慢。但是,对于那些结构复杂的网络,使用路由器可以提高网络的整体效率。路由器的另外一个明显优势就是可以自动过滤网络广播。

**集线器与路由器在功能上有什么不同? **

首先说HUB,也就是集线器。它的作用可以简单的理解为将一些机器连接起来组成一个局域网。而交换机(又名交换式集线器)作用与集线器大体相同。但是两者在性能上有区别:集线器采用的式共享带宽的工作方式,而交换机是独享带宽。这样在机器很多或数据量很大时,两者将会有比较明显的。而路由器与以上两者有明显区别,它的作用在于连接不同的网段并且找到网络中数据传输最合适的路径。路由器是产生于交换机之后,就像交换机产生于集线器之后,所以路由器与交换机也有一定联系,不是完全独立的两种设备。路由器主要克服了交换机不能路由转发数据包的不足

总的来说,路由器与交换机的主要区别体现在以下几个方面:

最初的的交换机是工作在数据链路层,而路由器一开始就设计工作在网络层。由于交换机工作在数据链路层,所以它的工作原理比较简单,而路由器工作在网络层,可以得到更多的协议信息,路由器可以做出更加智能的转发决策。

(2)数据转发所依据的对象不同
交换机是利用物理地址或者说MAC地址来确定转发数据的目的地址。而路由器则是利用IP地址来确定数据转发的地址。IP地址是在软件中实现的,描述的是设备所在的网络。MAC地址通常是硬件自带的,由网卡生产商来分配的,而且已经固化到了网卡中去,一般来说是不可更改的。而IP地址则通常由网络管理员或系统自动分配。

(3)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域
由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况下会导致通信拥挤和安全漏洞。连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。虽然第三层以上交换机具有VLAN功能,也可以分割广播域,但是各子广播域之间是不能通信交流的,它们之间的交流仍然需要路由器。

(4)路由器提供了防火墙的服务
路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。

上面的内容仅仅是网络的很小很小的基础知识部分,也是自己学习过程中一些总结。包括数据通信的OSI/TCP参考模型,并对数据通信中每层的协议栈进行分析和内部数据结构的图解,同时也将linux系统对每层协议的代码定义也罗列出来,帮助程序员加深理解。其实,内部还有很多东西值得去学习,分析,思考。这篇就到这....


特点。本节将介绍图形化语言中其它的节点类型基本作用和数据流运行机制下的 特点。 节点包括:内置函数、内置 VI 和结构。 节点类似于文本编程语言中的语句、函数、和子程序。 下面我们分别进行讨论。 3.3.1 内置函数的数据流运行机制 内置函数节点 我们之所以称 LabVIEW 开发环境所提供的函数为内置函数是想表明这些函 数是开发环境中所特有的,并内置在开发环境中提供给图形化程序设计者使用。 内置函数包含在开发 环境的程序框图中的 “函数 Functions ”选项板上。它是构成 图形化语言 VI 中最小的、最基本的可操作元素,是图形化程序执行基本操作的 内部节点。 作为图形化语言中的最小可执行元素, 内置函数不仅具备了最基本的函数功 能如:加、减、乘、除、常数、常量等等外,同时还具备处理更复杂事物的函数 功能如:数组处理、字符 串处理等等。如此众多、功能强大的内置函数保证了 LabVIEW 基本上具备了通用编程语言的基本特征。 内置函数图标的背景颜色为浅黄色,很容易分辨。它不同于 VI ,它没有前 面版和程序框图,只有简单的连接端口,所以我们无法查看它的内部程序代码。 下面给出进行数组操作用的一些内置函数。 图 -1 数组操作内置函数 内置函数是 LabVIEW 图形化语言的基础内核,是从高级语言中高度抽象出 来的最底层、 最基础、最实用的图形化代码, 是构成性能强大的虚拟仪器的基础 零部件“ ”。内置函 数的功能越丰富对待解问题的处理能力就越强。 如果要想学 习、使用好 LabVIEW 最重要的基础就是充分了解内置函数的基本特性和使用方 法。只有这样,才能充分发挥出图形化语言的特点, 设计出满足用户需求的自动 化应 用程序。 对于内置函数的学习, 最重要的是详细解读 LabVIEW Help 文档,该文档中 包含了每个内置函数的详细说明。对于中文版的 LabVIEW ,已提供了汉化的文 档。与此同时,更多看其它 LabVIEW 开好者设计的例程,如 Op enG、MGI 的 开源图形化代码及 NI 开发者社区中 LabVIEW 开好者所提供的例程等等也是受 益匪浅的。在这方面花费一定的时间是非常值得的。 内置函数的基本特点 内置函数虽然数量众多、 功能不一, 但存在着许多共同的特点。 下面我们对这些 特点进行简单的总结: 基于数据流的运行机制, 内置函数至少有一个以上的连接端口。 对于双端以上的 内置函数通常是以输入端和输出端的形式呈现 内置函数的内部是不可见的, 程序的设计者或使用者是不可对其进行编辑和修改 内置函数是构成 VI 或子 VI 的最基本操作元素之一 内置函数是节点中的一部分,可通过颜色辨别(图标中的背景为浅黄色) 内置函数是直接命名的 内置函数通常没有公共线程(错误簇) 有时候总会有些例外的事情发生,它的最后这个特点就存在着例外的现象, 请看下面的例子: 加、减、乘、除这些内置函数当它们的输入数据为波形数据时, 它们会自动生成公共线 程连接端 —— 错误簇(做时域的加、减、乘、除) 。参见 下图。 图 -1 内置

总部位于瑞典的Hazelight Studios在他们最新的多人视频游戏《双人同行》中使用了面部动画和mocap技术。《双人同行》由EA出版发行。Hazelight团队之前也曾使用Faceware的技术用于制作游戏。本文记录了关于Hazelight接受采访的完整版本,以及工作室进行游戏开发的一些幕后图片。

从生产的角度来看《双人同行》整个创作过程需要多长时间?有多少人参与到这个项目中?

在我们交付游戏《A Way Out》后,我们启动了这个全新的项目《双人同行》。事实上,两个游戏间有一个非常短的重叠时段。这个新项目在开发周期为3年。开始时,工作室有大约40名员工,在项目期间我们达到了75人左右的高峰。动画团队以相似的速度从4人增长到7人,在整个项目中,我们有2名技术动画师。环境艺术团队从5人发展到8人,另外我们还请到了3位角色艺术家帮助我们进行游戏制作。

游戏的艺术风格对面部捕捉有什么挑战吗?

《双人同行》由两种不同的风格组成,其中大部分内容在幻想风格的环境中,一些在更现实的环境中。在幻想世界中,我们通常试图从身体和面部两方面夸大动作,使得角色的表情与动作更加戏剧化。由于我们需要为过场动画制作大量的内容,很明显我们需要用到动作捕捉技术来制作原型动画,因为给所有东西设定关键帧会花费太多时间。在捕捉到的过场动画和大部分关键帧游戏之间找到平衡是一个挑战。在幻想场景中,角色们需要摆出许多不切实际的动作,即使是最有经验的特技演员也不可能做到,所以我们最终不得不在表演捕捉中混入大量的关键帧。这也导致了在场景中混合着多种类型的人脸动画的需求。

游戏中的大部分动画采用面部捕捉的形式制作而成,而一小部分——如序章或结尾——我们会使用ADR(自动对话替换)录音或FaceFX的面部动画,这种方法适用于解决仅来自音频的面部动画。这是一个挑战,要系统地跟踪哪种脸型,以确保动画中的嘴型与声音保持同步。

《双人同行》与《A Way Out》的风格差异非常大。在面部捕捉过程中,团队遇到过什么挑战(之前没有遇到过的)?

虽然我们对工具进行了一些更新,以增强使用面部动画的体验,但底层技术其实并没有太大变化。我们基于在关节上运行的FACS(面部动作编码系统)来制作一组预定义姿势的动画,这与使用blendshapes非常相似,但优化更好。我们把这个系统用于《双人同行》中的所有角色,除了书人哈基姆。因为哈基姆的脸在角色的肚子上,所以有很多其他的变形,如果我们在关节上额外增加脸的变形,这将会发生冲突。我们设法解决了这个问题,将他的大部分面部造型改为混合形状。

让我们更具体一点,游戏中的面部动画起着什么样的作用?实际表现达到你们的期望了么?

通过创建一个以叙事为重点的游戏,传达角色在遭遇中的情感对我们来说非常重要,这样作玩家可以在故事展开时与游戏角色建立并发展联系。面部动画显然在表达这种情绪方面发挥了重要作用,在我们团队所有部门的共同努力下,我认为我们成功实现了我们的目标。

能向我们介绍一下游戏的面部动画管道吗?例如过程的每个阶段,用了哪些面部软件产品等?

我们的目标是尽可能多的记录下演员在表演时的一切面部动作。我们使用专用的软件来对动作数据进行记录,软件能够处理并组合身体、音频和面部动作,并将这些元素依次通过时间码链接在一起。与Faceware的Mark lll头戴摄像头捆绑在一起的Aja Ki Pro面部记录器非常适合这个管道,因为它可以完全由代码控制。

基于所选择的捕获及其时间范围,我们通过使用Analyzer python SDK生成修剪过的面部视频和Faceware Analyzer工作文件。尽管Analyzer在初始跟踪方面做得很好,但仍然需要我们做一些手动的跟踪工作。

当跟踪完成后,所有文件都将通过Faceware Retargeter(它也附带了python API)进行批处理,并单独输出仅包含面部动画的每个面部视频的fbx格式文件。我们在为每个角色到角色的关系定义重定目标模型时使用了重定目标接口。

面部动画之后会被加入到我们的Motionbuilder场景中,其中任何潜在的时间变化都已被缓存,并将自动得到补偿以进行同步。在Motionbuilder中,我们有一个界面专门用来润色面部动画,当场景锁定了摄像机,我们就开始对其进行润色,这样我们就知道应该在哪里努力了。

当我们录制动作捕捉时,没有演员在场为角色配音,也没有制作关键帧,我们使用了ADR。配音演员之后会在已经存在的身体动作之上提供声音和面部表演。保持银华同步对我们来说是一个挑战,但也非常值得一试!

Faceware的软件和硬件是如何帮助你实现目标的?

从Hazelight诞生的第一天起,我就一直雄心勃勃地想最大限度地实现自动化制作,从而尽可能的减少手动处理问题或多余的任务的次数。这是我最喜欢Faceware的一点:它附带了一个API,使我们能够减少手动修正所浪费的时间,所有过程都在内部被自动完成,非常方便。

能和我们分享一些关于面部动画制作过程的轶事吗,以及Faceware的软件或硬件是如何帮助你们的?

为主要角色之一科迪进行动捕和配音的约瑟夫·巴尔德拉马,同时也为书中角色哈基姆配音。从制作的角度来看,理想情况下,我们会为哈基姆找到一个独特的演员,使我们能够捕捉哈基姆的表演,但事实并非如此。这增加了后续ADR会议中这些场景的复杂性。首先,捕捉一本书可能听起来很奇怪,但它的效果出乎意料地好!作为一个精力充沛的角色,哈基姆对ADR来说是一个挑战,但约瑟夫完成得很好。使用Faceware重定目标器,可以创建多个预设,以确定面部应该如何从演员重定目标到任何角色,通过这样做,我们可以很好地为幻想世界的科迪和现实世界的科迪和重定面部目标。

使用Faceware重定目标器,可以创建多个预设,以确定面部应该如何从演员重定目标到任何角色。

从《A Way Out》到《双人同行》,团队使用了不同的Faceware硬件。能告诉我们这些变化以及它们对生产过程的帮助吗?特别是Mark III头戴式摄像机是如何让面部动画制作过程变得更简单或更好的?使用独立摄像头和Mark III有显著区别吗?

在《A Way Out》的开发过程中,我们没有做任何动作捕捉。相反,我们后来严重依赖ADR。我们采用更加独立的方式捕捉ADR,使用连接了SyncBac Pro模块的GoPro摄像机在视频中嵌入时间码。为了通过编辑保持同步,我们有一个类似的管道,如上所述。由于我们没有使用性能捕捉,只有一个面部捕捉源,所以管道可以更简单一些。

为了制作《双人同行》,我们建立了自己的内部动作捕捉工作室,因此升级我们的面部捕捉硬件是一个必要的步骤。我有机会测试了几个Faceware的Mark III摄像头,很快就觉得它们可以匹配我为新阶段的标准。

III提供了一个更好的集成到我们管道的潜力,以及头盔更好佩戴舒适性。面部记录仪的实时预览也要好得多。我认为Faceware所采取的方法有一个优势,即系统中相当多的组件选用行业标准。在连续几天的录制过程中,我们对硬件和软件都有很强的信心,这对我来说很重要。虽然我们从来没有过硬件问题,但我知道除了相机本身,大多数可能损坏的东西都可以很快被购买和更换。我认为Faceware和Mark lll的设置已经找到了一个很好的平衡,我们信任这个系统,Faceware能够让我们把注意力更多地放在舞台上直播的与重要表演上。

我要回帖

更多关于 数据帧的基本格式包括什么 的文章

 

随机推荐