网络单位的定义:碎片、段、数据包、帧、数据报。

64

网络术语中使用哪些单位?我们在什么地方使用它们?

我知道以下内容,但不确定它们的意义:

  • 片段(Fragment)
  • 段(Segment)
  • 数据包(Packet)
  • 帧(Frame)
  • 数据报(Datagram)

它们可以分配到特定的OSI层吗?这是否更加复杂?

7个回答

95

引用自TCP/IP Illustrated: Vol 1 by Richard Stevens et al的第1.2节,考虑4层TCP/IP协议栈:

        +-------------+-------------------------+
        | Application |  Telnet, FTP, etc       |
        +-------------+-------------------------+
        | Transport   |  TCP, UDP               |
        +-------------+-------------------------+
        | Network     |  IP, ICMP               |
        +-------------+-------------------------+
        | Link        | drivers, interface card | 
        +-------------+-------------------------+
:如果传输协议是TCP,则从TCP到网络层发送的数据单元称为数据报:它在2个层中使用。如果网络协议是IP,则数据单元称为数据报。在传输层,如果协议是UDP,则我们也使用数据报。因此,我们将它们区分为UDP数据报IP数据报:物理层表示。 数据包:它是一个更通用的术语,可以在传输层或网络层使用。TCP数据包UDP数据包IP数据包等。我没有看到它代表物理层数据单元。 片段:我的猜测是,当一个数据单元被协议切割以适应MTU大小时,所得到的数据单元称为片段。但这只是我的猜测。

2
虽然不常见,但你偶尔会听到“以太网数据包”的说法,例如在Wireshark维基上。在物理层,“帧”是更常用的术语。 - Tom Anderson
2
“协议数据单元”是一个通用的术语,尽管它有点像OSI(开放系统互联)的风格,但它适用于整个层次结构中的所有内容。 - Tom Anderson
1
@barlop:将上图中的“网络”替换为“互联网”,并将“物理层”替换为“网络访问”,这样它就与我从O'Reilly学习到的TCP/IP模型相匹配。 - Wildcard
关于帧是物理层表示法的观点完全错误。它是OSI术语,用于OSI数据链路层。比如,帧(它是数据,与物理层以上的一切东西一样)并不是以太网电缆。这个回答应该避免混淆,不要把帧当成物理层! - barlop
1
@Wildcard 术语“数据报”在UDP(UDP中的D)的定义中使用,在IP的RFC中(使用术语IP数据报),这个术语在RFC 1594中有定义,可以查看该定义。它指出应该是自包含的,并具有足够的信息从源到目的地进行路由。UDP类似于数据报定义,因为它是无连接的,所以不依赖于之前的消息,因此在这种意义上是自包含的。数据包类似于数据报定义,因为它具有源和目标网络地址,因此“自包含”并且“具有足够的信息从源到目的地进行路由”。 - barlop
显示剩余10条评论

10
这些术语用于指代我们所涉及的OSI层,数据保持不变,但头部和尾部会被添加或删除。
在物理层(Phy layer)中,实际数据以“位”即0和1的形式存在。
当它到达数据链路层或第二层时,它成为一个带有源MAC地址和目标MAC地址的“帧”。
当它到达第三层或网络层时,它成为一个带有源IP地址和目标IP地址的“分组”。
最后,在第四层或TCP/IP层,它成为“段”。基本上,“段”术语用于TCP连接,“数据报”用于UDP。
那么其他层如:会话层、表示层和应用层呢?在这些层中,数据被称为“PDU”或“协议数据单元”。
因此,当有人说正在接收一个“帧”,那么你就知道这个设备是交换机。
路由器接收并处理一个“分组”。

看起来不错,你有源头吗?很有趣,你掌握了所有有趣的模糊的OSI术语,比如帧、PDU、段等。那么对于物理层,你使用比特这样的常见术语,OSI是否也用比特来表示物理层中的东西,就像他们用帧、段等来表示其他层一样?你的来源甚至是OSI吗?据我所知,OSI是创造了帧等术语的人。 - barlop
@barlop 他使用的术语与 https://www.amazon.com/dp/9332518742/ 一致。 - devoured elysium
@devouredelysium,你是说他使用的术语和Andrew S. Tanenbaum的《计算机网络》第五版相同。但请记住,一般的网络书籍通常不会使用正确/官方的术语,这往往是因为粗心大意。我无法对他的内容做出太多评论,但http://dannyreviews.com/h/Computer_Networks.html显示了一个引用,看着这个引用,我注意到他可能没有清楚地区分参考模型和体系结构。 - barlop
那个网页将OSI参考模型缩减到4层并应用于有4层的TCP/IP。所以当它说“位”时,它是使用OSI术语还是TCP/IP术语不清楚。这些维基百科页面可能更加谨慎 https://en.wikipedia.org/wiki/Internet_protocol_suite 和 https://en.wikipedia.org/wiki/OSI_model,尽管它们没有提到物理层上的名称。 - barlop
有趣的是,您的页面https://en.wikipedia.org/wiki/Protocol_data_unit#OSI_model链接到https://en.wikipedia.org/wiki/Physical_layer,提到了“比特”,但维基百科称该页面存在多个问题。 - barlop
显示剩余4条评论

