文档库 最新最全的文档下载
当前位置:文档库 › 网络协议分析实验报告

网络协议分析实验报告

网络协议分析实验报告

学院:

班级:

姓名:

学号:

实验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.生成最大数据量的IP数据报(64K),数据部分为ICMP格式,ICMP报文为回送请求报文,

IP首部DF位置为1;由发送线程发送;

3.如果收到报文为目标不可达报文,减少数据长度,再次发送,直到收到回送应答报文。至

此,MTU测量完毕。

实验原理

ICMP:ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP 协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

PING程序基本原理:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者。

MTU:是网络最大传输单元(包长度),IP路由器必须对超过MTU的IP报进行分片目的主机再完成重组处理,所以确定源到目的路径MTU对提高传输效率是非常必要的。确定路

径MTU的方法是“要求报文分片但又不被允许”的ICMP报文。IPV4数据结构分析:

实验截图

发送一系列的长度递减的不允许分片的数据报,通过接收返回的ICMP报的分析,可确定路径MTU,如下图所示:

MTU值为1430

实验2 基于UDP的traceroute程序

实验目的

1)掌握UDP协议

2)掌握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调试工具。

实验步骤

1.首先分别编译程序udp-client.c和udp-server.c,编译命令如下:

gcc udp-client.c –o udp-client

gcc udp-server.c –o udp-server

启动网络嗅探程序:wireshark。

打开两个终端窗口,进入程序所在目录,分别运行./udp-client和./udp-server,查看wireshark采集到的UDP通讯数据,截图并结合图对UDP协议格式进行说明;

2.通过socket编程,发送udp数据报,设置目的端口号为不常用的值,TTL值初始为1,逐

步增加,接收超时ICMP报文和ICMP不可达报文;如果接收到ICMP超时报文,则记录发送ICMP超时报文的路由器IP地址,如果收到ICMP不可达报文,则为目的主机到达;

3.输出记录的所有路由器IP地址。

实验原理

UDP工作原理:与我们所熟悉的TCP一样,UDP协议直接位于IP的顶层。根据OSI(开放

系统互联)参考模型,UDP和TCP都属于传输层协议。UDP的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前8

个字节用来包含包头信息,剩余的字节则用来包含具体的传输数据。 UDP报头由4个部分组成:源端口号、目标端口号、数据报长度和校验值,其中每个域各占用两个字节。UDP使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。

traceroute算法:Traceroute的基本算法是:开始发送TTL为1的数据包,每次加1,直到收到一个“端口不可达”的ICMP报文(意味着到达了目的地),或者到达最大跳数(缺省为30跳),对于每一个TTL,同时发送三个探测包,之后打印出网关的地址和每一个探测包来回的时间,如果对探测包的回答来自不同的网关,则每一个响应的网关都被列出来,如果5秒钟还没有响应,则*,表示超时。探测包是UDP格式,由于我们不想目的主机处理它们,因此目的端口设置为一个不可能的值。

UDP数据结构分析:

实验3 TCP协议分析

实验目的

1)掌握TCP协议

2)掌握TCP客户机/服务器编程模式

实验任务

熟悉程序tcp-process.c,tcp-client.c和tcp-server.c,使用网络嗅探器(如wireshark)分析TCP 协议三次握手过程;

实验环境

1)Linux系统;

2)gcc编译工具,gdb调试工具。

实验步骤

首先分别编译程序tcp-client.和tcp-server.,编译命令如下:

gcc tcp-client.c tcp-process.c –o tcp-client

gcc tcp-server.c tcp-process.c –o tcp-server

启动网络嗅探程序:wireshark。

打开两个终端窗口,进入程序所在目录,分别运行./tcp-client和./tcp-server,查看wireshark采集到的TCP通讯数据,截图并结合图对TCP三次握手协议格式进行说明;

三次握手抓包过程分析

TCP数据结构分析

下面使用wireshark实际分析三次握手过程第一次握手:

第二次握手:

第三次握手:

相关文档
相关文档 最新文档