当前位置:文档之家› 实验3ICMP协议实践ping解析

实验3ICMP协议实践ping解析

计算机网络实验上机指导书

专业

班级

学号

姓名

沈阳工程学院信息工程系

实验2ICMP协议实践--ping解析

一.实验目的

掌握ICMP原理,利用其实现网络主机状态测试。

二.实验内容

利用ICMP协议原理编程实现PING命令,测试目标主机是否可到达。并了解Ping实现原理。三.实验前的准备

●了解ICMP原理及相关概念。

●掌握相关软件编程知识。

四.实验要求及实验软硬件环境

【基本要求】

●设计程序完成PING命令。

●完成此项实验,完成实验报告。

【实验组织方式】

●个人实验

【实验条件】

●局域网环境下微机两台,编程软件。

五.实验步骤

.了解ICMP原理以及网络编程

(1)源程序:Windows

//

// Ping.h

//

#pragma pack(1)

#define ICMP_ECHOREPLY 0

#define ICMP_ECHOREQ 8

// IP Header -- RFC 791

typedef struct tagIPHDR

{

u_char VIHL; // Version and IHL

u_char TOS; // Type Of Service

short TotLen; // Total Length

short ID; // Identification

short FlagOff; // Flags and Fragment Offset

u_char TTL; // Time To Live

u_char Protocol; // Protocol

u_short Checksum; // Checksum

struct in_addr iaSrc; // Internet Address - Source

struct in_addr iaDst; // Internet Address - Destination

}IPHDR, *PIPHDR;

// ICMP Header - RFC 792

typedef struct tagICMPHDR

{

u_char Type; // Type

u_char Code; // Code

u_short Checksum; // Checksum

u_short ID; // Identification

u_short Seq; // Sequence

char Data; // Data

}ICMPHDR, *PICMPHDR;

#define REQ_DATASIZE 32 // Echo Request Data size

// ICMP Echo Request

typedef struct tagECHOREQUEST

{

ICMPHDR icmpHdr;

DWORD dwTime;

char cData[REQ_DATASIZE];

}ECHOREQUEST, *PECHOREQUEST;

// ICMP Echo Reply

typedef struct tagECHOREPLY

{

IPHDR ipHdr;

ECHOREQUEST echoRequest;

char cFiller[256];

}ECHOREPLY, *PECHOREPLY;

#pragma pack()

//

// PING.C -- Ping program using ICMP and RAW Sockets //

#include

#include

#include

#include "ping.h"

// Internal Functions

void Ping(LPCSTR pstrHost);

void ReportError(LPCSTR pstrFrom);

int WaitForEchoReply(SOCKET s);

u_short in_cksum(u_short *addr, int len);

// ICMP Echo Request/Reply functions

int SendEchoRequest(SOCKET, LPSOCKADDR_IN);

DWORD R ecvEchoReply(SOCKET, LPSOCKADDR_IN, u_char *);

// main()

void main(int argc, char **argv)

{

WSADATA wsaData;

WORD wVersionRequested = MAKEWORD(1,1);

int nRet;

// Check arguments

if (argc != 2)

{

fprintf(stderr,"\nUsage: ping hostname\n");

return;

}

// Init WinSock

nRet = WSAStartup(wVersionRequested, &wsaData);

if (nRet)

{

fprintf(stderr,"\nError initializing WinSock\n");

return;

}

// Check version

if (wsaData.wVersion != wVersionRequested)

{

fprintf(stderr,"\nWinSock version not supported\n");

return;

}

// Go do the ping

Ping(argv[1]);

// Free WinSock

WSACleanup();

}

// Ping()

// Calls SendEchoRequest() and

// RecvEchoReply() and prints results

void Ping(LPCSTR pstrHost)

{

SOCKET rawSocket;

LPHOSTENT lpHost;

struct sockaddr_in saDest;

struct sockaddr_in saSrc;

DWORD dwTimeSent;

DWORD dwElapsed;

u_char cTTL;

int nLoop;

int nRet;

// Create a Raw socket

rawSocket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);

if (rawSocket == SOCKET_ERROR)

{

ReportError("socket()");

return;

}

// Lookup host

lpHost = gethostbyname(pstrHost);

if (lpHost == NULL)

{

fprintf(stderr,"\nHost not found: %s\n", pstrHost);

return;

}

// Setup destination socket address

saDest.sin_addr.s_addr = *((u_long FAR *) (lpHost->h_addr));

saDest.sin_family = AF_INET;

saDest.sin_port = 0;

// Tell the user what we're doing