4
上面的答案非常完整。不过,如果我没记错的话,“packet”这个术语来自“分组交换(packet switching)”…

有两种类型:

电路交换(circuit switching)是一种实现电信网络的方法,在两个网络节点通信之前,它们会通过网络建立一个专用通信信道(电路)。电路保证了通道的全部带宽,并在通信会话期间保持连接。电路的功能就像节点是物理连接的电路一样。(维基百科)

分组交换(packet switching)是一种数字化的网络通信方法,将所有传输的数据无论内容、类型或结构如何,都分成适当大小的块,称为数据包。(维基百科)

我本来也能够定义它,但只是为了确定而已。

所以这里是“Packet”的术语。关于片段,我同意Joshua Schmid的答案。


2
我同意以上的答案,但是需要强调的是这是基于TCP/IP协议栈。如果我们使用OSI模型,我认为更广泛,我们会有以下情况:
传输层:如果是TCP则为段(Segment),如果是UDP则为数据报(Datagram) 网络层:数据报(Datagram),如果分割可以使用片段(Fragment)(仍然是数据报) 数据链路层:MAC子层为帧(Frame),LLC子层中的帧或位(Bit)取决于您所工作的级别,它们不可互换 物理层:位(Bit)
正如之前的答案中提到的,数据包是更通用的术语,它可以用于传输层、网络层或数据链路层,但不能用于物理层。在这个层面上,它还没有被“打包”。因此,我认为这是TCP/IP协议栈模型和OSI模型之间最大的区别。OSI模型将物理层从TCP/IP协议栈中拆分为两层:数据链路层和物理层。
希望这能有所帮助。

点赞回答并与OSI相关联。然而,我不同意你的“最大区别”说法:TCP/IP协议栈模型将数据链路和物理层合并为“网络访问”,这是正确的,但它将OSI的前三层应用程序、表示和会话合并为“应用层”。 - Wildcard

2
作为物理层表示的听起来对我来说并不完全准确。它主要在数据链路层,这是在物理层之上。
更具操作性的定义是,帧是具有确定边界的协议数据单元。例如:
- HDLC帧在开头和结尾有标志和位填充机制 - 以太网帧使用前导码和SFD - GFP使用HEC帧分界符,类似于ATM 单元格,如ATM中所述,只是介绍一个更多的术语,是固定长度的帧。
相反,数据包是一种依赖于较低层单元来确定其边界的协议数据单元。它可以恰好适合一个帧或者如果需要则被拆分成片段。在后一种情况下,必须设计分段和重组机制。 数据报大多是数据包的同义词。
应用程序数据流可以被拆分成。一个段被运载到一个数据包中,然后段被重新组合成原始的应用程序流。这通常由TCP层完成。因此,在TCP中,应用程序流通过TCP段通过IP数据包通过数据链路帧。在UDP中没有分段,因此UDP数据包被一对一映射到IP数据包。

这可能是一个有用的答案,但请记住,阅读此内容的人正在尝试澄清基本术语上的混淆,并且引入额外的术语HDLC、SFD、GFD、HEC和ATM并不是回答问题所必需的。介绍“单元”是可以的,因为您也包括了其定义。 - Wildcard
1
@Wildcard 他介绍了re Frame,因为他对得到25个赞的答案有些困惑,所以他说“作为物理层表示的Frame听起来对我不是100%准确”,并且他提出了更多操作性的定义。他变得技术化是因为他无法简化它。但实际上,它要简单得多。我们可以完全抛弃25个赞答案中错误的Frame定义。Frame(OSI术语)不是物理层的东西,而是数据链路层的东西。并且是数据(就像物理层以上的所有内容一样)。没有必要区分实际和操作性定义! - barlop
我们可以说在传输层发送的数据是由一个头部(段,数据报)和一个消息(数据层)组成的数据包吗? - Dainius Kreivys

1

数据报是一种自包含的、独立的数据实体,携带足够的信息以便在源计算机和目标计算机之间进行路由,而不需要依赖于这两个计算机之间的早期交换和传输网络。(在UDP中使用)

分段是一种协议数据单元,它由TCP头和一个应用数据片段(数据包)组成,该数据包来自(上层的)应用层。


你能提供其他问题的答案吗? - Jonathan Eustace

0

数据包:网络中源和目的地之间通信的基本单位是数据包。数据包是OSI模型中网络层内的数据单元。数据包位于网络层

分段:数据包通常比最大大小要大,因此每个数据包也被分成称为分段的较小数据块。网络层负责分段。

:段是带有TCP头的数据包的破碎部分。段增加了网络性能的效率并提高了安全性。段位于传输层

:类似于数据包,帧是网络消息的小部分。帧是OSI模型中数据链路层使用的数据单元。

数据报:数据报表示网络传输的数据单元。在网络中传输的数据被分成称为数据报的较小部分。数据报位于传输层

此外,还有一些类位,这是在物理层中的。


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