数据包与数据帧大小
数据帧-数据报-PDU

数据报Data gram通过网络传输的数据的基本单元,包含一个报头(header)和数据本身,其中报头描述了数据的目的地以及和其它数据之间的关系。
完备的、独立的数据实体,该实体携带要从源计算机传递到目的计算机的信息,该信息不依赖以前在源计算机和目的计算机以及传输网络间交换。
在数据报操作方式中,每个数据报自身携带有足够的信息,它的传送是被单独处理的。
整个数据报传送过程中,不需要建立虚电路,网络节点为每个数据报作路由选择,各数据报不能保证按顺序到达目的节点,有些还可能会丢失。
数据报工作方式的特点1、同一报文的不同分组可以由不同的传输路径通过通信子网;2、同一报文的不同分组到达目的结点时可能出现乱序、重复与丢失现象;3、每一个分组在传输过程中都必须带有目的地址与源地址;4、数据报方式报文传输延迟较大,适用于突发性通信,不适用于长报文、会话式通信。
数据帧所谓数据帧,就是数据链路层的协议数据单元,它包括三部分:帧头,数据部分,帧尾。
其中,帧头和帧尾包含一些必要得控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如ip数据报。
在发送端,数据链路层把网络层传下来得数据封装成帧,然后发送到链路上去;在接收端,数据链路层把收到的帧中的数据取出并交给网络层。
不同的数据链路层协议对应着不同的帧,所以,帧有多种,比如PPP帧、MAC帧等,其具体格式也不尽相同。
下面以MAC帧的格式为例进行说明:MAC帧的帧头包括三个字段。
前两个字段分别为6字节长的目的地址字段和源地址字段,目的地址字段包含目的MAC地址信息,源地址字段包含源MAC地址信息。
第三个字段为2字节的类型字段,里面包含的信息用来标志上一层使用的是什么协议,以便接收端把收到的MAC帧的数据部分上交给上一层的这个协议。
例如,当类型字段的值是0x0800时,就表示上层使用的是IP数据报;若类型字段的值为 0x8137,则表示该帧是由Novell IPX 发过来的。
关于MTU和Jumbo Frame对网络连通性的影响的一些测试

关于MTU和Jumbo Frame对网络连通性的影响的一些测试近日报装了一条点对点专线, 接口是以太网的, 因为需要测量出这条链路的MTU, 所以对此作了一番研究和实验.我们都知道在网络上传输数据时, 大数据会被分解为一个个小数据包来传递. 比较常见的说法是这个数据包的尺寸上限被称为MTU,默认为1500字节。
其实在以太网+TCP/IP环境中,通俗地说数据包分为两种:以太网数据包,和IP数据包,他们默认的大小分别为1500字节和1472字节,这是因为以太网数据包要包含整个IP数据包,还要加上MAC地址等内容,所以两者之间有一个几十个字节的差异。
稍微专业点的说法,以太网数据包应该称为以太网数据帧,或MAC帧。
以太网帧在ISO/OSI模型中处于数据链路层的位置;而IP包处于ISO/OSI的网络层的位置。
在另外的一些技术文章中,会提到数据包大小的两种应用方向:一是增大数据包以提高网络效率;二是减小数据包以提高网络兼容性,并提高效率。
本人就根据第一种应用方向,曾经对局域网内NAS(网络存储)的传输效率做过一些测试,得到的结论是适宜地增大数据包尺寸,可以让NAS的传输速度提高20~40%,但错误地增大数据包尺寸,会导致NAS的传输速度降低95%以上,有兴趣者可以在网上搜索关键字“Jumbo Frame”和“NAS”参考。
在很多Windows计算机中, 对网络数据包的尺寸有设置作用的地方有两处,一是注册表中网卡的MTU值;二是网卡驱动程序配置中的Jumbo Frame(巨型帧)值,请参见下面的图示,关于如何找到修改这两处配置的方法,请在网上自行搜索答案。
本文中的测试用计算机的网卡都是Intel主控芯片的,所以在其驱动程序中可以选择设定其Jumbo Frame。
据我所知很多厂家的网卡芯片的驱动程序中都能设置Jumbo Frame,哪怕是Windows自带的网卡驱动程序。
那么我们不禁要产生一个疑问,究竟哪处设置决定数据包的尺寸?它们有何区别?修改之后对网络的连通性(本文仅讨论连通性问题)有何影响?下面直接给出一系列实验的图解,并对实验的参数进行了说明。
帧详解——精选推荐

