tcpip实验报告.docx

上传人:b****7 文档编号:9835283 上传时间:2023-02-06 格式:DOCX 页数:21 大小:565.46KB
下载 相关 举报
tcpip实验报告.docx_第1页
第1页 / 共21页
tcpip实验报告.docx_第2页
第2页 / 共21页
tcpip实验报告.docx_第3页
第3页 / 共21页
tcpip实验报告.docx_第4页
第4页 / 共21页
tcpip实验报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

tcpip实验报告.docx

《tcpip实验报告.docx》由会员分享,可在线阅读,更多相关《tcpip实验报告.docx(21页珍藏版)》请在冰豆网上搜索。

tcpip实验报告.docx

tcpip实验报告

北京工业大学

计算机学院

实验报告

 

课程名称TCP\IP协议分析

学号

姓名

网络协议分析实验

一、实验目的

通过使用协议分析软件,对通信系统的通信过程进行监控、分析,以了解通信协议的工作过程。

二、实验内容

利用协议分析软件(如:

Wireshark)跟踪局域网报文(如条件允许也可跟踪多种局域网协议报文),实验内容如下:

将安装协议分析软件的PC接入以太网中,跟踪PC之间的报文,并存入文件以备重新查。

设置过滤器过滤网络报文以检测特定数据流。

利用协议分析软件的统计工具显示网络报文的各种统计信息。

三、实验步骤

1、在PC中安装协议分析软件(如:

Wireshark)。

具体安装过程详见附录:

Wireshark用户指南。

2、启动Wireshark协议分析软件,选择抓包菜单项启动实时监视器,开始实时跟踪显示网络数据报文。

可根据系统提示修改显示方式,详见附录:

Wireshark用户指南。

3、调出跟踪存储的历史报文,选择有代表性的ETHERNET,IEEE802.3,IP,ICMP,TCP,UDP报文,对照有关协议逐个分析报文各字段的含义及内容。

EHERNET报文格式

DSTADDR

SRCADDR

TYPE

INFO

6字节

6字节

2字节

最大长度1518字节

IEEE802.3报文格式

DSTADDR

SRCADDR

LEN

DSAP

SSAP

CONTROL

INFO

6字节

6字节

2字节

1字节

1字节

1/2字节

信息

最大长度1518字节

 

IP报文格式

VERSION

IHL

TOS

TOTAL LENGTN

IDENTIFICATION

FLAGS

FRAGMENT OFFSET

TTL

PROTOWT

HEADER CHECLCSUM

SOWRCE ADDRESS

DRSTINWTION ADDRESS

OPTIONS

PADDING

INFO

4、设置过滤器属性,如目的地址,源地址,协议类型等。

如过滤不需要的网络报文,过滤器允许设置第二层,第三层或第四层的协议字段。

过滤器有两种工作方式:

1)捕获前过滤:

协议分析软件用过滤器匹配网络上的数据报文,仅当匹配通过时才捕获报文。

2)捕获后过滤:

协议分析软件捕获所有报文,但仅显示匹配符合过滤条件的报文。

选择统计菜单项可以显示网络中各种流量的统计信息,如:

关于字节数,广播中报文数,出错数等。

UDP客户/服务器实验

一、实验目的

本实验目的是使用因特网提供的UDP传输协议,实现一个简单的UDP客户/服务器程序,以了解传输层所提供的UDP服务的特点,应用层和传输层之间的软件接口风格,熟悉socket机制和UDP客户端/服务器方式程序的结构。

二、实验内容

本实验为UDP客户/服务器实验。

实验内容:

UDPecho客户/服务器程序的设计与实现。

UDPecho客户/服务器程序完成以下功能:

客户从标准输入读一行文本,写到服务器上;服务器从网络输入读取此行,并回射(echo)给客户;客户读此回射行,并将其写到标准输出。

三、实验步骤

1、总体设计

客户程序从标准输入读一行文本,写到服务器程序上;服务器程序从网络输入读取此行,并回射给客户程序;客户程序读此回射行,并将其写到标准输出。

2、详细设计

1)服务器main函数

2)服务器str_echo函数

3)客户main函数

4)客户str_echo函数

Serv

#include

#include

#include

#include

#include

#defineMAXLINE4096

#defineLISTENQ1024/*2ndargumenttolisten()*/

#defineSERV_PORT9877

#defineSAstructsockaddr

staticintsockfd;

voiddg_echo(int,SA*,socklen_t);

int

main(intargc,char**argv)

