数据通信中的数据报文,分组,数据包,数据报,帧,段等

-- 数据结构包:帧
 1.数据帧(Frame):就是数据链路层的协议数据单元,它包括三部分:帧头,数据部分,帧尾。其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如ip数据包。    
 2.数据包(Packet):TCP/IP协议通信传输中的数据单位,处于网络层,在局域网中,“包”是包含在“帧”里的。
 3.数据报(Datagram):多用于网络层以上,面向无连接的数据传输,工作过程类似于报文交换。采用数据报方式传输时,被传输的分组称为数据报。
 一般说来,数据链路层发出的数据包称为frame,地址是链路层的地址,如mac地址;网络层发出的数据包称为packet,地址是网络层地址,如ip地址;传输层发出的数据包称为segment/datagram,地址是传输层地址,如TCP的端口号。
 二层的PDU叫做Frame; IP的叫做Packet; TCP的叫做Segment;UDP的叫做Datagram。

-- 报文_分组_数据包_数据报_帧_段_等区别:
 1.报文(message )  
 报文是网络中交换与传输的数据单元,也是网络传输的单位。报文包含了将要发送的完整的数据信息,其长短很不一致。报文在传输过程中会不断的封装成分组、包、帧来传输,封装的方式就是添加一些信息段,那些就是报文头。
 2.分组(Packet)
 分组(Packet),在数据网络中,是在网络中传输的二进制格式的一个个体。为了提高通信性能和可靠性,每条发送在两个网络设备之间的信息通常被分为一些分组,通过基本的硬件和软件。分组格式通常包括一个头部,身体包括信息数据(也叫做有效载荷),和有时候一个脚部(也叫做尾部)。这个分组头部列出了分组的源地和目的地和通常指出信息数据的长度。这个分组脚部包括表示分组末端的数据。分组头部和脚部可能包括错误检测信息。
 3.数据包(data packet)
 “包”(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。是指“自包含的,带有足够寻址信息的,可独立地从数据源行走到目标计算机,而不需要依赖早期的源和目标计算机之间交换信息以及传输网络的数据包。”  
 4.数据报(datagram)
 面向无连接的数据传输,工作过程类似于报文交换。采用数据报方式传输时,被传输的分组称为数据报。
 5.帧(Frame)
 Frame,数据链路层的协议数据单元(protocol data unit)。数据链路层的主要职责是控制相邻系统之间的物理链路,它在传送“比特”信息的基础上,在相邻节点间保证可靠的数据通信。为了保证数据的可靠传输,把用户数据封装成帧。
 6.信元(Cell)   
 专用于ATM网络,原点到目的结点传输的是信元,信元是一种特殊的 数据结构,不同于普通网络传输的帧或者包,因为帧和包是变长的,而ATM的信元是定长的,非常小的,长度只有53个字节,其中5个字节是信元头,48个字节是信息段。信息段中可以是各类业务的用户数据,信元头包含各种控制信息。

-- 数据包最大帧(1526字节),数据包最小帧(64字节)
 一、数据包最大帧(1526字节)
  根据rfc894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步码 + 1字节帧开始定界符 + 6字节的目的MAC + 6字节的源MAC + 2字节的帧类型 + 1500 + 4字节的FCS。
  按照上述,最大帧应该是1526字节,但是实际上我们抓包得到的最大帧是1514字节,为什么不是1526字节呢?
  原因是当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和出错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交给“设备驱动程序”做进一步处理。这时我们抓包的软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS之外的数据,其最大值是6 + 6 + 2 + 1500 = 1514。

  二、数据包最小帧(64字节)
  以太网规定,以太网帧数据域部分最小为46字节,也就是以太网帧最小是 6 + 6 + 2 + 46 + 4 = 64。除去4个字节的FCS,因此,抓包时就是60字节。当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充以满足数据帧长不小于64 字节。由于填充数据是由MAC子层负责,也就是设备驱动程序。
  不同的抓包程序和设备驱动程序所处的优先层次可能不同,抓包程序的优先级可能比设备驱动程序更高,也就是说,我们的抓包程序可能在设备驱动程序还没有填充不到64字节帧的时候,已经捕获了数据。因此不同的抓包工具抓到的数据帧的大小可能不同。(比如,wireshark抓到的可能没有填充数据段,而sniffer抓到的就有填充数据段),(不过 根据我的观察wireshark不同的版本抓获的最小数据包的大小好像有60字节也有54字节的情况.....)
 

猜你喜欢

转载自blog.csdn.net/ShareUs/article/details/81148135