printf("\nPinging %s [%s] with %d bytes of data:\n",

pstrHost,

inet_ntoa(saDest.sin_addr),

REQ_DATASIZE);

// Ping multiple times

for (nLoop = 0; nLoop < 4; nLoop++)

{

// Send ICMP echo request

SendEchoRequest(rawSocket, &saDest);

// Use select() to wait for data to be received

nRet = WaitForEchoReply(rawSocket);

if (nRet == SOCKET_ERROR)

{

ReportError("select()");

break;

}

if (!nRet)

{

printf("\nTimeOut");

break;

}

// Receive reply

dwTimeSent = RecvEchoReply(rawSocket, &saSrc, &cTTL);

// Calculate elapsed time

dwElapsed = GetTickCount() - dwTimeSent;

printf("\nReply from: %s: bytes=%d time=%ldms TTL=%d", inet_ntoa(saSrc.sin_addr),

REQ_DATASIZE,

dwElapsed,

cTTL);

}

printf("\n");

nRet = closesocket(rawSocket);

if (nRet == SOCKET_ERROR)

ReportError("closesocket()");

}

// SendEchoRequest()

// Fill in echo request header

// and send to destination

int SendEchoRequest(SOCKET s,LPSOCKADDR_IN lpstToAddr)

{

static ECHOREQUEST echoReq;

static nId = 1;

static nSeq = 1;

int nRet;

// Fill in echo request

echoReq.icmpHdr.Type = ICMP_ECHOREQ;

echoReq.icmpHdr.Code = 0;

echoReq.icmpHdr.Checksum = 0;

echoReq.icmpHdr.ID = nId++;

echoReq.icmpHdr.Seq = nSeq++;

// Fill in some data to send

for (nRet = 0; nRet < REQ_DATASIZE; nRet++)

echoReq.cData[nRet] = ' '+nRet;

// Save tick count when sent

echoReq.dwTime = GetTickCount();

// Put data in packet and compute checksum

echoReq.icmpHdr.Checksum = in_cksum((u_short *)&echoReq, sizeof(ECHOREQUEST));

// Send the echo request

nRet = sendto(s, /* socket */

(LPSTR)&echoReq, /* buffer */

sizeof(ECHOREQUEST),

0, /* flags */

(LPSOCKADDR)lpstToAddr, /* destination */

sizeof(SOCKADDR_IN)); /* address length */

if (nRet == SOCKET_ERROR)

ReportError("sendto()");

return (nRet);

}

// RecvEchoReply()

// Receive incoming data

// and parse out fields

DWORD RecvEchoReply(SOCKET s, LPSOCKADDR_IN lpsaFrom, u_char *pTTL) {

ECHOREPLY echoReply;

int nRet;

int nAddrLen = sizeof(struct sockaddr_in);

// Receive the echo reply

nRet = recvfrom(s, // socket

(LPSTR)&echoReply, // buffer

sizeof(ECHOREPLY), // size of buffer

0, // flags

(LPSOCKADDR)lpsaFrom, // From address

&nAddrLen); // pointer to address len

// Check return value

if (nRet == SOCKET_ERROR)

ReportError("recvfrom()");

// return time sent and IP TTL

*pTTL = echoReply.ipHdr.TTL;

return(echoReply.echoRequest.dwTime);

}

// What happened?

void ReportError(LPCSTR pWhere)

{

fprintf(stderr,"\n%s error: %d\n",

WSAGetLastError());

}

// WaitForEchoReply()

// Use select() to determine when

// data is waiting to be read

int WaitForEchoReply(SOCKET s)

{

struct timeval Timeout;

fd_set readfds;

readfds.fd_count = 1;

readfds.fd_array[0] = s;

http://biz.doczj.com/doc/c22178453.html,_sec = 5;

http://biz.doczj.com/doc/c22178453.html,_usec = 0;

return(select(1, &readfds, NULL, NULL, &Timeout));

}

//

// Mike Muuss' in_cksum() function

// and his comments from the original

// ping program

//

// * Author -

// * Mike Muuss

// * U. S. Army Ballistic Research Laboratory

// * December, 1983

/*

* I N _ C K S U M

*

* Checksum routine for Internet Protocol family headers (C Version) *

*/

u_short in_cksum(u_short *addr, int len)

{

register int nleft = len;

register u_short *w = addr;

register u_short answer;

register int sum = 0;

/*

* Our algorithm is simple, using a 32 bit accumulator (sum), * we add sequential 16 bit words to it, and at the end, fold * back all the carry bits from the top 16 bits into the lower * 16 bits.

*/

while( nleft > 1 ) {

sum += *w++;

nleft -= 2;

}

/* mop up an odd byte, if necessary */

if( nleft == 1 ) {

u_short u = 0;

*(u_char *)(&u) = *(u_char *)w ;

sum += u;

}

/*

* add back carry outs from top 16 bits to low 16 bits

*/

sum = (sum >> 16) + (sum & 0xffff); /* add hi 16 to low 16 */ sum += (sum >> 16); /* add carry */

answer = ~sum; /* truncate to 16 bits */

return (answer);

}

