一张图理解网络的几个专有名词:数据、段、包、帧、比特
今天工作的时候刚好有客户对我说 :“包”和“帧”有啥区别,你咋一会说“包”,一会说“帧”呢? 太不讲究了!这说的让我有点脸红,工作中我们通常会把“包”和“帧“混着说,两者在大部分场景中都代表着相同的意思。但是严格说起来两者是完全不同的,它们代表着不同的网络层次,作为一个专业的人,咱们还是要分开说的!它们之间的区别也是我们今天的分享的主题,同时也会分享一下与其相关的内容。
一、数据帧和数据包的定义
-
数据帧:数据帧是网络通信中的基本单位,它包含了发送方和接收方的地址信息、控制信息以及要传输的数据。数据帧的大小通常由网络设备(如交换机和路由器)决定,以保证数据在传输过程中不会出现错误。
-
数据包:数据包是一种封装了数据的网络协议,它包含了源地址、目标地址、序列号等信息,用于在网络中传输数据。数据包的大小可以根据实际情况进行调整,以便在不同的网络环境下实现最佳的传输效果。
二、数据帧和数据包的区别
-
结构差异:数据帧是由多个字段组成的,包括起始位、目的地址、源地址、控制字段、数据字段和校验字段等。而数据包则是一种封装了数据的协议,它包含了源地址、目标地址、序列号等信息。
-
功能差异:数据帧主要用于在网络设备之间传输数据,它负责将数据从发送方传递到接收方。而数据包则是一种更高级别的协议,它负责将数据从一个网络传输到另一个网络,实现了数据的跨网络传输。
-
大小差异:数据帧的大小通常由网络设备决定,以保证数据在传输过程中不会出现错误。而数据包的大小可以根据实际需要进行动态调整,以适应不同的网络环境。
我们来看看下面的这张图片,看着这张图,你是不是也有感觉了呢!
网络层次与专有名词
就是各位猜想的这样,在不同的网络层次,我们对数据有不同的称呼。
去除封装会更清晰
我们先看一下最上层的数据,Data是应用层协议产生的数据,例如访问网页、看视频、听音乐,这些都可以称为应用层数据,电脑的操作系统会把这些应用层数据按照一定的规则传给下一层传输层。
在传输层,我们看到的数据称之为Segment,中文意思是段。在这一层,数据会被加上TCP或者UDP头,变成一个应用程序特有的数据。操作系统就是通过TCP或UDP端口号来区别不同应用程序的。
当数据再被往下传输的时候,就变成了packet,即“包”的意思。在这一层,Segment会被加上IP头部信息,然后就可以在三层传输了,而工作在三层的路由器会根据目的IP地址来转发这些”包“。
在往下,数据就会被加上MAC地址信息,名称就变成了Frame,”帧“。在这一层,就是交换机的世界了,交换机通常查找MAC地址表项来转发相应的”帧“。
上面的几个层次都可以使用wireshark抓包查看到具体的内容,比较形象,例如下面,一层套着一层,明显可以看出帧、包、段、数据的区别。
Wireshark抓包信息
在下面的物理层(layer1),我们能看到的都是BIT流,它们呈现给我们的都是0和1这样的电气特性,平常只有那些头发比较稀少的硬件工程师才关注,咱们一般看不到。工作中我们看到网络设备的物理层都已经是非常成熟的内容,一般不会有问题。
各位看到这里,应该能够明白“帧”和“包’区别了吧?其实很多的时候它们就是通用的,只是它们所在的网络层次不同,封装也不同。为了显示专业,一般我们在讨论交换机相关的layer2内容时,可以把数据称之为”帧“,在讨论与路由器相关的layer3内容时,就把数据称之为”包“。
三、数据帧和数据包的意义
-
提高传输效率:通过使用数据帧和数据包,可以有效地对数据进行封装和解封装,从而提高数据传输的效率。同时,这种分层的结构也有利于对数据进行错误检测和纠正,保证数据的完整性和可靠性。
-
实现路由选择:数据帧和数据包中的地址信息可以帮助网络设备确定数据的来源和目的地,从而实现路由选择。这对于大型网络系统来说是非常重要的,因为它可以有效地降低网络拥塞,提高网络资源的利用率
-
支持多种网络协议:数据帧和数据包的结构使得它们可以支持多种网络协议,如IP协议、TCP协议等。这使得数据可以在不同类型的网络之间进行传输,提高了网络的兼容性和互通性。