帧详解数据链路层负责将位组合成字节,并将字节组合成帧。
帧被⽤在数据链路层,从⽹络层传递过来的数据包被封装成帧,以根据介质访问的类型进⾏传输。
以太⽹站点的功能是使⽤⼀组称为MAC帧格式的位,在站点之间传送数据帧。
在帧格式中,采⽤循环冗余校验(CRC)进⾏差错检测。
但记住,这是差错检测,不是差错纠正。
802.3帧结构前导8字节DA6字节SA6字节长度2字节数据FCS Etllernet帧结构前导8字节DA6字节SA6字节类型2字节数据FCS说明:将⼀个帧封装到不同类型的帧中,就称为隧道技术。
下⾯是802.3帧和Etllernet帧的各个字段的详细说明。
前导(PreambIe) 它采⽤交替为1和O的模式,在每个数据包的起始处提供5MHz的时钟信号,以允许接受设备锁定进⼊的⽐特流。
帧起始定界符/同步(start Fra1ne DeIimiter,SFD/synch) 前导为7字节,SFD为1字节(Synch)。
SFD为10101011,这⾥的最后⼀对1允许接收者进⼊中间某处的交替0、1模式中,却仍然能够同步并检测到数据的开始。
⽬的地址(Destination Address,DA) 它⾸先使⽤最低有效位(IEB)传送48位值。
接收⽅站点使⽤DA来决定⼀个进⼊的数据包是否被送往特定的节点。
⽬的地址可以是单独的地址,或者是⼴播或组播MAC地址。
记住,⼴播地址为全1(⼗六进制形式为全F)并被送往所有设备,但组播地址只被送往⽹络中节点的同类⼦集。
源地址(Source Address,SA) SA是48位的MAC地址,⽤来识别发送没备,它⾸先使⽤LSB。
在SA字段中,⼴播和组播地址格式是⾮法的。
长度(Length)或类型(Type) 802.3使⽤长度字段,但Ethernet帧使⽤类型字段来识别⽹络层的协议。
802.3不能识别上层协议,且必须与专⽤的LAN(⽐如IPX)⼀起使⽤。
数据(Data) 这是从⽹络层传送到数据链路层的数据包。
关于数据包中出现超长帧的分析文档

数据包中出现超长帧的分析文档修改记录时间 版本 编写/修改人员 审核人员 备注 2008-08-07 V1.0 曹腾 创建该文档 2008-08-11 V2.0 王超 完善部分内容 2008-08-11 V3.0 王超 标准化目录1 抓包环境 (4)2 问题现象描述 (4)3 问题分析 (5)3.1 关于超长帧问题的分析 (5)3.2 关于IP标识一样但数据包大小不一样问题的分析 (6)4 结论 (9)5 引申问题 (10)1 抓包环境在用户处的抓包环境如下图所示:说明:1、在核心交换机上做端口镜像抓取进出互联网的数据包;2、监听端口为一台服务器接入端口,在服务器上开启科来网络分析系统抓取数据包。
2 问题现象描述在抓取数据包,并对数据包进行分析时,我们发现了一些问题,主要是以下几点:1、数据包中有很多长度超过1518字节的数据帧,其字节分布从1600-8880字节不等。
如下图所示:这是正常的吗?是什么原因导致的呢?2、存在较多的IP标识一致但是长度大小不一致的数据包,如下图所示:3 问题分析3.1 关于超长帧问题的分析1、一般以太网环境中数据链路层能够传输的最大数据为1518字节,有些网卡在故障时会发送一写超长帧,但是这种帧一般都会被中间设备或捕获数据包的网卡丢弃,抓包工具一般无法正常显示,但是,在此次所捕获的数据包中,这些超长帧都能正常显示,而且通过分析其数据包通讯过程,也能够确定其通讯正常。
可以排除设备网卡故障的可能。
2、在网上查找了一些关于超长帧的文档,发现其是一种专门为千兆以太网而设计的厂商标准的超长帧格式,其长度从9000字节~64000字节不等。
采用Jumbo Frame能够令千兆以太网性能充分发挥,使数据传输效率提高50%~100%,超长帧一般在内部网络的存储环境中应用较多。
Jumbo Frame需要在相互通讯的2个通讯端口(交换机端口或网卡端口)上同时支持,而且与以前的以太网产品不兼容,因此主要会应用于千兆主干的端口之间以及服务器端口接入到网络主干的链路。
网络通信的数据包(帧)的结构及原理

