ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:565.46KB ,
资源ID:9835283      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9835283.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(tcpip实验报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

tcpip实验报告.docx

1、tcpip实验报告北京工业大学计算机学院实验报告 课程名称 TCPIP协议分析 学 号 姓 名 网络协议分析实验一、实验目的通过使用协议分析软件,对通信系统的通信过程进行监控、分析,以了解通信协议的工作过程。二、实验内容利用协议分析软件(如:Wireshark)跟踪局域网报文(如条件允许也可跟踪多种局域网协议报文),实验内容如下:将安装协议分析软件的PC接入以太网中,跟踪PC之间的报文,并存入文件以备重新查。设置过滤器过滤网络报文以检测特定数据流。利用协议分析软件的统计工具显示网络报文的各种统计信息。三、实验步骤1、在P中安装协议分析软件(如:Wireshark)。具体安装过程详见附录:Wir

2、eshark用户指南。2、启动Wireshark协议分析软件,选择抓包菜单项启动实时监视器,开始实时跟踪显示网络数据报文。可根据系统提示修改显示方式,详见附录:Wireshark用户指南。3、调出跟踪存储的历史报文,选择有代表性的ETHERNET,IEEE802.3,IP,ICMP,TCP,UDP报文,对照有关协议逐个分析报文各字段的含义及内容。EHERNET报文格式 DSTADDRSRCADDRTYPEINFO6字节6字节2字节最大长度1518字节IEEE802.3报文格式DSTADDRSRCADDRLENDSAPSSAPCONTROL INFO6字节6字节2字节1字节1字节1/2字节信息最

3、大长度1518字节IP报文格式VERSIONIHLTOSTOTALLENGTNIDENTIFICATIONFLAGSFRAGMENTOFFSETTTLPROTOWTHEADERCHECLCSUMSOWRCEADDRESSDRSTINWTIONADDRESSOPTIONSPADDINGINFO4、设置过滤器属性,如目的地址,源地址,协议类型等。如过滤不需要的网络报文,过滤器允许设置第二层,第三层或第四层的协议字段。过滤器有两种工作方式:1)捕获前过滤:协议分析软件用过滤器匹配网络上的数据报文,仅当匹配通过时才捕获报文。2)捕获后过滤:协议分析软件捕获所有报文,但仅显示匹配符合过滤条件的报文。选择

4、统计菜单项可以显示网络中各种流量的统计信息,如:关于字节数,广播中报文数,出错数等。UDP客户/服务器实验一、 实验目的本实验目的是使用因特网提供的UDP传输协议,实现一个简单的UDP客户/服务器程序,以了解传输层所提供的UDP服务的特点,应用层和传输层之间的软件接口风格,熟悉socket机制和UDP客户端/服务器方式程序的结构。二、 实验内容本实验为UDP客户/服务器实验。实验内容:UDP echo客户/服务器程序的设计与实现。UDP echo客户/服务器程序完成以下功能:客户从标准输入读一行文本,写到服务器上;服务器从网络输入读取此行,并回射(echo)给客户;客户读此回射行,并将其写到标

5、准输出。三、 实验步骤1、 总体设计客户程序从标准输入读一行文本,写到服务器程序上;服务器程序从网络输入读取此行,并回射给客户程序;客户程序读此回射行,并将其写到标准输出。2、 详细设计1)服务器main函数2)服务器str_echo函数3)客户main函数4)客户str_echo函数Serv#include #include #include #include #include #define MAXLINE 4096#define LISTENQ 1024 /* 2nd argument to listen() */#define SERV_PORT 9877#define SA stru

6、ct sockaddrstatic int sockfd;void dg_echo(int, SA *, socklen_t);int main(int argc, char * argv) struct sockaddr_in servaddr, cliaddr; if(sockfd = socket(AF_INET, SOCK_DGRAM, 0)0) printf(socket error.n); exit(1); bzero(&servaddr, sizeof(servaddr); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_ad

7、dr = 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(int sockfd, SA *pcliaddr, socklen_t clilen) int n; socklen_t len; char mesgMAXLINE; for ( ; ; ) len = clilen; n = recvfrom(sockfd

8、, mesg, MAXLINE, 0, pcliaddr, &len); sendto(sockfd, mesg, n, 0, pcliaddr, len); Cli#include #include #include #include #include #define MAXLINE 4096#define LISTENQ 1024 /* 2nd argument to listen() */#define SERV_PORT 9877#define SA struct sockaddrvoid dg_cli(FILE *, int, const SA *, socklen_t);main(

9、int argc, char *argv) int sockfd; struct sockaddr_in servaddr; 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, argv1, &servaddr.sin_addr); if(sockfd = socket(AF_INET, SOC

10、K_DGRAM, 0)0) printf(socket error.n); exit(1); dg_cli(stdin, sockfd, (SA *)&servaddr, sizeof(servaddr); exit(0);voiddg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen) int n; char sendlineMAXLINE, recvlineMAXLINE + 1; while (fgets(sendline, MAXLINE,fp) != NULL) sendto(sockfd, sendli

11、ne, strlen(sendline), 0, pservaddr, servlen); n = recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL); recvlinen = 0; /* null terminate */ fputs(recvline, stdout); TCP客户/服务器实验四、 实验目的本实验目的是使用因特网提供的TCP传输协议,实现一个简单的TCP客户/服务器程序,以了解传输层所提供的TCP服务的特点,应用层和传输层之间的软件接口风格,熟悉socket机制和TCP客户端/服务器方式程序的结构。五、 实验内容本实验为TC

