搜档网
当前位置:搜档网 › 计算机网络原理实验七传输层可靠传输协议GBN编程实验报告

计算机网络原理实验七传输层可靠传输协议GBN编程实验报告

实验七、传输层可靠传输协议G B N编程实验报告序号:姓名:学号:成绩指导老师:

一、实验目的:

1、通过编写实现一个简单可靠的数据传输协议GBN的发送和接收代码,模拟可靠数据传输

2、理解TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输策略。

二、实验原理:

在GBN中,发送端不需要在接收到上一个数据包的ACK后才发送下一个数据包,而是可以连续发送数据包。在发送端发送数据包的过程中,如果接收到对应已发送的某个数据包的NACK,则发送端将NACK对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发。

三、结果分析:

本次试验中采用java语言进行程序编写

代码注释:

(一)S ender类

import java.util.Timer;

public class Sender extends Thread{

public int windowsize=3; //发送方窗口长度设为3

public String[] data={"data1","data2","data3",

"data4","data5","data6","data7"}; //模拟七个数据包public int sign[]={0,1,2,3,4,5,6}; //为7个数据包标号

public int localack=-1; //保存最近收到的ACK

public Timers litime=null; //定时器(这里定为2秒)

public int switches=0; //超时标志,1为超时

public int windowsign[]; //当前窗口内待发的数据分组的序号

public int acksign=0;

//为0表示收到正确ACK,为1表示收到错误的ACK,必须重发!

public Sender(){

windowsign=new int[windowsize];

//给窗口分配指定大小的空间

for(int i=0;i<3;i++)

windowsign[i]=sign[i]; //窗口初始化时存放前3个序号

}

public void run(){

System.out.println("发送方开始发送分组数据!");

}

public void getack(int ack){

System.out.println("发送方收到了ACK,序号为"+ack+"并且开始加以确认!");

if(ack!=localack+1){

System.out.println("经验证,这不是发送方正期待的ACK,立刻重发

序号为"+(localack+1)+"的数据分组!");

acksign=1;

}

else{

localack=ack; //表示正确确认了ACK

acksign=0;

}

}

public void time(){

switches=0; //标志初始化为0

litime=new Timers();

Timer limit=new Timer();

limit.schedule(litime, 0,100);

}

}

(二)R eceiver类

import java.util.Random;

public class Receiver extends Thread{

public int lastdata;

public Sender sender;

public void run(Sender s){

sender=s;

System.out.println("接收方开始接收分组数据!");

}

void receive(int data, Sender s){

sender=s; //发送方的参数传递

System.out.println("接收方收到了序号为"+data+"的分组!");

if(data!=0){

if(data==lastdata+1){

//数据包序号校验,若连续则是正确/所期待的

System.out.println("该数据分组正是接收方所期待的,接收方接

受了它并准备回送对应的ACK!");

lastdata=data; //更新本地保存的数据包序号变量

respond(lastdata); //回送该正确接收的数据包对应的ACK }

else{

System.out.println("该数据分组不是接收方所期待的,该分组将

被丢弃,接收方准备回送最后接受的数据分组对应的ACK!");

respond(lastdata);

//若不是所期待的数据包则丢弃并且重发上一次的ACK }

}

else{

System.out.println("该数据分组正是接收方所期待的,接收方接受了

它并准备回送对应的ACK!");

lastdata=data;

respond(lastdata); //首次接收数据包并且回送ACK }

}

void respond(int ack){ //回送指定序号的ACK if(sender.litime.limit<20){ //判断是否超时(2秒)

ack=lastdata; //获取本场保存的数据包序号

sender.getack(ack);

}

else{

System.out.println("计时超时!!(未丢包但是时间超过2秒)发送

方准备重发序号为"+ack+"的数据分组!");

sender.switches=1; //如果超时,设置超时状态并显示警告}

}

}

(三)T imers类

import java.util.TimerTask;

public class Timers extends TimerTask {

public int switches;

public int limit;

public void run(){

if(limit<20) limit++; //计时2秒

else {

switches=-1;

this.cancel();

} //开关为-1表示超时,并且停止计时器}

public Timers(){

switches=0; //启动计时器时全部初始化

limit=0;

}

}

(四)G BN类

import https://www.sodocs.net/doc/8511574400.html,.*;

import java.util.Random;

import java.io.*;

public class GBN extends Thread{

static void senddelay(int x) throws InterruptedException{

if(x==1) {sleep(300); System.out.println("发送数据分组时发生延迟:

300毫秒!"); }

else if(x==2) {sleep(750); System.out.println("发送数据分组时发生

延迟:750毫秒!");}

else if(x==3) {sleep(1200);System.out.println("发送数据分组时发生

延迟:1200毫秒!");}

else if(x==4) {sleep(3000);System.out.println("发送数据分组时发生

延迟:3000毫秒!");}

else;

}

public static void main(String[] args) throws IOException, InterruptedException {

Sender s=new Sender();

Receiver re=new Receiver();

s.start(); //发送端启动

re.run(s); //接收端启动

sleep(1000); //延迟处理

int[] retimes=new int[7];

//计算每个分组被发送的次数

for(int i=0;i<7;i++) retimes[i]=0; //数据包顺次发送

for(int i=0;i<=s.sign.length;i++){

while(i>s.localack+1){ //尚有未确认的数据包,重发!

System.out.println("发送方开始重新发送序号为

"+(s.localack+1)+"的数据分组");

retimes[s.localack+1]++;

int ran=new Random().nextInt(3);

int randelay=new Random().nextInt(5);

s.time();

senddelay(randelay); //设置随机值,模拟数据传输延迟

if(ran!=1) re.receive(s.localack+1,s);

//设置随机值,模拟数据丢包过程

else System.out.println("序号为"+(s.localack+1)+"的分组在传给接收方途中发生了丢包!");

}

if(i!=s.sign.length){

System.out.println();

System.out.println("发送方现在开始第一次发送序号为"+i+"的数据分组");

retimes[i]++;

if(i!=0){

for(int k=0;k<3;k++){

//表示至少成功发送并确认了一个数据分组

s.windowsign[k]++;

//这种情况下滑动窗口向前移动!

}

}

System.out.println();

System.out.println("当前窗口内的分组情况为:");

//显示当前窗口内数据包情况

for(int p=0;p<3;p++){

if(s.windowsign[p]<=6)

System.out.println("第"+p+"号窗口里面存放的是序

号为"+s.windowsign[p]+"的马上待发送的数据分组!

");

else

System.out.println("第"+p+"号窗口已经空了,并且后

续窗口、发送方没有要发送的数据分组了!");

}

System.out.println();

int ran=new Random().nextInt(3);

int randelay=new Random().nextInt(5);

s.time(); //计时开始(2秒时间)

senddelay(randelay); //设置随机值,模拟数据传输延迟

if(ran!=1) re.receive(s.sign[i],s);

//设置随机值,模拟数据丢包过程

else System.out.println("序号为"+i+"的分组在传给接收方途

中发生了丢包!");

}

}

System.out.println();System.out.println("以下是每个数据分组被发送过的次数的统计结果");

for(int i=0;i<7;i++) //显示关于每个数据包发送次数的统计表System.out.println("序号为"+i+"的数据分组被发送过的次数为:"+retimes[i]);

System.exit(0);

} }

结果截图:

网络协议实验报告

网络协议实验报告 班级:_____网络2010-2班____ 学号:________08103617______ 姓名:__________程凯凌______ 指导老师:__________杨东平__________ 日期:2012年12月27日

ARP1: 0000 ff ff ff ff ff ff 00 26 c7 35 46 48 08 06 00 01 0010 08 00 06 04 00 01 00 26 c7 35 46 48 0a 6e d0 d4 0020 00 00 00 00 00 00 0a 6e c0 01 以太网帧为:ff ff ff ff ff ff 00 26 c7 35 46 48 08 06 其中ff ff ff ff ff ff为目的地址(广播询问) 00 26 c7 35 46 48为源地址 08 06为上层协议类型arp(0x0806) Arp帧为: 00 01 08 00 06 04 00 01 00 26 c7 35 46 48 0a 6e d0 d4 00 00 00 00 00 00 0a 6e c0 01 其中00 01表示硬件类型(0x0001) 08 00表示 IP协议类型(0x0800) 06表示硬件长度为6 04表示协议长度为4 00 01表示操作请求码为0x0001 00 26 c7 35 46 48表示发送MAC地址 0a 6e d0 d4 表示发送IP地址为10.110.208.212 00 00 00 00 00 00 表示目的MAC地址 0a 6e c0 01表示目的IP地址10.110.192.1 ARP2: 0000 00 26 c7 35 46 48 00 14 d5 f1 de 1b 08 06 00 01 0010 08 00 06 04 00 02 00 14 d5 f1 de 1b 0a 6e c0 01 0020 00 26 c7 35 46 48 0a 6e d0 d4 00 00 00 00 00 00 0030 00 00 00 00 00 00 00 00 以太网帧:00 26 c7 35 46 48 00 14 d5 f1 de 1b 08 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 其中00 26 c7 35 46 48为目的地址(应答) 00 14 d5 f1 de 1b为源地址 08 06表示上层协议类型(0x0806) 00 00 00 00 00 00 00 00 00 00 00 00 00 00协议填充数据 arp帧为: 00 01 08 00 06 04 00 02 00 14 d5 f1 de 1b 0a 6e c0 01 00 26 c7 35 46 48 0a 6e d0 d4 其中00 01表示硬件类型(0x0001) 08 00表示 IP协议类型(0x0800) 06表示硬件长度为6 04表示协议长度为4

TCP IP网络协议分析实验报告

TCP/IP网络协议分析实验 一、实验目的 1. 通过实验,学习和掌握TCP/IP协议分析的方法及其相关工具的使用; 2. 熟练掌握 TCP/IP体系结构; 3. 学会使用网络分析工具; 4. 网络层、传输层和应用层有关协议分析。 二、实验类型 分析类实验 三、实验课时 2学时 四、准备知识 1.Windows 2003 server 操作系统 2.TCP/IP 协议 3.Sniffer工具软件 五、实验步骤 1.要求掌握网络抓包软件Wireshark。内容包括: ●捕获网络流量进行详细分析 ●利用专家分析系统诊断问题 ●实时监控网络活动 ●收集网络利用率和错误等 2.协议分析(一):IP协议,内容包括: ●IP头的结构 ●IP数据报的数据结构分析 3.协议分析(二):TCP/UDP协议,内容包括: ●TCP协议的工作原理 ●TCP/UDP数据结构分析

六、实验结果 1.IP协议分析: (1)工作原理:IP协议数据报有首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是IP数据报必须具有的。首部分为,版本、首部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议、首部检验和、源地址、目的地址、可选字段和数据部分 (2)IPV4数据结构分析:

2.TCP协议分析: (1)工作原理:TCP连接是通过三次握手的三条报文来建立的。第一条报文是没有数据的TCP报文段,并将首部SYN位设置为1。因此,第一条报文常被称为SYN分组,这个报文段里的序号可以设置成任何值,表示后续报文设定的起始编号。连接时不能自动从1开始计数,选择一个随机数开始计数可避免将以前连接的分组错误地解释为当前连接的分组。

计算机网络原理实验五

实验五、TCP 协议分析实验报告 序号:姓名:学号:成绩 1.实验目的: 理解TCP报文首部格式和字段的作用,TCP连接的建立和释放过程,TCP数据传输过程中编号与确认的过程。 2.实验环境: 连网环境,可以是局域网,也可以是连入Internet的单机。 3.实验步骤: (1)启动Etherel协议分析软件,并开始抓包。 (2)启动某个基于TCP的应用程序,例如连接某个FTP站点,或通过浏览器访问某个网页。 (3)等出现浏览的网页后停止数据包的捕获。 (4)出现协议分析界面,将filter 一栏填入tcp,则只显示TCP协议信息,通过此信息,可以看到TCP连接的三次握手过程和协商的初始的序列号,数据传输过程以及拆除连接的相应信息。 4.实验分析,回答下列问题 打开捕获文件tcp-ethereal-trace-1,通过捕获的数据包分析TCP建立连接的三次握手的过程,并将TCP建立连接过程中的三个报文填写下来。 字段名称第一条报文第二条报文第三条报文 报文序号 6 7 8 Sequence Number 0 0 1 Acknowedgement Numbber 0 1 1 ACK 0 1 1 SYN 1 1 0 (1)TCP建立连接时的三个报文,其报文首部与其他TCP报文有什么不同? TCP在建立连接时的三个报文,在报文首部比别的报文多了OPTION的字段 (2)报文首部的OPTION字段的作用是什么?值为多少? 至少一字节的可变长字段,标识哪个选项有效。如果没有选项,这个字节等于0。说明选项的结束。这个字节等于1,表示无需再有操作 它的值为至少一个字节的可变长字段的长度。 (3)分析TCP数据传输阶段的前8个报文,将报文信息填入到表中 报文序号报文种类 (发送/确 认)序号字段确认号字 段 数据长度被确认报 文序号 9 确认 1 764 436 8

网络协议分析实验报告

实 验 报 告 课程名称 计算机网络 实验名称 网络协议分析 系别 专业班级 指导教师 学号 姓名 实验日期 实验成绩 一、实验目的 掌握常用的抓包软件,了解ARP 、ICMP 、IP 、TCP 、UDP 协议的结构。 二、实验环境 1.虚拟机(VMWare 或Microsoft Virtual PC )、Windows 2003 Server 。 2.实验室局域网,WindowsXP 三、实验学时 2学时,必做实验。 四、实验内容 注意:若是实验环境1,则配置客户机A 的IP 地址:192.168.11.X/24,X 为学生座号;另一台客户机B 的IP 地址:192.168.11.(X+100)。在客户机A 上安装EtherPeek (或者sniffer pro )协议分析软件。若是实验环境2则根据当前主机A 的地址,找一台当前在线主机B 完成。 1、从客户机A ping 客户机B ,利用EtherPeek (或者sniffer pro )协议分析软件抓包,分析ARP 协议; 2、从客户机A ping 客户机B ,利用EtherPeek (或者sniffer pro )协议分析软件抓包,分析icmp 协议和ip 协议; 3、客户机A 上访问 https://www.sodocs.net/doc/8511574400.html, ,利用EtherPeek (或者sniffer pro )协议分析软件抓包,分析TCP 和UDP 协议; 五、实验步骤和截图(并填表) 1、分析arp 协议,填写下表 客户机B 客户机A

2、分析icmp协议和ip协议,分别填写下表 表一:ICMP报文分析

3、分析TCP和UDP 协议,分别填写下表

计算机网络实验-HTTP、FTP协议分析

实验二HTTP、FTP协议分析 1. 本次实验包括HTTP、FTP两个协议的分析(详见一、二)。 2. 参考文档所述步骤,完成数据包的捕获并进行分析; 3. 认真撰写实验报告,叙述实验过程要层次分明,对关键的过程或结果截图说明、分析,回答实验文档所提的思考题、问题。 一、超文本传输协议(HTTP)分析 【实验目的】 掌握HTTP协议的原理和报文格式; 了解HTTP协议的工作过程; 了解应用层协议与传输层协议的关系。 【实验内容】 用浏览器打开网页,捕获HTTP报文并进行分析 编辑一个HTTP数据报文并进行发送,并捕获该报文进行分析。 【实验步骤】 步骤一:使用浏览器打开网页,捕获HTTP数据包并分析: (1) 在主机上打开协议分析仪,点击工具栏上的“过滤器”,“类型过滤器”的下拉列表中 选择“HTTP协议”,确定后开始进行数据捕获:

(2) 使用实验室主机上的浏览器,例如IE,打开一个网页,如URL是 HTTP//https://www.sodocs.net/doc/8511574400.html, (3) 在协议分析器中找到捕获的数据包,观察HTTP请求报文和响应报文,以及其中所使用的命令:

【思考问题】 结合实验过程中的实验结果,问答下列问题: 1. 当实验主机上同时打开多个浏览器窗口并访问同一WEB站点的不同页面时,系统是根据什么把返回的页面正确地显示到相应窗口的?一个主页是否只有一个连接? 2. 请求主页后,返回的浏览器内容的字节长度是多少? 3. 如果请求一个不存在的网页,服务器将会应答什么? 答: 1. 当实验主机上同时打开多个浏览器窗口并访问同一WEB站点的不同页面时,系统是根据地址信息把返回的页面正确地显示到相应窗口的,一个主页是只有一个连接。 2. 请求主页后,返回的浏览器内容的字节长度是 3. 如果请求一个不存在的网页,服务器将会应答404错误。 二、FTP协议分析 【实验目的】 1、掌握FTP协议的工作原理; 2、了解FTP协议的常用命令,并领会其链路管理、理解FTP的主动模式和被动模式 3、了解应用层协议与传输层协议的关系; 【实验内容】 1. 登录FTP服务器,并捕获FTP报文进行分析;

IP协议分析实验报告

计算机网络 实 验 报 告 实验名称: IP协议分析 实验分组号: 实验人:郑微微 班级: 12计算机科学系本四B班学号: 实验指导教师:阮锦新 实验场地:网络实验室706 实验时间: 2014年11月 17号 成绩:

一、实验目的 1、掌握IP协议分析的方法 2、掌握TCP/IP体系结构 3、加深网络层协议的理解 4、学会使用网络分析工具 二、实验要求 1、实验前下载安装Ethereal/Wireshark/Sniffer中的一款网络分析工具软件 2、了解网络分析工具软件的常见功能与常见操作 3、每位学生必须独立完成所有实验环节 三、实验环境 1、操作系统:Windows XP/Windows 7/Windows 2008 2、已安装网络分析工具软件 3、PC机能访问互联网 四、实验内容及原理 1、实验内容 (1)IP头的结构 (2)IP报文分析 2、实验原理 网络之间互连的协议(Internet Protocol,IP)就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。 IP报文由报头和数据两部分组成,如图1所示:

图1 IP报文格式 五、需求分析 IP协议是TCP/IP体系中两个主要的协议之一,而IP地址位于IP数据报的首部,在网络层及以上使用的是IP地址,因此在数据链路层是看不见数据报的IP地址,另外首部的前一部分是固定长度,共20字节。在TCP/IP的标准中,各种数据格式常以32位为单位来描述,通过分析IP数据报的格式就能够知道IP协议都具有哪些功能。 六、实验步骤 1、打开网络分析工具软件 2、抓取浏览器数据包 (1)启动网络分析工具软件,设置抓包过滤条件。 (2)启动浏览器,在地址栏输入要访问的IP地址。 (3)关闭浏览器,停止抓包。 (4)存储所捕获的数据包。 (5)分析数据包。 七、实验分析 1.启动网络分析工具软件,设置抓包过滤条件为“==”

网络协议分析软件的使用实验报告

实验报告 项目名称:网络协议分析工具的使用课程名称:计算机网络B 班级: 姓名: 学号: 教师: 信息工程学院测控系

一、实验目的 基于网络协议分析工具Wireshark(原为Ethereal),通过多种网络应用的实际操作,学习和掌握不同网络协议数据包的分析方法,提高TCP/IP协议的分析能力和应用技能。 二、实验前的准备 ● 二人一组,分组实验; ● 熟悉Ping、Tracert等命令,学习FTP、HTTP、SMTP和POP3协议; ● 安装软件工具Wireshark,并了解其功能、工作原理和使用方法; ● 安装任一种端口扫描工具; ● 阅读本实验的阅读文献; 三、实验内容、要求和步骤 3.1 学习Wireshark工具的基本操作 学习捕获选项的设置和使用,如考虑源主机和目的主机,正确设置Capture Filter;捕获后设置Display Filter。 3.2 PING命令的网络包捕获分析 PING命令是基于ICMP协议而工作的,发送4个包,正常返回4个包。以主机210.31.40.41为例,主要实验步骤为: (1)设置“捕获过滤”:在Capture Filter中填写host 210.31.38.94; (2)开始抓包; (3)在DOS下执行PING命令; (4)停止抓包。 (5)设置“显示过滤”: IP.Addr=210.31.38.94 (6)选择某数据包,重点分析其协议部分,特别是协议首部内容,点开所有带+号的内容。(7)针对重要内容截屏,并解析协议字段中的内容,一并写入WORD文档中。

分析:从这个数据包的分析结果来看我们可以得知: 数据包的到达时间为2013年11月28日14:43:15 帧的序号为20411 帧的长度为74bytes(592bits),同时抓取的长度也是74bytes,说明没有丢失数据 目的MAC地址为00:25:11::4b:7a:6e 源MAC地址为00:25:11:4b:7d:6e 使用的协议为Ipv4 网络层的首部长度为20bytes 目的Ip地址为222.31.38.94 源Ip地址为222.31.38.93 数据没有分片说明数据大小没有超过最大传输单元MUT,其中用到了ICMP协议,数据包的生存周期为128 头部校验和为0x01正确 ICMP的校验和为0x01序列号为2304 数据有32bytes 3.3 TRACERT命令数据捕获 观察路由跳步过程。分别自行选择校内外2个目标主机。比如, (1)校内:tracert 210.31.32.8 (2)校外:tracert https://www.sodocs.net/doc/8511574400.html,

计算机网络实验指导书新

计算机网络实验指导书(新版)

————————————————————————————————作者:————————————————————————————————日期: 2

计算机网络 实验指导书 主编郭雅 参编余小华黄锦煜罗肖辉 主审陶培基 I

前言 计算机网络是信息社会的支柱。培养一大批谙熟计算机网络原理与技术,具有综合应用和研发创新能力的人才,是社会信息化的需要,也是高等院校相关专业的教学目的。 编者在本科院校二级学院工作多年,一直担任计算机网络课程及其实验课程的教学工作。包括编者所在学校在内的许多本科院校二级学院采用了谢希仁编著《计算机网络》作为网络基础课程的教材。该教材内容丰富,说理透彻。针对本科院校二级学院学生的特点,教学中应该基础理论和实践并重,各所院校都开出了一定的实验课时。为规范实验内容,严格实验训练,达到实验教学的目的,编者多年来一直对本类院校的实验教学进行探索,研究在课时有限的情况下,如何组织计算机网络实验教学的内容,使之既能配合课堂教学,加深对所学知识的理解,又能紧跟网络技术的发展,培养和提高学生的实际操作技能。在教学实践中,编者一直坚持编写和完善实验指导书,并与选用谢希仁编著《计算机网络》做教材的一些兄弟院校的教师多次交流,修订完成了这本《计算机网络实验指导书》。 本书内容涵盖诠释网络原理,应用组网技术和实施网络管理等几个方面的实验项目十九个。由于编者水平有限,编写时间紧迫,不足与错误在所难免,恳请专家和广大读者不吝批评指正。 参加本书编写的人员有华南理工大学广州学院计算机工程系余小华老师,华南师范大学增城学院教育信息技术部黄锦煜老师,华南师范大学增城学院网络中心罗肖辉老师。 本书由华南师范大学增城学院计算机系主任陶培基教授担任主审。 感谢广东轻工职业技术学院计算机系教授石硕对本书编写和出版所提供的意见、建议和热忱帮助。 编者 2011年6月 于华南师范大学增城学院,广州 E-mail: hsguoya@https://www.sodocs.net/doc/8511574400.html, II

网络协议实验报告

实验一: unsigned short checkSum(char*pBuffer,int nLen) { unsigned short nWord; unsigned int nSum=0; int i; for(i=0;i>16) { nSum=(nSum&0xFFFF)+(nSum>>16); } nSum=~nSum; return((unsigned short)nSum); } int timeout=1000; setsockopt(sock_raw,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout)); setsockopt(sock_raw,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout)); ICMPheader*pIcmpHeader=(ICMPheader*)sendBuffer; pIcmpHeader->byType=8; pIcmpHeader->byCode=0; pIcmpHeader->nId=(USHORT)::GetCurrentProcessId(); pIcmpHeader->nChecksum=0; pIcmpHeader->nSequence=htons(nSeq++); memset(sendBuffer+sizeof(ICMPheader),'*',32); pIcmpHeader->nChecksum=htons(checkSum(sendBuffer, sizeof(ICMPheader)+32)); int nRet=sendto(sock_raw,sendBuffer,sizeof(ICMPheader)+32,0, (SOCKADDR*)&dest_addr,sizeof(SOCKADDR_IN)); IPheader*ipHdr=(IPheader*)recvBuffer; ICMPheader*icmpHdrRet=(ICMPheader*)(recvBuffer+sizeof(IPheader)); if(icmpHdrRet->byCode==0&& icmpHdrRet->nId==pIcmpHeader->nId&& icmpHdrRet->nSequence==pIcmpHeader->nSequence) { nPacketReceived++; unsigned long dwRecvTime=::GetTickCount(); int nRoundTime=dwRecvTime-dwSendTime; nTotalRoundTime+=nRoundTime;

实验yi:网络协议分析工具Wireshark的使用

实验一: 一、实验目的 学习使用网络协议分析工具Wireshark的方法,并用它来分析一些协议。 二、实验原理和内容 1、tcp/ip协议族中网络层传输层应用层相关重要协议原理 2、网络协议分析工具Wireshark的工作原理和基本使用规则 三、实验环境以及设备 Pc机、双绞线 四、实验步骤(操作方法及思考题) 1.用Wireshark观察ARP协议以及ping命令的工作过程:(20分) (1)用“ipconfig”命令获得本机的MAC地址和缺省路由器的IP地址;(2)用“arp”命令清空本机的缓存; (3)运行Wireshark,开始捕获所有属于ARP协议或ICMP协议的,并且源或目的MAC地址是本机的包(提示:在设置过滤规则时需要使用(1)中获得的本机的MAC地址); (4)执行命令:“ping 缺省路由器的IP地址”; 写出(1),(2)中所执行的完整命令(包含命令行参数),(3)中需要设置的Wireshark的Capture Filter过滤规则,以及解释用Wireshark所观察到的执行(4)时网络上出现的现象。 -------------------------------------------------------------------------------- (1)ipconfig/all (2)arp –d (3)( arp or icmp ) and ether host 18-03-73-BC-70-51, ping 192.168.32.254 后的截包信息图片:

首先,通过ARP找到所ping机器的ip地址,本机器发送一个广播包,在子网中查询192.168.32.254的MAC地址,然后一个节点发送了响应该查询的ARP分组,告知及其所查询的MAC地址。接下来,本机器发送3个请求的ICMP报文,目的地段回复了三个响应请求的应答ICMP报文。在最后对请求主机对应的MAC地址进行核查。 2.用Wireshark观察tracert命令的工作过程:(20分) (1)运行Wireshark, 开始捕获tracert命令中用到的消息; (2)执行“tracert -d https://www.sodocs.net/doc/8511574400.html,” 根据Wireshark所观察到的现象思考并解释tracert的工作原理。 ----------------------------------------------------------- 实验室路由跟踪显示有6个路由器

利用wireshark分析HTTP协议实验报告

利用wireshark分析HTTP协议实验报告 姓名:杨宝芹 学号:2012117270 班级:电子信息科学与技术 时间:2014.12.26

利用wireshark分析HTTP协议实验报告 一、实验目的 分析HTTP协议。 二、实验环境 连接Internet的计算机,操作系统为windows8.1; Wireshark,版本为1.10.7; Google Chrome,版本为39.0.2171.65.m; 三、实验步骤 1.清空缓存 在进行跟踪之前,我们首先清空Web 浏览器的高速缓存来确保Web网页是从网络中获取的,而不是从高速缓冲中取得的。之后,还要在客户端清空DNS 高速缓存,来确保Web服务器域名到IP地址的映射是从网络中请求。 2.启动wireshare 3.开始俘获 1)在菜单中选择capture-options,选择网络,打开start。如下图:

2)在浏览器地址栏中输入https://www.sodocs.net/doc/8511574400.html,,然后结束俘获,得到如下结果: 3)在过滤器中选择HTTP,点击apply,得到如下结果:

在菜单中选择file-save,保存结果,以便分析。(结果另附) 四、分析数据 在协议框中选择“GET/HTTP/1.1”所在的分组会看到这个基本请求行后跟随 着一系列额外的请求首部。在首部后的“\r\n”表示一个回车和换行,以此将该 首部与下一个首部隔开。“Host”首部在HTTP1.1版本中是必须的,它描述了URL 中机器的域名,本实验中式https://www.sodocs.net/doc/8511574400.html,。这就允许了一个Web服务器在同一 时间支持许多不同的域名。有了这个数不,Web服务器就可以区别客户试图连接 哪一个Web服务器,并对每个客户响应不同的内容,这就是HTTP1.0到1.1版本 的主要变化。User-Agent首部描述了提出请求的Web浏览器及客户机器。接下 来是一系列的Accpet首部,包括Accept(接受)、Accept-Language(接受语言)、 Accept-Encoding(接受编码)、Accept-Charset(接受字符集)。它们告诉Web

计算机网络原理实验七、传输层可靠传输协议GBN编程实验报告

实验七、传输层可靠传输协议G B N编程实验报告序号:姓名:学号:成绩指导老师: 一、实验目的: 1、通过编写实现一个简单可靠的数据传输协议GBN的发送和接收代码,模拟可靠数据传输 2、理解TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输策略。 二、实验原理: 在GBN中,发送端不需要在接收到上一个数据包的ACK后才发送下一个数据包,而是可以连续发送数据包。在发送端发送数据包的过程中,如果接收到对应已发送的某个数据包的NACK,则发送端将NACK对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发。 三、结果分析: 本次试验中采用java语言进行程序编写 代码注释: (一)S ender类 import java.util.Timer; public class Sender extends Thread{ public int windowsize=3; //发送方窗口长度设为3 public String[] data={"data1","data2","data3", "data4","data5","data6","data7"}; //模拟七个数据包public int sign[]={0,1,2,3,4,5,6}; //为7个数据包标号 public int localack=-1; //保存最近收到的ACK public Timers litime=null; //定时器(这里定为2秒) public int switches=0; //超时标志,1为超时 public int windowsign[]; //当前窗口内待发的数据分组的序号 public int acksign=0;

网络协议实验报告6

组号:3F 学号:53131016 姓名:杨灵 实验7.1 FTP协议 【实验目的】 学习FTP协议的连接过程;理解FTP协议的工作原理。一人一组,一组提交报告。 【实验环境】 本实验采用网络结构一, 一定要设置DNS服务器,地址是:172.16.0.253 主机的IP地址使用172.16.0.0段。掩码255.255.255.0. IP地址分配方法: 172.16.0.组号、主机号 例如:第2组的B主机的IP地址设置为172.16.0.22 第5组的F主机的IP地址设置为 172.16.0.56 【实验内容】 本实验要求: FTP服务器已经启动,并提供一个公共帐户,用户名是:anonymous,口令:无。或用户名:group2_1,口令:group2_1 (可以上传数据)。练习一 FTP 本实验学生独立完成,目的是了解FTP协议的端口和连接过程。 实验步骤: 1、主机启动协议分析器,打开数据捕获窗口,设置过滤条件(提取FTP协议); 2、主机登录FTP服务器:在仿真端的命令行提示符下运行: >ftp 172.16.0.253 LOGIN:>group2_1 PASS:>group2_1 >dir >quit 3、查看主机捕获的数据,在会话分析中,查看TCP会话中的21端口和20端口的会话情况,记录21端口和20端口的会话过程; ●记录实验结果: ①粘贴捕获包的截图;

②是否可以捕获到用户名和密码? 答:可以,在USER和PASS会话中。 ③21端口和20端口分别传输什么内容? 答:一个是数据端口,一个是控制端口,控制端口一般为21,而数据端口不一定是20,这和FTP的使用模式有关,如果是主动模式,应该为20,如果为被动模式,由服务器端和客户端协商而定。练习二使用浏览器登入FTP 1、主机启动协议分析器,打开数据捕获窗口; 2、主机启动IE浏览器,在“地址”框中输入ftp://172.16.0.253 3、查看主机捕获的数据,在会话分析中,查看TCP会话中的端口情况。 4、结合练习1的会话过程,说明浏览器登入FTP的工作过程。 ●记录实验结果: ①粘贴捕获包的截图; ②对比上个实验,FTP服务器用哪个端口传输数据,数据连接是谁发起的连接? 答:ftp服务器用21端口传输数据,数据连接是客户端发起的的连接。 练习三在窗口模式下,上传/下传数据文件 熟悉FTP在窗口方式下的命令使用;在本地机的D:上建立一个文本文件,文件名为你的学号+姓名; 1、主机登录FTP服务器:在命令行提示符下运行: D:>ftp 172.16.0.253 >LOGIN:group2_1 >PASS: group2_1 >put 文件名(文件名为你的学号+姓名) >dir (查看FTP上是否已经上传) >get 文件名(FTP服务器) >quit 2、回到本地硬盘上查看是否已经下载到本地?(进入FTP时的目录下) ●记录实验结果: ①粘贴FTP上的文件列表;

使用wireshark进行协议分析实验报告

1 深圳大学实验报告 实验课程名称:计算机网络 实验项目名称:使用wireshark进行协议分析 学院:计算机与软件学院专业:计算机科学与技术 报告人:邓清津学号:2011150146 班级:2班同组人:无 指导教师:杜文峰 实验时间:2013/6/10 实验报告提交时间:2013/6/10 教务处制

一、实验目的与要求 学习使用网络数据抓包软件.学习使用网络数据抓包软件wireshark,并对一些协议进行分析。 二、实验仪器与材料 Wireshark抓包软件 三、实验内容 使用wireshark分析各层网络协议 1.HTTP协议 2.ARP协议,ICMP协议 3.IP协议 4.EthernetII层数据帧 为了分析这些协议,可以使用一些常见的网络命令。例如,ping等。 四、实验步骤 1、安装Wireshark,简单描述安装步骤: 2、打开wireshark,选择接口选项列表。或单击“Capture”,配置“option” 选项。

3.点击start后,进行分组捕获,所有由选定网卡发送和接收的分组都将被捕获。 4. 开始分组捕获后,会出现如图所示的分组捕获统计窗口。该窗口统计显示各类已捕获分组的数量。在该窗口中有一个“stop”按钮,可以停止分组的捕获。

一、分析HTTP协议 1.在浏览器地址栏中输入某网页的URL,如:https://www.sodocs.net/doc/8511574400.html,。为显示该网页,浏览器需要连接https://www.sodocs.net/doc/8511574400.html,的服务器,并与之交换HTTP消息,以下载该网页。包含这些HTTP消息的以太网帧(Frame)将被WireShark捕获。 2. 在显示筛选编辑框中输入“http”,单击“apply”,分组列表窗口将只显示HTTP消息。 3.点击其中一个http协议包

计算机网络原理实验报告

计 算 机 网 络 实 验 报 告 学校:中原工学院 学院:计算机学院 班级:网络092 学生:李东杰 学号:200900824217 日期:2010年12月25日

实验1 WIN32网络配置命令使用 一、实验内容: 网络测试工具—PING.EXE 网络配置查看程序—IPCONFIG.EXE 网络链接统计工具—NETSTA T.EXE 操纵网络路由表的工具—ROUTE.EXE 地址解析工具—APR.EXE 路由跟踪工具—TRACERT.EXE 二、教学目的、要求: 了解WIN32操作系统提供的各种网络功能的命令。熟悉WIN32操作系统提供的各种网络命令的使用方法和输出格式。 三、教学重点及难点 掌握命令输出项的含义 三、实验步骤 1、最常用的网络测试工具-PING.EXE 作用:Ping的主要作用是验证与远程计算机的连接。该命令只有在安装了TCP/IP 协议后才可以使用。 原理:向远程计算机通过ICMP协议发送特定的数据包,然后等待回应并接收返回的数据包,对每个接收的数据包均根据传输的消息进行验证。默认情况下,传输四个包含32 字节数据(由字母组成的一个循环大写字母序列)的回显数据包。过程如下: (1)(1)通过将ICMP 回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接。 (2)(2)每个发送的数据包最多等待一秒。 (3)(3)打印已传输和接收的数据包数。 用法:ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list

网络协议实验报告

TCP/IP协议分析-阅读调式IP协议源代码 实验内容:阅读、调试IP协议源代码 姓名:陈春玮 学号:142050121 实验日期:2014.11.25 一、实验目的: TCP/IP协议簇各功能函数之间的调用过程是协议簇运行的基础,查看TCP/IP协议簇各函数源代码实现及调用关系有助于整体理解协议簇。 实验要求阅读并调通IP协议源代码各函数的相互调用,理解网络报文转发功能这一TCP/IP核心功能的实现方式。 二、实验内容 (一)IP进程实现ipproc.c structep*ipgetp()这个函数实现用循环法获取一个ip数据报。 if((pip->ip_verlen>>4)!=IP_VERSION)如果IP数据报的版本号不是4,则丢弃报文,接收下一个ip数据包; if(IP_CLASSD(pip->ip_dst)||IP_CLASSE(pip->ip_dst))如果ip数据首部目的地址是一个E类地址,丢弃报文,接收下一个ip数据包; if(ifnum!=NI_LOCAL) if(cksum(pip,IP_HLEN(pip)>>1)) 如果ip数据报不是来自回环接口,则计算首部校验和,如有误,则丢弃报文,接收下一个ip数据包。 prt=rtget(pip->ip_dst,(ifnum==NI_LOCAL));if(prt==NULL){if(gateway)为该报文获取路由,判断该报文是否来自外部接口并要转发到外部接口,若是,则判断该主机是不是网关,不是则丢弃报文,接收下一个ip数据包。 iph2net()将报文首部字节序转换为网络字节序。 Ipdbc()这个函数查看报文是否是一个定向广播的报文,传入ip数据包的输入接口号,以太网帧,该数据包的路由。 Ipredirect()查看是否需要对该报文的路由进行重定向处理,传入ip数据包的输入接口号,以太网帧,该数据包的路由。

网络协议分析实验报告样本

网络协议分析实验报告样本 网络协议分析实验报告本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 实验报告99实验名称网络协议分析姓名学号班级313计本班实验目的掌握常用的抓包软件,了解EtherV 2、ARP、P IP协议的结构。 实验内容 11、分析2EtherV2协议 22、分析P ARP协议 33、分析P IP协议实验步骤 11、在S DOS状态下,运行ipconfig,记录本机的IP地址和硬件地址,网关的IP地址。 如下图11所示::本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 图图 12、分析数据链路层协议( (1)、在:PC1的“运行”对话框中输入命令“Ping192.168.191.1,单击“Enter”按钮;图如下图2所示:图图2( (2)、在本机上运行wireshark截获报文,为了只截获和实验内容有关的报文,将Ethereal的的Captrue Filter设置为“No

Broadcastand noMulticast”;如下图3所示:本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 图图3 (33)停止截获报文::将结果保存为MAC--学号,并对截获的报文进行分析:11)列出截获的报文中的协议类型,观察这些协议之间的关系。 答::a a、UDP:用户数据包协议,它和P TCP一样位于传输层,和P IP协议配合使用,。 在传输数据时省去包头,但它不能提供数据包的重传,所以适合传输较短的文件。 b b、WSP:是无线局域网领域推出的新协议,用来方便安全地建立无线连接。 c c、ARP:地址解析协议,实现通过P IP地址得知其物理地址。 在P TCP/IP网络环境下,每个主机都分配了一个232位的P IP 地址,这种互联网地址是在网际范围标本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 识主机的一种逻辑地址。 为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。 这样就存在把P IP地址变换成物理地址的地址转换问题。

计算机网络原理(实验指导书)

计算机网络原理实验指导书 中原工学院 计算机学院网络工程系 2014年12月10日

实验一Windows系统网络命令的使用 一、实验目的 1. 了解Windows操作系统提供的各种网络命令的功能。 2. 熟悉Windows操作系统提供的各种网络命令的使用方法和输出格式。 3、掌握常用的网络命令,能用ping 、ipconfig等命令工具来进行网络测试、使用tracert路由跟踪命令、使用route、netstat、arp等命令查看网络状态。 二、实验内容 1、常用网络测试命令PING的使用 2、网络配置查看命令IPCONFIG的使用 3、网络连接统计命令NETSTAT的使用 4、网络路由表操作命令ROUTE的使用 5、地址解析命令ARP的使用 6、路由跟踪tracert命令的使用 三、实验步骤 (一)常用的网络测试工具-PING.EXE 1、工作原理 Ping的主要作用是验证与远程计算机的连接。该命令只有在安装了TCP/IP 协议后才可以使用。向远程计算机通过ICMP协议发送特定的数据包,然后等待回应并接收返回的数据包,对每个接收的数据包均根据传输的消息进行验证。默认情况下,传输四个包含32 字节数据(由字母组成的一个循环大写字母序列)的回显数据包。 过程如下: (1)通过将ICMP 回显数据包发送到计算机,并侦听回显回复数据包来验证与一台或多台远程计算机的连接。 (2)每个发送的数据包最多等待一秒。 (3)打印已传输和接收的数据包数。 2、用法 ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list 参数一览表:

网络协议分析实验报告

课程设计 课程设计题目网络协议分析实验报告学生姓名: 学号: 专业: 2014年 6 月 29日

实验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协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。[1] 它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1.

ICMP原理 ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。 我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。 ICMP(Internet Control Message,网际控制报文协议)是为网关和目标主机而提供的一种差错控制机制,使它们在遇到差错时能把错误报告给报文源发方.是IP层的一个协议。但是由于差错报告在发送给报文源发方时可能也要经过若干子网,因此牵涉到路由选择等问题,所以ICMP报文需通过IP协议来发送。ICMP数据报的数据发送前需要两级封装:首先添加ICMP 报头形成ICMP报文,再添加IP报头形成IP数据报 通信术语最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。 实验2 基于UDP的traceroute程序 实验目的 1)掌握UDP协议 2)掌握UDP客户机/服务器编程模式 3)掌握socket编程技术 4)掌握traceroute算法

相关主题