网络通信的数据包(帧)的结构及原理
在网络通信中,”包”(Packet)和”帧”(Frame)的概念相同,均指通信中的一个数据块.对于具体某种通信网络,一般使用术语”帧”.一种网络的帧格式可能与另一种网络不同,通常使用术语”包”来指一般意义的帧.串行通信的数据格式有面向字符型的数据格式,如单同步、双同步、外同步;也有面向比特型的数据格式,这以帧为单位传输,每帧由六个部分组成,分别是标志区、地址区、控制区、信息区、帧校验区和标志区.
串行通信协议属于ISO国际参考标准的第三层,数据链路层.数据链路层必须使用物理层提供给它的服务.物理层所做的工作是接收个一个原始的比特流,并准备把它交给目的地.不能保证这个比特流无差错.所接收的比特的数量也许少于,也许等于或多于所传递的比特的数量,它们具有不同的值.一直要上到数据链路层才能进行检测,如果需要的话,纠正错误.对于数据层,通常的方法是把比特流分成离散的帧,并对每一帧计算出校验和…….当一帧到达目的地后重新计算校验和时,如果新算出的校验和不同于帧中所包括的值,数据链路层就知道出现差错了,从而会采取措施处理差错(即,丢弃坏帧,并发回一个差错报告).
数据链路层的任务是在两个相邻接点间的线路上无差错地传送以帧为单位的数据.每一帧包括数据和必要的控制信息.人们发现,对于经常产生误码的实际链路,只要加上合适的控制规程,就可以使通信变为比较可靠的.如IBM公司推出了着名的体系结构SNA,在SNA的数据链路规程采用了面向比特的规程SDLC,后来ISO把它修改后称为HDLC,译为高级数据链路控制.在INTERNET 中,用户与ISP(INTERNET服务提供者)之间的链路上使用得最多的协议就是SLIP和PPP.。
IP包头

IP包头(Packet Header)的格式版本(version):长度4比特,表示数据包的IP版本号,0x0100表示IP版本4,0x0110表示IP版本6报头长度(header lenght):长度4比特,表示IP包头长度,最小长度为20个字节,最大可以扩展到60个字节。
服务类型(Type of service):长度8比特,表示特殊数据包的处理方式。
服务类型字段实际上被划分为两个子字段:优先级和ToS。
总长度(Total Length):长度16比特,表示IP包的长度(包头+数据),所以IP 数据包的最大长度是65535(2^16)。
标识符(Identifier):长度16比特,通常与标记字段和分片偏移字段一起用于数据包的分段。
如果数据包原始长度超过数据包所要经过的数据链路的最大传输单元(MTU),那么必须将数据包分段为更小的数据包。
例如,一个大小为5000字节的数据包在穿过网络时,如果遇到一条MTU为1500字节的数据链路,即数据帧最多容纳大小为1500字节的数据包。
路由器需要在数据成帧之前将数据包分段成多个数据包,其中每个数据包长度不得超过1500字节;然后路由器在每片数据包的标识字段上打上相同的标记,以便接收设备可以识别出属于一个数据包的分段。
标记字段(Flag):长度3比特,其中第1位不使用,第2位是不分段(DF)位。
当DF位被设置为1时,表示路由器不能对数据包进行分段处理。
如果数据包由于不能被分段而未能被转发,那么路由器将丢弃该数据包并向源点发送错误消息。
第3位表示还有更多分段(MF)位,当路由器对数据包进行分段时,MF位为1,说明后面还有分段;MF位为0,说明这是最后一个分段。
分段偏移(Fragment Offset):长度13比特,表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包。
请注意,如果一个分片在传输中丢失,那么必须在网络中同一点对整个数据包重新分片重新发送。
IP数据包分片