实验结果如图6-1所示。

图6-1 ping程序运行结果

(2)LINUX

/*简单的ping程序*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define PACKET_SIZE 4096

#define MAX_WAIT_TIME 5

#define MAX_NO_PACKETS 3

char sendpacket[PACKET_SIZE];

char recvpacket[PACKET_SIZE];

int sockfd,datalen=56;

int nsend=0,nreceived=0;

struct sockaddr_in dest_addr;

pid_t pid;

struct sockaddr_in from;

struct timeval tvrecv;

void statistics(int signo);

unsigned short cal_chksum(unsigned short *addr,int len);

int pack(int pack_no);

void send_packet(void);

void recv_packet(void);

int unpack(char *buf,int len);

void tv_sub(struct timeval *out,struct timeval *in);

void statistics(int signo)

{ printf("\n--------------------PING statistics-------------------\n");

printf("%d packets transmitted, %d received , %%%d lost\n",nsend,nreceived,

(nsend-nreceived)/nsend*100);

close(sockfd);

exit(1);

}

/*校验和算法*/

unsigned short cal_chksum(unsigned short *addr,int len)

{ int nleft=len;

int sum=0;

unsigned short *w=addr;

unsigned short answer=0;

/*把ICMP报头二进制数据以2字节为单位累加起来*/

while(nleft>1)

{ sum+=*w++;

nleft-=2;

}

/*若ICMP报头为奇数个字节,会剩下最后一字节。把最后一个字节视为一个2字节数据的高字节,这个2字节数据的低字节为0,继续累加*/

if( nleft==1)

{ *(unsigned char *)(&answer)=*(unsigned char *)w;

sum+=answer;

}

sum=(sum>>16)+(sum&0xffff);

sum+=(sum>>16);

answer=~sum;

return answer;

}

/*设置ICMP报头*/

int pack(int pack_no)

{ int i,packsize;

struct icmp *icmp;

struct timeval *tval;

icmp=(struct icmp*)sendpacket;

icmp->icmp_type=ICMP_ECHO;

icmp->icmp_code=0;

icmp->icmp_cksum=0;

icmp->icmp_seq=pack_no;

icmp->icmp_id=pid;

packsize=8+datalen;

tval= (struct timeval *)icmp->icmp_data;

gettimeofday(tval,NULL); /*记录发送时间*/

icmp->icmp_cksum=cal_chksum( (unsigned short *)icmp,packsize); /*校验算法*/

return packsize;

}

/*发送三个ICMP报文*/

void send_packet()