{

structsockaddr_inservaddr,cliaddr;

if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0){

printf("socketerror.\n");

exit

(1);

}

bzero(&servaddr,sizeof(servaddr));

servaddr.sin_family=AF_INET;

servaddr.sin_addr.s_addr=htonl(INADDR_ANY);

servaddr.sin_port=htons(SERV_PORT);

bind(sockfd,(SA*)&servaddr,sizeof(servaddr));

dg_echo(sockfd,(SA*)&cliaddr,sizeof(cliaddr));

}

 

void

dg_echo(intsockfd,SA*pcliaddr,socklen_tclilen)

{

intn;

socklen_tlen;

charmesg[MAXLINE];

for(;;){

len=clilen;

n=recvfrom(sockfd,mesg,MAXLINE,0,pcliaddr,&len);

sendto(sockfd,mesg,n,0,pcliaddr,len);

}

}

Cli

#include

#include

#include

#include

#include

#defineMAXLINE4096

#defineLISTENQ1024/*2ndargumenttolisten()*/

#defineSERV_PORT9877

#defineSAstructsockaddr

 

voiddg_cli(FILE*,int,constSA*,socklen_t);

main(intargc,char**argv)

{

intsockfd;

structsockaddr_inservaddr;

if(argc!

=2){

printf("usage:

udpcli01sigio\n");

exit

(1);

}

bzero(&servaddr,sizeof(servaddr));

servaddr.sin_family=AF_INET;

servaddr.sin_port=htons(SERV_PORT);

inet_pton(AF_INET,argv[1],&servaddr.sin_addr);

if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0){

printf("socketerror.\n");

exit

(1);

}

dg_cli(stdin,sockfd,(SA*)&servaddr,sizeof(servaddr));

exit(0);

}

void

dg_cli(FILE*fp,intsockfd,constSA*pservaddr,socklen_tservlen)

{

intn;

charsendline[MAXLINE],recvline[MAXLINE+1];

while(fgets(sendline,MAXLINE,fp)!

=NULL){

sendto(sockfd,sendline,strlen(sendline),0,pservaddr,servlen);

n=recvfrom(sockfd,recvline,MAXLINE,0,NULL,NULL);

recvline[n]=0;/*nullterminate*/

fputs(recvline,stdout);

}

}

 

TCP客户/服务器实验

四、实验目的

本实验目的是使用因特网提供的TCP传输协议,实现一个简单的TCP客户/服务器程序,以了解传输层所提供的TCP服务的特点,应用层和传输层之间的软件接口风格,熟悉socket机制和TCP客户端/服务器方式程序的结构。

五、实验内容

本实验为TCP客户/服务器实验。

实验内容:

TCPecho客户/服务器设计与实现。

TCPecho客户/服务器程序完成以下功能:

客户从标准输入读一行文本,写到服务器上;服务器从网络输入读取此行,并回射(echo)给客户;客户读此回射行,并将其写到标准输出。

六、实验步骤

1、总体设计

客户程序从标准输入读一行文本,写到服务器程序上;服务器程序从网络输入读取此行,并回射给客户程序;客户程序读此回射行,并将其写到标准输出。

2、详细设计

1)服务器main函数

2)服务器str_echo函数

 

3)客户main函数

4)客户str_echo函数

 

Serv

#include

#include

#include

#include

#include

#defineMAXLINE4096

#defineLISTENQ1024/*2ndargumenttolisten()*/

#defineSERV_PORT9877

#defineSAstructsockaddr

voidstr_echo(int);

ssize_treadline(int,void*,size_t);

staticssize_tmy_read(int,char*);

int

main(intargc,char**argv)

{

intlistenfd,connfd;

pid_tchildpid;

socklen_tclilen;

structsockaddr_incliaddr,servaddr;

if((listenfd=socket(AF_INET,SOCK_STREAM,0))<0){

printf("socketerror.\n");

exit

(1);

}

bzero(&servaddr,sizeof(servaddr));

servaddr.sin_family=AF_INET;

servaddr.sin_addr.s_addr=htonl(INADDR_ANY);

servaddr.sin_port=htons(SERV_PORT);

if(bind(listenfd,(SA*)&servaddr,sizeof(servaddr))<0){

printf("binderror.\n");

exit

(1);

}

if(listen(listenfd,LISTENQ)<0){

printf("listenerror.\n");

exit

(1);

}

for(;;){

clilen=sizeof(cliaddr);

if((connfd=accept(listenfd,(SA*)&cliaddr,&clilen))<0){

printf("accepterror.\n");

exit

(1);

}

if((childpid=fork())==0){

close(listenfd);

str_echo(connfd);

exit(0);

}

close(connfd);

}

}