IP数据包分片理解
一、以太网帧格式如下:
MAC数据包的最小值为46byte,至于这个最小值是因为以太网信道侦听需要,1500byte为规范值。
一般的电脑MTU设置值为1500,就是基于MAC最大封包的考虑。
一般的IP包的大小肯定超过1500byte,为了能在MAC 帧中传输,必须将IP包进行分片,分成适合传输的MAC帧。
可以测试发现,当IP数据包的大小超过1500byte时,且不允许分片时,电脑系统拒绝发送此报文,同时提示数据包需要分片。
使用ICMP包进行测试,因为IP头占用20byte,ICMP头占用8byte,所以ICMP包大小最大为1472byte。
测试,使用1472的ICMP报文可以通过,但是使用1473的ICMP不分片报文则不能通过。
测试1:
抓包如下,1472byte的ICMP报文可以通过不分片进行传输;
测试2:
因为ICMP报文的大小为3000byte,所以肯定报文要进行分片,抓包如下:
第一个ICMP报文,满载1472byte。
IP包中fragment flags 字段表
有后续有Ip分片。
第二个报文(第一分片)就直接通过IP分片传输,且不包含ICMP 头,此IP包承载的大小为1480byte。
第三个报文(第二分片),承载的数据包大小为48byte,分片结束。
此包的整个大小为:1472+1480+48=3000 byte。
有关分组、帧、报文、比特流的问题