{ int packetsize;

while( nsend

{ nsend++;

packetsize=pack(nsend); /*设置ICMP报头*/

if( sendto(sockfd,sendpacket,packetsize,0,

(struct sockaddr *)&dest_addr,sizeof(dest_addr) )<0 ) { perror("sendto error");

continue;

}

sleep(1); /*每隔一秒发送一个ICMP报文*/

}

}

/*接收所有ICMP报文*/

void recv_packet()

{ int n,fromlen;

extern int errno;

signal(SIGALRM,statistics);

fromlen=sizeof(from);

while( nreceived

{ alarm(MAX_WAIT_TIME);

if( (n=recvfrom(sockfd,recvpacket,sizeof(recvpacket),0,

(struct sockaddr *)&from,&fromlen)) <0)

{ if(errno==EINTR)continue;

perror("recvfrom error");

continue;

}

gettimeofday(&tvrecv,NULL); /*记录接收时间*/

if(unpack(recvpacket,n)==-1)continue;

nreceived++;

}

}

/*剥去ICMP报头*/

int unpack(char *buf,int len)

{ int i,iphdrlen;

struct ip *ip;

struct icmp *icmp;

struct timeval *tvsend;

double rtt;

ip=(struct ip *)buf;

iphdrlen=ip->ip_hl<<2; /*求ip报头长度,即ip报头的长度标志乘4*/ icmp=(struct icmp *)(buf+iphdrlen); /*越过ip报头,指向ICMP报头*/ len-=iphdrlen; /*ICMP报头及ICMP数据报的总长度*/

if( len<8) /*小于ICMP报头长度则不合理*/

{ printf("ICMP packets\'s length is less than 8\n");

return -1;

}

/*确保所接收的是我所发的的ICMP的回应*/

if( (icmp->icmp_type==ICMP_ECHOREPLY) && (icmp->icmp_id==pid) )

{ tvsend=(struct timeval *)icmp->icmp_data;

tv_sub(&tvrecv,tvsend); /*接收和发送的时间差*/

rtt=http://biz.doczj.com/doc/c22178453.html,_sec*1000+http://biz.doczj.com/doc/c22178453.html,_usec/1000; /*以毫秒为单位计算rtt*/

/*显示相关信息*/

printf("%d byte from %s: icmp_seq=%u ttl=%d rtt=%.3f ms\n",

len,

inet_ntoa(from.sin_addr),

icmp->icmp_seq,

ip->ip_ttl,

rtt);

}

else return -1;

}

main(int argc,char *argv[])

{ struct hostent *host;

struct protoent *protocol;

unsigned long inaddr=0l;

int waittime=MAX_WAIT_TIME;

int size=50*1024;

if(argc<2)

{ printf("usage:%s hostname/IP address\n",argv[0]);

exit(1);

}

if( (protocol=getprotobyname("icmp") )==NULL)

{ perror("getprotobyname");

exit(1);

}

/*生成使用ICMP的原始套接字,这种套接字只有root才能生成*/

if( (sockfd=socket(AF_INET,SOCK_RAW,protocol->p_proto) )<0)

{ perror("socket error");

exit(1);

}

/* 回收root权限,设置当前用户权限*/

setuid(getuid());

/*扩大套接字接收缓冲区到50K这样做主要为了减小接收缓冲区溢出的的可能性,若无意中ping一个广播地址或多播地址,将会引来大量应答*/

setsockopt(sockfd,SOL_SOCKET,SO_RCVBUF,&size,sizeof(size) );

bzero(&dest_addr,sizeof(dest_addr));

dest_addr.sin_family=AF_INET;

/*判断是主机名还是ip地址*/

if( inaddr=inet_addr(argv[1])==INADDR_NONE)

{ if((host=gethostbyname(argv[1]) )==NULL) /*是主机名*/

{ perror("gethostbyname error");

exit(1);

}

memcpy( (char *)&dest_addr.sin_addr,host->h_addr,host->h_length);

}

else /*是ip地址*/

memcpy( (char *)&dest_addr,(char *)&inaddr,host->h_length);

/*获取main的进程id,用于设置ICMP的标志符*/

pid=getpid();

printf("PING %s(%s): %d bytes data in ICMP packets.\n",argv[1],

inet_ntoa(dest_addr.sin_addr),datalen);

send_packet(); /*发送所有ICMP报文*/

recv_packet(); /*接收所有ICMP报文*/

statistics(SIGALRM); /*进行统计*/

return 0;

}

/*两个timeval结构相减*/

void tv_sub(struct timeval *out,struct timeval *in)

{ if( (out->tv_usec-=in->tv_usec)<0)

{ --out->tv_sec;

out->tv_usec+=1000000;

}

out->tv_sec-=in->tv_sec;

}

/*------------- The End -----------*/

运行结果如图6-2所示。

网络协议分析实验报告

实 验 报 告 课程名称 计算机网络 实验名称 网络协议分析 系别 专业班级 指导教师 学号 姓名 实验日期 实验成绩 一、实验目的 掌握常用的抓包软件,了解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 上访问 http://biz.doczj.com/doc/c22178453.html, ,利用EtherPeek (或者sniffer pro )协议分析软件抓包,分析TCP 和UDP 协议; 五、实验步骤和截图(并填表) 1、分析arp 协议,填写下表 客户机B 客户机A

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

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

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开始计数,选择一个随机数开始计数可避免将以前连接的分组错误地解释为当前连接的分组。

常用网络测试命令实验报告

西安郵電學院 计算机网络技术及应用实验 报告书 院部名称:管理工程学院 学生姓名:XXX 专业名称:信息管理与信息系统班级:10XX 学号:0210XXXX 时间:2012年 5 月 4 日

一、实验目的 1.掌握基本的网络知识。 2.掌握CMD一些基本命令,并学会运用这些命令排除一些基本问题。 二、具体实验内容及步骤 1.Ping命令的使用 点击―开始‖—〉―运行‖,在―运行‖对话框―打开‖后键入cmd,按―确定‖,到命令行方式下。 实验步骤: 1)回环测试。这个ping命令被送到本地计算机IP软件。这一命令可以用来检测TCP/IP的安装或运行存在的某些最基本的问题。 C:\>ping 127.0.0.1 2)Localhost是127.0.0.1的别名,我们也可以利用localhost来进行回环测试,每台计算机都能够将名称localhost转换成地址127.0.0.1。如果做不到这一点,则表示主机文件(host)中存在问题。 C:\>ping localhost

