1、1网络协议分析实验报告学院:班级:姓名:学号:2实验 1 基于 ICMP 的 MTU 测量方法实验目的1) 掌握 ICMP 协议2) 掌握 PING 程序基本原理3) 掌握 socket 编程技术4) 掌握 MTU 测量算法实验任务编写一个基于 ICMP 协议测量网络 MTU 的程序,程序需要完成的功能:1)使用目标 IP 地址或域名作为参数,测量本机到目标主机经过网络的 MTU;2)输出到目标主机经过网络的 MTU。实验环境1)Linux 系统;2)gcc 编译工具,gdb 调试工具。实验步骤1. 首先仔细研读 ping.c 例程,熟悉 linux 下 socket 原始套接字编程模式,为实
2、验做好准备;2. 生成最大数据量的 IP 数据报(64K) ,数据部分为 ICMP 格式,ICMP 报文为回送请求报文,IP 首部 DF 位置为 1;由发送线程发送;3. 如果收到报文为目标不可达报文,减少数据长度,再次发送,直到收到回送应答报文。至此,MTU 测量完毕。实验原理ICMP:ICMP 是(Internet Control Message Protocol)Internet 控制报文协议。它是TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户
3、数据的传递起着重要的作用。PING 程序基本原理:向网络上的另一个主机系统发送 ICMP 报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者。MTU:是网络最大传输单元(包长度) ,IP 路由器必须对超过 MTU 的 IP 报进行分片目的主机再完成重组处理,所以确定源到目的路径 MTU 对提高传输效率是非常必要的。确定3路径 MTU 的方法是“要求报文分片但又不被允许 ”的 ICMP 报文。IPV4 数据结构分析:45实验截图发送一系列的长度递减的不允许分片的数据报,通过接收返回的 ICMP 报的分析,可确定路径 MTU,如下图所示:MTU 值为 1430实验 2 基于 UDP 的
4、 traceroute 程序实验目的1) 掌握 UDP 协议62) 掌握 UDP 客户机/服务器编程模式3) 掌握 socket 编程技术4) 掌握 traceroute 算法实验任务1. 熟悉程序 udp-client.c 和 udp-server.c,使用网络嗅探器(如 wireshark)分析 UDP 通讯数据报格式;2. 编写一个基于 UDP 协议的网络路径记录程序程序,程序需要完成的功能:1)使用目标 IP 地址或域名作为参数,测量本机到目标主机经过的路由器 IP 地址;2)输出到目标主机经过网络路由器 IP 地址。实验环境1)Linux 系统;2)gcc 编译工具,gdb 调试工具
5、。实验步骤1. 首先分别编译程序 udp-client.c 和 udp-server.c,编译命令如下:gcc udp-client.c o udp-clientgcc udp-server.c o udp-server启动网络嗅探程序:wireshark。打开两个终端窗口,进入程序所在目录,分别运行./udp-client 和./udp-server,查看wireshark 采集到的 UDP 通讯数据,截图并结合图对 UDP 协议格式进行说明;2. 通过 socket 编程,发送 udp 数据报,设置目的端口号为不常用的值,TTL 值初始为 1,逐步增加,接收超时 ICMP 报文和 ICMP
6、 不可达报文;如果接收到 ICMP 超时报文,则记录发送 ICMP 超时报文的路由器 IP 地址,如果收到 ICMP 不可达报文,则为目的主机到达;3. 输出记录的所有路由器 IP 地址。实验原理UDP 工作原理:与我们所熟悉的 TCP 一样,UDP 协议直接位于 IP 的顶层。根据 OSI(开放系统互联)参考模型,UDP 和 TCP 都属于传输层协议。UDP 的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前 8个字节用来包含包头信息,剩余的字节则用来包含具体的传输数据。 UDP 报头由 4 个部分组成:源端口号、目标端口号、数据报长
7、度和校验值,其中每个域各占用两个字节。UDP 使用端口号为不同的应用保留其各自的数据传输通道。UDP 和 TCP 正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方( 可以是客户端或服务器端)将7UDP 数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。traceroute 算法:Traceroute 的基本算法是:开始发送 TTL 为 1 的数据包,每次加 1,直到收到一个“端口不可达”的 ICMP 报文(意味着到达了目的地),或者到达最大跳数(缺省为 30 跳),对于每一个 TTL,同时发送三个探测包,之后打印出网关的地址和每一个探测包来回的时间,
8、如果对探测包的回答来自不同的网关,则每一个响应的网关都被列出来,如果 5 秒钟还没有响应,则*,表示超时。探测包是 UDP 格式,由于我们不想目的主机处理它们,因此目的端口设置为一个不可能的值。UDP 数据结构分析:8实验 3 TCP 协议分析实验目的1) 掌握 TCP 协议2) 掌握 TCP 客户机/服务器编程模式实验任务熟悉程序 tcp-process.c,tcp-client.c 和 tcp-server.c,使用网络嗅探器(如 wireshark)分析 TCP协议三次握手过程;实验环境1)Linux 系统;2)gcc 编译工具,gdb 调试工具。实验步骤首先分别编译程序 tcp-cli
9、ent.和 tcp-server.,编译命令如下:gcc tcp-client.c tcp-process.c o tcp-clientgcc tcp-server.c tcp-process.c o tcp-server启动网络嗅探程序:wireshark。打开两个终端窗口,进入程序所在目录,分别运行./tcp-client 和./tcp-server,查看wireshark 采集到的 TCP 通讯数据,截图并结合图对 TCP 三次握手协议格式进行说明;9三次握手抓包过程分析TCP 数据结构分析下面使用 wireshark 实际分析三次握手过程第一次握手:101112第二次握手:1314第三次握手:15