网络层配置对互联网产品影响案例分析

        在互联网产品开发的认知中,普遍认为网络层对应用层透明,不管是APP还是H5,不管是android还是iOS,应用开发均无需关注网络层的配置,这其实是有前提的,那就是应用层对网络层的异常已经具备足够兼容性,否则,“常在河边走,哪能不湿鞋”,网络层配置导致的故障,往往更隐蔽,更难排查。以下正是几年前所负责项目中碰到的一个案例:

    【现象】某业务客户端APP在某地区主页面打不开,但可以登录

    【概念】先普及两个TCP/IP七层协议的概念,MSS(Maxitum Segment Size)和MTU(Maximum Transmission Unit),前者是分片,后者是分段,前者是四层TCP层概念,后者是二层链路层概念,但目的都是一样,为了将数据分段传输并能组装,TCP协议在实现的时候,MSS这个值往往用MTU值代替(MSS=MTU-IP数据包包头的大小 - TCP数据段的包头大小)

    【分析】好,清楚以上概念后,我们看下抓包的情况:

        1、APP与后端系统的协商过程

        2、网络传输中的分片情况

        从后台抓包情况看,客户端发过来的DF值为Don't Fragment,即是说,只要不超过1360,就不会分片(下图第一个框)。但实际情况是,大部分的业务请求包均被分片为256byte(下图第二个框,从这里即可定位是离用户最近的上一跳网络设备(路由器或防火墙)传过来的数据有问题)。

      【解决】定位到问题就好办了,查了离用户最近的网络设备,发现是防火墙配置MTU为被强制为256,需改回默认值

      【思考】请想一下,为什么不会影响到登录流程呢?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容