【计算机网络】lab4 Ipv4(IPV4的研究)
🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光
目录
1. 前言
本系列重点针对山东大学-软件学院-计算机网络实验的任务。
希望通过实验,一方面加强大家对理论知识的认识,另一方面提升大家的动手能力。
也希望我的博客能够给学弟学妹们的学习提供一些帮助。
2. 实验目的
了解 IP(互联网协议)的详细信息。IP 是整个互联网使用的网络层协议。我们将研究 IP 第 4 版,因为它已普遍部署,而 IP 第 6 版只是部分部署。
3. 实验需求
Wireshark:本实验使用Wireshark软件工具来捕获和检查数据包跟踪。数据包跟踪是对网络上某个位置的流量的记录,就好像对通过特定线路的所有位拍了快照一样。数据包跟踪记录每个数据包的时间戳,以及组成数据包的位,从低层报头到高层内容。Wireshark可以在大多数操作系统上运行,包括Windows、Mac和Linux。它提供了一个图形用户界面,显示数据包的顺序以及解释为协议报头和数据的位的含义。它根据包的类型对包进行颜色编码,并有多种方法来过滤和分析包,让您调查网络协议的行为。Wireshark广泛用于排除网络故障。
wget / curl: 本实验室使用 wget(Linux 和 Windows)和 curl(Mac)来获取网络资源。wget 和 curl 是命令行程序,可让你获取 URL。与获取和执行整个网页的网页浏览器不同,wget 和 curl 可让你精确控制获取的 URL 以及获取的时间。在 Linux 下,可以通过软件包管理器安装 wget。在Windows下,wget以二进制形式提供;请在http://www.gnu.org/software/wget/ 上查找下载信息。在 Mac 下,curl 会随操作系统一起安装。两者都有很多选项(请尝试使用 “wget --help” 或 “curl --help” 查看),但只需使用 “wget URL ”或 “curl URL ”就能获取URL。
wget获取网页并不解释网页,同时可以获取时间准确位置等URL信息
traceroute / tracert: 本实验室使用 “traceroute ”来查找从计算机到远程互联网主机的路由器级路径。traceroute 是一种标准的命令行工具,用于查找计算机使用的互联网路径。它广泛用于网络故障排除。它预装在 Window 和 Mac 上,在 Linux 上可以使用软件包管理器进行安装。在 Windows 上,它被称为 “tracert”。它有多种选项,但只需发出 “traceroute www.uwa.edu.au ”命令,计算机就会找到并打印出远程计算机的路径(此处为 www.uwa.edu.au)。
4. 实验过程
4.1 Tracert命令
在远程服务器上选择一个 URL,例如 http://www.uwa.edu.au/,然后检查是否能用 wget 或 curl 抓取内容,例如 “wget http://www.uwa.edu.au/”或 “curl http://www.uwa.edu.au/”。这将获取资源并将其写入文件(wget)或屏幕(curl)。使用 wget 时,需要一个状态代码为 “200 OK ”的响应。如果获取失败,请尝试不同的 URL;请记住,您可能是用快捷方式引用 URL,而浏览器必须通过操作才能找到想要的内容,例如,http://mit.edu 可能实际上是 http://web.mit.edu/index.html。如果任何 URL 似乎都不起作用,那么请调试 wget/curl 的使用或网络连接。
假定你的计算机具有 IPv4 连接,则按以下步骤捕获跟踪;或者,你也可以使用提供的跟踪。我们要收集的跟踪是一个从远程服务器获取的简单网页,这将导致计算机发送和接收 IP 数据包,然后对远程服务器进行跟踪路由,以找到它在互联网上使用的路径。
对同一远程服务器进行跟踪路由,检查是否能发现网络路径信息。在 Windows 上,键入 “tracert www.uwa.edu.au”。在 Linux / Mac 上,键入 “traceroute www.uwa.edu.au”。如果你使用的是 Linux / Mac 系统,并且在 NAT 后面(如大多数家庭用户或虚拟机用户),那么在 traceroute 中使用 -I 选项(大写 i),例如,“traceroute -I www.uwa.edu.au”。这将使 traceroute 发送类似 tracert 的 ICMP 探测,而不是通常的 UDP 探测;ICMP 探测能更好地通过 NAT 盒。下面是一个成功的例子;请保存输出结果,因为后面的步骤会用到它。请注意,traceroute 的运行时间可能长达一分钟。每一行都显示了从运行 traceroute 的计算机到目标目的地的下一 IP 跳的信息。带 “*”的行表示网络没有回应,无法识别互联网路径中的该网段。一些未识别的网段是意料之中的。但是,如果 traceroute 无法正常工作,那么几乎所有路径都会出现 “*”。在这种情况下,请尝试不同的远程服务器、试验 traceroute 或使用提供的跟踪。
这里我执行的命令是:
wget https://www.sdu.edu.cn/
tracert www.sdu.edu.cn
wget https://www.sdu.edu.cn/:
ip.addr == 202.194.7.118 :
tracert www.sdu.edu.cn:
ip.addr == 202.194.7.118 && icmp:
使用 tcp port 80 过滤数据包,得到Http和Web服务器的数据包:
4.2 Inspect the trace
Version: 版本号,0100,即为ipv4
Header length: IP报头长度,20字节
Differentiation Services:包含位标志,表示数据包是否应该是处理路由器的服务质量和拥塞指示。
Total Length: IP包总长,这里是92字节。
Identification: 用于分组片段,当一个大的IP数据包作为多个更小的片段发送,称为片段。
Flags:偏移量字段,也与碎片相关。观察它们共享字节。
Fragment Offset: 片偏移,这里是0。表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包。
Time to Live: 生存时间,这里是2。当IP包进行传送时,先会对该字段赋予某个特定的值。当IP包经过每一个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。这个字段可以防止由于路由环路而导致IP包在网络中不停被转发。
Protocol: 协议,这里是0x06表示TCP协议
Header Checksum: 头部校验,这里是0x0000。16bit的首部校验和字段用来使接收端检验收到的报文是否正确。该字段只对IP首部计算校验和不包含后面的数据字段。原因是IP的上层协议比如ICMP、IGMP、TCP、UDP协议的各自首部中均含有同时覆盖首部和数据的校验和。
Source: 源地址
Destination: 目的地址
4.3 IP Packet Structure
问题1:What are the IP addresses of your computer and the remote server?
我的计算机IP地址10.27.196.173 ,远程服务器地址10.27.255.254
问题2:Does the Total Length field include the IP header plus IP payload, or just the IP payload?
包括IP报头和IP有效载荷
问题3: How does the value of the Identification field change or stay the same for different packets? For instance, does it hold the same value for all packets in a TCP connection or does it differ for each packet? Is it the same in both directions? Can you see any pattern if the value does change?
在TCP连接的不同数据包之间,标识字段通常会有所变化。这是因为标识字段的目的是帮助接收方将分段的数据包重新组装成完整的数据流。通过改变标识字段的值,接收方能够识别并正确组装数据包。标识字段在同一方向上的数据包中会保持连续的递增序列,但在不同方向上的数据包之间可能会有不同的值。这就是TCP协议三次握手的内容,标识字段双方一开始是由自己确定的,但是seq会影响对方的ack,彼此牵制。
问题4:What is the initial value of the TTL field for packets sent from your computer? Is it the maximum possible value, or some lower value?
初始值为254。我认为是可能的最大值。
问题5: How can you tell from looking at a packet that it has not been fragmented? Most often IP packets in normal operation are not fragmented. But the receiver must have a way to be sure. Hint:you may need to read your text to confirm a guess.
根据DF位(Don’t fragment)来判断,若其为1,则不分片(禁止分片)
问题6:What is the length of the IP Header and how is this encoded in the header length field? Hint: notice that only 4 bits are used for this field, as the version takes up the other 4 bits of the byte.You may guess and check your text.
Ip报头长度为20byte,0101表示5,由于IP头部长度是以4字节为单位进行编码的,所以实际的IP头部长度需要将该字段的值乘以4才能得到正确的长度。即5*4=20byte
4.4 Internet Paths
traceroute是一种用于发现网络路径的实用工具。它通过向源主机到目标主机的每一跳路由器发送请求(ICMP TTL超时消息),然后逐跳地获取响应。响应中会标识出每个路由器的IP地址。traceroute的输出通常每行打印一跳的信息,包括往返时间、路由器的IP地址和DNS名称。DNS名称有助于确定路由器所属的组织。由于traceroute利用了常见的路由器实现方式,因此不能保证在路径上的所有路由器上都能正常工作,当某些部分无法正常工作时,通常会看到"*"的响应。
4.5 Header Checksum
现在,我们将通过验证数据包来查看 IP 报头校验和计算。校验和算法每次增加 16 位的报头字节。重新计算整个 IP 报头的和(包括校验和值)将产生零的结果。对我们来说,一个复杂的因素是,这是使用 1s 补数运算完成的,而不是通常用于计算的 2s 补数运算。
- 将字段分成10个2Byte。
- 使用常规加法将这 10 个单词相加。
- 要计算到目前为止的加法的1 位补和,取任何前导数字(超过单词大小的4位)并将它们加回余数。例如:5a432 将变成 a432 + 5 = a437。
- 最终的结果 应该是 0xfff。这实际上是0的1s补码形式,或者更准确地说 0xffff 是 -0(负零 ),而 0x0000 是 +0(正零)。
分组结果为:4500 0028 53d6 4000 2606 431e 6ef2 4634 0a1b fe9a
相加结果为:76f1f
取出超过16位的前导数字,并加回余数:f1f + 7 = f26
最终结果应该是0xffff(-0)的形式。结果不是,校验和错误。与wireshark中显示的结果相同
5. 总结
本文到这里就结束啦~~
如果觉得对你有帮助,辛苦友友点个赞哦~
原文地址:https://blog.csdn.net/m0_67656158/article/details/145070313
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!