V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Sh888
V2EX  ›  Linux

请教一下 PPTP 的数据包头长度的问题

  •  
  •   Sh888 · 2017-03-30 13:55:28 +08:00 · 1959 次点击
    这是一个创建于 2795 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Ping 最大长度 MTU MSS

    直接 ping 8.8.8.8/baidu.com 1472 1500 1460

    拨上 pptp 后 8.8.8.8 1372 1400 1360

    baidu.com 1368 1396 1356


    PPTP Server 是 Ubuntu 上的 PPTPD , Client 是 Windows 7

    问题:

    1 、 PPTP 数据包头的长度有 100 字节?具体结构是怎么样的?

    2 、目前发现连上 PPTP 后访问 baidu ,需要额外 4 个字节(必须把 MSS 设置为 1356 )。不明白具体原因是什么。

    有老司机能否解释一下?谢谢!
    5 条回复    2017-03-31 10:54:25 +08:00
    Sh888
        1
    Sh888  
    OP
       2017-03-30 14:06:06 +08:00
    我算了一下 GRE24 个字节, PPP8 个字节,那么 PPTP 开销貌似应该 32 个字节。不知道另外 100-32=68 字节是什么开销?
    okudayukiko0
        2
    okudayukiko0  
       2017-03-30 16:59:34 +08:00 via iPhone
    PPTP 不安全,建议 L2TP
    okudayukiko0
        3
    okudayukiko0  
       2017-03-30 17:00:21 +08:00 via iPhone
    IPsec 也行, L2TP 和 PPTP 基于 PPP 难配置
    CRVV
        4
    CRVV  
       2017-03-30 22:15:30 +08:00
    1. 套一层 PPTP 是多了 GRE, PPP 和 IP 三层而不是两层
    2. GRE 的头不是 24 字节, PPP 也不是 8 字节
    3. 建立 PPTP 连接的时候,会协商一个 MTU ,不一定用满,所以用减法来计算头的长度是错的
    4. 这种事情要直接抓包来看,或者去慢慢读 RFC 2637 和 1661
    Sh888
        5
    Sh888  
    OP
       2017-03-31 10:54:25 +08:00
    找到原因了: windows7 拨号后 PPTP 默认 MTU 会设置为 1400 ( netsh interface ipv4 show subinterfaces );而 ubuntu 上 PPP 默认 MTU 为 1396 。操作系统这么设置是为了简单兼容不同的底层链路开销吧。
    MSS 以 windows7 为准计算和以 ubuntu 为准计算差了 4 个字节,因此推测 google 和 youtube 在上层 tcp/udp 应该有更小的分片设置,而 baidu 则没有,把分片工作直接交给了 tcp/ip 层自行处理。所以会导致使用默认设置能够访问 google ,而不能访问 baidu 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   963 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:41 · PVG 06:41 · LAX 14:41 · JFK 17:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.