12、P客户/服务器实验。实验内容:TCP echo客户/服务器设计与实现。TCP echo客户/服务器程序完成以下功能:客户从标准输入读一行文本,写到服务器上;服务器从网络输入读取此行,并回射(echo)给客户;客户读此回射行,并将其写到标准输出。六、 实验步骤1、 总体设计客户程序从标准输入读一行文本,写到服务器程序上;服务器程序从网络输入读取此行,并回射给客户程序;客户程序读此回射行,并将其写到标准输出。2、 详细设计1)服务器main函数2)服务器str_echo函数3)客户main函数4)客户str_echo函数Serv#include #include #include #include

13、 #include #define MAXLINE 4096#define LISTENQ 1024 /* 2nd argument to listen() */#define SERV_PORT 9877#define SA struct sockaddrvoid str_echo(int);ssize_t readline(int, void *, size_t);static ssize_t my_read(int, char *);intmain(int argc, char *argv) int listenfd, connfd; pid_t childpid; socklen_t

14、clilen; struct sockaddr_in cliaddr,servaddr; if (listenfd = socket(AF_INET, SOCK_STREAM, 0) 0) printf(socket error.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

15、 *)&servaddr, sizeof(servaddr) 0) printf(bind error.n); exit(1); if (listen(listenfd,LISTENQ) 0) printf(listen error.n); exit(1); for( ; ;) clilen = sizeof(cliaddr); if ( (connfd = accept(listenfd, (SA *) &cliaddr, &clilen) 0) printf(accept error.n); exit(1); if(childpid = fork() = 0) close(listenfd

16、) ; str_echo(connfd); exit(0); close(connfd); voidstr_echo(int sockfd) ssize_t n; char lineMAXLINE; for ( ; ; ) if ( (n = readline(sockfd, line, MAXLINE) = 0) return; /* connection closed by other end */ write(sockfd, line, n); /*end str_echo*/ssize_treadline(int fd, void *vptr, size_t maxlen) int n

17、, rc; char c, *ptr; ptr = vptr; for (n = 1; n maxlen; n+) if ( (rc = my_read(fd, &c) = 1) *ptr+ = c; if (c = n) break; /* newline is stored, like fgets() */ else if (rc = 0) if (n = 1) return(0); /* EOF, no data read */ else break; /* EOF, some data was read */ else return(-1); /* error, errno set b

18、y read() */ *ptr = 0; /* null terminate like fgets() */ return(n);/* end readline */static ssize_tmy_read(int fd, char *ptr) static int read_cnt = 0; static char *read_ptr; static char read_bufMAXLINE; if (read_cnt = 0) again: if ( (read_cnt = read(fd, read_buf, sizeof(read_buf) 0) if (errno = EINTR

19、) goto again; return(-1); else if (read_cnt = 0) return(0); read_ptr = read_buf; read_cnt-; *ptr = *read_ptr+; return(1);/*end ssize_t*/Cli#include #include #include #include #include #define MAXLINE 4096#define LISTENQ 1024 /* 2nd argument to listen() */#define SERV_PORT 9877#define SA struct socka

20、ddrvoid str_cli(FILE *,int);ssize_t readline(int, void *, size_t);static ssize_t my_read(int, char *);intmain(int argc, char *argv) int sockfd; struct sockaddr_in servaddr; if (argc != 2) printf(usage:tcpcli01 ); exit(1); if (sockfd = socket(AF_INET, SOCK_STREAM, 0) 0) printf(socket error.n); exit(1

21、); bzero(&servaddr, sizeof(servaddr); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(SERV_PORT); inet_pton(AF_INET, argv1, &servaddr.sin_addr); if (connect(sockfd, (SA *)&servaddr, sizeof(servaddr) 0) printf(connect error.n); exit(1); str_cli(stdin, sockfd); exit(0); voidstr_cli(FILE *fp,i

22、nt sockfd) char sendlineMAXLINE, recvlineMAXLINE; while (fgets(sendline,MAXLINE, fp) != NULL) write(sockfd, sendline, strlen(sendline); if (readline(sockfd, recvline, MAXLINE) = 0) printf(str_cli:server terminated prematurely.n); exit(1); fputs(recvline, stdout); /*end str_cli */ssize_treadline(int

23、fd, void *vptr, size_t maxlen) int n, rc; char c, *ptr; ptr = vptr; for (n = 1; n maxlen; n+) if ( (rc = my_read(fd, &c) = 1) *ptr+ = c; if (c = n) break; /* newline is stored, like fgets() */ else if (rc = 0) if (n = 1) return(0); /* EOF, no data read */ else break; /* EOF, some data was read */ el

24、se return(-1); /* error, errno set by read() */ *ptr = 0; /* null terminate like fgets() */ return(n);/* end readline */static ssize_tmy_read(int fd, char *ptr) static int read_cnt = 0; static char *read_ptr; static char read_bufMAXLINE; if (read_cnt = 0) again: if ( (read_cnt = read(fd, read_buf, s

25、izeof(read_buf) 0) if (errno = EINTR) goto again; return(-1); else if (read_cnt = 0) return(0); read_ptr = read_buf; read_cnt-; *ptr = *read_ptr+; return(1);/*end ssize_t*/总结:实验对于我们来说是很重要的,经过这几次实验,我已经大致了解了TCP/IP的工作原理,知道了要想实验客户机和服务器的连连通,具体的步骤是什么。在试验中我们组遇到了很大的困难,几乎每一个步骤都会遇到很多问题,不多最后还是凭借大家的力量一一克服了,感谢老师对我们的帮助。

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

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