Closed draveness closed 2 years ago
写的真好,通俗易懂
TCP分段这里感觉写的有点问题: 1、IP分片不会导致TCP报文段乱序,因为IP包最终会重组; 2、TCP分段只能解决两端不分片,整个链路中还是可能会发生分片的,由链路中间节点的MTU决定。
@ralphal TCP分段这里感觉写的有点问题: 1、IP分片不会导致TCP报文段乱序,因为IP包最终会重组; 2、TCP分段只能解决两端不分片,整个链路中还是可能会发生分片的,由链路中间节点的MTU决定。
没太理解你的意思,TCP 的 MSS 会基于路径 MTU 确定啊
@draveness
@ralphal TCP分段这里感觉写的有点问题: 1、IP分片不会导致TCP报文段乱序,因为IP包最终会重组; 2、TCP分段只能解决两端不分片,整个链路中还是可能会发生分片的,由链路中间节点的MTU决定。
没太理解你的意思,TCP 的 MSS 会基于路径 MTU 确定啊
PMTU的确能完美解决IP分片问题,不过只是理想状态,MSS协商跟PMTU并不是强相关
@ralphal
@draveness
@ralphal TCP分段这里感觉写的有点问题: 1、IP分片不会导致TCP报文段乱序,因为IP包最终会重组; 2、TCP分段只能解决两端不分片,整个链路中还是可能会发生分片的,由链路中间节点的MTU决定。
没太理解你的意思,TCP 的 MSS 会基于路径 MTU 确定啊
PMTU的确能完美解决IP分片问题,不过只是理想状态,MSS协商跟PMTU并不是强相关
你的意思是 MSS 可能会大于路径发现的 MTU 么,有相关的 RFC 或者 case 么
分段传输的 TCP 数据
20 字节 IP 头 + 20 字节 TCP 头 + 1460 字节数据
为什么TCP数据会携带IP头?
分段传输的 TCP 数据
20 字节 IP 头 + 20 字节 TCP 头 + 1460 字节数据
为什么TCP数据会携带IP头?
TCP 数据段会被打包成 IP 数据包
你好,想知道您的图怎么画的呢
你好,想知道您的图怎么画的呢
看下文章结尾
@draveness
@ralphal
@draveness
@ralphal TCP分段这里感觉写的有点问题: 1、IP分片不会导致TCP报文段乱序,因为IP包最终会重组; 2、TCP分段只能解决两端不分片,整个链路中还是可能会发生分片的,由链路中间节点的MTU决定。
没太理解你的意思,TCP 的 MSS 会基于路径 MTU 确定啊
PMTU的确能完美解决IP分片问题,不过只是理想状态,MSS协商跟PMTU并不是强相关
你的意思是 MSS 可能会大于路径发现的 MTU 么,有相关的 RFC 或者 case 么
不是,我的意思是,在发送TCP报文前,不能保证一定能学习到PMTU,那么这个时候协商的MSS就可能大于PMTU
有个疑问:如果PMTUD发现了链路最小的MTU,如果在传输的过程中这条链路比较拥挤,是不是会选择另外一条链路,这时的最小MTU可能会变,这个时候怎么办呀?
有个疑问:如果PMTUD发现了链路最小的MTU,如果在传输的过程中这条链路比较拥挤,是不是会选择另外一条链路,这时的最小MTU可能会变,这个时候怎么办呀?
最小 MTU 变了会再走一次 Path MTU Discovery
"TCP 协议无法的接收"
2020-05-15 UPDATES:已修复
网络这一部分,再来一两篇讲一下链路、和物理层就全了
网络这一部分,再来一两篇讲一下链路、和物理层就全了
后面有链路层相关的
@draveness
分段传输的 TCP 数据 20 字节 IP 头 + 20 字节 TCP 头 + 1460 字节数据 为什么TCP数据会携带IP头?
TCP 数据段会被打包成 IP 数据包
20 字节 IP 协议头 + 8 字节 UDP 协议头 + 1472 字节数据; 为什么UDP 的1500 没有算上IP头 而 TCP 的 1500包含了 IP头?
可以详细描述下你的问题么,我没有理解你的问题
TCP协议中,如果MSS大于MTU,除了第一个数据包有TCP header,跟着的都没有,即使不丢包,包顺序也不乱,接收方该如何组装数据呀,就凭接受的顺序来拼接吗
UDP数据包大小如果超过了MTU,接收方又是怎么拼接多个数据包的呢
- TCP协议中,如果MSS大于MTU,除了第一个数据包有TCP header,跟着的都没有,即使不丢包,包顺序也不乱,接收方该如何组装数据呀,就凭接受的顺序来拼接吗
- UDP数据包大小如果超过了MTU,接收方又是怎么拼接多个数据包的呢
IP 数据头里有偏移量,可以搜一下 IP 分片与重组
@draveness
@ralphal
@draveness
@ralphal TCP分段这里感觉写的有点问题: 1、IP分片不会导致TCP报文段乱序,因为IP包最终会重组; 2、TCP分段只能解决两端不分片,整个链路中还是可能会发生分片的,由链路中间节点的MTU决定。
没太理解你的意思,TCP 的 MSS 会基于路径 MTU 确定啊
PMTU的确能完美解决IP分片问题,不过只是理想状态,MSS协商跟PMTU并不是强相关
你的意思是 MSS 可能会大于路径发现的 MTU 么,有相关的 RFC 或者 case 么
我理解三次握手的时候双方发送的MSS是根据本机的MTU算的吧,网络中如果有较小的mtu的设备,两边的主机会知道么,没发现三次握手前会探测PMTU
看了几遍,有些地方不能理解: 如果一个MSS 的大小 小于 MTU 大小 会直接发送给对方吗? 比如 MSS = 600,MTU = 800
看了几遍,有些地方不能理解: 如果一个MSS 的大小 小于 MTU 大小 会直接发送给对方吗? 比如 MSS = 600,MTU = 800
MSS 和 MTU 是固定值,这两个是不同层协议的设置
@draveness
看了几遍,有些地方不能理解: 如果一个MSS 的大小 小于 MTU 大小 会直接发送给对方吗? 比如 MSS = 600,MTU = 800
MSS 和 MTU 是固定值,这两个是不同层协议的设置
也就是说 MSS只要不超过MTU 就没问题, 那么一个MTU 内部 会包含多个MSS么 不考虑 协议头大小, MTU=2*MSS 我发送3个MSS大小的包给对方, 会发送三个MTU 还是 2个MTU
@draveness
看了几遍,有些地方不能理解: 如果一个MSS 的大小 小于 MTU 大小 会直接发送给对方吗? 比如 MSS = 600,MTU = 800
MSS 和 MTU 是固定值,这两个是不同层协议的设置
也就是说 MSS只要不超过MTU 就没问题,
对,其实超过也没问题,只是 TCP 的数据会被分成多个数据包发送,然后其中任意一个丢了 IP 协议都会重传所有的数据包
那么一个MTU 内部 会包含多个MSS么
一个 IP 数据包可能包含多个 TCP 数据段(Segment)
不考虑 协议头大小, MTU=2*MSS 我发送3个MSS大小的包给对方, 会发送三个MTU 还是 2个MTU
我觉得这个问题意义不大,而且这个问题自己应该可以想明白,再看下 TCP 和 IP 的协议头
UDP和TCP报文因为MTU分片时,好像不太一样,UDP的情况下,第二个分片里面不包含UDP的首部8字节,但是TCP的第二个分片里是包含了TCP的首部20字节的
默认mss会自动协商,除非遇到某些不支持自动协商的终端设备且链路中存在overlap,举个栗子:通过openvpn/ipsec组网访问阿里云的SLB :D,就会有问题。
这个总结很到位!
@ralphal
@draveness
@ralphal
@draveness
@ralphal TCP分段这里感觉写的有点问题: 1、IP分片不会导致TCP报文段乱序,因为IP包最终会重组; 2、TCP分段只能解决两端不分片,整个链路中还是可能会发生分片的,由链路中间节点的MTU决定。
没太理解你的意思,TCP 的 MSS 会基于路径 MTU 确定啊
PMTU的确能完美解决IP分片问题,不过只是理想状态,MSS协商跟PMTU并不是强相关
你的意思是 MSS 可能会大于路径发现的 MTU 么,有相关的 RFC 或者 case 么
不是,我的意思是,在发送TCP报文前,不能保证一定能学习到PMTU,那么这个时候协商的MSS就可能大于PMTU
个人理解,不知道是否有误:
按博主文章里的描述,TCP连接建立时可以通过PMTUD(Path MTU Discovery)协商MSS,理论上可以保证MSS小于PMTU,这点看到在TCP/IP卷1点24.2里也有提到。不过因为网络层路由线路是动态变化的,有可能变小,所以实际上还是有可能发生分片,但是这种情况应该也比不采用PMTUD会好一些。
文末总结部分:
IP 协议拆分数据是因为物理设备的限制,一次能够传输的数据由路径上 MTU 最小的设备决定,一旦 IP 协议传输的数据包超过 MTU 的限制就会发生丢包,
这里应该是发生分片吧,丢包应该设置了DF才会发生吧
2021-03-15 UPDATES:已修复
IP 协议传输数据丢包是什么概念,是不传直接丢弃了吗
比如某个路由器处理不过来了,就丢弃了…很无情
On Tue, Jul 27, 2021 at 11:13 AM stefan @.***> wrote:
IP 协议传输数据丢包是什么概念,是不传直接丢弃了吗
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/draveness/blog-comments/issues/183#issuecomment-887173927, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAD2YSA72LU7BRKLELNIZYLTZYP4HANCNFSM4KTTMXRA .
-- Zhen Tian
@ralphal TCP分段这里感觉写的有点问题: 1、IP分片不会导致TCP报文段乱序,因为IP包最终会重组; 2、TCP分段只能解决两端不分片,整个链路中还是可能会发生分片的,由链路中间节点的MTU决定。
写的应该没问题,IP 包是会重组。 而作者意思是有丢包风险,会带来了更多额外的重传和重组开销。
根据我自己的抓包情况,UDP包在IP层被分片,其实是最后一个分片拥有UDP头部。文中提到 2000 字节的UDP包,是第一个IP分片拥有UDP头,这里是否有问题?
https://draveness.me/whys-the-design-tcp-segment-ip-packet
当应用层协议使用 TCP/IP 协议传输数据时,TCP/IP 协议簇可能会将应用层发送的数据分成多个包依次发送,而数据的接收方收到的数据可能是分段的或者拼接的,所以它需要对接收的数据进行拆分或者重组。本文会分别从 IP 协议和 TCP 协议两个角度出发分析为什么应用层写入的数据包会被 TCP/IP 协议拆分发送。