传输层——数据段(Segment)或报文网络层——分组(数据包(Packet))数据链路层——数据帧(Frame)物理层——比特(Bit)在会话层及以上的高层次中,数据传送的单位不再另外命名,统称为报文。
packet也可译作分组或.数据包(是翻译造成的,其实是同一个词packet)知识背景:首先要了解TCP/IP参考模型与OSI参考模型一、OSI模型与TCP/IP模型的比较TCP/IP模型实际上是OSI模型的一个浓缩版本,它只有四个层次:1.应用层2.运输层3.网际层4.网络接口层与OSI功能相比:应用层对应着OSI的应用层表示层会话层运输层对应着OSI的传输层网际层对应着OSI的网络层网络接口层对应着OSI的数据链路层和物理层二、TCP/IP每层所对应的协议,OSI七层模型所对应的协议TCP/IP:数据链路层:ARP,RARP网络层:IP,ICMP,IGMP传输层:TCP ,UDP,UGP应用层:Telnet,FTP,SMTP,SNMP.OSI:物理层:EIA/TIA-232, EIA/TIA-499, V.35, V.24, RJ45, Ethernet, 802.3, 802.5, FDDI, NRZI, NRZ, B8ZS数据链路层:Frame Relay, HDLC, PPP, IEEE 802.3/802.2, FDDI, ATM, IEEE 802.5/802.2网络层:IP,IPX,AppleTalk DDP传输层:TCP,UDP,SPX会话层:RPC,SQL,NFS,NetBIOS,names,AppleTalk,ASP,DECnet,SCP表示层:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption,MPEG,MIDI,HTML应用层:FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP三、OSI的七层结构第一层物理层的任务就是为它的上一层提供一个物理连接,以及它们的机械、电气、功能和过程特性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运用
简单的说,你上网打开网页,这个简单的动作,就是你先发送数据包给网站,它
接收到了之后,根据你发送的数据包的IP地址,返回给你网页的数据包,也就是说,
网页的浏览,实际上就是数据包的交换。
1、数据链路层对数据帧的长度都有一个限制,也就是链路层所能承受的最大数
据长度,这个值
称为最大传输单元,即MTU。以以太网为例,这个值通常是1500字节。
2、对于IP数据包来讲,也有一个长度,在IP包头中,以16位来描述IP包的长
度,也就是说,
一个IP包,最长可能是65535字节。
3、结合以上两个概念,第一个重要的结论就出来了,如果IP包的大小,超过了
MTU值,那么就需要
分片,也就是把一个IP包分为多个,这个概念非常容易理解,一个载重5T的卡
车,要拉10T的货,它
当然就得分几次来拉了。
编辑本段
辨析
4、IP分片是很多资料常讲的内容,但是我倒是觉得分不分片其实不重要,重要
的是另一个东西。一个
数据包穿过一个大的网络,它其间会穿过多个网络,每个网络的MTU值是不同
的。我们可以设想,如果
接受/发送端都是以太网,它们的MTU都是1500,我们假设发送的时候,数据包
会以1500来封装,然而,
不幸的是,传输中有一段X.25网,它的MTU是576,这会发生什么呢?我想,
这个才是我们所关心的。
当然,结论是显而易见的,这个数据包会被再次分片,咱开始用火车拉,到了半
路,不通火车,只通汽车,
那一车货会被分为很多车……仅此而已,更重要的是,这种情况下,如果IP包
被设置了“不允许分片标志”,那
会发生些什么呢?对,数据包将被丢弃,然后收到一份ICMP不可达差错,告诉
你,需要分片!
这个网络中最小的MTU值,被称为路径MTU,我们应该有一种有效的手段,来
发现这个值,最笨的方法或许是先
用traceroute查看所有节点,然后一个个ping……
编辑本段
举例
5、到了传输层,也会有一个最大值的限制,当然,对于只管发,其它都不管的
UDP来说,不在我们讨论之列。这里
说的是TCP协议。说到大小,或许会让人想到TCP著名的滑动窗口的窗口大小,
它跟收发两端的缓存有关,这里讨论
的是传输的最大数据包大小,所以,它也不在讨论之列。
TCP的选项字段中,有一个最大报文段长度(MSS),表示了TCP传往另一端的
最大数据的长度,当一个连接立时,连接
的双方都要通告各自的MSS,也就是说,它说是与TCP的SYN标志在一起的。
当然,对于传输来讲,总是希望MSS越大越好,
现在超载这么严重,谁家不希望多拉点货……但是,MSS总是有个限制的,也就
是MTU-IP头长度-TCP头长度,对于以太网来讲
它通常是1500-20-20=1460,虽然总是希望它能很大(如1460),但是大多数BSD
实现,它都是512的倍数,如1024……
6、回到分片上来,例如,在Win2000下执行如下命令:
"ping 192.168.0.1 -l 1473
按刚才的说法,1473+20(ip头)+8(icmp头)=1501,则好大于1500,它会被分片,
但是,我们关心的是:
编辑本段
其他信息
这个数据包会被怎么样分法?
可以猜想,第一个包是
以太头+IP头+ICMP头+1427的数据;
那第二个分片包呢?
它可以是:
以太头+IP头+ICMP头+1个字节的数据
或者是:
以太头+IP头+1个字节的数据"(引号内的内容可否在进步不详细阐述,对于1473
的数据如何被分为1427和1不是很清楚2010.01.15 13:50)
也就是省去ICMP头的封装,当然,IP头是不可以省的,否则怎么传输了……
事实上,TCP/IP协议采用的是后一种封装方式,这样,一次可以节约8个字节的
空间。IP包头中,用了三个标志来描述一个分片包:
1、分片标志:如果一个包被分片了,被置于1,最后一个分片除外;——这样,
对于接收端来讲,可以根据这个标志位做为重组的重
要依据之一;