【请求讨论】科来2010技术交流版对l2tp的错位解码问题 推荐
2010-09-25 17:04
591 查看
最近在研究L2tp的数据包结构,为捕获数据包,我自己搭建一个简单的网络模拟环境。这个环境是这样的,利用了VMware模拟网卡VMware Network Adapter VMnet2与cisco的高级模拟器工大瑞普桥接。Cisco模拟器的的路由器做L2tp服务器,真实PC作为L2tp客户端接入。实验是成功了,但在我用科来2010技术交流版分析l2tp的数据包结构的时候,发现L2tp数据包结构的Tunnel ID与L2tp的原理过程不符合,于是我多次重新抓包,问题依旧。本以为是不是自己的科来2010技术交流版出问题了,于是,我重装了最新的科来2010技术交流版(2356版本),又装了科来6.9技术交流版的,又尝试在多台PC上装科来分析这个数据包,都是这样的问题。后来用Wireshark网络分析仪分析,分析该数据包结构,完全符合L2tp的原理过程。
为弄清楚到底哪个是对了,我首先找到了L2tp协议的RFC文档(RFC 2661),找到了L2tp数据包结构描述和规定。并同时用科来2010技术交流版和Wireshark对该L2tp数据包,一一对比分析问题所在。经发现科来技术交流版,在L2tp报文头部中的版本后开始错位解码,以致出现与原理不符合的问题。结合RFC文档,现发表个人观点,请求大家讨论,判断是不是科来技术交流版的问题所在。(图片原件,L2tp数据包,RFC文档都将在附件共享,网页看不清图,请双击放大)
首先给出的图是来自L2tp的RFC 2661文档中对L2tp数据包结构描述图:
从图中可以清楚地看到L2tp头部的结构,注意图中ver就是版本的version的缩写,从图来看,版本从第13个比特到第16个比特(图中是比特标识从0开始,我说的第13个是从左边数起的位置)占了4个比特,大家注意这个位子,下面我说的错位就是从这里开始的。
下面是两张L2tp解码的全景图,分别用科来技术交流版和wireshark解码的:
科来捕获的全景图
Wireshark捕获的全景图
从两图来看,同一个数据包下面的阴影编码,完全一样(十六进制表示的)。两个网络分析软件同时对比分析,就发现了科来技术交流版的错位解码问题,不符合L2tp的RFC文档的规定。下面证明科来技术交流版的解码错位问题。
两张科来图中的大红框表示的L2tp头部结构开始到本版位为止的结构图,小红框表示相应的编码。编码是:C8 02,十六进制表示。与RFC 2661报文结构、每个代码的作用描述基本一致。但大红框中的数和点所组成的个数不够形象的表示了占用了16个比特。这些目前没有影响到L2tp版本位的解码。下图wireshark就比较形象表示了占用了16比特。
在L2tp数据结构中,版本位后,就是长度位,从RFC的规定来看,也是占用16比特。但科来技术交流版开始出现了错误解码。如图:
图中阴影表示相应的编码,从图中来看,在解码长度位的时候,错误占用了版本位到版本位左边的8个比特。编码C8 02是L2tp头部的第一个16比特,根据RFC文档,长度位开始应该是下一个16比特,正确编码应该是:00 6C才对。从这里开始科来技术交流版对L2tp的解码全部错位8个比特进行解码,造成与L2tp原理不符合。下图是wirehark的正确解码图:
由于版本使用的是科来的技术交流版,不知道科来专家级版本有这个问题没。以上是我的个人观点,不对之处,还请大家批评指正。
附件:http://down.51cto.com/data/2356803
为弄清楚到底哪个是对了,我首先找到了L2tp协议的RFC文档(RFC 2661),找到了L2tp数据包结构描述和规定。并同时用科来2010技术交流版和Wireshark对该L2tp数据包,一一对比分析问题所在。经发现科来技术交流版,在L2tp报文头部中的版本后开始错位解码,以致出现与原理不符合的问题。结合RFC文档,现发表个人观点,请求大家讨论,判断是不是科来技术交流版的问题所在。(图片原件,L2tp数据包,RFC文档都将在附件共享,网页看不清图,请双击放大)
首先给出的图是来自L2tp的RFC 2661文档中对L2tp数据包结构描述图:
从图中可以清楚地看到L2tp头部的结构,注意图中ver就是版本的version的缩写,从图来看,版本从第13个比特到第16个比特(图中是比特标识从0开始,我说的第13个是从左边数起的位置)占了4个比特,大家注意这个位子,下面我说的错位就是从这里开始的。
下面是两张L2tp解码的全景图,分别用科来技术交流版和wireshark解码的:
科来捕获的全景图
Wireshark捕获的全景图
从两图来看,同一个数据包下面的阴影编码,完全一样(十六进制表示的)。两个网络分析软件同时对比分析,就发现了科来技术交流版的错位解码问题,不符合L2tp的RFC文档的规定。下面证明科来技术交流版的解码错位问题。
两张科来图中的大红框表示的L2tp头部结构开始到本版位为止的结构图,小红框表示相应的编码。编码是:C8 02,十六进制表示。与RFC 2661报文结构、每个代码的作用描述基本一致。但大红框中的数和点所组成的个数不够形象的表示了占用了16个比特。这些目前没有影响到L2tp版本位的解码。下图wireshark就比较形象表示了占用了16比特。
在L2tp数据结构中,版本位后,就是长度位,从RFC的规定来看,也是占用16比特。但科来技术交流版开始出现了错误解码。如图:
图中阴影表示相应的编码,从图中来看,在解码长度位的时候,错误占用了版本位到版本位左边的8个比特。编码C8 02是L2tp头部的第一个16比特,根据RFC文档,长度位开始应该是下一个16比特,正确编码应该是:00 6C才对。从这里开始科来技术交流版对L2tp的解码全部错位8个比特进行解码,造成与L2tp原理不符合。下图是wirehark的正确解码图:
由于版本使用的是科来的技术交流版,不知道科来专家级版本有这个问题没。以上是我的个人观点,不对之处,还请大家批评指正。
附件:http://down.51cto.com/data/2356803
相关文章推荐
- 答网友问题:职业化代码设计原则讨论 推荐
- 关于web请求中的编码解码问题
- 他们讨论的不是技术问题!
- 使用proxytable 配置解决 vue-cli 的跨域请求问题【推荐】
- 最近,WannaCry勒索病毒肆虐全球,不少重要机构和企业的电脑纷纷中招,互联网上再次掀起关于网络安全的讨论。如今互联网技术发展飞速,随之而来的网络安全问题也越来越严重,其中网站遭遇流量攻击是比较突出
- 关于C++默认拷贝构造函数产生的问题的讨论 推荐
- [技术讨论]关于前几天发布的京东bug上的问题分析
- [技术讨论]网络软件开发的bug分析与公司开发管理问题之12306
- [技术讨论]网络软件开发的bug分析与公司开发管理问题之网易篇(有更新)
- [技术讨论]产品规划的周期问题
- 推荐C++技术博客 各种C++问题
- 不错的论坛讨论问题帖推荐
- [技术讨论]网络软件开发的bug分析与公司开发管理问题之阿里篇
- 今天讨论了一个问题:.net与java的技术可行性
- [技术讨论]网络软件开发的bug分析与公司开发管理问题之腾讯篇二(有更新)
- 项目实施重要性讨论-预防重要还是解决问题重要 推荐
- [技术讨论]电商业务中的业务合并问题
- iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)
- [技术讨论]再谈开发中的灵活性问题