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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据报,数据包,分组,包,报文,帧,段的区别相关的知识,希望对你有一定的参考价值。

参考技术A

网络层次模型中不同层的协议数据单元图示

即在第 4 层(传输层)中,数据单元是 段(segment) 数据报(datagram) 。 因此,在以太网上的 TCP/IP 通信的示例中, TCP segment(TCP段) 被承载在一个或多个 IP packet 中,每个 IP packet 都承载在一个或多个以太网帧中。
packet 这个术语比较通用,TCP Packet,IP Packet 等等很多地方

即 数据报是与 分组交换网络 相关的基本传输单元, 提供跨分组交换网络的无连接通信服务

RFC 1594 datagram 的解释:

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

数据报需要是自包含的,而不依赖于早期的交换,因为两个通信点之间没有固定持续时间的连接

个人觉得 Quora 上一个比较高赞的回答很有道理:

另外一个高赞回答:

datagram 在传输之前不决定路径,因为它是 无连接协议 ,它不保证传递。
即:网络层的数据称为 datagram 。 IPv4 对 datagram 进行 分段 。每个片段称为一个 packet 。分片是为了通过具有有限的 MTU (最大传输单元,通常为 1500 字节)的链路发送大尺寸 datagram 。例如,如果一个大小为 3,000 字节的 datagram 即将从主机发送到具有 1500 字节 MTU 的链路,则路由器将按照 MTU 的大小(即 1500)对 datagram (3000 字节)进行分段,生成 K packet ,等于3000/1500=2个 packet 。总而言之,一个 datagram 是 n 个 packet ,即 1 个 数据报 由 n 个 分组/数据包 组成

When sending packets using TCP/IP, the data portion of each IP packet is formatted as a TCP segment .

报文帧数据包等的区别

报文(message)是网络中交换与传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。

应用层:报文(message),一般指完整的信息,传输层实现报文交付,位于应用层的信息分组称为报文;

传输层:报文段(segment),组成报文的每个分组;

网络层:分组(packet)是网络传输中的二进制格式单元,数据包(datapacket)是TCP/IP通信协议传输中的数据单位;通过网络传输的数据基本单元,包含一个报头和数据本身,其中报头描述了数据的目的地及其与其他数据之间的关系,可以理解为数据传输的分组,我们将通过网络传输的基本数据单元称为数据报(Datagram);

链路层:帧(frame),数据链路层的协议数据单元,为了保证数据的可靠传输,把用户数据封装成帧;

物理层:PDU(bit),协议数据单元;

抓包,抓到的是传输层的包,packet/frame/Datagram/segment是存在于同条记录中的,这些是基于所在协议层的不同取了不同的名字。

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

报文帧数据包等的区别

用Delphi编写数据报存储控件

报文段数据报数据包和帧

应用层报文怎么传输到另一个应用层的?

应用层报文怎么传输到另一个应用层的?

一个TCP报文段的数据部分最多为多少字节,为啥