3)Ping本机IP。若无回复,说明本地计算机的TCP/IP安装或配置存在问题。 C:\>ping –t 192.168.2.37 在命令中加入参数-t,本地计算机应该始终对该ping命令做出应答,使用ctrl+C终止操作。 4)Ping局域网内其它主机IP。该命令对局域网内的其它主机发送回送请求信息。

如果能够收到对方主机的回送应答信息,表明本地网络中的网卡和传输媒体运行正常。 C:\>ping 192.168.2.55 5)Ping网关:如果能够收到应答信息,则表明网络中的网关路由器运行正常。 C:\>ping 192.168.2.1 6)Ping域名服务器:如果能够收到应答信息,则表明网络中的域名服务器运行正常。 C:\>ping 202.117.128.2

《网络协议分析》实验报告

网络协议分析 ——计算机+自动化0902班易珊珊学号:200926100427 1 实验目的 ?掌握如何利用协议分析工具分析IP数据报报文格式,体会数据报发送,转发的过程。 ?通过分析截获TCP报文首部信息,理解首部中的序号,确认号等字段是TCP可靠连接的基础.通过分析TCP连接的三次握手建立和释放过程,理解TCP连接建立和释放机制。 2 实验内容 ?(1)IP协议分析 ?IP协议分析 (图一)IP数据报的格式

(图二)捕获的IP数据报 version:4,版本,占四位。 Header length:20 bytes,IP数据报首部为20字节,等于固定部分长度,说明没有可选字段。 Differentiated services field:ox00,所有服务类型都为0,说明这是一种缺省情况,IP数据报的发送者没有规定IP数据报的服务类型。 Total length:52,IP数据报总长度为52字节。 Identification:oxa47b,标识,占16位。 Flags: 标志,占3位。DF=1,MF=0, Fragment offset:0,说明该数据报没有分片。 Time to live:128,生存时间是128,每过一个路由器它就减1。 Protocol:TCP(ox06)此IP 数据报携带的数据使用TCP协议,协议字段

值为6。 Header checksum:oxdf8a,首部校验和,占16位。Source:192.168.2.10 源地址,占32位。Destination:202.102.233.164 目的地址,占32位。 ?(2)TCP协议分析: (图三)TCP报文段的首部格式

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

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

(2) 使用实验室主机上的浏览器,例如IE,打开一个网页,如URL是 HTTP//http://biz.doczj.com/doc/c22178453.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 http://biz.doczj.com/doc/c22178453.html,

实验报告2 常用网络命令的使用

计算机网络实验报告 班级信工(2)班日期 2016-5-12 学号 20130702047 姓名李格 实验名称常用网络命令的使用 一、实验目的 1. 掌握几种常用的网络命令,通过使用这些命令能检测常见网络故障。 2. 理解各命令的含义,并能解释其显示内容的意义。 二、实验步骤 (一)ping 命令的使用 1、单击开始按钮,输入cmd 并按回车键,进入windows DOS环境。 2、输入ping/? 回车,了解ping命令的基本用法。结果如下: 最常用的ping命令是在ping后面直接跟域名或IP地址。测试内网或外网的联通情况。 3、依次输入以下命令并查看分析结果。 (1)输入ping http://biz.doczj.com/doc/c22178453.html,并回车查看分析结果。 结果如下:

分析: (2)输入ping 218.197.176.10并回车查看分析结果。结果如下: 分析: (3)输入ping http://biz.doczj.com/doc/c22178453.html, 并回车查看分析结果。结果如下: 分析: (3)输入pi ng 121.14.1.189 并回车查看分析结果。

结果如下: 分析: 4、使用不同的参数测试ping命令。 结果如下: 分析: (二)ipconfig 命令的使用 1、单击开始按钮,输入cmd 并按回车键,进入windows DOS环境。 2、输入ipconfig/? 回车,了解ipconfig 命令的基本用法。结果如下:

3、依次输入以下命令并查看分析结果。 (1)输入ipconfig 并回车查看并分析结果。结果如下:

分析: (2)输入ipconfig/all 并回车查看分析结果。结果:

实验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 http://biz.doczj.com/doc/c22178453.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)在浏览器地址栏中输入http://biz.doczj.com/doc/c22178453.html,,然后结束俘获,得到如下结果: 3)在过滤器中选择HTTP,点击apply,得到如下结果:

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

实验一 熟悉常用的网络命令实验报告

