因此抓包可以看到 Android 发起的 SYN 都是把 MSS 设置成了 1360
but 服务器上 ppp 设备的 MTU 是 1396,1400的包无法通过这个设备,因此我们需要修改出去的包的 MTU 为1356才能正常工作。网上很多关于 PPTP 的 MSS 设定都提到了 1356 这个数值。
考虑到传输中避免不了本地有POST大量数据的可能,因此还得把3WHS回来的 SYN/ACK 里面的 MSS 值也修改成1356,否则Android自以为双方的min-mss仍然是本地的1360呢
上面说的都是理论,现实则是即使 MSS 设置成了 1356,仍然有些服务是访问不到的,比如 google play。晚上抱着试试看的心情,逐步减少 MSS,最后发现改到 1320 的时候,似乎访问全部正常了。
考虑到 1320 = 1396 - 20(IP Header) - 16(GRE header) - 40(IP+TCP),难道这种算法才是正解?最开始的减40都是错的?对这个问题暂时处于知其然而不知其所以然的状态...
Topic:
技术
最新评论