
协议分析数据报格式.docx
14页两种不同的 MAC 帧格式常用的以太网 MAC 帧格式有两种标准,一种是 DIX Ethernet V2 标准,另一种是 IEEE 的 802.3 标准如以以下图所示,为便于理解,图中假定网络层使用的是IP 协议实际上使用其他的协议也是可以的现在 MAC 帧最常用的是以太网 V2 的格式,它较为简洁,由5 个字段组成前两个字段分别为 6 字节长的目的地址和源地址字段第三个字段是 2 字节的类型宇段,用来标志上一层使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议施乐公司负责治理这个类型字段的代码安排例如,当类型字段的值是 0x0800 时,就表示上层使用的是 IP 数据报假设类型字段的值为 0x8137,则表示该帧是由 Novell IPX 发过来的第四个字段是数据字段,但它的正式名称是 MAC 客户数据宇段,其长度在 46 到 1500 字节之间最终一个字段是 4 字节的帧检验序列 FCS当数据字段的长度小于 46 字节时,MAC 子层就会在数据字段的后面参与一个整数字节的填充字段,以保证以太网的 MAC 帧长不小于 64 字节我们应当留意到,MAC 帧的首部并没有指出数据字段的长度是多少。
在有填充字段的状况下,接收端的 MAC 子层在剥去首部和尾部后就将数据字段和填充字段一起交给上层协议然而IEEE 802.3 标准规定的MAC 帧则较为简洁它和以太网 V2 的MAC帧的区分是:(1)第三个字段是长度/类型字段依据长度/类型字段的数值大小,这个字段可以表示 MAC 帧的数据字段长度(请留意:不是整个 MAC 帧的长度),也可以等同于以太网 V2 的类型字段具体地讲:假设长度/类型字段的数值小于 MAC 帧的数据字段的最大值 1500(字节), 这个字段就表示 MAC 帧的数据字段长度假设长度/类型字段的数值大于 0x0600(相当于十进制的 1536),那么这个数值就不行能表示以太网有效的数据字段长度,因而这个字段就表示类型当长度/类型字段表示类型时,802.3 的 MAC 帧和以太网 V2 的 MAC 帧一样当长度/类型字段表示长度时,MAC 帧就必需装入 802.2 标准定义的LLC 子层的 LLC 帧从图中可看出,在传输媒体上实际传送的要比 MAC 帧还多 8 个字节这是由于当一个站在刚开头接收 MAC 帧时,由于尚未与到达的比特流达成同步,因此 MAC 帧的最前面的假设干个比特就无法接收,结果使整个的 MAC 成为无用的帧。
为了到达比特同步,从 MAC 子层向下传到物理层时还要在帧的前面插入 8 字节(由硬件生成),它由两个字段构成第一个字段共 7 个字节,称为前同步码(1 和 0 交替的码)前同步码的作用是使接收端在接收MAC 帧时能够快速实现比特同步其次个字段是帧开头定界符,定义为10101011,表示在这后面的信息就是 MAC 帧了在 MAC 子层的 FCS 的检验范围不包括前同步码和帧开头定界符顺便指出,在广域网点对点通讯中使用同步传输的 HDLC 规程时则不需要用前同步码,由于在同步传输时收发双方的比特同步总是始终保持着的802.3 标准规定凡消灭以下状况之一的即为无效的 MAC 帧:(1)MAC 客户数据字段的长度与长度字段的值不全都; (2)帧的长度不是整数个字节;(3) 用收到的帧检验序列 FCS 查出有过失;(4) 收到的帧的 MAC 客户数据字段的长度不在 46—1500 字节之间考虑到 MAC 帧首部的长度是 18 字节,可以得出有效的 MAC 帧长度为 64~1518 字节之间对于检查出的无效 MAC 帧就简洁地丢弃以太网不负责重传丢弃的帧当 MAC 客户数据字段的长度小于 46 字节时,则应加以填充(内容不限)。
这样,整个MAC 帧(包含 14 字节首部和 4 字节尾部)的最小长度是 64 字节, 或 512bitMAC 子层的标准还规定了帧间最小间隔为 9.6us,相当于96bit 的发送时间这就是说,一个站在检测到总线开头空闲后,还要等待 9.6us 才能发送数据这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的预备1) IP 分组格式分析IP 数据报的格式能够说明 IP 协议都具有什么功能在TCP/IP 的标准中,各种数据格式常常以 32bit(即 4 字节)为单位来描述以以下图是 IP 数据报的完整格式一个 IP 数据报由首部和数据两局部组成首部的前一局部是固定长度,共20 字节,是全部IP 数据报必需具有的在首部的固定局部的后面是一些可选字段,其长度是可变的首部各字段的意义如下:(1) IP 数据报首部的固定局部中的各字段a) 版本 占 4bit,指 IP 协议的版本通信双方使用的 IP 协议的版本必需全都目前广泛使用的 IP 协议版本号为 4(即IPv4)以前的 3 个版本目前已不使用2) 首部长度 占 4bit 可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。
当 IP 分组的首部长度不是 4 字节的整数倍时,必需利用最终一个填充字段加以填充因此数据局部永久在 4 字节的整数倍时开头,这样在实现 IP 协议时较为便利最常用的首部长度值就是 20 字节, 即不使用任何选项3) 效劳类型 占 8bit,用来获得更好的效劳,其意义见图的上面局部所示a) 前三个比特表示优先级,它可使数据报具有 8 个优先级中的一个b) 第 4 个比特是 D 比特,表示要求有更低的时延c) 第 5 个比特是 T 比特,表示要求有更高的吞吐量d) 第 6 个比特是 R 比特,表示要求有更高的牢靠性(即在数据报传送的过程中,被路由器丢弃的概率要更小些)e) 第 7 个比特是 C 比特,是增加的,表示要求选择代价更小的路由f) 最终一个比特目前尚未使用4) 总长度 总长度指首部和数据之和的长度,单位为字节总长度字段为 16bit,因此数据报的最大长度为 65 535 字节(即64KB)在 IP 层下面的每一种数据链路层都有其自己的帧格式, 其中包括帧格式中的数据宇段的最大长度 MTU当一个 IP 数据报封装成链路层帧时,此数据报的总长度(即首部加上数据局部) 确定不能超过下面的数据链路层的 MTU 值.虽然使用完可能长的数据报会使传输效率提高,但由于以太网的普遍应用,所以实际上 使用的数据报长度很少有超过 1500 字节的,而有时数据报长度还被限制在 576 字节。
当数据报长度超过网络所容许的最大传送单元 MTU 时,就必需将过长的数据报进展分片后才能在网络上传送(见后面的“片偏移”字段)这时,数据报首部中的“总长度”字段不是指未分片前的数据报长度,而是指分片后每片的首部长度与数据长度的总和5) 标识(identification) 占 16bit,它是一个计数器,用来产生数据报的标识但这里的“标识”并没有序号的意思,由于 IP 是五连接效劳,数据报不存在按序接收的问题当 IP 协议发送数据报时,它就将这个计数器的当前值复制到标识字段中当数据报由于长度超过网络的 MTU 而必需分片时,这个标识字段的值就被复制到全部的数据报片的标识字段中一样的标识字段的值使分片后的各数据报片最终能正确地重装成为原来的数据报6) 标志(flag) 占 3bit 目前只有前两个比特有意义a) 标志字段中的最低位记为 MF(More Fragment)MF=1 即表示后面“还有分片’的数据报MF=0 表示这已是假设干数据报片中的最终一个b) 标志字段中间的一位记为 DF(Don”tFragment),意思是“不能分片”只有当 DF=0 时才允许分片7) 片偏移 较长的分组在分片后,某片在原分组中的相对位置。
也就是说,相对于用户数据字段的起点,该片从何处开头片偏移以 8 个字节为偏移单位这就是说,每个分片的长度确定是8 字节(64bit)的整数倍[例]一数据报的数据局部为3800 字节长(使用固定首部),需要分片为长度不超 过 1420 字节的数据报片因固定首部长度为20 字节,因此每个数据报片的数据局部长度不能超过1400 字节于是分为3 个数据报片,其数据局部的长度分别为1400,1400 和 1000 字节原始数据报首部被复制为各数据报片的首部, 但必需修改有关字段的值可能的分片按总长,标识M,F,DF,片偏移挨次排列如下:原始数据报:3820,12345,0,0,0分片1:1420,12345,1,0,0分片2:1420,12345,1,0,175分片3:1020,12345,0,0,350标识字段的值是任意给定的具有一样标识的数据报片在目的站就可无误 地重装成原来的数据报现在假定数据报片2 经过某个网络时还要再进展分片,即划分为数据报片2-1(携带数据800 字节)和数据报片2-2(携带数据600 字节)那么这两个数据报片的总长度、标识、MF、DF 和片偏移分别为:820,12345,1,0,175;620, 12345,1,0,275。
8) 生存时间 生存时间字段记为 TTL(Time To Live),即数据报在网络中的寿命,其单位为秒生存时间的建议值是 32 秒但也可设定为 3~4 秒,甚至 255 秒例:tracert 命令的分析,利用TTL 检测网络节点(9) 协议 占 8bit,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的 IP 层知道应将数据局部上交给哪个处理过程10) 首部检验和 此字段只检验数据报的首部,不包括数据局部这是由于数据报每经过一个结点,结点处理机都要重计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)如将数据局部一起检验,计算的工作量就太大了11) 源地址 占 4 字节12) 目的地址 占 4 字节13) 可变局部:取决于需要2) TCP 报文段的格式一个 TCP 报文段分为首部和数据两局部应当指出,TCP 的全部功能都表达在它首部中各字段的作用因此,只有弄清 TCP 首部各字段的作用才能把握TCP 的工作原理TCP 报文段首部的前 20 个字节是固定的,后面有 4N 字节是依据需要而增加的选项(N 必需是整数)因此 TCP 首部的最小长度是 20 字节。
首部固定局部各字段的意义如下:(1) 源端口和目的端口 各占 2 个字节前面已讲过,端口是运输层与应用层的效劳接口运输层的复用和分用功能都要通过端口才能实现2) 序号 占 4 字节TCP 是面对数据流的TCP 传送的报文可看成为连续的数据流TCP 把在一个 TCP 连接中传送的数据流中的每一个字节都编上一个序号整个数据的起始序号在连接建立时设置首部中的序号字段的值则指的是本报文段所发送的数据的第一个字节的序号例如,一报文段的序号字段的值是301,而携带的数据共有 100 字节这就说明:本报文段的数据的最终一个字节的序号应当是 400我们还可看到,下一个报文段的数据序号应当从 401 开头, 因而下一个报文段的序号字段值应为 4013) 确认号 占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号,也就是期望收到的下一个报文段首部的序号字段的值例如,A 正 确收到了 B 发。
