【计算机网络】lab4 Ipv4(IPV4的研究)

news2025/1/12 20:25:27

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光

目录

1. 前言

2. 实验目的

3. 实验需求

4. 实验过程

4.1 Tracert命令

4.2 Inspect the trace

4.3 IP Packet Structure

4.4 Internet Paths

4.5 Header Checksum

5. 总结 


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. 总结 

本文到这里就结束啦~~
如果觉得对你有帮助,辛苦友友点个赞哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ELFK日志采集实战

一、日志分析概述 日志分析是运维工程师解决系统故障,发现问题的主要手段 日志主要包括系统日志、应用程序日志和安全日志 系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因 经常分析日志可以了解服务器的负荷&#x…

辅助--Inspector

辅助–Inspector 1.Introduction This manual explains how to use the Inspector. 1.1.Overview Inspector is a Qt-based library that provides functionality to interactively inspect low-level content of the OCAF data model, OCCT viewer and Modeling Data. Thi…

如何播放视频文件

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节3. 示例代码4. 内容总结我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用的功能,不过Flutter官方…

R数据分析:多分类问题预测模型的ROC做法及解释

有同学做了个多分类的预测模型,结局有三个类别,做的模型包括多分类逻辑回归、随机森林和决策树,多分类逻辑回归是用ROC曲线并报告AUC作为模型评估的,后面两种模型报告了混淆矩阵,审稿人就提出要统一模型评估指标。那么肯定是统一成ROC了,刚好借这个机会给大家讲讲ROC在多…

【数据库】四、数据库管理与维护

文章目录 四、数据库管理与维护1 安全性管理2 事务概述3 并发控制4 备份与恢复管理 四、数据库管理与维护 1 安全性管理 安全性管理是指保护数据库,以避免非法用户进行窃取数据、篡改数据、删除数据和破坏数据库结构等操作 三个级别认证: 服务器级别…

C语言gdb调试

目录 1.gdb介绍 2.设置断点 2.1.测试代码 2.2.设置函数断点 2.3.设置文件行号断点 2.4.设置条件断点 2.5.多线程调试 3.删除断点 3.1.删除指定断点 3.2.删除全部断点 4.查看变量信息 4.1.p命令 4.2.display命令 4.3.watch命令 5.coredump日志 6.总结 1.gdb介绍…

winform第三方界面开源库AntdUI的使用教程保姆级环境设置篇

1. AntdUI 1.1. 导入项目 1.1.1. 首先新建一个空白的基于.net的Winfrom项目1.1.2. 复制AntdUI中src目录到我们的解决方案下面1.1.3. 解决方案下添加现有项目1.1.4. 添加项目引用 1.2. 编写代码 1.2.1. 改写Form1类,让其继承自public partial class Form1 : AntdUI.W…

记录一下vue2项目优化,虚拟列表vue-virtual-scroll-list处理10万条数据

文章目录 封装BrandPickerVirtual.vue组件页面使用组件属性 select下拉接口一次性返回10万条数据,页面卡死,如何优化??这里使用 分页 虚拟列表(vue-virtual-scroll-list),去模拟一个下拉的内容…

企业开通部署 Azure OpenAI 流程:如何创建一个AI聊天机器人

由于众所周知的原因,国内没法直接调用 OpenAI 接口。 下面我将演示企业如何开通 Azure OpenAI 服务,以及如何使用 C# 调用 Azure OpenAI 接口创建一个 Console 应用程序并实现聊天机器人功能。 1开通 Azure OpenAI 服务 要开通 Azure OpenAI 服务&…

CNN Test Data

由于数据量过大,打不开了 搞一组小的吧。收工睡觉 https://download.csdn.net/download/spencer_tseng/90256048

STM32使用ITM调试_通过仿真器实现串口打印

IDE:CLion MCU: STM32F407VET6 工具:OpenOCD Telnet 一、简介 调试单片机时,如果要打印数据往往需要另接一根线通过USB转TTL接到电脑上。但这样做往往并不方便,尤其是身边没有USB转TTL工具时。这时可以使用单片机自带的ITM单元…

Ubuntu 磁盘修复

Ubuntu 磁盘修复 在 ubuntu 文件系统变成只读模式,该处理呢? 文件系统内部的错误,如索引错误、元数据损坏等,也可能导致系统进入只读状态。磁盘坏道或硬件故障也可能引发文件系统只读的问题。/etc/fstab配置错误,可能…

RT-DETR融合[AAAI2025]的ConSeg中的CDFAPreprocess模块

RT-DETR使用教程: RT-DETR使用教程 RT-DETR改进汇总贴:RT-DETR更新汇总贴 《ConDSeg: A General Medical Image Segmentation Framework via Contrast-Driven Feature Enhancement》 一、 模块介绍 论文链接:https://arxiv.org/abs/2412.083…

线程与互斥锁

一、线程 1、定义 进程的创建、销毁与切换存在着较大的时空开销,因此人们急需一种轻型的进程技术来减少开销。在80年代,线程的概念开始出现,线程被设计成进程的一个执行路径,同一个进程中的线程共享进程的资源,因此系…

如何搭建 Vue.js 开源项目的 CI/CD 流水线

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

uni app 写的 小游戏,文字拼图?文字拼写?不知道叫啥

从下方的偏旁部首中选在1--3个组成上面文章中的文字&#xff0c;完成的文字标红 不喜勿喷 《满江红》 其中用到了两个文件 strdata.json parameters.json 这两个文件太大 放到资源中了 资源文件 <template><view class"wenzi_page_main"><view c…

DBeaver执行本地的sql语句文件避免直接在客户端运行卡顿

直接在客户端运行 SQL 语句和通过加载本地文件执行 SQL 语句可能会出现不同的性能表现&#xff0c;原因可能包括以下几点&#xff1a; 客户端资源使用&#xff1a; 当你在客户端界面直接输入和执行 SQL 语句时&#xff0c;客户端可能会消耗资源来维护用户界面、语法高亮、自动完…

基于STM32的智能电表可视化设计:ESP8266、AT指令集、python后端Flask(代码示例)

一、项目概述 随着智能家居的普及&#xff0c;智能电表作为家庭用电管理的重要工具&#xff0c;能够实时监测电流、电压及功率&#xff0c;并将数据传输至后台进行分析和可视化。本项目以STM32C8T6为核心&#xff0c;结合交流电压电流监测模块、ESP8266 Wi-Fi模块、OLED显示屏…

MySQL 如何赶上 PostgreSQL 的势头?

原文地址 我与 MySQL 社区的前辈交谈时&#xff0c;经常遇到这个问题&#xff1a;「为什么 MySQL 这么棒&#xff0c;而且&#xff08;至少根据 DB-Engines 的计算&#xff09;仍然比 PostgreSQL 更流行&#xff1b;但它的地位在下降&#xff0c;PostgreSQL 却势不可挡地越来越…

关于在windows系统中编译ffmpeg并导入到自己项目中这件事

关于在windows系统中编译ffmpeg并导入到自己项目中这件事 前因&#xff08;可跳过不看&#xff09; 前阵子由于秋招需求&#xff0c;写了一个简易的安卓播放器&#xff0c;最终因为时间问题还有一些功能没有实现着实可惜&#xff0c;如&#xff1a;倍速播放&#xff0c;快进操…