void

str_echo(intsockfd)

{

ssize_tn;

charline[MAXLINE];

for(;;){

if((n=readline(sockfd,line,MAXLINE))==0)

return;/*connectionclosedbyotherend*/

write(sockfd,line,n);

}

}

/*endstr_echo*/

ssize_t

readline(intfd,void*vptr,size_tmaxlen)

{

intn,rc;

charc,*ptr;

ptr=vptr;

for(n=1;n

if((rc=my_read(fd,&c))==1){

*ptr++=c;

if(c=='\n')

break;/*newlineisstored,likefgets()*/

}elseif(rc==0){

if(n==1)

return(0);/*EOF,nodataread*/

else

break;/*EOF,somedatawasread*/

}else

return(-1);/*error,errnosetbyread()*/

}

*ptr=0;/*nullterminatelikefgets()*/

return(n);

}

/*endreadline*/

staticssize_t

my_read(intfd,char*ptr)

{

staticintread_cnt=0;

staticchar*read_ptr;

staticcharread_buf[MAXLINE];

if(read_cnt<=0){

again:

if((read_cnt=read(fd,read_buf,sizeof(read_buf)))<0){

if(errno==EINTR)

gotoagain;

return(-1);

}elseif(read_cnt==0)

return(0);

read_ptr=read_buf;

}

read_cnt--;

*ptr=*read_ptr++;

return

(1);

}

/*endssize_t*/

Cli

#include

#include

#include

#include

#include

#defineMAXLINE4096

#defineLISTENQ1024/*2ndargumenttolisten()*/

#defineSERV_PORT9877

#defineSAstructsockaddr

voidstr_cli(FILE*,int);

ssize_treadline(int,void*,size_t);

staticssize_tmy_read(int,char*);

int

main(intargc,char**argv)

{

intsockfd;

structsockaddr_inservaddr;

if(argc!

=2){

printf("usage:

tcpcli01");

exit

(1);

}

if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){

printf("socketerror.\n");

exit

(1);

}

bzero(&servaddr,sizeof(servaddr));

servaddr.sin_family=AF_INET;

servaddr.sin_port=htons(SERV_PORT);

inet_pton(AF_INET,argv[1],&servaddr.sin_addr);

if(connect(sockfd,(SA*)&servaddr,sizeof(servaddr))<0){

printf("connecterror.\n");

exit

(1);

}

str_cli(stdin,sockfd);

exit(0);

}

void

str_cli(FILE*fp,intsockfd)

{

charsendline[MAXLINE],recvline[MAXLINE];

while(fgets(sendline,MAXLINE,fp)!

=NULL){

write(sockfd,sendline,strlen(sendline));

if(readline(sockfd,recvline,MAXLINE)==0){

printf("str_cli:

serverterminatedprematurely.\n");

exit

(1);

}

fputs(recvline,stdout);

}

}

/*endstr_cli*/

ssize_t

readline(intfd,void*vptr,size_tmaxlen)

{

intn,rc;

charc,*ptr;

ptr=vptr;

for(n=1;n

if((rc=my_read(fd,&c))==1){

*ptr++=c;

if(c=='\n')

break;/*newlineisstored,likefgets()*/

}elseif(rc==0){

if(n==1)

return(0);/*EOF,nodataread*/

else

break;/*EOF,somedatawasread*/

}else

return(-1);/*error,errnosetbyread()*/

}

*ptr=0;/*nullterminatelikefgets()*/

return(n);

}

/*endreadline*/

staticssize_t

my_read(intfd,char*ptr)

{

staticintread_cnt=0;

staticchar*read_ptr;

staticcharread_buf[MAXLINE];

if(read_cnt<=0){

again:

if((read_cnt=read(fd,read_buf,sizeof(read_buf)))<0){

if(errno==EINTR)

gotoagain;

return(-1);

}elseif(read_cnt==0)

return(0);

read_ptr=read_buf;

}

read_cnt--;

*ptr=*read_ptr++;

return

(1);

}

/*endssize_t*/

 

总结:

实验对于我们来说是很重要的,经过这几次实验,我已经大致了解了TCP/IP的工作原理,知道了要想实验客户机和服务器的连连通,具体的步骤是什么。

在试验中我们组遇到了很大的困难,几乎每一个步骤都会遇到很多问题,不多最后还是凭借大家的力量一一克服了,感谢老师对我们的帮助。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1