tcp硬件校验和rx&tx开启是啥意思_UDP/IP硬件协议栈设计(九):仿真

2e224309b57df88b4336ce096addd2e3.png

对于仿真没啥好说的

因为还未学习验证相关的知识

只会写一些简单的仿真用的testbeach

所以简单分享下还凑活的仿真吧

05e304b505d9370a34f1e3248b2c786a.png
只要不加标点符号任意换行就是一首现代诗

仿真前先得知道这个弟弟协议栈做了个啥东西

前面八篇文章基本就完成四件事:

  1. 接收ARP请求帧并给予应答;
  2. 接收ICMP回显请求并给予应答;
  3. 接收UDP帧解析得到数据向用户端送;
  4. 收到来自用户端的数据使用UDP协议进行发送;

所以,仿真也就要完成这四件事情

  1. 构造ARP请求给协议栈并等待其应答;
  2. 构造ICMP回显请求给协议栈并等待其应答;
  3. 构造UDP帧给协议栈观察其是否可解析送给用户端;
  4. 构造用户数据给协议栈等待其采用UDP协议发送出来;

写个TB来产生这些数据看看弟弟协议栈是否能够工作

对于ARP/ICMP/UDP的组成这里不再多说,笔者直接采用Task方式完成各数据报文的生成,直接上代码(见下面附1)。

来,发包吧!

笔者直接调用上述的Task发送一帧ARP请求帧、一帧ICMP回显请求帧和2帧的UDP帧,其中用户端的接口直接接收和发送直连(内部回环),仿真结果如下图所示:

9735b8d8fc73924ea5aecf1372991aa4.png
仿真结果

emmmmm,似乎密密麻麻的波形对眼睛不大友好,况且也根本不知道构造的数据报文和接收到的数据报文是否一致。

这么长的波形看不清可以试试别的方法打开

  • 对发送和接收的报文直接转成TXT文本?

于是在TB里写了如下代码,即将协议栈接收的数据帧和发送的数据帧(不包括前导码/FCS)写入TXT中:

integer     

输入一帧ARP帧,仿真结果和得到的TXT如下:

3edcdeee1647474260c1c552c11adc03.png
仿真结果和得到TXT

似乎直接观察TXT文本里的数据也看不出啥东西,还是得手动按照帧格式去观察得到各字段,才能知道该帧是什么。

  • 我能像使用wireshark一样一目了然数据帧吗?

答案是可以的,wireshark提供了text2pcap工具,就是将TXT文本格式的数据转为pcap格式的数据。

不过该工具对TXT文本格式的内容有要求,如下所示:

744849f6f7eaa497e77851950202d9b2.png
某一帧TXT格式的以太网帧数据

格式要求即:

  1. 每行开头有个16进制、4字节的偏移量,“00000000”表示该行从0字节起始,相应第二行"00000010"表示该行从第16字节开始;
  2. 每行的数据从左开始,最多有16个字节的数据,末尾行不足16字节的,左边对齐;

然后在新建批处理脚本gen_pcap.bat并输入:

787aa9e819af7e0f1861f414e6368ba6.png

其中,"c:/Program Files/Wireshark/text2pcap.exe"即为text2pcap工具的路径(在wireshark安装目录下),“rx_data_0.txt”为当前目录下的txt格式的数据,“data_0.pcap”为在当前目录下需转为的pcap格式的数据,然后运行gen_pcap.bat即可得到一个pcap格式的文件,使用wireshark打开结果如下:

db254cb228c4fd812f7eecf9d442e3c6.png
从txt转换得到的pcap包

由上图可以清楚的看到,这是ARP的请求帧,这就大大减轻了仿真的时间。

由上操作过程可以分别得到接收端和发送端的pcap包,但似乎还是不够,因为只是分别得到,而不是在同一个pcap包下观察接受和发送的报文。

这时,wireshark又提供了另一个工具mergecap,即将多个pcap包合成一个,于是再在gen_pcap.bat中加入一行指令如下:

334ed08f8e21b7e32d8452f41a86a145.png

其中:-a表示按文件顺序合并,-w表示写入pcap文件,all_data.pcap为合并后的pcap包,data_0.pcapdata_1.pcap为两个待合并的pcap包。

再次运行gen_pcap.bat即可得到如下文件:

3f3eb58c782ac53555708b2e3cdaa432.png
两个pcap包合并得到的包

此外,在txt中,首行可以加入时间戳,即如下所示:

c7f145a5a99518974a4b64577ddcf97f.png
加入时间戳

其中时间戳格式为"H:M:S",即“0:0:12.761000”表示为0时0分12.761000秒的数据帧,对于如何在TB中写入时间戳,可参见附2源码,此外,为实现这一操作还需在.bat命令中加入如下内容:

63e2d0818aa5d198daa25b1cf7279e47.png

加入时间戳的好处是,生成得到的pcap报文会有相应的时间戳表示,可以更清楚的观察到接收和发送的时间,如下所示:

29a42f156401eace5af4453578c9a789.png
加入时间戳之后的pcap包

