1
choury 2023-02-26 11:16:13 +08:00
发出去肯定没问题啊,直接操作驱动,但是发出去之后呢?这条链路上的所有设备处理这个包的时候都是要过 ip 协议栈的,遇到了都会丢掉的,还是说你能掌控这个链路上的所有设备?
|
2
mxi1 2023-02-26 11:36:10 +08:00
可以发出去,但受限于整个传输链路上的中间节点(路由器、交换机)的配置,极大概率都会被丢掉。
如果你有一个可控的网络环境,可以配起来看看,内核协议栈也可以通过 offloading 的方式来绕过 MTU 的限制。 |
3
Songxwn 2023-02-26 11:40:10 +08:00
那是以太网也有限制的
|
4
hhhsuan 2023-02-26 11:49:06 +08:00 via Android
可以直接调网卡驱动的接口
|
5
leonshaw 2023-02-26 11:49:11 +08:00 via Android
直接把 MTU 改大不就行了
|
6
nightwitch 2023-02-26 12:12:55 +08:00 via Android
mtu 的限制不仅在你的机器上,而是在链路的所有机器上。
|
7
msg7086 2023-02-26 12:46:17 +08:00
可以发,并且在一毫秒后被其他设备扔掉……
|
8
iX8NEGGn 2023-02-26 13:03:22 +08:00 via iPhone
看来计算机网络学得不是深刻
|
9
hxysnail 2023-02-26 13:03:33 +08:00
首先,MTU 不是 IP 层的限制,而是链路层的限制,可以理解成链路层一帧能够传输的数据量: https://fasionchan.com/network/ethernet/mtu/
其次,IP 包到达目的 IP 前通常会经过多跳,链路上的网络设备传输能力千差万别,根据木桶原理,由传输能力最弱的节点决定,就算你的设备比较强大,将 MTU 调大也没用。 最后,IP 包其实也可以分片: https://fasionchan.com/network/ip/fragmentation/ ,不过有些设备可能不支持,因为这个特性很鸡肋,只要其中有一个分片丢了就得全部重传;而且分片重组也有很多开销 |
10
DefoliationM 2023-02-26 13:14:32 +08:00 via Android
网络运营商给你全丢了,而且包越大传输中越可能受到干扰,越不稳定,没必要
|
11
Kunmona 2023-02-26 13:29:03 +08:00 via Android
MTU 是针对数据链路层的概念,数据包过大会非常不利于传输,还会增大数据延迟,IP 层也有分片功能去针对大数据包的场景。实在要用也可以设置巨帧的方法,但路由器交换机需要支持,双方接口也需要额外设置,巨帧也一般用在局域网中,没哪个运营商会接收巨帧,这会大幅增加数据交换延迟。
|
12
dialtcp 2023-02-26 17:19:23 +08:00 via Android
一个分布式系统里的作恶节点太少了,没法实现,你得控制整条链路的节点
|
13
blackeeper 2023-02-26 20:32:00 +08:00
看来你对 PDU ( Protocol Data Unit )不太熟,这个是网络的对等实体传送的讯息单元,不同的网络最大 mtu 是不一样的。如果你发送了一个超过设备的 mtu ,那么设备会 DF (分片),如果设置了禁止 DF ,那么就直接丢弃了。
你可以用 ping 命令验证,尝试加或者不加“-f”,“-f”是禁止分片,ping 192.168.1.1 -l 1800 -f 物理层(一层) PDU 指数据位( Bit )。 数据链路层(二层) PDU 指数据帧( Frame )。 网络层(三层) PDU 指数据包[注 1]( Packet )或数据报( Datagram )[1]。 传输层(四层) PDU 指数据段( Segment )。 |
14
wheat0r 2023-02-26 21:30:35 +08:00
你说的是不是 FCoE ?
|
15
xuanbg 2023-02-26 22:06:13 +08:00
你发管你发,路由器转发失败自然丢掉,对方能接收到算我输。
|
16
cat9life 2023-02-27 08:36:32 +08:00
可以随便发,但是传输中的节点会怎么处理?
|
17
julyclyde 2023-02-27 08:37:31 +08:00
@blackeeper DF 是“don't 分片”的缩写吧?
|
18
blackeeper 2023-02-27 19:53:17 +08:00
@julyclyde 是的
|