mtu

分片和组装

霸气de小男生 提交于 2019-12-05 20:15:47
互联网协议(IP)是整个互联网架构的基础,可以支持不同的物理层网络,即IP层独立于链路层传输技术。不同的链路层不仅在传输速度上有差异,还在帧结构和大小上有所不同,不同MTU参数描述了数据帧的大小。为了实现IP数据包能够使用不同的链路层技术,需要将IP数据包变成适合链路层的数据格式,IP报文的分片即是IP数据包为了满足链路层的数据大小而进行的分割。 在IPv6不要求路由器执行分片操作,而是将检测路径最大传输单元大小的任务交给了主机。 分片 当设备收到IP报文时,分析其目的地址并决定要在哪个链路上发送它。MTU决定了数据载荷的最大长度,如IP报文长度比MTU大,则IP数据包必须进行分片。每一片的长度都小于等于MTU减去IP首部长度。接下来每一片均被放到独立的IP报文中,并进行如下修改: 总长字段被修改为此分片的长度; 更多分片(MF)标志被设置,除了最后一片; 分片偏移量字段被调整为合适的值; 首部检验和被重新计算。 例如,对于一个长20字节的首部和一个MTU为1,500的以太网,分片偏移量将会是:0、(1480/8)=185、(2960/8)=370、(4440/8)=555、(5920/8)=740、等等。 如果报文经过路径的MTU减小了,那么分片可能会被再次分片。 比如,一个4,500字节的数据载荷被封装进了一个没有选项的IP报文(即总长为4,520字节),并在MTU为2

mtu测试

耗尽温柔 提交于 2019-12-05 19:37:25
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/jeromezmzx007/article/details/90600344 MTU实测 ip报头20字节,icmp报头8字节 目的:通过发送长度大于1500的icmp包详细分析分片与总长度的关系 情景: ip地址为10.60.30.100/16的PC发送大小为2000的ICMP包至10.60.10.252/16,它们处于同一网段,即window命令提示符下输入: ping 10.60.10.252 –l 2000 图1.第一个icmp request用ethereal抓包截图的各字段,请注意蓝色部分 图1 图1分析:因为长度是2000,大于1500,所以会分片发送,如图1,IP字段头部长为20bytes,total length为1372bytes,偏移量为0;icmp字段头部长度为8bytes 请注意第一个包total length不一定就是MTU 1500,和操作系统协议栈实现有关. 图2: 第一个icmp request分片包 图2分析: IP字段的identification为0x90dd(2525)与图1的identification相同,说明是图1包的分片包. 偏移量fragment offset为1352

Sending TCP frames of fixed length

独自空忆成欢 提交于 2019-12-05 09:08:51
I need to send some data over the subnet with fixed non-standard MTU (for example, 1560) using TCP. All the Ethernet frames transfered through this subnet should be manually padded with 0's, if the frame's length is less than MTU. So, the data size should be (1560 - sizeof( IP header ) - sizeof( TCP header ) ). This is the way I am going to do it: I set the TCP_CORK option to decrease the fragmenting of data. It is not reliable, because there is 200 millisecond ceiling, but it works. I know size of IP header (20 bytes), so data length should be equal to (1540 - sizeof( TCP header )). That's

一个数据包的大小是好多?

こ雲淡風輕ζ 提交于 2019-12-04 15:44:35
一个数据包的大小是好多? 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不可达差错,告诉你

set MTU in C programmatically

牧云@^-^@ 提交于 2019-12-04 14:37:07
问题 A client requested that the MTU limit should be 1492. Is there a way to do it in the source code (program in C)? Is there any other way to do it in general? (ifconfig?) Why does somebody needs to modify MTU to a certain limit? What is the benefit? And the most important: By changing the MTU is there any risk to break the code? 回答1: It's not about speed directly; By increasing MTU you're reducing overhead, which is data that is responsible for the proper delivery of the package but it's not

Linux网络基础

落爺英雄遲暮 提交于 2019-12-04 13:56:13
1、简述osi七层模型和TCP/IP五层模型 osi七层模型分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。   1)物理层:这一层的主要功能是二进制传输数据,界定连接器和网线的规格;为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范和功能规范   2)数据链路层:这一层的主要功能是互连设备之间传送和识别数据帧;定义如何格式化数据以便进行传输以及如何控制对网络的访问   3)网络层:这一层的主要功能是地址管理和路由选择;路由数据包,选择传递数据的最佳路径,支持逻辑寻址和路径选择   4)传输层:这一层主要功能是管理两个节点之间的数据传输,负责可靠传输;确保数据传输的可靠性(确保数据被可靠地传送到目标地址);建立、维护和终止虚拟电路;通过错误检查和恢复;信息流控制来保障可靠性。   5)会话层:这一层的主要功能是通信管理;建立、管理和终止在应用程序之间的会话。   6)表示层:这一层的主要功能是设备固有数据格式和网络标准数据格式的转换;确保接受系统可以读出该数据、格式化数据、构建数据;协商用于应用层的数据传输语法;提供加密。   7)应用层:这一层的主要功能是针对特定应用协议为其应用程序进程提供网络服务;提供用户身份验证。 tcp/ip协议栈把网络分为5层结构,分别是物理层、数据链路层、internet层和应用层。   1)物理层:负责数据传输的硬件

