数据包和帧之间的区别

Posted

技术标签:

【中文标题】数据包和帧之间的区别【英文标题】:Difference between PACKETS and FRAMES 【发布时间】:2015-10-05 11:02:51 【问题描述】:

网络世界中常用的两个词——数据包和帧。

谁能详细说说这两个词的区别?

希望它可能听起来很傻,但它的意思如下

数据包是网络 OSI 模型的第 3 层(网络层 - ip 数据包)的 PDU(协议数据单元)。

帧是 OSI 模型的第 2 层(数据链路)的 PDU。

【问题讨论】:

【参考方案1】:

数据包是给Protocol data units (PDUs)的名称在不同的network layers

/数据报传输层中的数据单元。

在互联网的情况下,Segment 一词通常指的是 TCP,而 Datagram 通常指的是 UDP。不过Datagram也可以用在更一般的意义上,指代其他层(link):

数据报

一个自包含、独立的数据实体,携带足够的信息,可以从源计算机路由到目标计算机,而不依赖于该源计算机和目标计算机以及传输网络之间的早期交换。

数据包网络层中的数据单位(在互联网的情况下是IP)

链接层中的数据单位(例如 Wifi、 蓝牙、以太网等)。

【讨论】:

这种暗示整个数据报必须适合单个帧。 @DavidSchwartz (我知道这是三年后的事,但我才看到这个)。 数据报只是协议头的构造,并且包含位。 Frame 是 L2 的数据报。 数据包是 L3 的数据报。数据包在 Frame 中承载,因此 Packet 数据报确实适合 Frame 数据报。 More details on this answer at Network Engineering Stack Exchange. 如果您在 ATM 上运行 UDP,则 UDP 数据报被分成许多 ATM 帧。同一个数据报可以在不同的帧中多次发送,一个帧只存在于单个链路上。 @DavidSchwartz 对。我认为我们在同一页上。这:[UDP][110010100011] 是一个 Segment,一个 L4 的数据报。其中每一个都是帧:[ATM][UDP1100][ATM][1010][ATM][0011]——L2 的数据报。 内部第一帧是UDP段的前三分之一内部第二帧是UDP段(等)的第二个三分之一。以上四个实例都是数据报——一个段和三个帧。 段是 TCP 的单位,它对数据流进行分段。 UDP 使用数据报,它实际上是名称的一部分(用户 数据报 协议)。 UDP 不会对数据进行分段,因为它是基于消息的协议,而 TCP 是基于流的协议。【参考方案2】:

数据包是网络承载的格式化数据单元的总称。它不一定连接到特定的 OSI 模型层。

例如,在物理层(第 1 层)上的以太网协议中,数据单元称为“以太网数据包”,其有效载荷为Ethernet frame(第 2 层)。但网络层(第 3 层)的数据单位也称为“数据包”。

帧也是数据传输的单位。在计算机网络中,该术语仅用于数据链路层(第 2 层)的上下文中。

数据包和帧之间的另一个语义区别是,帧用标头和拖尾包裹您的有效负载,就像帧中的绘画一样,而数据包通常只有一个标头。

但归根结底,它们的含义大致相同,并且在谈论不同的层时使用区别来避免混淆和重复。

【讨论】:

“画框”类比建立了我对“框架”一词的直观理解。谢谢!【参考方案3】:

实际上,当我们谈论参考模型层(或协议栈)时,通常使用五个词:datasegmentpacketframebit。 PDU (Protocol Data Unit) 是一个通用术语,用于指代 OSI 模型不同层中的数据包。因此 PDU 给出了数据包的抽象概念。 PDU在不同的层有不同的含义,我们仍然可以将其作为一个通用术语来使用。

当我们遇到您的问题时,我们可以使用通用术语PDU 来调用它们,但是如果您想在给定的层专门调用它们:

数据: 应用层、表示层和会话层的 PDU Segment:传输层PDU 数据包:网络层PDU Frame:数据链路层的PDU 位:物理层PDU

这是一个图表,因为一张图片值一千个单词:

【讨论】:

【参考方案4】:

考虑 TCP over ATM。 ATM 使用 48 字节帧,但显然 TCP 数据包可以比这更大。帧是通过数据链路(以太网、ATM)作为一个单元发送的数据块。数据包是在其上层 (IP) 上作为一个单元发送的数据块。如果数据链路是专门为 IP 建立的,就像以太网和 WiFi 一样,它们的大小将相同,并且数据包将对应于帧。

【讨论】:

你的意思是考虑长度 数据包长度是指L4或以上层,帧长度是指以太网、ip及以上层的整个数据包。 没有。没有规则要求整个数据包适合单个帧。 (以太网等特定协议除外。但对于 ATM 而言,情况并非如此,其中单个数据包可能被拆分为多个帧。)【参考方案5】:

数据包

数据包是在 Internet 或任何其他数据包交换网络上的起点和终点之间路由的数据单元。当任何文件(电子邮件消息、html 文件、图形交换格式文件、统一资源定位器请求等)从 Internet 上的一个地方发送到另一个地方时,TCP/IP 的传输控制协议 (TCP) 层会划分将文件分成有效大小的“块”以进行路由。这些数据包中的每一个都单独编号,并包括目标的 Internet 地址。给定文件的各个数据包可能通过 Internet 传输不同的路由。当它们都到达时,它们被重新组装成原始文件(由接收端的TCP层)。

框架

1) 在电信中,帧是作为一个单元在网络点之间传输的数据,具有完整的寻址和必要的协议控制信息。帧通常逐位串行传输,并包含“帧”数据的标头字段和尾字段。 (一些控制帧不包含数据。)

2) 在时分复用 (TDM) 中,一帧是时分周期内的一个完整事件循环。

3) 在电影和视频录制和播放中,一帧是一系列图像中的单个图像,这些图像被录制和播放。

4) 在计算机视频显示技术中,帧是发送到显示图像渲染设备的图像。它从帧缓冲区(视频 RAM 的一个高度可访问的部分)不断更新或刷新。

5) 在人工智能 (AI) 应用程序中,帧是一组数据,其中包含有关特定对象、过程或图像的信息。一个例子是用于识别某些银行自动柜员机用户的虹膜打印视觉识别系统。该系统将潜在用户的数据框架与其授权用户数据库中的框架进行比较。

【讨论】:

以上是关于数据包和帧之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

报文段数据报数据包和帧

数据包,数据报文,数据帧之间的关系

数据报,数据包,分组,包,报文,帧,段的区别

Oracle 包和 Java 包之间的映射

数据包丢失和数据包重复

TCP粘包和拆包