0%

Lab3 IPv4

华东师范大学软件工程学院实践报告

实验课程:计算机网络实践 姓名:刘佳奇 学号:10225101455
实验名称:Lab3 IPv4 实验日期:2023/12/8 指导老师:刘献忠

实验目的

  • 学会通过wireshark分析ip协议
  • 掌握ip数据报的组成及各部分含义

实验内容与实验步骤

  1. 捕获数据
    • 启动wireshark,利用tcp port 80捕获
    • 捕获时在dos命令行输入wget baidu.com
  2. 分析IPv4包并绘制报文结构
  3. 问题与思考

实验环境

  • windows
  • wireshark
  • wget

实验过程与分析

  1. 捕获数据
    win + x 以管理员身份运行命令行
    运行wireshark,选择已连接的网络,设置过滤条件为tcp port 80,开始捕获
    命令行输入wget baidu.com,捕获完成
    捕获完成
  2. 画出IP报文结构
    IP4报文 对各字段进行分析:
    (1)Version,即版本号,这里为4
    (2)Header Length,即包头长度,这里的0101为20bytes
    (3)Differentiated Services Field,即区分服务领域,可以前瞻性地向同类设备发出调度路由器将超载的信号,以便它们能够采取避退措施
    (4)Total Length,IP包总长,这里是52字节
    (5)Identification,用于分组片段,当一个大的IP数据包作为多个更小的片段发送,称为片段。Flags标识和Fragment标志字段,也与其相关。通过观察它们来共享字节
    (6)Fragment Offset,片偏移,这里是00000 0000 0000。表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包
    (7)Time to Live,生存时间,这里是128。当IP包进行传送时,先会对该字段赋予某个特定的值。当IP包经过每一个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。这个字段可以防止由于路由环路而导致IP包在网络中不停被转发。(或泛洪时设定的边界
    (8)Protocol,协议,这里是0x06表示TCP协议
    (9)Header Checksum,头部校验,这里是0x0000。16bit的首部校验和字段用来使接收端检验收到的报文是否正确。该字段只对IP首部计算校验和,而不包含后面的数据字段。原因是IP的上层协议比如ICMP、IGMP、TCP、UDP协议的各自首部中均含有同时覆盖首部和数据的校验和
    IP4报文结构 故IP数据报头部为固定20字节,先前由total length又得知整个数据报为52字节,则这个IP数据报的有效载荷,即数据部分占32字节
  3. 分析IP报文
    (1)本地IP地址和远程服务器的IP地址 本地IP 远程服务器IP (2)总长度字段是否包括IP头加IP有效载荷,或只是IP有效载荷?
    见上文Total Length
    (3)在不同的数据包中标识字段的值如何更改或保持相同的值?例如,在同一个TCP连接中的数据包中标识字段的值是否相同,还是每个都不同?不同传输方向上会相同吗?如果标识字段的值有变化,你能从中找出规律吗?
    标识字段作用和变化: 标识字段用于标识发送方的每个数据包。标识字段与标志和偏移位一起表示数据包是否分片。每发送一个不分片的数据包,标识字段递增;对于同一数据包的分片,标识字段保持不变。通过观察标识字段的变化,可以确定数据包是否被分片
    同一TCP连接中标识字段的变化: 在同一个TCP连接中,不同数据包的标识字段的值不相同。标识字段的值与TCP连接无关,仅与发送方和数据包本身的关系有关
    不同传输方向上标识字段的变化: 标识字段的值在不同传输方向上是不相同的,因为标识字段反映了发送方的身份。不同的发送方会有不同的标识字段值
    标识字段的规律: 对于同一台计算机,标识字段的值不减少。每发送一个不分片的数据包,标识字段递增;在分片情况下,标识字段保持一致。这种规律使得我们能够追踪标识字段的变化,了解数据包的分片情况
    (4)从计算机发送的报文的TTL字段初始值是什么?它是最大可能的值,还是一些较低的值?
    TTL值被发送端设置为允许经过的路由器的最多个数,常本实验中为128。数据报在转发过程中每经过一个路由,该值就被路由器减1。当TTL值减为0时,路由器将丢弃数据报,并向源端发送一个ICMP差错报文 (5)如何判断一个数据包是否被分片?普通操作下的大多数的IP数据包不会被分片的。但是接收者需要有办法去确定。 如果收到的IP报头中Flags中的DF(Don’t Fragment)为1,则未分片,如果为0,则表明其可以被分片,在本实验中Set为1,未分片 (6)IP报头的长度是多少,它是如何被编码进报头长度域的? IP报头的长度为20 bytes,是所有IP数据报必须具有的,且为固定长度 IP报头长度域(IHL)以32位字(4字节)进行计数。当它的值为n时,所表示的字节数为4n个。所以在本次实验中,报头长度域为20/4=5
  4. 跟踪internet path
    tracert 网络路径:
    网络路径
  5. 对IP报头进行校验和验证
    首先选取一个IP报文包,查看其报头,并找到checksum IP报文 从IPheader取得除checksum以外所有数值,为 4520 0034 0000 4000 3706 65e3 83a7 c0a8 01eb,两个字节为一组,将这9组16进制数相加,得到0x26877
    将进位加到最后一位:6877 + 2 = 6879
    对结果取反,得到IPheader的checksum:9786,正确

实验结果总结

本次实验首先探究了IP头部的结构和每个部分的作用,然后通过tracert命令,了解到了网络中路由的一个具体路径,最后计算了IP头的校验和,对知识有了更深的理解。

“富哥vivo50看看实力”