环回接口以及MTU

烂漫一生 提交于 2019-12-04 08:03:07
一、环回接口 1.环回接口出现的目的 为了解决客户机使用网络协议(如TCP/IP协议)与同一台计算机上的服务器通信的需求,实现了工作在网络层的虚拟的环回网络接口。 它不是真正的网络接口,实际上是一种由操作系统提供的专用软件,可通过TCP/IP与统一主机的其他服务器进行通信。 2.地址选择 A类地址段127.0.0.0默认被用作本地环回地址,其实只要是127开头的所有地址均是环回地址。 这个地址是用于标志本机的localhost。也就是说当要向本机发送数据时,就会用到环回地址。 具体事例说明: 就拿pc来说,pc的网卡就相当于路由器的一个接口。如一台pc网卡上设置的地址为220.172.115.50,网卡连接正常时,协议状态up,在dos命令行状态下输入ipconfig便可看到该网卡上的IP地址。此时在主机上ping其网卡地址的过程如下:主机发送一个icmp包,目的地址为220.172.115.50,请求对方回答;主机根据默认环回主机路由发现数据包目的地址的下一跳指向其loopback接口(主机事先并不知道该地址就在其网卡上),于是将数据包发往其loopback接口(即直接发往cpu);之后主机收到源IP为220.172.114.50的ping包,于是对该数据包进行回答,回应包亦根据环回路由原路返回。从该过程可看出,该数据包的始发点和被接收点都在同一个接口

TCP/UDP and ethernet MTU Fragmentation

跟風遠走 提交于 2019-12-03 17:26:18
I've read various sites and tutorials online but I am still confused. If the message is bigger than IP MTU, then send() returns the byte sent. What happens to the rest of the message? Am I to call send() again and attempt to send rest of the message? Or is that something IP layer should take care of automatically? If you are using TCP then the interface presented to you is that of a stream of bytes. You don't need to worry about how the stream of bytes gets from one end of the connection to the other. You can ignore the IP layer's MTU. In fact you can ignore the IP layer entirely. When you

MTU是什么?

心已入冬 提交于 2019-12-03 17:04:19
MTU 是 Maximum Transmission Unit 的缩写。 意思是网络上传送的最大数据包。 MTU的单位是字节。 大部分网络设备的MTU都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络 速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢包。 如何检测网关的 MTU ? 在本机打开dos窗口,执行: ping -f -l 1452 192.168.1.1 其中192.168.1.1是网关IP地址,1452是数据包的长度。请注意,上面的参数是“-l”(小写的L),而不是“-1”。 如果能ping通,表示数据包不需要拆包,可以通过网关发送出去。 如果出现: Packet needs to be fragmented but DF set. Packet needs to be fragmented but DF set. Packet needs to be fragmented but DF set. Packet needs to be fragmented but DF set. 表示数据包需要拆开来发送。此时,减少数据包长度,再执行上面的ping命令。从1400到1472之间多试几次,就能找到合适的数据包长度了。把数据包 长度加上数据包头28字节,就得到MTU的值。

Centos7+LVS-DR+Apache负载均衡web实验

こ雲淡風輕ζ 提交于 2019-12-03 10:29:11
Centos7+LVS-DR+Apache负载均衡web实验 分类: linux运维技术 , 负载均衡 标签: lvs , 负载均衡 一、简介   1、理论已经在上一篇博客简述,不了解得可以看看      https://www.cnblogs.com/zhangxingeng/p/10497279.html   2、LVS-DR优缺点复习          关于这种模式:       1)确保前端路由器将目标ip为vip的请求报文发往director         a、在前端网关做静态绑定;         b、在RS上使用arptables;         c、在RS上修改内核参数以限制arp通告即应答级别;           arp_announce           arp_ignore       2)、RS的RIP可以使用私网或公网地址;       3)、RS跟director在同一物理网络;       4)、请求报文经由director,响应报文直接发往client;       5)、此模式不支持端口映射;       6)、RS支持大多数的OS;       7)、RIP的网关不能指向DIP,以确保响应报文不经由director;             缺点:LVS调度器及应用服务器在同一个网段中,因此不能实现集群的跨网段应用。      优点