总结一下

为验证写的协议栈是否正确,本文进行了一系列的操作:

  1. 编写ARP/ICMP/UDP的task,产生相应的数据帧;
  2. 将输入协议栈和输出协议栈的数据帧写成txt本文格式,并转成pcap格式,方便观察;

最后,笔者再回到最开始的测试过程,即调用上述的Task发送一帧ARP请求帧、一帧ICMP回显请求帧和2帧的UDP帧,然后通过wireshark来直接观察最后的仿真结果如下:

ab7609830e295678f1bd289457ef80c0.png
从wireshark中看仿真结果

一顿操作后,可算是实现理想中的仿真结果了!


最后,从仿真结果看,似乎没啥大问题了,就是为了验证校验正确导致延迟太长(自行优化吧),此外发现如果全部采用system verilog来写TB的话可能会更好点,不过先这样凑活下吧,之后就是见证奇迹的上板测试了。

如有不足之处还望批评指正!


十二点过九分:UDP/IP硬件协议栈设计(十):测试​zhuanlan.zhihu.com
c725fbdb62551a42e6aea32782e24dd4.png

附1-三个TASK源码:

task 

附2-TB中写TXT本文:

//---------------------print TXT------------------------
weixin_39955418
关注 关注
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
硬件基础:理解串口通信以及232,485,422常见问题
IT技术分享社区
10-05 2575
这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲。因为更多的时候,都是产品做好了,比如触摸屏需要和控制器,PLC通信。理想的情况下,一般只要一上电,不需要太多的操作和配置,就可以通...
tcp硬件校验和rx&tx开启啥意思_TCP/IP协议栈——IPTCPUDP、HTTP协议详解
weixin_39979516的博客
11-21 3030
经过面试的同学经常会遇到这样的问题: 你是如何理解TCP/IP协议的? 回答:通讯协议?三次握手 ? 四次挥手? 一脸懵逼!如果你感觉已经被上述情景安排,那么有必要好好看看这篇文章。另外附上一篇tcp/ip面试中的问题视频解答:面试中tcpip,哪些容易被问到的及解答1 、什么是协议协议实际上就是一种约定。好比说,我们做一个石头剪刀布的游戏,我们约定好:石头>剪刀、剪刀>布、布>...
PTP 对时协议 IEEE1588 网络对时 硬件基础
最新发布
qq_29832469的博客
05-09 1142
在很多应用场景有精确对时的需求,例如车载网络,音视频流,工业网络。本文档将会阐述对时的硬件需求。至此,由网卡硬件实现的硬件精确时间对时的基础已经分析完毕。主要精髓是网卡会自动保存发送和接收的时间到描述符里,这个时刻及其精确,不受代码运行抖动的影响。
TCP 的 3 次握手 4 次挥手,小学生都能看懂!
Java技术栈,分享最主流的Java技术
10-30 454
Java技术栈www.javastack.cn关注阅读更多优质文章前几天发了一个朋友圈,发现暗恋已久的女生给我点了个赞,于是我当晚辗转反侧、彻夜未眠!想着妹子是不是对我有感觉呢?不然怎么...
tcp硬件校验和rx&tx开启啥意思_一文读懂 TCP/IP 网络模型
weixin_39684052的博客
11-23 888
前言互联网是怎么构成的,又是怎么运作的?什么面试官老喜欢问 TCP/IP 网络?为什么远隔万里的计算机可以互相通信?计算机网络作为 IT 行业的基石,是工程师永远绕不开的话题。网络的分层体系结构计算机网络是一个非常庞大且复杂的系统,所以在设计之初就严格遵守着「分层」的设计理念。分层将庞大的问题细分为了若干个局部的小问题,具有下列好处:分层隔离灵活性好易于实现和维护能促进标准化工作其中「标准化」是促...
TCP协议的校验和
weixin_34381687的博客
02-19 1083
TCP的16位的校验和(checksum)的计算和检验过程如下:发送者将TCP报文段的头部和数据部分的和计算出来,再对其求反码(一的補數),就得到了校验和,然后将结果装入报文中传输。(这里用反码和的原因是这种方法的循环进位使校验和可以在16位、32位、64位等情况下的计算结果在叠加后相同)接收者在收到报文后再按相同的算法计算一次校验和。这里使用的反码使得接收者不用再将校验和...
IPv4检验和计算
weixin_34252090的博客
06-06 284
IPv4检验和计算 IP分组中的检验和仅覆盖首部,而不管数据,首部被划分为16位的段,把所有段相加,结果取反,塞进首部检验和里 在目的主机中,首部划分为16位,相加,结果肯定是16个1,然后取反,结果为0.如下 在目的主机,收到的报文中,因为首部检验和是10001011 10110001,所以它的计算如下 ...
TCP-IP.rar_TCP IP_TCP/IP 协议栈_tcp_tcp ip 协议栈_tcp/ip 8019
09-21
tcp ip下详细的协议栈,通过这个文档可以详细理清楚协议的关系,很有参考价值
Modbus.zip_TCP/IP协议栈_Others__TCP/IP协议栈_Others_
08-09
通过Codesys3.5实现显示器Modbus TCP通讯
Netty.zip_TCP/IP协议栈_Java__TCP/IP协议栈_Java_
08-09
netty 框架下 对电力IEC104规约进行解析
s7600 TCP-IP协议栈.rar_c++ 实现tcp/ip_tcp/ip协议栈
09-23
详细介绍了如何使用s7600实现tcp/ip
Udp_programming_code_for_network_communication_Cla_TCP/IP协议栈_Visual_Basic_
08-12
网络通信Udp编程经典代码Udp programming code for network communication Classic
CAPL计算IPv4首部校验和Checksum
测试领域技术分享
03-23 723
随着全球智能电动汽车的普及,车载以太网也越来越多应用到汽车网络中,而IPv4协议是车载以太网当中相当重要的协议,IPv4首部校验和计算方法在网上的资料也比较多,如:Python、Java等语言的计算方法,但是在车载行业使用CAPL语言较多,这方面资料相对较少,故本文主要分享CAPL语言如何计算IPv4头部校验和的方法。什么是检验和?检验和是存在于各种报文中的一个字段,它存在的目的是验证报文在网络传输过程中的完整性(有的数据可能在链路传输时发生0-1数据翻转,从而导致报文出错)。
IPv4_CHECKSUM_05:IP校验和方法验证
qq_27718973的博客
03-30 238
本测试旨在确保DUT能够接收计算校验和的ICMP回显请求,并发送回显应答。校验和字段是所有16位字在头部的反码求和的16位反码补码。计算校验和时,校验和字段的值应设为零。(注:此处我们发送一个根据RFC计算校验和的回显请求。4. 测试仪(TESTER):验证接收到的ICMP回显应答的IP校验和字段正确。验证DUT是否按照RFC规定的校验和计算方法正确处理和响应ICMP回显请求。3. 被测设备(DUT):发送ICMP回显应答。被测设备(DUT):发送ICMP回显应答。测试仪(TESTER):在。
网络技术——IPv4篇
A31sdd的博客
08-20 1851
IPv4的基本内容
linux时间戳导出,LinuxPTP时间戳的生成
weixin_39707201的博客
05-09 503
ingress timestamp下面是收到message时如何生成ingress timestamp的相关内容。以下内容出自sk_receive函数,ts和sw分别表示以硬件时间戳和软件时间戳生成的ingress timestamp。struct cmsghdr *cm;struct msghdr msg;recvmsg(fd, &msg, flags);for (cm = CMSG_F...
tcpdump/libpcap中捕获数据包的时间戳
热门推荐
04-12 1万+
tcpdump从libpcap获取time-stamp,libpcap从OS内核获取time stamp Q: When is a packet time-stamped? Howaccurate are the time stamps? Tcpdump gets time stamps from libpcap, andlibpcap gets them from the OS kernel
嵌入式设备时间同步(gpsd pps chrony 校时)
mayue_web的博客
10-13 2856
设备时间同步
TCP/IP协议栈是啥
05-27
TCP/IP协议栈是一种网络协议体系结构,它由多个分层协议组成,每层协议完成特定的功能,整个协议栈协同工作,实现数据在网络中的传输。它是互联网通信的基础,包括了传输控制协议(TCP)、用户数据报协议(UDP)、...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 安装向导因错误而提前结束_EndNote 由于安装错误而提前结束如何解决 8062
  • 三菱伺服驱动器示例_三菱PLC控制伺服电机编程实例 7026
  • python中set如何添加元素_python中如何在set中添加元素?语句是什么 6870
  • mindray心电监护仪使用说明_心电监护仪的基本原理及使用对象 6244
  • python中len用法_【python】python中len()怎么用-百度经验 5986

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 微软服务器dda,使用DDA和Nvidia Tesla M60在Windows Server 2016上播放硬件加速视频的问题...
  • 服务器rstudio的安装url怎么修改,Rstudio 修改工作路径(三种方法总结)
  • 空间小游戏显示第三方服务器,如何进入小游戏服务器
2021年134篇
2020年219篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司安阳至尊标王推荐沧州SEO按天扣费推荐泉州网站推广工具公司定西SEO按天扣费价格通辽设计公司网站报价绵阳网站优化按天收费报价济宁关键词按天计费公司安阳网站推广系统公司开封百度竞价包年推广推荐娄底模板制作推荐德阳seo优化推荐昌吉百姓网标王推广多少钱淮北阿里店铺托管哪家好抚顺模板推广六安品牌网站设计多少钱伊春seo优化报价仙桃网站开发价格北京网站定制佛山关键词按天收费报价塔城SEO按天收费烟台网站设计模板价格怒江关键词按天计费报价内江seo网站推广价格襄阳高端网站设计推荐黄石网站改版多少钱绍兴网站设计模板哪家好白银网页制作忻州网络广告推广推荐丽江网站搜索优化昆明推广网站价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化