实验一熟悉常用的网络命令 序号:姓名:李哲旭学号:20141120117成绩指导教师: 1.实验目的: 学会使用常用ping ,ipconfig, nslookup, arp ,tracert等常用网络测试命令检测网络连通、了解网络的配置状态,跟踪路由诊断域名系统等相关网络问题。 2实验环境: (1)运行windows 8.1操作系统的PC一台 (2)每台PC机具有一块网卡,通过双绞线与局域网网相连。 (3)局域网能连接Internet 3.实验步骤: 参见实验指导手册内容。 4.实验分析,回答下列问题 (1)查看本机TCP/IP协议配置,看你的计算机是通过自动获取IP还是通过手动方式设置IP地址的?写出你判断的理由。 自动获取IP地址 (2)如果是通过手动方式获取IP地址,可以直接读出IP地址,子网掩码,默认网关,首选DNS服务器地址,备用DNS服务器地址。填写下表。 如果是采用动态获取IP地址,如何获取完整的TCP/IP配置信息,请写出解决步骤。并填写下表。 点击运行,输入cmd,使用ipconfig/all命令 IP地址113.55.91.78

子网络掩码255.255.255.255 默认网关fe80::21e:73ff:fe9a:c820%1450. 0.0.0 首选DNS服务器地址202.203.208.33 备用DNS服务器地址222.203.208.33 (3)显示完整的TCP/IP的配置信息。 (4)在获取本机IP地址之后,在MS-DOS方式下运行下列Ping命令,填写实验运行结果(可附截图)。 (a)ping本机IP地址 (b)ping 本机IP地址–t

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

网络协议分析实验报告样本 网络协议分析实验报告本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 实验报告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地址变换成物理地址的地址转换问题。

使用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,如:http://biz.doczj.com/doc/c22178453.html,。为显示该网页,浏览器需要连接http://biz.doczj.com/doc/c22178453.html,的服务器,并与之交换HTTP消息,以下载该网页。包含这些HTTP消息的以太网帧(Frame)将被WireShark捕获。 2. 在显示筛选编辑框中输入“http”,单击“apply”,分组列表窗口将只显示HTTP消息。 3.点击其中一个http协议包

实验一 常用网络命令的使用 实验报告

实验一、常用网络命令的使用 课程计算机网络班级2013167 姓名郑棋元 完成日期15年4月2 日课(内、外)总计本实验用时间四个小时【实验目的】 1.掌握常用网络命令的使用方法; 2.熟悉和掌握网络管理、网络维护的基本内容和方法 【实验内容】 1.阅读实验指导书提供的资料,结合本地环境对WINDOWS 常用网络命 令进行测试和练习。 2.分析总结实验场地的网络环境、拓扑结构、上网方式等。 【实验步骤和结果】 ⑴ARP:

⑵ftp

⑶Ipconfig ⑷Nbtstat

⑸net: ⑹Netstat ⑺Ping

⑻Route ⑼Telnet 没能调试出来⑽Tracert

【实验思考题】 1.说明如何了解本机及其所处网络的网络配置信息? 输入Ipconfig/all(该诊断命令显示所有当前的 TCP/IP 网络配置值) 2.若网络出现故障,说明使用网络命令进行故障检测的常用步骤? 运用Ping(验证与远程计算机的连接) ping 任一IP地址,如果能ping通,说明你的电脑的TCP/IP没有错误。 ping 自己的IP地址,如果能ping通,说明你的网卡都正常。 ping 路由。如果能通,说明你的主机到路由的物理连接还都正常。 ping 网址。如果能通却还是打不开网页,说明dns有错误。 【实验总结】 常用的网络命令虽然看起来简单,可能觉得没什么用处,但是对于网络问题的诊断却非常有用。用windows系统自带的命令行中的常用网络命令来诊断网络故障,不仅快捷,而且信息反映直观。 【实验心得与体会】 掌握了很多常用却不知道或知道却不熟悉的网络命令的使用方法,知道了两台PC机之间传输文件的多种方式。

协议分析综合实验报告

协议分析综合实验报告 专业:电子信息科学与技术(1)班 组员: 学号: 时间:2014-12-01 一、实验目的:利用wireshark 抓包工具,结合课本,分析分层的网络结构协议体系: 二、基本步骤: 一、利用任意一台能够访问互联网的主机,安装wireshark抓包工具。 二、关闭所有应用层程序。如qq,ie浏览器,pptv等。 三、打开抓包工具,开始抓包。 四、打开IE浏览器,输入新浪WEB服务器的域名:http://biz.doczj.com/doc/c22178453.html,,回车。 五、访问新浪主页成功后,立即停止抓包。 六、分析所抓的数据包,找出主机跟新浪WEB服务器之间通信的数据包,按应用层、运输 层、网络层、数据链路层这四个层次,分析其具体工作过程,分别各层用到了哪些协议。 (新浪WEB服务器的IP地址是58.67.149.250) 三、实验分析过程 下图是用Wireshark软件进行抓包数据分析的截图,下面将选取1906号帧来进行相应的层次与过程分析:

