今天工作的时候刚好有客户对我说 :“包”和“帧”有啥区别,你咋一会说“包”,一会说“帧”呢? 太不讲究了!这说的让我有点脸红,工作中我们通常会把“包”和“帧“混着说,两者在大部分场景中都代表着相同的意思。但是严格说起来两者是完全不同的,它们代表着不同的网络层次,作为一个专业的人,咱们还是要分开说的!它们之间的区别也是我们今天的分享的主题,同时也会分享一下与其相关的内容。
我们来看看下面的这张图片,看着这张图,你是不是也有感觉了呢!
网络层次与专有名词
就是各位猜想的这样,在不同的网络层次,我们对数据有不同的称呼。
去除封装会更清晰
我们先看一下最上层的数据,Data是应用层协议产生的数据,例如访问网页、看视频、听音乐,这些都可以称为应用层数据,电脑的操作系统会把这些应用层数据按照一定的规则传给下一层传输层。
在传输层,我们看到的数据称之为Segment,中文意思是段。在这一层,数据会被加上TCP或者UDP头,变成一个应用程序特有的数据。操作系统就是通过TCP或UDP端口号来区别不同应用程序的。
当数据再被往下传输的时候,就变成了packet,即“包”的意思。在这一层,Segment会被加上IP头部信息,然后就可以在三层传输了,而工作在三层的路由器会根据目的IP地址来转发这些”包“。
在往下,数据就会被加上mac地址信息,名称就变成了Frame,”帧“。在这一层,就是交换机的世界了,交换机通常查找MAC地址表项来转发相应的”帧“。
上面的几个层次都可以使用wireshark抓包查看到具体的内容,比较形象,例如下面,一层套着一层,明显可以看出帧、包、段、数据的区别。
Wireshark抓包信息
在下面的物理层(layer1),我们能看到的都是BIT流,它们呈现给我们的都是0和1这样的电气特性,平常只有那些头发比较稀少的硬件工程师才关注,咱们一般看不到。工作中我们看到网络设备的物理层都已经是非常成熟的内容,一般不会有问题。
各位看到这里,应该能够明白“帧”和“包"区别了吧?其实很多的时候它们就是通用的,只是它们所在的网络层次不同,封装也不同。为了显示专业,一般我们在讨论交换机相关的layer2内容时,可以把数据称之为”帧“,在讨论与路由器相关的layer3内容时,就把数据称之为”包“。