精华内容
下载资源
问答
  • 在使用CLICK路由器时候会发现,当数据字段填充过少发送时,网卡会自动对进行填充,确保它至少有64字节 为什么需要有一定的长度,查阅资料,原因如下: 以太网(IEEE 802.3)格式: 1、前导码(前...

    参考链接:https://www.cnblogs.com/dalulu/p/10331065.html

     

    在使用CLICK路由器的时候会发现,当数据字段填充过少发送帧时,网卡会自动对帧进行填充,确保它至少有64字节

     

    为什么需要帧有一定的长度,查阅资料,原因如下:

                                

    以太网(IEEE 802.3)帧格式:

    1、前导码(前同步码):7字节0x55,一串1、0间隔,用于信号同步

    2、帧开始定界符:1字节0xD5(10101011),表示一帧开始

    3、DA(目的MAC):6字节

    4、SA(源MAC):6字节

    5、类型/长度:2字节,0~1500保留为长度域值,1536~65535保留为类型域值(0x0600~0xFFFF)

    6、数据:46~1500字节

    7、帧校验序列(FCS):4字节,使用CRC计算从目的MAC到数据域这部分内容而得到的校验和。

    以CSMA/CD作为MAC算法的一类LAN称为以太网。CSMA/CD冲突避免的方法:先听后发、边听边发、随机延迟后重发。一旦发生冲突,必须让每台主机都能检测到。关于最小发送间隙和最小帧长的规定也是为了避免冲突。

    考虑如下的情况,主机发送的帧很小,而两台冲突主机相距很远。在主机A发送的帧传输到B的前一刻,B开始发送帧。这样,当A的帧到达B时,B检测到冲突,于是发送冲突信号。假如在B的冲突信号传输到A之前,A的帧已经发送完毕,那么A将检测不到冲突而误认为已发送成功。由于信号传播是有时延的,因此检测冲突也需要一定的时间。这也是为什么必须有个最小帧长的限制。

    按照标准,10Mbps以太网采用中继器时,连接的最大长度是2500米,最多经过4个中继器,因此规定对10Mbps以太网一帧的最小发送时间为51.2微秒。这段时间所能传输的数据为512位,因此也称该时间为512位时。这个时间定义为以太网时隙,或冲突时槽。512位=64字节,这就是以太网帧最小64字节的原因。

    512位时是主机捕获信道的时间。如果某主机发送一个帧的64字节仍无冲突,以后也就不会再发生冲突了,称此主机捕获了信道。

    由于信道是所有主机共享的,如果数据帧太长就会出现有的主机长时间不能发送数据,而且有的发送数据可能超出接收端的缓冲区大小,造成缓冲溢出。为避免单一主机占用信道时间过长,规定了以太网帧的最大帧长为1500。

    100Mbps以太网的时隙仍为512位时,以太网规定一帧的最小发送时间必须为5.12μs。

    1000Mbps以太网的时隙增至512字节,即4096位时,4.096μs。

    IP数据包长度问题总结

    TCP/IP协议,涉及到四层:链路层、网络层、传输层、应用层。

    其中以太网的数据帧在链路层

    IP包在网络层

    TCP或UDP包在传输层

    TCP或UDP中的数据(Data)在应用层

    它们的关系是数据帧{IP包{TCP或者UDP包{Data}}}

    ————————————————————————————————

    在应用程序中我们用到的Data的长度最大是多少,直接取决于底层限制。

    我们从下到上分析一下:

    1.在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)—(1500 + 18),其中的18是数据帧的头和尾,也就是说数据帧的内容最大为1500(不包括帧头和帧尾),即MTU(Maximum Transmission Unit)为1500;

    2.在网络层,因为IP包的首部要占用20字节,所以这的MTU为1500-20 = 1480;

    3.在传输层,对于UDP包的首部要占8字节,所以这的MTU为1480 - 8 = 1472;

    所以,在应用层,您的Data最大长度为1472字节。(当我们UDP包中的数据多于1472时,发送方的IP层需要分片fragmentation进行传输,而在接收方IP层则需要进行数据报重组,由于UDP是不可靠的传输协议,如果分片丢失导致重组失败,将导致UDP数据包被丢弃。)

    从上面的分析来看,普通的局域网环境下,UDP的数据最大是1472字节最好,避免分片重组。

    但是在网络编程中,Internet中的路由器可能设置成不同的值(小于默认值),Internet上的标准MTU值为576,所以Internet的UDP编程时的数据长度最好在576 - 20 -8 = 548字节以内。

    Mac OS点击系统偏好设置——网络——高级——硬件可以查看本机的MTU设置。

    IP数据包的最大长度是64K字节(2^16 -1),因为在IP包头中用2个字节描述报文长度,2个字节所能表示的最大数字就是2^16-1 = 65536 -1 = 65535.

    由于IP协议提供为上层协议分割和重组报文的功能,因此传输层协议的数据包长度原则上来说没有限制。实际上限制还是有的,因为IP包的标识字段终究不可能无限长,按照IPv4,上限是2^32=4G字节。依照这种机制,TCP包头中就没有“包长度”字段,而完全依靠IP层去处理分帧。这就是为什么TCP常常被称作一种“流协议”的原因,开发者在使用TCP服务的时候,不必关心数据包的大小,只需要将SOCKET看作一条数据流的入口,往里面放数据就是了,TCP协议本身会进行拥塞/流量控制。

    UDP则和TCP不同,UDP包头内有总长度字段,同样为2个字节,因此UDP数据包的总长度被限制为(2^16-1),这样恰好可以放进一个IP包内,使得UDP/IP协议栈的实现非常简单高效。65535再减去UDP头本身所占据的8个字节,UDP服务中的最大有效负载长度仅为65527.这个值也就是调用getsockopt()时指定SO_MAC_MSG_SIZE所得到的返回值,任何使用SOCK_DGRAM属性的socket,一次send的数据都不能超过这个值,否则必然得到一个错误。

    那么,IP包提交给下层协议时将会得到怎样的处理呢?取决于数据链路层协议,一般得到数据链路层协议都会负责将IP包分割成更小的帧,然后在目的端重组它,在EtherNet上,数据链路帧的大小如开篇所述。而如果是IP over ATM,则IP包将被切分成一个一个的ATM Cell,大小为53字节。

    展开全文
  •  以太网的帧格式才有6字节的目的地址和源头地址。帧长度字段是指它后续数据的字节长度,但不包括CRC校验码。这个长度是提供给上层协议的数据负载,也就是上层协议封装的数据最长度不要超过以太网帧的数据长度。最小...

    链路层上最常见的封装就是以太网和IEEE 802封装,这里就使用以太网作为讲解的对象。

    一、概述

         数据链路层属于计算机网络的底层,使用的信道主要有点对点信道和广播信道两种类型。
     
         在TCP/IP协议族中,数据链路层主要有三个目的:
              1)为IP模块发送和接收数据
              2)为ARP模块发送ARP请求和接收ARP应答
              3)为RARP模块发送RARP请求和接收RARP应答
         TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网,令牌环网,FDDI(光纤分布式数据接口)及RS-232串行线路等。
         
         数据链路层的协议数据单元——帧:将IP层(网络层)的数据报添加首部和尾部封装成帧。
         数据链路层协议有许多种,都会解决三个基本问题,封装成帧,透明传输,差错检测。

    .二、以太网和IEEE802的封装

         如图所示,显示了两种不同形式的封装格式。最常使用的封装格式是RFC894定义的格式。两种帧格式均采用48bit(6 byte)的目的地址和源地址。


            以太网的帧格式才有6字节的目的地址和源头地址。帧长度字段是指它后续数据的字节长度,但不包括CRC校验码。这个长度是提供给上层协议的数据负载,也就是上层协议封装的数据最长度不要超过以太网帧的数据长度。最小数据帧尾46,最大数据帧长为1500.
            在分析以太网帧的长度时,也有不同的说法,详见http://blog.csdn.net/yusiguyuan/article/details/22490229
    二、最大传输单元MTU
          最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。
         如果在IP层要传输一个数据报比链路层的MTU还大,那么IP层就会对这个数据报进行分片。一个数据报会被分为若干片,每个分片的大小都小于或者等于链路层的MTU值。当同一网络上的主机互相进行通信时,该网络的MTU对通信双方非常重要。但当主机间要通过很多网络才能通信时,对通信双方最重要的是通信路径中最小的MTU,因为在通信路径上不同网络的链路层MTU不同。通信路径中最小的MTU被称为路径MTU。
         网络中一些常见链路层协议MTU的缺省数值如下:
    • FDDI协议:4352字节
    • 以太网(Ethernet)协议:1500字节
    • PPPoE(ADSL)协议:1492字节
    • X.25协议(Dial Up/Modem):576字节
    • Point-to-Point:4470字节
          以太网和802.3对数据帧的长度有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元,不同类型的网络大多都有一个上限,这个值是根据硬件来确定的。

           如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片,把数据分成若干片,这样每一片就小于MTU,。
    三、路径MTU
           路径MTU和上述内容类似,只不过是在传输数据的时候需要知道真个路径的最小MTU.
    展开全文
  • 02以太网帧格式

    2020-07-12 10:02:32
    以太网的帧格式如下所示: 其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。类型字段有三种值...

    以太网(RFC 894)帧格式

    以太网的帧格式如下所示:
    在这里插入图片描述其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。类型字段有三种值,分别对应IP、ARP、RARP。帧末尾是CRC校验码。
    以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)。ifconfig命令的输出中也有“MTU:1500”。
    注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度

    展开全文
  • 其中,帧数据字段的最小长度为46B。如果帧的LLC数据少于46B,则应将数据字段填充至46B。填充字符是任意的,不计入长度字段值中。 在校验字段中,使用的是CRC校验。校验的范围包括目的地址字段、源地址字段、长度字段...
  • 以太网(RFC 894)帧格式以太网的帧格式如下所示:其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件...

    以太网(RFC 894)帧格式

    以太网的帧格式如下所示:


    其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。协议字段有三种值,分别对应IP、ARP、RARP。帧末尾是CRC校验码。

    以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)。ifconfig命令的输出中也有“MTU:1500”。注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。

     ARP数据报格式

    在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。

    每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。想一想,为什么表项要有过期时间而不是一直有效?

    ARP数据报的格式如下所示


    注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。硬件类型指链路层网络类型,1为以太网,协议类型指要转换的地址类型,0x0800为IP地址,后面两个地址长度对于以太网地址和IP地址分别为6和4(字节),op字段为1表示ARP请求,op字段为2表示ARP应答。

    下面举一个具体的例子。
    请求帧如下(为了清晰在每行的前面加了字节计数,每行16个字节):
    以太网首部(14字节)
    0000: ff ff ff ff ff ff 00 05 5d 61 58 a8 08 06
    ARP帧(28字节)
    0000: 00 01
    0010: 08 00 06 04 00 01 00 05 5d 61 58 a8 c0 a8 00 37
    0020: 00 00 00 00 00 00 c0 a8 00 02
    18
    679
    填充位( 字节)
    0020: 00 77 31 d2 50 10
    0030: fd 78 41 d3 00 00 00 00 00 00 00 00
    以太网首部:目的主机采用广播地址,源主机的MAC地址是00:05:5d:61:58:a8,上层协议类
    型0x0806表示ARP。
    ARP帧:硬件类型0x0001表示以太网,协议类型0x0800表示IP协议,硬件地址(MAC地址)长度
    为6,协议地址(IP地址)长度为4,op为0x0001表示请求目的主机的MAC地址,源主机MAC地址
    为00:05:5d:61:58:a8,源主机IP地址为c0 a8 00 37(192.168.0.55),目的主机MAC地址全0待填
    写,目的主机IP地址为c0 a8 00 02(192.168.0.2)。
    由于以太网规定最小数据长度为46字节,ARP帧长度只有28字节,因此有18字节填充位,填充位
    的内容没有定义,与具体实现相关。
    应答帧如下:
    以太网首部
    0000: 00 05 5d 61 58 a8 00 05 5d a1 b8 40 08 06
    ARP帧
    0000: 00 01
    0010: 08 00 06 04 00 02 00 05 5d a1 b8 40 c0 a8 00 02
    0020: 00 05 5d 61 58 a8 c0 a8 00 37
    填充位
    0020: 00 77 31 d2 50 10
    0030: fd 78 41 d3 00 00 00 00 00 00 00 00
    以太网首部:目的主机的MAC地址是00:05:5d:61:58:a8,源主机的MAC地址
    是00:05:5d:a1:b8:40,上层协议类型0x0806表示ARP。
    ARP帧:硬件类型0x0001表示以太网,协议类型0x0800表示IP协议,硬件地址(MAC地址)长度
    为6,协议地址(IP地址)长度为4,op为0x0002表示应答,源主机MAC地址
    为00:05:5d:a1:b8:40,源主机IP地址为c0 a8 00 02(192.168.0.2),目的主机MAC地址

    为00:05:5d:61:58:a8,目的主机IP地址为c0 a8 00 37(192.168.0.55)。

    如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目的主机通信?

     IP数据报格式

    IP数据报的格式如下(这里只讨论IPv4)


    IP数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍。对于IPv4,4位版本字段是4。4位首部长度的数值是以4字节为单位的,最小值为5,也就是说首部长度最小是4x5=20字节,也就是不带任何选项的IP首部,4位能表示的最大值是15,也就是说首部长度最大是60字节。8位TOS字段有3个位用来指定IP数据报的优先级(目前已经废弃不用),还有4个位表示可选
    的服务类型(最小延迟、最大呑吐量、最大可靠性、最小成本),还有一个位总是0。总长度是整个数据报(包括IP首部和IP层payload)的字节数。每传一个IP数据报,16位的标识加1,可用于分片和重新组装数据报。3位标志和13位片偏移用于分片。TTL(Time to live)是这样用的:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)。协议字段指示上层协议是TCP、UDP、ICMP还是IGMP。然后是校验和,只校验IP首部,数据的校验由更高层协议负责。IPv4的IP地址长度为32位。
    前面讲了以太网帧中的最小数据长度为46字节,不足46字节的要用填充字节补上,那么如何界定这46字节里前多少个字节是IP、ARP或RARP数据报而后面是填充字节?

    展开全文
  • 以太网(RFC 894)格式(图36.6) 其中源地址和目的地址是指网卡硬件地址(也叫MAC地址),长度是48位,是在网 卡出厂时固化。...以太网帧的数据长度规定最小46字节,最大1500字节,AR
  • 1.以太网帧以太网链路上的数据包称作...另外,以太网帧的最小长度为64字节。 [1]4字节的FCS是网卡处理的,所以抓到的包看不到这个字段(网卡驱动去掉了),组建包时也不用设置这个字段(由网卡驱动计算填充)。 [2]每...
  • RFC894 译-study 格式

    2013-02-27 23:56:11
    1.格式  ...如果需要,数据区域通过字节0进行填充以满足以太网最小帧长度要求。这个填充不能作为IP数据包一部分,同时IP报头中总长度字段计算时也不包括填充字段长度。通过以太网传输数据包数据区域
  • 关于wire shark抓到以太网包...当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充以满足数据长不小于64 字节。由于填充数据是由MAC子层负责,也就是设备驱动程序。 当数据到达网卡时,在物理层上网
  • 数据字段的最小长度=最小长度64字节-18字节额首部和尾部 为了达到比特同步,在传输媒体上实际传送的要比MAC帧还多8个字节 无效的MAC帧 数据字段的长度与长度字段的值不一致 帧的长度不是整数个字节 用收到的帧检验...
  • 一个规定了最大与最小长度,规定最小长度是为了CSMA/CD协议能检测冲突然后随机避让。规定最大长度是考虑到如果数据传输出错最多只需要传输最大长度的数据,有效载荷最大为1500字节,但是当数据过大时候需要...
  • iphdr->tot_len 总长度字段(16位)是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道 IP数据报中数据内容的起始...尽管以太网的最小帧长为46字节,但是IP数据可能会更短。如果没有总长度
  • 网络中各种协议总结学习以太网帧结构IP报文格式ARP协议ICMP协议UDP用户数据包协议DNSTCP协议FTP协议HTTP协议SMTP协议POP...接下来详细介绍一下以太网帧的2字节类型字段 因为后面的数据区,是46–1500字节,所以如果2
  • 1、以太网帧格式 2.2、ARP数据报格式 3、IPV4数据报格式如下: IP数据包首部长度数据长度都是可变,但总是4整数倍。 4位版本:IPV4版本号是4。 4位首部长度:它里面数值是以4字节为单位,...
  • 如发现有差错,数据链路层就丢弃这个出了差错的帧,然后采取下面两种方法之一:或者不作任何其他的处理;或者由数据链路层通知对方重传这一帧,直到正确无误地收到此帧为止。” 可见,如果选择前一种方法,即不作...
  • 一、链路层 1、分类: ①广播型信道:通常用在局域网、无线LAN(WIFI)、卫星网和混合光纤电缆。...数据字段最小长度是46字节。如果数据报比这个小,就填充。去除填充是靠网络层首部数据长度字段。
  • 关于TCP/IP

    2016-01-17 11:00:17
    着重要注意一下的就是以太网的帧格式问题: 其中的类型字段,主要制订了IP数据报,ARP,RARP 3中类型。 源地址及目的地址指的是网卡的硬件地址,长度为6个Byte。以太网帧中的数据长度规定最小46字节,最大1500字节,...
  • 1、FR数据帧转发过程 跟考官说不太会,考官说随便讲,想到哪说到哪讲了...以太网数据帧的数据长度(回答1500B,考官追问最小为多少,回答64B,考官说这是最小的帧长度数据长度需要减去其它字段为46B)。点评:考生...
  • ARP

    2017-08-21 17:27:20
    以太网(RFC 894)格式 图一 以太网数据包类型 其中源地址和目的地址是指网卡硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化。用ifconfig命令看一下,...以太网帧的数据长度规定最小46字节
  • 一.网络接口层(链路层): ①以太网帧格式: ...其中目的地址和源地址均是网卡地址(MAC地址),对于每个设备都是唯一,ifconfig ---->HWaddr...以太网帧的数据长度最小为46字节,最大为1500字节,也就是封装上
  • 问题3-2:当数据链路层使用PPP协议或CSMA/CD协议时,既然不保证可靠传输,那么为什么对所传输的帧进行差错检验呢? 问题3-3:为什么旧的版本教材在数据链路层一章中讲授可靠传输,但现在新的版本教材则取消了可靠...
  • 前 言本书讲述了在互联网上传送数据的“盒子”内部是如何工作,这些“盒子”有不同名称:网桥、路由器、交换机和集线器。本书也讲述了连接到网络上设备。在这个领域有不少混乱。大多数术语定义不准确,...
  • map不初始化长度和初始化长度的区别 map承载多大,大了怎么办 mapiterator是否安全?能不能一边delete一边遍历? 字符串不能改,那转成数组能改吗,怎么改 怎么判断一个数组是否已经排序 普通map如何不用锁解决...
  • RFC中文文档-txt

    2009-09-11 14:56:56
    RFC2474 IPv4与IPv6包头中差分服务字段(DS Field)定义 RFC2475 分类业务体系结构 RFC2492 IPv6 通过ATM网络 RFC2495 有关 DS1,E1,DS2,E2接口类型管理部件定义 RFC2508 低速串行链路下IP/UDP/RTP数据包头...
  • 中文版RFC,共456

    2009-04-19 22:56:29
    RFC2474 IPv4与IPv6包头中差分服务字段(DS Field)定义 RFC2475 分类业务体系结构 RFC2492 IPv6 通过ATM网络 RFC2495 有关 DS1,E1,DS2,E2接口类型管理部件定义 RFC2508 低速串行链路下IP/UDP/RTP数据包头...
  • RFC1643 以太网-类似界面类型管理对象定义 RFC1658 字符流设备使用SMIv2管理对象定义 RFC1661_点对点协议(PPP) RFC1671 向IPng 过渡和其他考虑白皮书 RFC1690 Internet工程与计划组(IEPG)介绍 RFC1691...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

以太网的帧数据字段的最小长度是