1.数据链路层分析 PPPoE会话阶段以太网帧的协议填充为Ox8864.代码填充Ox00,整个会话的过程就是PPP的会话过程,但在PPPOE数据内的PPP数据帧是冲协议域开始的。此过程所用到的协议是IP协议。 2.网络层分析 该层所涉及的协议是IP协议,源地址是121.14.1.190,目的地址是119.124.31.253,区分服务字段为Ox00(DSCP:Ox00:Default;ECN:Ox00),默认的DSCP的值是0,相当于尽力传送。IP包的总长度为64,标志字段为Ox91d5,标记字段为Ox00,没有分片,其偏移量为0,生存时间为57,当减少为0时,该数据包将被丢弃以保证数据包不会无限制的循环,因为 wireshark不自动做TCP校验和的检验,所以显示为validation disabled

实验1:网络数据包的捕获与协议分析

实验报告 ( 2014 / 2015 学年第二学期) 题目:网络数据包的捕获与协议分析 专业 学生姓名 班级学号 指导教师胡素君 指导单位计算机系统与网络教学中心 日期2015.5.10

实验一:网络数据包的捕获与协议分析 一、实验目的 1、掌握网络协议分析工具Wireshark的使用方法,并用它来分析一些协议; 2、截获数据包并对它们观察和分析,了解协议的运行机制。 二、实验原理和内容 1、tcp/ip协议族中网络层传输层应用层相关重要协议原理 2、网络协议分析工具Wireshark的工作原理和基本使用规则 三、实验环境以及设备 Pc机、双绞线、局域网 四、实验步骤 1.用Wireshark观察ARP协议以及ping命令的工作过程: (1)打开windows命令行,键入“ipconfig -all”命令获得本机的MAC地址和缺省路由器的IP地址;结果如下: (2)用“arp -d”命令清空本机的缓存;结果如下 (3)开始捕获所有属于ARP协议或ICMP协议的,并且源或目的MAC地址是本机的包。(4)执行命令:ping http://biz.doczj.com/doc/c22178453.html,,观察执行后的结果并记录。

此时,Wireshark所观察到的现象是:(截图表示) 2.设计一个用Wireshark捕获HTTP实现的完整过程,并对捕获的结果进行分析和统计。(截 图加分析) 3.设计一个用Wireshark捕获ICMP实现的完整过程,并对捕获的结果进行分析和统计。要求:给出捕获某一数据包后的屏幕截图。以16进制形式显示其包的内容,并分析该ICMP 报文。(截图加分析) 4. 设计一个用Wireshark捕获IP数据包的过程,并对捕获的结果进行分析和统计(截图加分析) 要求:给出捕获某一数据包后的屏幕截图。以16进制形式显示其包的内容,并分析在该数据包中的内容:版本首部长度、服务类型、总长度、标识、片偏移、寿命、协议、源Ip地址、目的地址 五、实验总结

计算机网络实验利用wireshark分析ARP协议—实验六实验报告

信 息 网 络 技 术 实 验 报 告 实验名称利用wireshark分析ARP协议

实验编号 姓名 学号 成绩 常见网络协议分析实验一、实验室名称: 电子政务可视化再现实验室 二、实验项目名称: 利用wireshark分析ARP协议 三、实验原理:

Wireshark:Wireshark 是网络包分析工具。网络包分析工具的主要作用是尝试获取网络包,并尝试显示包的尽可能详细的情况。网络包分析工具是一种用来测量有什么东西从网线上进出的测量工具,Wireshark 是最好的开源网络分析软件。 当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit 的以太网地址来确定目的接口的.设备驱动程序从不检查IP数据报中的目的IP地址。地址解析为这两种不同的地址形式提供映射:32bit的IP地址和数据链路层使用的任何类型的地址。 ARP根据IP地址获取物理地址的一个TCP/IP协议。ARP为IP地址到对应的硬件地址之间提供动态映射。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存。 四、实验目的: 目的是通过实验加深对数据包的认识,网络信息传输过程的理解,加深对协议的理解,并了解协议的结构与区别。 利用wireshark捕获发生在ping过程中的ARP报文,加强对ARP协议的理解,掌握ARP报文格式,掌握ARP请求报文和应答报文的区别。 五、实验内容: 利用wireshark分析ARP协议 六、实验器材(设备、元器件) 运行Windows的计算机,带有并正确安装网卡;wireshark软件;具备路由器、交换机等网络设备的网络连接。 七、实验步骤: 1、查看本机WLAN接口IP,得到。 2、利用arp –a命令在本地的ARP 缓存中查看IP-MAC对应表。

