linux – MTU修改是否影响双向?

前端之家收集整理的这篇文章主要介绍了linux – MTU修改是否影响双向?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
ifconfig 1.2.3.4 mtu 1492

这将为传入,传出数据包或两者设置MTU为1492?我认为这只是为了进来

解决方法

TLDR:两者.它将只传输有效负载长度小于或等于该大小的数据包.类似地,它只接受有效载荷长度在MTU内的数据包.如果一个设备发送较大的数据包,它应该使用ICMP无法访问(超大)消息.

硝烟:
调整您的设备的MTU是有用的,因为您和您的目的地之间的其他跳可能会以另一种形式(例如,VPN或PPPoE)封装您的数据包.您的数据包周围的这个层会导致沿着线路发送更大的数据包.如果这个新的较大的分组超过了该层的最大大小,则该分组将被分成多个分组(在完美的世界中)或完全丢弃(在现实世界中).

作为一个实际的例子,考虑将计算机通过以太网连接到与ISP通话的ADSL调制解调器.以太网允许一个1500字节的有效载荷,其中8个字节将被PPPoE使用.现在我们下载到1492个字节,可以在单个数据包中传送到您的ISP.如果要发送一个1500字节的全尺寸以太网有效载荷,则会被路由器“分段”,并分为两个数据包(一个具有1492字节有效负载,另一个具有8字节有效负载).

当您想要通过此连接发送更多数据时,问题出现 – 让我们说您想发送3000字节:您的计算机将根据您的MTU将其拆分 – 在这种情况下,每个数据包为1500个字节,并将其发送到ADSL调制解调器然后将它们分开,以便它可以实现其MTU.现在,您的3000字节数据已经分成四个数据包:两个有效负载为1492字节,另两个数据包有8个字节的有效载荷.这显然效率不高,我们真的只需要三个数据包来发送这个数据.如果您的计算机配置了网络的正确MTU,它将首先发送为三个数据包(两个1492字节数据包和一个16字节数据包).

为了避免这种低效率,许多IP堆栈在名为“不要分段”的IP头中翻转一下.在这种情况下,我们会将我们的第一个1500字节的数据包发送到ADSL调制解调器,并且会拒绝该数据包,并通过Internet控制(ICMP)消息通知我们,我们的数据包太大.然后我们会用较小的数据包重试传输.这称为路径MTU发现.类似地,在TCP层下面的一层,避免碎片化的另一个因素是MSS(最大段大小)选项,其中两个主机以最大大小的数据包进行回复,它们可以传输而不分片.这通常从MTU计算.

错误配置的防火墙丢弃所有ICMP流量时,出现此问题.当连接到(例如)Web服务器时,您构建一个TCP会话并发送,您愿意接受基于1500字节MTU的TCP数据包(因为您通过以太网连接到您的路由器).如果外部Web服务器希望向您发送大量数据,他们会将其拆分为大块(当与TCP和IP头组合时)出现到1500字节的有效载荷并发送给您.您的ISP将收到其中一个,然后尝试将其包装到PPPoE数据包中,以发送到ADSL调制解调器,但发送太大.因此,它将回复ICMP无法访问,这将在完美的世界中导致远程计算机缩小其MSS以进行连接并重新传输.但是,如果防火墙出现故障,则外部Web服务器将永远无法访问此ICMP消息,并且此数据包永远不会对您造成影响.

将您的MTU最终设置在您的以太网设备上是可取的,将正确的大小帧发送到ADSL调制解调器(避免它要求您以较小的帧重传),但是在构建TCP时影响发送到远程主机的MSS大小至关重要连接.

猜你在找的Linux相关文章