【网络实验】TCP timestamp的精度

本文探讨了使用iperf工具时遇到的时间戳精度不足的问题。为了实现基于时间戳的数据包识别功能,文中尝试通过设置系统参数来提高时间戳的精度,并记录了实验过程中发现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用iperf发包。需要主动开启时间戳选项,命令为:sysctl net.ipv4.tcp_timestamps=1

实验发现精度太低,太多的包采用同样的值,这样不便于实现基于时间戳识别数据包的功能。随手摘录网上其他的人写的文档:双方各自维护自己的时间戳,时间戳的值随时间单调递增(规定为1ms-1s/次,常见值为1ms、10ms)。


实验五 ICMP和NAT协议分析 一、实验目的及任务 1、熟悉ICMP、NAT的基本原理; 2、利用Wireshark对ICMP、NAT进行协议分析。 二、实验性质及学时 验证性实验,2学时。 三、实验环境 与Internet连接的计算机网络系统;操作系统为windows;Wireshark、IE等应用软件。 四、实验步骤 1、ICMP协议分析 通过Wireshark捕获ping、traceroute等程序产生的ICMP消息进行协议分析,了解ICMP消息的格式和内容。 ping用来检测主机的活性。源端使用ping向目标主机发送type=8 code=0的ICMP Echo request消息,如果源到目标主机间的网络正常、目标主机工作正常,目标主机便会收到ICMP Echo request消息,目标主机通常会向源端返回type=0 code=0的ICMP Echo reply响应消息。 traceroute/tracert用来探测从源到目标端分组传输经历的路由器。traceroute/tracert发送的多个IP数据报的TTL值从1逐渐增大。路由器收到分组后将TTL值减1,如果为0,则路由器向源端返回ICMP Time-to-live exceeded消息(type=11,code=0)。在Windows和Unix/Linux/Mac OS中,路由跟踪的实现方式有所不同 [[[]详细内容,请参考实验四。 ]]。 (1)ICMP 和ping 启动Wireshark的分组捕获,在Windows的命令窗口中输入命令[[[]Unix/Linux/MacOS,输入命令:ping -c 10 hostname]]: ping –n 10 hostname 其中,hostname为被测主机的名字,比如:www.baidu.com。n 10表示发送10个ICMP Echo request消息。结果如下图所示: 从上图看出,ping发送了10个ICMP Echo request消息,收到了10个ICMP Echo reply消息。源端在收到ICMP Echo reply消息后,可以计算折返时间(RTT)[[[]Ping显示的折返时间通常要比Wireshark中从发送ICMP Echo request消息到收到ICMP Echo reply消息中间经历的时间要大一些,原因是Wireshark记录的时间是网卡发送和接收消息的时间,而Ping记录的发送时间比网卡发送消息的时间早一些,Ping记录的接收时间比网卡接收该消息的时间晚一些。]]。 当Ping程序执行结束后,停止Wireshark分组捕获。 根据操作,回答“五、实验问题”中的1-4题。 (2)ICMP和Traceroute 启动Wireshark进行分组捕获。 在Windows的命令窗口中输入:tracert hostname 在Unix系统的终端窗口中输入:traceroute hostname 其中,hostname为目的主机的名字,比如:www.baidu.com。 当tracert/traceroute执行结束后,停止Wireshark分组捕获。 根据操作,回答“五、实验问题”中的5-9题。 2、NAT协议分析 NAT协议分析实验与其他实验有所不同,需要在NAT路由器WAN和LAN两侧分别捕获分组。通常,普通用户无法在NAT路由器WAN侧运行Wireshark捕获分组,本实验直接使用教材作者提供的跟踪文件[[[]跟踪文件可从http://www-net.cs.umass.edu/wireshark-labs/wireshark-traces.zip下载。NAT_home_side为home network的客户PC使用Wireshark捕获的,NAT_ISP_side为在ISP network处捕获的。]]。 跟踪文件生成的环境如下图所示。home network中的客户PC通过HTTP访问www.google.com,home network中的路由器(NAT router)提供了NAT功能。 捕获分组时, home network的客户PC中运行Wireshark捕获分组,生成的跟踪文件是NAT_home_side。在ISP network中的PC(图中未显示,该PC位于NAT router和ISP网络中第一跳路由器之间的链路上)运行Wireshark捕获分组,生成的跟踪文件是NAT_ISP_side。 (1)将跟踪文件NAT_home_side导入Wireshark,回答“五、实验问题”中的10-13题。 (2)将跟踪文件NAT_ISP_side导入Wireshark,回答“五、实验问题”中的14-18题。 五、实验问题 在实验基础上回答以下问题: 1.你的计算机的IP地址是什么?目的主机的IP地址是什么? 2.在ICMP消息中为什么没有源端口号和目的端口号? 3.检查计算机发送的一个ICMP Echo request消息,其type 和code分别是什么?该ICMP消息还有哪些字段[[[] Echo request和Echo reply消息,除type、code、checksum字段外,还有Identifier(2byte)、Sequence Number(2byte)、Data(长度可变,Ping时用户可以指定发送包含多少字节data的ICMP消息)。其中,Identifier和Sequence Number用于匹配request和reply对。Identifier标识会话,与TCP/UDP的端口号作用类似;Sequence Number标识具体的Echo request和reply对。Wireshark对消息中Data部分的解析与Ping的具体实现有关。Unix中,如果Data多于8字节,则前8个字节是Timestamp(前4字节表示自纪元/epoch之后的秒数,后四字节表示小数部分。目前,Wireshark的时间精度是微秒);Windows中,Data部分不包含Timestamp字段。Wireshark会尽力将Data前8字节解析为Timestamp,如果不成功,则认为消息不包含Timestamp。]]?checksum、sequence number 、identifier等字段的长度各是多少字节? 4.检查上题ICMP Echo request消息对应的ICMP Echo reply消息。该ICMP消息的type和code分别是什么?该ICMP消息还有哪些字段?checksum, sequence number 和identifier 等字段的长度各是多少字节? 5.你的计算机的IP地址是什么?目的主机的IP地址是什么? 6.找到一个ICMP Echo reply消息。该消息与ICMP Echo request消息相比,结构是否不同? 7.找到一个ICMP Time-to-live exceeded消息,该消息有哪些字段[[[]ICMP TTL-Exceeded消息,除Type、Code、Checksum字段外,还有unused(4-byte)、原始IP数据报的头部和及其前8字节数据。]]?与ICMP Echo reply消息相比,ICMP Time-to-live exceeded消息包含更多的字段。 8.找到源端收到的最后三个ICMP消息。这三个消息与ICMP Time-to-live exceeded消息有哪些不同?为什么不同? 9.在跟踪过程中,有没有一条链路的延迟比其他链路延迟要大很多?为什么在其后的某些链路的延迟又比较小? 10.客户PC的IP地址是什么? 11.实际上,客户会与多台Google Server通信以实现安全浏览(safe browsing)[[[]Google的安全浏览可自动识别网页和程序的安全性,提供拦截和警报,帮助用户防范风险,这些工作通常由与提供Google 搜索服务不同的其他Google服务器承担。在文件NAT_home_side中,客户在t=1.572315发送的GET消息和在t=7.573305发送的GET消息的目的主机IP并不相同。]]。提供主页服务的Google主服务器IP地址为64.233.169.104。在显示过滤器中输入: http && ip.addr ==64.233.169.104,可以只显示与Google主服务器间交换的HTTP消息。考察客户PC在t=7.109267时发送给Google主服务器的HTTP GET请求消息,携带该HTTP GET请求消息IP数据报的源、目标IP地址是什么?TCP段的源、目标端口号是什么? 12.接上题。何时收到相应的200 OK HTTP 响应消息?携带该响应消息的IP数据报的源、目的IP地址是什么?TCP段的源、目的端口号是什么? 13.在交换HTTP消息前需要利用三次握手建立TCP连接。考虑客户在t=7.109267发送的HTTP GET请求消息,为建立传输该HTTP消息的TCP连接,客户何时发送的TCP SYN段?携带TCP SYN段的IP数据报的源、目的IP地址是什么?客户是何时收到的TCP SYNACK段?其源、目的IP地址,源、目的端口号分别是什么? (清除11题过滤器中输入的http && ip.addr ==64.233.169.104,代之以tcp && ip.addr ==64.233.169.104) 14.在NAT_ISP_side文件中找到客户在t=7.109267发送给Google服务器的HTTP GET请求消息(t=7.109267指在NAT_home_side中记录的时间)。该消息什么时间出现在了NAT_ISP_side中?携带该消息的IP数据报的源、目的IP地址,TCP段的源、目的端口号分别是什么?与第11题相比,哪些相同、哪些不同? 15.HTTP GET请求消息内容是否发生了变化?IP数据报的Version、Header Length、Flags、Checksum中哪个(些)字段值发生了变化?如果有变化,请解释为什么需要改变这个(些)字段的值? 16.在NAT_ISP_side文件中,何时从Google服务器收到了第一个200 OK的 HTTP响应消息?其IP源、目的地址,TCP源、目的端口号各是什么?与第13题的消息相比,哪些字段值相同,哪些发生了变化? 17.在NAT_ISP_side文件中,第13题中提及的客户发给服务器的TCP SYN段和服务器发给客户的TCP SYNACK段分别是何时被捕获的?这两个段的IP源、目的地址,TCP源、目的端口号分别是什么?与第13题相比,哪些相同?哪些不同? 第7版教材中图4.25(pp.226)给出了NAT转换表的结构。利用第11-17题的实验结果,填写与该HTTP连接相关的NAT转换表条目的具体内容。
06-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值