协议分析实验报告doc

协议分析实验报告 篇一:实验七、UDP 协议分析实验报告 实验七、UDP 协议分析实验报告 序号:姓名:学号:成绩 1.实验目的: 分析UDP协议报文格式. 2.实验环境: 局域网环境,或者是联网的单机。 3.实验步骤: (1)启动ethereal软件,开始报文捕获。 (2)捕获UDP的数据包 (3)停止捕获报文。 4.实验分析,回答下列问题 (1)请说明你是如何获得UDP的捕获文件,并附上捕获的截图。 答:①启动Etherel协议分析软件,并开始抓包。 ②启动某个基于udp的应用程序,例如连接某个FTP站点,或通过浏览器访问某个网页。③等出现浏览的网页后停止数据包的捕获。 ④出现协议分析界面,将filter 一栏填入udp,则只显示udP协议信息信息。 (2)通过捕获的数据包分析UDP的报文结构,将UDP

协议树中各名字字段,字段长度, (3)通过和实验六的结果比较,UDP报文和TCP报文结构有何区别? 答:UDP报文由源端口号、目的端口号、长度、检验和、应用数据报文五个部分组成。而TCP报文结构除此之外还有 1)32比特的序号字段 (2)32比特的确认号字段 (3)16比特的接收窗口字段,用于流量控制 (4)4比特的首部长度字段 (5)可选与变长字段,用于发送方与接收方协商最大报文段长度 (6)比特的标志字段,用于对已被成功接收报文段的确认。 (4)通过实验六和实验七,分析TCP协议和UDP协议的不同之处。 答:TCP协议是可靠的传输协议,具有流控制和拥塞控制,能够防止数据的丢失,还有确认重发机制保证数据的到达,应用于不允许数据丢失但对带宽无严格要求的服务。 UDP协议是不可靠的传输协议,无流控制和拥塞控制,是尽力服务机制,可最大程度的利用带宽,传输速率较快,应用于对带宽有严格要求但可以容忍数据丢失的服务。 篇二:实验三 IP协议分析实验

计算机网络实验利用wireshark分析ARP协议—实验六实验报告分析

信息网络技术实验报告

实验名称利用wireshark分析ARP协议 实验编号 6.1 姓名 学号 成绩 2.6常见网络协议分析实验 一、实验室名称: 电子政务可视化再现实验室 二、实验项目名称: 利用wireshark分析ARP协议

三、实验原理: Wireshark:Wireshark 是网络包分析工具。网络包分析工具的主要作用是尝试获取网络包,并尝试显示包的尽可能详细的情况。网络包分析工具是一种用来测量有什么东西从网线上进出的测量工具,Wireshark 是最好的开源网络分析软件。 当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit 的以太网地址来确定目的接口的.设备驱动程序从不检查IP数据报中的目的IP地址。地址解析为这两种不同的地址形式提供映射:32bit的IP地址和数据链路层使用的任何类型的地址。 ARP根据IP地址获取物理地址的一个TCP/IP协议。ARP为IP地址到对应的硬件地址之间提供动态映射。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存。 四、实验目的: 目的是通过实验加深对数据包的认识,网络信息传输过程的理解,加深对协议的理解,并了解协议的结构与区别。 利用wireshark捕获发生在ping过程中的ARP报文,加强对ARP协议的理解,掌握ARP报文格式,掌握ARP请求报文和应答报文的区别。 五、实验内容: 利用wireshark分析ARP协议 六、实验器材(设备、元器件) 运行Windows的计算机,带有并正确安装网卡;wireshark软件;具备路由器、交换机等网络设备的网络连接。 七、实验步骤: 1、查看本机WLAN接口IP,得到192.168.1.112。 2、利用arp –a命令在本地的ARP 缓存中查看IP-MAC对应表。

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

用wireshark分析HTTP协议实验报告

利用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)在浏览器地址栏中输入http://biz.doczj.com/doc/c22178453.html,,然后结束俘获,得到如下结果: 3)在过滤器中选择HTTP,点击apply,得到如下结果:

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

网络协议分析实验报告

课程设计 课程设计题目网络协议分析实验报告学生姓名: 学号: 专业: 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算法

相关主题