数据包和帧的区别

108

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

请问有人能详细解释这两个词的区别吗?

希望这不是一个愚蠢的问题,但它是否意味着:

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

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

5个回答

150

数据包是分别用于不同网络层次协议数据单元(PDU)的名称。

  • /数据报是在传输层中的数据单位。

    对于互联网,术语通常指TCP,而数据报通常指UDP。然而,数据报也可以以更一般的方式使用,并指向其他层次(链接):

    数据报

    这是一个自包含的、独立的数据实体,携带足够的信息以便从源计算机路由到目标计算机,且无需依赖此源计算机和目标计算机之间的早期交换和传输网络。

  • 数据包是在网络层中的数据单位(例如,在互联网中是IP)

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

enter image description here


10
这有点意味着整个数据报必须适合单个帧中。 - David Schwartz
5
@DavidSchwartz (我知道已经过去三年了,但我刚看到这个)。数据报文(datagram)只是一个协议头和包含的位构造。帧(Frame)是L2上的数据报文,而分组(Packet)是L3上的数据报文。分组会在帧内传输,因此分组的数据报文确实可以放入帧的数据报文中。更多细节请参阅Network Engineering Stack Exchange上的回答(https://networkengineering.stackexchange.com/a/50098/3675)。 - Eddie
1
如果您正在运行UDP over ATM,则UDP数据报将分成许多ATM帧。相同的数据报可以在不同的帧中发送多次,一个帧仅存在于单个链路上。 - David Schwartz
4
@DavidSchwartz 没错,我认为我们的想法是一致的。这个:[UDP][110010100011] 是在L4上的一个段(Segment),一个数据报。而每一个这样的帧(Frame):[ATM][UDP1100] [ATM][1010] [ATM][0011] -- 都是在L2上的数据报。在第一个帧里面是UDP段的第一个三分之一。在第二个帧里面是UDP段的第二个三分之一,以此类推。以上四个实例都是数据报 -- 一个段和三个帧。 - Eddie
“_doesn't refer to a specific network layer._”这就是为什么UDP的名称是“用户数据报协议”,告诉你它所在的网络层。它为用户进程提供了一个协议。RFC 792解释道:“_该用户数据报协议(UDP)被定义为在计算机网络互连集合的环境中提供分组交换计算机通信的数据报模式_”。 - Ron Maupin
显示剩余2条评论

33
数据包是网络传输中携带数据的格式化单位的通用术语。它不一定与特定的OSI模型层相连。
例如,在物理层(第1层)的以太网协议中,数据单元称为“以太网数据包”,其有效载荷为以太网帧(第2层)。但网络层(第3层)的数据单元也被称为“数据包”。
帧也是数据传输的一个单位。在计算机网络中,该术语仅在数据链路层(第2层)的上下文中使用。
数据包和帧之间的另一个语义差异是,帧会像画框一样用头部和尾部包装有效载荷,而数据包通常只有头部。
但最终它们的意思大致相同,这种区别用于在谈论不同层时避免混淆和重复。

1
“绘画框架”类比让我更加直观地理解了“框架”的概念。谢谢! - altgov3en
有没有任何RFC提到过“以太网数据包”和“以太网帧”? - Rima

33
实际上,当我们谈论参考模型(或协议栈)的层时,有五个常用词汇:数据、段、数据包、帧和比特。而PDU(协议数据单元)是一个通用术语,用于指代OSI模型不同层中的数据包。因此,PDU给出了数据包的抽象概念。在不同层中,PDU具有不同的含义,但我们仍然可以将其用作通用术语。
当涉及到您的问题时,我们可以使用通用术语PDU来称呼它们所有,但如果您想在给定的层次上具体称呼它们,则可以这样:
- 数据:应用层、表示层和会话层的PDU - 段:传输层的PDU - 数据包:网络层的PDU - 帧:数据链路层的PDU - 比特:物理层的PDU

这里有一张图表,因为一幅图片胜过千言万语: a picture is worth a thousand words


那么帧包含网络层、传输层和应用层中的所有数据单元吗? - Adan Vivero

9
考虑TCP在ATM上的应用。ATM使用48字节的帧,但是TCP数据包通常比48字节更大。一个帧是作为单位通过数据链路(以太网、ATM)发送的数据块。一个数据包是作为单位在它上面的层(IP)中发送的数据块。如果数据链路专门用于IP(例如以太网和WiFi),那么它们将具有相同的大小,并且数据包将对应于帧。

你的意思是考虑到数据包长度时,Packet length 指的是 L4 或以上层,而 frame length 指的是整个包含以太网、IP 及以上层的数据包长度。 - sujai M J
1
没有规定整个数据包必须适合单一帧的规则。(除了像以太网这样的特定协议。但在ATM中,单个数据包可以分成多个帧。) - David Schwartz
那样就更有意义了... - Adan Vivero

5

数据包

数据包是在互联网或其他分组交换网络上在源和目的地之间路由的数据单位。当任何文件(电子邮件、HTML文件、图形交换格式文件、统一资源定位符请求等)在互联网上从一个地方发送到另一个地方时,TCP/IP的传输控制协议(TCP)层将文件划分为适合路由的“块”。每个数据包都有单独的编号并包括目的地的互联网地址。同一文件的各个数据包可能通过互联网的不同路径传输。当它们全部到达后,它们会被TCP层在接收端重新组装成原始文件。

1) 在电信中,帧是作为单元在网络节点之间传输的数据,包括寻址和必要的协议控制信息。帧通常按位串行传输,并包含一个标题字段和一个尾部字段来“框定”数据。(某些控制帧不包含数据。)

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

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接