一、实验要求
- 捕获并解析一个IPv4包
- 捕获并解析一个IPv6包
- IP包从源计算机到目的计算机的传输过程中,你认为哪些字段可能会发生变化?原因是什么?
二、实验环境及工具
(1)网络环境:
无线局域网:校园局域网
在校园局域网下:
- 计算机的IPv4地址:10.130.9.141
- 计算机的IPv4地址:2001:250:401:6563:7048:772c:e88b:60a4
三、实验原理
1、互联网协议
IPv4和IPv6都是互联网协议,用于在网络上传输数据。IPv4是互联网上使用最广泛的协议,但由于其地址空间的限制,IPv6被设计为IPv4的后继协议。
IPv4使用32位地址,而IPv6使用128位地址。这意味着IPv6可以提供比IPv4更大的地址空间,从而支持更多的设备和更多的互联网连接。IPv6还提供了更好的安全性和性能,因为它使用IPsec协议来提供端到端的加密和认证,并提供了更好的路由和多播支持。
虽然IPv4仍然是互联网上使用最广泛的协议,但IPv6正在逐渐取代它,并成为未来互联网的主要协议。
2、IP协议的数据传递方式
当发送方发送数据时,数据被分成一系列数据报,并且每个数据报都被分配一个IP地址。这个IP地址标识了该数据报的源和目的地,这样路由器就可以将数据报从一个网络节点传递到另一个网络节点。在传输过程中,每个数据报都被分成两个部分:头部和数据部分。头部包含了源IP地址、目的IP地址和其他必要的信息,如数据报的长度和类型等。数据部分则包含实际的数据内容。当数据报到达目的地时,它们将被重新组装成完整的数据,然后将其传递给目的应用程序。整个过程中,IP协议确保数据的可靠性和准确性,以便数据能够在网络中正确地传输。
3、IPv4首部和数据部分
(1)IPv4首部包括以下字段:
版本(Version):指示该数据报使用的IP版本,通常为IPv4(值为4)。
首部长度(Header Length):指示IPv4首部的长度,以32位字长为单位。
区分服务(Differentiated Services):用于指示数据报的优先级和服务质量(QoS)要求。
总长度(Total Length):指示整个数据报(包括首部和数据部分)的长度。
标识(Identification):用于唯一地标识数据报的一个片段。
标记(Flags):用于指示该数据报是否可以被分片,以及它是否是分片的最后一个片段。
片偏移(Fragment Offset):用于指示数据报的片段在整个数据报中的位置。
生存时间(Time to Live):用于指示数据报在网络中的最大跳数(即经过的路由器数)。
协议(Protocol):指示数据部分使用的上层协议,如TCP、UDP或ICMP等。
首部校验和(Header Checksum):用于检查首部在传输过程中是否被损坏。
源IP地址(Source Address):指示发送方的IP地址。
目的IP地址(Destination Address):指示接收方的IP地址。
(2)IPv4数据部分则包括实际的数据内容,可以是任何类型的数据,如文本、图像、音频、视频等。数据部分的具体格式和内容取决于使用的上层协议,如TCP、UDP或ICMP等。
4、IPv6首部和数据部分
IPv6首部包括以下字段:
版本(Version):指示该数据报使用的IP版本,通常为IPv6(值为6)。
流量类别(Traffic Class):用于指示数据报的优先级和服务质量(QoS)要求。
流标签(Flow Label):用于标识同一个数据流中的数据报,以便路由器可以对它们进行优化处理。
负载长度(Payload Length):指示IPv6首部之后的数据部分的长度。
下一个头部(Next Header):指示下一个头部使用的协议类型,如TCP、UDP或ICMPv6等。
跳数限制(Hop Limit):与IPv4的生存时间类似,用于指示数据报在网络中可以经过的最大节点数。
源地址(Source Address):指示发送方的IPv6地址。
目标地址(Destination Address):指示接收方的IPv6地址。
IPv6数据部分同IPv4数据部分相同。
四、实验前分析
IPv4协议和IPv6协议都包含头部及数据两部分,因此,在IP包从计算机A到计算机B的过程中,会发生变化的部分也都在这两类中。
考虑IPv4以及IPv6协议的头部分:
1)TTL生存期(IPv4)或Hop Limit跳数限制(IPv6):每经过一个路由器,这个字段的值都会减1,以避免IP包在网络中无限循环。如果这个值为0,则路由器直接丢弃该IP包,所以,在经过网络中每个路由器时,该值必定发生变化。
2)源地址和目的地址:在IP包经过不同的路由器时,源地址和目标地址都不会发生变化。除非路由器开启了NET功能,会把内网IP地址转换为公网IP地址。
3)标志(IPv4)或流标签(IPv6):如果IP包需要被分片,那么在IP包从源计算机到目的计算机的传输过程中,标识(IPv4)或流标签(IPv6)字段的值都会发生变化。在分片过程中,每个分片都有一个唯一的标识值,而这个值会随着IP包的传输而不断变化。
4)片偏移(IPv4)或分段偏移(IPv6):如果IP包需要被分片,那么在IP包从源计算机到目的计算机的传输过程中,片偏移(IPv4)或分段偏移(IPv6)字段的值都会发生变化。在IP分片的传输过程中,如果IP分片经过了一个修改IP分片的网络设备(如路由器),例如对MTU进行了调整,那么该设备可能会修改该IP分片的片偏移字段,以反映该分片在新的IP数据报中的位置。因此,IP分片的片偏移值可能会随着IP包的传输发生变化,但这并不会影响IP分片的重组。
PS:在查询资料的过程中,多次提到了NAT(网络地址转换),网络地址转换(NAT)是一种将私有IP地址转换为公共IP地址的技术,常用于在私有网络和公共网络之间进行通信。NAT的主要作用有解决IPv4地址短缺问题以及将内部网络和外部网络隔离开来,从而增强网络的安全性。
在一个使用NAT的网络中,路由器或网关设备会维护一个转换表,该表记录了内部网络中的私有IP地址和外部网络中的公共IP地址之间的映射关系。当内部网络中的主机需要访问外部网络时,其IP数据报将被路由器或网关设备转换为对应的公共IP地址,然后发送到外部网络。同样,当外部网络中的主机需要访问内部网络时,其IP数据报将被路由器或网关设备转换为对应的私有IP地址,然后发送到内部网络。因此它会改变IP协议的头部。
NAT技术可以有效地减少公网IP地址的使用量,同时也能够隐藏内部网络的真实IP地址,增加网络的安全性。
考虑数据部分:
数据部分在IP包传输过程中一般不会发生变化,因为数据部分是上层协议(如TCP、UDP、ICMP等)的内容,IP协议只是负责在不同的网络节点之间传输IP包。
五、实验具体操作
- 捕获一个IPv4包
0100 … = Version: 4 //互联网协议 IPv4
… 0101 = Header Length: 20 bytes (5) //IP 包头部长度 20bytes
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) //差分服务字段
Total Length: 165//IP 包的总长度
Identification: 0x8a7d (35453) //标志字段
Flags: 0x0 (Don’t Fragment) //标记字段
Fragment offset: 0 //碎片偏移量
Time to live: 1//生存周期 TTL
Protocol: UDP(17) //此包内封装的上层协议为 UDP
Header checksum: 0x0000[validation disabled] //头部数据的校验和
Source: 10.130.9.141//源 IP 地址
Destination: 239.192.152.143 //目的 IP 地址
- 捕获一个IPv6包
0110......=Version:6//互联网协议 IPv6
Traffic Class:0x00(DSCP:CS0,ECN:Not-ECT)//差分服务字段
Flow Label:0x05efb//流标签
Payload Length:62//负载长度
Next Header:TCP(6)//下一个头部所使用的协议类型是TCP
Hop Limit:64//跳数限制
Source Address:2001:250:401:6563:d54d:a665:ffea:76da//源地址
Destination Address:2620:1ec:c11::239//目的地址
六、实验总结
通过本次实验,我们学习了IP协议的基本工作原理,了解了IPv4和IPv6协议的区别以及如何使用Wireshark工具进行网络数据包的捕获和解析。
在捕获IPv4包的过程中,我们了解了IPv4包的格式和各字段的含义。我们使用Wireshark工具对捕获的IPv4包进行了解析,包括源IP地址、目标IP地址、IP协议类型、TTL等信息。
在捕获IPv6包的过程中,我们了解了IPv6包的格式和各字段的含义。与IPv4包相比,IPv6包的格式更加简洁,而且具有更高的扩展性。Wireshark工具对捕获的IPv6包进行的解析,主要包括源IP地址、目标IP地址、IP协议类型等信息。通过这些信息,我们能够了解数据报的发送和接收情况。
总的来说,本次实验让我们更加深入地了解了IP协议的基本工作原理以及IPv4和IPv6协议的区别。美中不足的是,没有对IP包从源计算机到目的计算机的发送过程进行检测,从而具体了解哪些部分在这个过程中发生了变化。