TCPIP原理实验一

合集下载

tcpip实验报告

tcpip实验报告

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

二、实验内容利用协议分析软件(如:Wireshark)跟踪局域网报文(如条件允许也可跟踪多种局域网协议报文),实验内容如下:将安装协议分析软件的PC接入以太网中,跟踪PC之间的报文,并存入文件以备重新查。

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

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

三、实验步骤1、在PC中安装协议分析软件(如:Wireshark)。

具体安装过程详见附录:Wireshark用户指南。

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

可根据系统提示修改显示方式,详见附录:Wireshark用户指南。

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

EHERNET报文格式IEEE802.3报文格式IP报文格式4、设置过滤器属性,如目的地址,源地址,协议类型等。

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

过滤器有两种工作方式:1)捕获前过滤:协议分析软件用过滤器匹配网络上的数据报文,仅当匹配通过时才捕获报文。

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

选择统计菜单项可以显示网络中各种流量的统计信息,如:关于字节数,广播中报文数,出错数等。

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

二、实验内容本实验为UDP 客户/服务器实验。

实验内容:UDP echo 客户/服务器程序的设计与实现。

TCPIP实验指导书

TCPIP实验指导书

TCPIP实验指导书信息科学与工程学院2011目录实验一Wirechark使用 (3)实验二 HTTP协议分析 (20)实验三 FTP协议分析 (23)实验四 DNS实验 (27)实验五 TCP协议分析 (30)实验六 IP协议实验 (33)实验七 ICMPv4协议分析 (34)实验八 ARP协议分析 (35)实验一Wirechark使用一、实验目的1、学习使用Wireshark协议分析工具进行数据报的抓取、过滤。

2、对报文进行分析二、实验内容在成功运行Wireshark之后,我们就可以进入下一步,更进一步了解这个强大的工具。

下面是一张地址为192.168.1.2的计算机正在访问“”网站时的截图。

1. MENUS(菜单)程序上方的8个菜单项用于对Wireshark进行配置:- "File"(文件)- "Edit" (编辑)- "View"(查看)- "Go" (转到)- "Capture"(捕获)- "Analyze"(分析)- "Statistics" (统计)- "Help" (帮助)打开或保存捕获的信息。

查找或标记封包。

进行全局设置。

设置Wireshark的视图。

跳转到捕获的数据。

设置捕捉过滤器并开始捕捉。

设置分析选项。

查看Wireshark的统计信息。

查看本地或者在线支持。

2. SHORTCUTS(快捷方式)在菜单下面,是一些常用的快捷按钮。

您可以将鼠标指针移动到某个图标上以获得其功能说明。

3. DISPLAY FILTER(显示过滤器)显示过滤器用于查找捕捉记录中的内容。

请不要将捕捉过滤器和显示过滤器的概念相混淆。

请参考Wireshark过滤器中的详细内容。

4. PACKET LIST PANE(封包列表)封包列表中显示所有已经捕获的封包。

tcpip实验报告

tcpip实验报告

《TCP/IP》实验报告姓名:学号:学院:专业:班级:指导老师:2013年6月3日实验一熟悉Linux编程环境练习1:编写一个并发程序,利用fork函数创建五个进程,让每一个进程打印出可用来分辨不同进程的信息。

#include<stdio.h>#include<unistd.h>#include<sys/wait.h>int main(){int pid, i;i = 0;while(i < 5){i++;if((pid=fork()) == 0){printf("pid:%d\n",getpid());sleep(3);break;}waitpid(pid,(int*)0,0);printf("ppid:%d\n",getpid());}return 0;}运行结果:练习2:编写一个程序,利用execve函数改变进程执行的代码。

//execve.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>int main(int argc,char *argv[]){char *newargv[] = {NULL,"you","me",NULL};char *newenviron[]={NULL};if(argc != 2){fprintf(stderr,"Usage:%s <file-to-exec>\n",argv[0]);exit(EXIT_FAILURE);}newargv[0] = argv[1];execve(argv[1],newargv,newenviron);perror("execve");exit(EXIT_FAILURE);}//myecho.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>int main(int argc, char *argv[]){int i;for(i = 0; i < argc; i++)printf("argv[%d]:%s\n",i,argv[i]);return 0;}运行结果:实验二实现Echo服务客户端程序(UDP)代码://client.c#include<sys/socket.h>#include<netinet/in.h>#include<netdb.h>#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<sys/types.h>#include<sys/time.h>#include<errno.h>int readable_timeo(int fd, int sec){fd_set rset;struct timeval tv;FD_ZERO(&rset);FD_SET(fd,&rset);_sec = sec;_usec = 0;return (select(fd+1,&rset,NULL,NULL,&tv)); //使用select函数实现简单超时重传}int main(int argc, char **argv){int sockfd, len, res, i;struct sockaddr_in address;char *host;struct hostent *hostinfo;struct servent *servinfo;char buf[128], buf2[128];int nsec = 20;//timeout:20sstruct timeval tpstart,tpend;double timeuse;if(argc == 1)host = "localhost";elsehost = argv[1];hostinfo = gethostbyname(host);if(!hostinfo){fprintf(stderr,"no host:%s\n",host);exit(1);}servinfo = getservbyname("echo","udp");if(!servinfo){fprintf(stderr,"no echo server!\n");exit(1);}sockfd = socket(AF_INET,SOCK_DGRAM,0);address.sin_family = AF_INET;address.sin_port = servinfo->s_port;address.sin_addr = *(struct in_addr*)*hostinfo->h_addr_list;len = sizeof(address);while(fgets(buf,128,stdin) != NULL){for(i = 0; i < 2; i++) //juse one chance to resend{if(i == 1) //resend{printf("ReSend!!!\n");gettimeofday(&tpend,NULL);timeuse=1000000*(__sec)+__usec;timeuse/=1000000;printf("resend time is %lf s\n",timeuse);}gettimeofday(&tpstart,NULL);res = sendto(sockfd,buf,strlen(buf),0,(struct sockaddr*)&address,len);if(readable_timeo(sockfd,nsec) == 0){fprintf(stderr,"socket timeout\n");continue;}res = recvfrom(sockfd,buf2,128,0,(struct sockaddr*)&address,&len);buf2[res] = 0;fputs(buf2,stdout);break; //send successfully,quit!}}close(sockfd);exit(0);}实验三循环无连接服务器Echo的实现代码://server.c#include<stdio.h>#include<unistd.h>#include<netinet/in.h>#include<arpa/inet.h>#include<sys/types.h>#include<stdlib.h>#include<signal.h>#include<string.h>#include<errno.h>#include<time.h>#define MAXLINE 128int sockfd, flag = 1;void close_action(int sig){printf("close the sockfd\n");close(sockfd);signal(SIGINT,SIG_DFL);flag = 0;}int main(){struct sockaddr_in sin,sin_cli;int type, res, opt;char mesg[MAXLINE], buf[MAXLINE];socklen_t len;struct sigaction act;struct tm *ptm;int y,m,d,h,n,s;long ts;//set the signal actionact.sa_handler = close_action;sigemptyset(&act.sa_mask);act.sa_flags = 0;memset(&sin,0,sizeof(sin));sin.sin_family = AF_INET;sin.sin_addr.s_addr = INADDR_ANY;sin.sin_port = htons(45454);sockfd = socket(AF_INET,SOCK_DGRAM,0);if(sockfd < 0){fprintf(stderr,"can't create socket %s \n",strerror(errno));exit(1);}if(bind(sockfd,(struct sockaddr*)&sin,sizeof(sin)) < 0){fprintf(stderr,"can't bind to %s port:%s\n",service,strerror(errno));exit(1);}len = sizeof(sin_cli);sigaction(SIGINT,&act,0); //Ctrl+C close the sockfdwhile(flag){printf("\n");res = recvfrom(sockfd,mesg,MAXLINE,0,(struct sockaddr*)&sin_cli,&len);mesg[res] = 0;ts = time(NULL);sprintf(buf,"%.24s\r\n",ctime(&ts));printf("%s\t",buf);printf("%s\t",inet_ntoa(sin_cli.sin_addr));sendto(sockfd,mesg,n,0,(struct sockaddr*)&sin_cli,len);}exit(0);}实验四循环的、面向连接服务器的实现//server.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<time.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<string.h>#define MAXSIZE 30int main(){struct sockaddr_in servaddr,cliaddr;int clilen;int connfd, listenfd;char buf[MAXSIZE];time_t now;int seconds;struct tm *ptm;int y,m,d,h,n,s;long ts;listenfd = socket(AF_INET,SOCK_STREAM,0);bzero(&servaddr,sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(9734);servaddr.sin_addr.s_addr = htonl(INADDR_ANY);bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr));listen(listenfd,5);for(;;){clilen = sizeof(cliaddr);connfd = accept(listenfd,(struct sockaddr*)&cliaddr,&clilen);ts = time(NULL);sprintf(buf,"%.24s\r\n",ctime(&ts));write(connfd,buf,MAXSIZE);}exit(1);}//client.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<time.h>#include<string.h>#define MAXSIZE 30void str_daytime(int fd){char buf[MAXSIZE];int n;if((n = read(fd,buf,MAXSIZE)) <= 0){fprintf(stderr,"error");}buf[n] = 0;fputs(buf,stdout);}int main(int argc,char **argv){int sockfd;struct sockaddr_in servaddr;sockfd = socket(AF_INET,SOCK_STREAM,0);servaddr.sin_family = AF_INET;servaddr.sin_port = htons(9734);//Inet_pton(AF_INET,argv[1],&servaddr.sin_addr);servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));str_daytime(sockfd);exit(1);}实验五循环的、面向连接服务器的实现//server.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<time.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<string.h>#define MAXSIZE 30int main(){struct sockaddr_in servaddr,cliaddr;int clilen,connfd, listenfd, childpidchar buf[MAXSIZE];time_t now;int seconds;struct tm *ptm;int y,m,d,h,n,s;long ts;listenfd = socket(AF_INET,SOCK_STREAM,0);bzero(&servaddr,sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(9734);servaddr.sin_addr.s_addr = htonl(INADDR_ANY);bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr));listen(listenfd,5);clilen = sizeof(cliaddr);for(;;){connfd = accept(listenfd,(struct sockaddr*)&cliaddr,&clilen);if((childpid = fork()) == 0){close(listenfd);ts = time(NULL);sprintf(buf,"%.24s\r\n",ctime(&ts));write(connfd,buf,MAXSIZE);}close(connfd);}exit(1);}//test.c#include<stdio.h>#include<unistd.h>#include<stdlib.h>int main(){int i;for(i = 0; i < 10; i++){system("./tcpcli");printf("\n");}exit(0);}实验六单进程并发服务代码:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<arpa/inet.h>#include<netinet/in.h>#include<sys/socket.h>#include<sys/select.h>#include<strings.h>#include<string.h>#include<time.h>#define MAXLINE 128int main(){struct sockaddr_in servaddr,cliaddr;int clilen;int connfd, listenfd, sockfd;char buf[MAXLINE];int i, maxi, maxfd, seconds, nresult, res, nread,client[FD_SETSIZE];pid_t childpid;fd_set readfds,testfds;struct tm *ptm;int y,m,d,h,n,s;time_t ts;listenfd = socket(AF_INET,SOCK_STREAM,0);bzero(&servaddr,sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(9734);servaddr.sin_addr.s_addr = htonl(INADDR_ANY);bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr));listen(listenfd,10);maxfd = listenfd;maxi = -1;for(i = 0; i < FD_SETSIZE; i++)client[i] = -1;FD_ZERO(&readfds);FD_SET(listenfd,&readfds);for(;;){testfds = readfds;nresult = select(maxfd+1,&testfds,NULL,NULL,NULL);if(FD_ISSET(listenfd,&testfds)){clilen = sizeof(cliaddr);connfd = accept(listenfd,(struct sockaddr*)&cliaddr,&clilen);for(i = 0; i < FD_SETSIZE; i++)if(client[i] < 0){client[i] = connfd;break;}if(i == FD_SETSIZE)fprintf(stderr,"too many clients");FD_SET(connfd,&readfds);if(connfd > maxfd)maxfd = connfd;if(i > maxi)maxi = i;if(--nresult <= 0)continue;}for(i = 0; i <= maxi; i++){if((sockfd = client[i]) < 0)continue;if(FD_ISSET(sockfd,&testfds)){if((res = read(sockfd,buf,MAXLINE))== 0){close(sockfd);printf("connection closed by client\n");FD_CLR(sockfd,&readfds);client[i] = -1;}else if(res > 0){printf("supply service to client!\n");ts = time(NULL);sprintf(buf,"%.24s",ctime(&ts));write(sockfd,buf,strlen(buf));}elseprintf("error!!!!\n");if(--nresult <= 0){printf("no more readble descriptors\n");break;}}}}exit(1);}实验七并发的客户端//tcpcli.c#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include "unp.h"int main(int argc,char **argv){int i, ccount, hcount = 0, fd, maxfd = 0, n, one, sockfd;fd_set afds;char ser_ip[FD_SETSIZE][20], buf[MAXLINE];struct sockaddr_in servaddr;struct servent *servinfo;servinfo = getservbyname("daytime","tcp");servaddr.sin_family = AF_INET;servaddr.sin_port = servinfo->s_port;for(i = 1; i < argc; ++i){sockfd = socket(AF_INET,SOCK_STREAM,0);if(strcmp(argv[i],"-c") == 0){if(++i < argc && (ccount = atoi(argv[i])))continue;err_quit("tcpcli [-c] [number] [ip] ");}Inet_pton(AF_INET,argv[i],&servaddr.sin_addr);fd = connect(sockfd,(SA*)&servaddr,sizeof(servaddr));if(ioctl(sockfd,FIONBIO,(char*)&one))err_quit("can't mark socket nonblocking:%s\n",strerror(errno));if(sockfd > maxfd)maxfd = sockfd;strcpy(ser_ip[sockfd],argv[i]);++hcount;FD_SET(sockfd,&afds);}n = select(maxfd+1,&afds,NULL,NULL,NULL);for(i = 0; i <= maxfd; i++){if(FD_ISSET(i,&afds)){if((n = read(i,buf,MAXLINE)) == 0){close(sockfd);FD_CLR(i,&afds);}elseprintf("%s\t%s\n",buf,ser_ip[i]);}}exit(0);}实验八多线程服务代码:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<time.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<string.h>#include<semaphore.h>#include<pthread.h>#define MAXSIZE 30struct share_thread{pthread_mutex_t work_mutex;int count;}shared;void *thread_func(void *arg){int connfd;char buf[MAXSIZE];struct tm *ptm;int y,m,d,h,n,s;long ts;connfd = *(int*)arg;ts = time(NULL);sprintf(buf,"%.24s\r\n",ctime(&ts));write(connfd,buf,MAXSIZE);pthread_mutex_lock(&shared.work_mutex);shared.count++;pthread_mutex_unlock(&shared.work_mutex);printf("Number of service of daytime:%d\n",shared.count);close(connfd);pthread_exit(0);}int main(){struct sockaddr_in servaddr, cliaddr;int listenfd, connfd;pthread_t serv_thread;pthread_attr_t thread_attr;int res;int clilen;shared.count = 0;res = pthread_mutex_init(&shared.work_mutex,NULL);if(res != 0){fprintf(stderr,"mutex initilization failed");exit(1);}res = pthread_attr_init(&thread_attr);if(res != 0){fprintf(stderr,"Attribute creation failed");exit(1);}res = pthread_attr_setdetachstate(&thread_attr,PTHREAD_CREATE_DETACHED);if(res != 0){fprintf(stderr,"Setting detached attribute failed");exit(1);}listenfd = socket(AF_INET,SOCK_STREAM,0);bzero(&servaddr,sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(9734);servaddr.sin_addr.s_addr = htonl(INADDR_ANY);bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr));listen(listenfd,5);for(;;){clilen = sizeof(cliaddr);connfd = accept(listenfd,(struct sockaddr*)&cliaddr,&clilen);//wrongres = pthread_create(&serv_thread,&thread_attr,thread_func,(void*)&connfd);if(res != 0){fprintf(stderr,"create pthread failed\n");exit(1);}}exit(1);}实验九预分配进程服务器代码://server.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<time.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<string.h>#include<signal.h>#include<errno.h>#include<sys/wait.h>#include<pthread.h>#include<semaphore.h>#define MAXSIZE 30#define MAXCHILD 100static pthread_mutex_t work_mutex;static pid_t childpid[MAXCHILD];void child_main(int i, int listenfd){char buf[MAXSIZE];struct tm *ptm;int y,m,d,h,n,s;long ts;int connfd;int clilen;struct sockaddr_in cliaddr;clilen = sizeof(cliaddr);pthread_mutex_lock(&work_mutex); //lockconnfd = accept(listenfd,(struct sockaddr*)&cliaddr,&clilen);pthread_mutex_unlock(&work_mutex); //unlockprintf("Now, it is the %d child to supply service for the client\n",i);ts = time(NULL);sprintf(buf,"%.24s\r\n",ctime(&ts));write(connfd,buf,MAXSIZE);close(connfd);}void sig_int(int signo){printf("\ndestroy the mutex\n");int i;for(i = 0; i < MAXCHILD; i++)kill(childpid[i],SIGTERM);while(wait(NULL) > 0);if(errno != ECHILD)fprintf(stderr,"wait error");pthread_mutex_destroy(&work_mutex);exit(0);}int main(){struct sockaddr_in servaddr, cliaddr;int listenfd, connfd;int res, i;int clilen;res = pthread_mutex_init(&work_mutex,NULL);if(res != 0){fprintf(stderr,"mutex initialization failed\n");exit(1);}listenfd = socket(AF_INET,SOCK_STREAM,0);bzero(&servaddr,sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(9734);servaddr.sin_addr.s_addr = htonl(INADDR_ANY);bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr));listen(listenfd,5);for(i = 0; i < MAXCHILD; i++){if((childpid[i] = fork()) < 0){fprintf(stderr,"fork failed");exit(1);}else if(childpid[i] == 0)child_main(i, listenfd);}signal(SIGINT,sig_int);for(;;)pause();}。

tcpip实验

tcpip实验

1.应用层:telnet,FTP,HTTP,DNS,SMTP,POP32.传输层:TCP,UDPTCP:面向连接的可靠的传输协议,通信前建立三次握手,握手成功后才能通信,对数据准确性要求较高的场合使用,如从网上载的安装文件,不能缺少任何信息UDP:是无连接的,不可靠的传输协议,不需要建立连接,也没有重传和确认的机制,在实时性要求较高,但对数据准确度要求不是很高的场合使用,如视频会议,在线观看电影,当中丢失个别数据包并不影响整体的效果。

3.网络层:IP因为OSI七层结构较为复杂,所以使用较多的是TCP/IP模型,现在TCP/IP已经成为Internet上通用的工业标准TCP/IP模型包括4个层次:应用层,传输层,网络层,网络接口端口:1. 为了标识通信实体中进行通信的进程(应用程序),TCP/IP协议提出了协议端口的概念2. 端口是一种抽象的软件结构(包括一些数据结构和I/O 缓冲区)。

应用程序通过系统调用和某端口建立连接(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都通过该端口输出3. 端口用一个整数型标识符来表示,即端口号。

端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的的两个软件模块,因此各自的端口号也相互独立4. 端口使用一个16位的数字来表示,它的范围是0~65535,1024以下的端口号保留给预定义的服务,例如,http 使用80端口套接字(Socket)1. Socket的出现,使得程序员可以很方便的访问TCP/IP,从而开发各种网络应用的程序2. 套接字存在于通信区域中,通信区域也叫地址族,他是一个抽象的概念,主要用于通过套接字通信的进程的共有特性综合在一起。

套接字通常只与同一个区域的套接字交换数据。

套接字的类型1. 流式套接字(SOCK_STREAM)提供面向连接的,可靠的数据传输服务,数据无差错,无重复的发送,且按发送的顺序接收,基于TCP协议2. 数据保式套接字(SOCK_DGRAM)提供无连接的服务,数据包以独立包形式发送,不提供无错误的保证,数据可能丢失或重复,且接收顺序混乱,基于UDP协议基于TCP(面向连接)的Socket编程服务器端顺序:1. 加载套接字库2. 创建套接字(socket)3. 将套接字绑定到一个本地地址和端口上(bind)4. 将套接字设为监听模式,准备接收客户请求(listen)5. 等待客户请求的到来;当请求带来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)6. 用返回的套接字和客户端进行通信(send/recv)7. 返回,等待另一个客户请求8. 关闭套接字(closesocket)客户端程序:1. 加载套接字库2. 创建套接字(socket)3. 向服务器发送连接请求(connect)4. 和服务器端进行通信(send/receive)5. 关闭套接字(closesocket)基于UDP(面向无连接)的socket编程服务器端(接收端)程序:1. 加载套接字库2. 创建套接字(socket)3. 将套接字绑定到一个本地地址和端口上(bind)4. 等待接收数据(recvfrom)5. 关闭套接字(closesocket) 客户端(发送端)程序1. 加载套接字库2. 创建套接字(socket)3. 向服务器发送数据(sendto)4. 关闭套接字(closesocket)创建基于TCP协议的CS程序的Server端所涉及的相关函数说明(按使用的先后顺序排列):1. int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData):作用是加载套接字库和进行套接字库的版本协商a. 参数wVersionRequested:用于指定准备加载的Winsock库的版本,高位字节指定所需要的Winsock库的副版本,低位字节则是主版本,可用MAKEWORD(X,Y)(其中,x为高位字节,y为低位字节)方便获得wVersionRequested的正确值。

TCPIP协议分析实验

TCPIP协议分析实验

实际例子:TCP/IP协议的封装 实际例子:TCP/IP协议的封装
应用层 传输层 网际层 IP头 头 TCP头 TCP头
应用层数据
应用层数据
TCP头 头
应用层数据
数链层
帧头
IP头 头
TCP头 头
应用层数据
帧尾
实际例子:TCP/IP协议的封装 实际例子:TCP/IP协议的封装
WWW
应用地址 (80)
TCP/IP的主要协议 TCP/IP的主要协议
FTP TCP IP ARP/RARP telnet HTTP SMTP SNMP UDP DNS 其 他
ICMP
Ethernet
Token Ring
FDDI
ATM
其他
数据封装
一台计算机要发送数据到另一台计算机, 一台计算机要发送数据到另一台计算机,数据 首先必须打包,打包的过程称为封装 封装。 首先必须打包,打包的过程称为封装。 封装就是在数据前面加上特定的协议头部。 封装就是在数据前面加上特定的协议头部。 数 据
主要内容?tcpip体系结构?局域网协议栈??网间网层协议?传输层协议第一节tcpip体系结构应用层tcpipmodelapplicationpresentationosirefmodelftptelnethttptcpipprotocols传输层网间网层网络接口层sessiontransportnetworkdatalinkphysicaltcpipethernetudpx25ppptcpip的主要协议ftptelnethttpsmtpsnmpdns其他其他tcpudpiparprarpicmpethernettokenringfddiatm其他数据封装?一台计算机要发送数据到另一台计算机数据首先必须打包打包的过程称为封装一台计算机要发送数据到另一台计算机数据首先必须打包打包的过程称为封装

TCPIP原理实验一

TCPIP原理实验一

实验一链路层帧格式分析实验1、实验目的1)熟悉Packet Tracer和Wireshark的用法。

2)掌握EthernetV2 标准规定的MAC 帧结构,初步了解TCP/IP 的主要协议和协议的层次结构。

3)了解IEEE802.1Q 标准规定的帧结构。

2、实验设备和连接实验设备和连接图如图1 所示,一台交换机连接了2 台PC 机,分别命名为PC1、PC2,交换机命名为Switch。

图1 Ethernet 链路层帧结构实验连接图3、实验分组每两人一小组,每小组各自独立完成实验。

4、实验步骤步骤1:按照如图1 所示连接好设备,配置PC1 和PC2 的IP 地址;步骤2:在:PC1 和PC2 上运行Wireshark 截获报文,为了只截获和实验内容有关的报文,将Wireshark 的Captrue Filter 设置为“No Broadcast and no Multicast ”;步骤3:在: PC1 的“运行”对话框中输入命令“Ping 172.16.1.102”,单击“确定”按钮;步骤4:停止截获报文:将结果保存为MAC-学号,并对截获的报文进行分析:1)列出截获的报文中的协议类型,观察这些协议之间的关系。

___________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________2)在网络课程学习中,EthernetV2 规定以太网的MAC 层的报文格式分为7 字节的前导符、1 字节的帧首定界、6 字节的目的 MAC 地址、6 字节的源 MAC 地址、2 字节的类型、46~1500 字节的数据字段和4 字节的帧尾校验字段。

TCP-IP攻击实验-实验报告.docx

TCP-IP攻击实验-实验报告.docx

中南大学TCP/IP 攻击实验实验报告学生姓名学院信息科学与工程学院专业班级完成时间2015年 11 月 29 日目录1. 实验描述 (3)2. 实验步骤 (3)环境搭建 (3)实验 1:ARP缓存中毒 (3)实验 2:ICMP重定向攻击 . (4)实验 3:SYN洪流攻击 (5)实验 4:在 telnet和ssh连接上的TCP RST攻击 (6)实验5:对视频流应用程序的TCP RST 攻击 (7)实验 6:ICMP 盲目连接重置和源端关闭攻击 (7)实验 7:TCP报文劫持 (8)3. 总结 (8)TCP/IP 攻击实验1.实验描述【实验背景】由于 TCP/IP 协议是 Internet的基础协议,所以对TCP/IP 协议的完善和改进是非常必要的。

TCP/IP 协议从开始设计时候并没有考虑到现在网络上如此多的威胁, 由此导致了许多形形色色的攻击方法,一般如果是针对协议原理的攻击( 尤其 DDOS),我们将无能为力。

TCP/IP 攻击的常用原理有:(1)源地址欺骗(Source Address Spoofing)Spoofing);、 IP欺骗 (IP Spoofing)和 DNS欺骗 (DNS(2)路由选择信息协议攻击 (RIP Attacks) ;(3) 源路由选择欺骗(Source Routing Spoofing);(4) TCP 序列号欺骗和攻击(TCP Sequence Number Spoofing and Attack)。

【实验目的】基于 TCP/IP 协议进行攻击实验, 了解 TCP/IP 协议的具体机制。

2.实验步骤环境搭建这里我使用三台虚拟机做实验,其中一个用于攻击;另一个用于被攻击;第三个作为观察者使用;把三台主机放在同一个LAN中,其配置信息参照如下所示(实际在实验过程中有所改动):这里我使用的是Wireshark工具箱的SEED实验室已经搭建好,并且已经安装好相关的Ubuntu 系统,与此同时三台虚拟机都需要打开netwoxFTP 和 Telnet工具箱和服务:使用如下命令来完成上述任务Start the ftp server#servicevsftpd startStart the telnet server#serviceopenbsd-inetd start实验 1:ARP缓存中毒【实验背景】ARP缓存是 ARP协议的重要的一部分。

《计算机网络》实验一TCP和IP配置与测试

《计算机网络》实验一TCP和IP配置与测试
成绩:
教师评语
指导教师签名: 批阅日期:
一、实验目的及要求
实验目的:掌握TCP/IP的配置和使用
实验要求:掌握TCP/IP的配置,熟悉Ping、Ipconfig等命令的使用
二、实验内容
掌握TCP/IP的配置,熟悉Ping、Ipconfig等命令的使用
三、实验软硬件环境
能接入Internet、安装Windows 2003 Server操作系统的PC机
3.Ping,Ipconfig,Netstat,Route,Tracert等命令使用
选择“开始”→“程序”→“附件”→“命令提示符”
在“命令提示符”下,使用各个命令获取和PC机相关的网络信息以及PC机所处网络的信息
五、实验结果分析
Ping,验证与远程计算机的连接。
ping IP –t连续对IP地址执行Ping命令,直到被用户以Ctrl+C中断。
ipconfig /release和ipconfig /renew--这是两个附加选项,只能在向DHCP服务器租用其IP地址的计算机上起作用。
Route,控制网络路由表。
route print本命令用于显示路由表中的当前项目
Tracert,是路由跟踪实用程序,用于确定IP数据报访问目标所采取的路径。Tracert命令用IP生存时间(TTL)字段和ICMP错误消息来确定从一个主机到网络上其他主机的路由。
四、实验过程
1.设置IP地址
选择“开始”→“设置”→“网络连接”→“本地连接”属性→“Internet协议属性”→“使用下面的IP地址”→填写PC机IP地址(如:172.19.10.15)
2.DNS服务器地址的设置
选择“开始”→“设置”→“网络连接”→“本地连接”属性→“Internet协议属性”→“使用下面的DNS服务器地址”-j host-list指定Tracert实用程序数据包所采用路径中的路由器接口列表。

电子科技大学_TCPIP实验一_IP分组交付和ARP协议_实验报告

电子科技大学_TCPIP实验一_IP分组交付和ARP协议_实验报告

电子科技大学实验报告学生姓名:陈虹宇学号:2012019110004指导教师:杨宁日期:2014 年10 月31 日实验项目名称:IP分组交付和ARP协议报告评分:教师签字:一、实验原理子网中使用一个32比特的掩码来标识一个IP地址的网络/子网部分和主机部分。

将IP 地址和掩码进行“位与”运算后可以得到该IP地址所在IP子网的子网地址,结合掩码中0比特个数可以确定该IP子网的IP地址空间范围。

根据IP地址所在IP子网的子网地址及其掩码,可以判断这些IP地址是否属于同一个IP子网。

IP地址空间中定义了一些特殊地址:网络/子网地址:标识一个IP网络或子网。

直接广播地址:表示该分组应由特定网络上的所有主机接收和处理。

受限广播地址:表示该分组应由源所在网络或子网上的所有主机接收和处理。

本网络上本主机地址:表示主机自己。

环回地址:用来测试机器的协议软件。

IP分组被交付到最终目的地有两种不同的交付方式:直接交付和间接交付。

交付时首先通过路由选择技术确定交付方式:如果IP分组的目的与交付者在同一个IP网络上,就直接交付该分组至目的站点;如果IP分组的目的与交付者不在同一个IP网络上,就间接交付该分组至下一个路由器(即下一跳站点)。

在以太网上,IP分组是封装在以太帧中发送的,因此发送时除了要有接收站的IP地址(IP 分组中的目的IP地址)外,还需要接收站的MAC地址(以太网帧中的目的MAC地址)。

ARP 协议(RFC 826)实现了IP地址(逻辑地址)到MAC地址(物理地址)的动态映射,并将所获得的映射存放在ARP高速缓存表中。

不同的交付方法将导致不同的ARP解析操作,获取不同的目的物理地址。

直接交付时,交付者直接将IP分组交付给该分组的目的站点,因此交付者使用ARP协议找出IP分组中目的IP地址对应的物理地址。

间接交付时,交付者需要将IP分组交付给下一跳站点,而不是该IP分组的目的端,因此交付者使用ARP协议找出下一跳站点IP地址对应的物理地址。

TCP IP实验报告

TCP IP实验报告

《TCP/IP协议》实验报告学院:机械与电子信息学院专业:计算机网络技术学号:姓名:指导教师:2018年 6 月实验一Packet Tracer 6.0的使用一、实验目的通过在Packet Tracer 6.0 添加网络设备,熟悉不同的物理设备及其连接方式,掌握使用Packet Tracer 6.0构建网络的方法,掌握捕获、查看通信信息的方法。

二、实验步骤步骤1、打开Packet Tracer 6.0,添加以下网络节点:1841路由器3台,2950-24 交换机1台,PC三台,服务器1台。

步骤2、选择合适的连接线把设备连接起来。

以太网连线时,交换机与计算机或路由器等设备之间连接用直通线,交叉线用于同种设备(路由器与路由器,交换机与交换机)之间相连或计算机与路由器之间相连。

用直通线吧PC0、PC1、Router0与Switch0的任意端口连接,Router0、Router1和Router2之间需要用交叉线连接,Server0与Router2也要用交叉线连接。

如果连线类型正确,则PC与交换机之间连线上的绿灯马上会点亮。

特别的,为配置路由器,可以用控制台连线把PC2和Router1的Console 端口连接起来,也可以连接到Router1的Auxiliary端口上,但使用方法与连接到控制口时不同。

步骤3、配置设备。

PC的配置可以直接在Packet Tracer 6.0的逻辑拓补图上单击PC图标,打开设备配置窗口,单击Desktop选项卡中的IP Configuration,完成默认网关和ID地址的设置。

依次设置3台PC和服务器0的IP地址,PC0和PC1的默认网关设为192.168.1.1,服务器0的默认网关设为192.168.4.1。

单击需要配置的路由器图标,打开设备配置窗口,单击CLI选项卡,按Enter键出现命令行提示符,然后使用如下命令配置静态路由。

Router>enable #进入特权模式Router#configure terminal #全局配置Router(config)#int f0/0 #配置接口f0/0 Router(config-if)#no shutdown #开启接口Router(config-if)#ip address 192.168.1.1 255.255.255.0随着借口no shutdown 命令的输入,接口连线上的绿灯随时变亮。

TcpIP攻击实验

TcpIP攻击实验

实验报告实验目的本实验目的是通过实践,了解TCP/IP协议中的漏洞,并且利用这些漏洞进行攻击,这些漏洞代表了协议的设计和运行的一种特殊类型;同时也从这个实验得到教训,为什么安全应该从一开始就设计,而不是在事后添加。

实验原理1.ARP欺骗ARP缓存是ARP协议的重要组成部分。

ARP协议运行的目标就是建立MAC地址和IP地址的映射,然后把这一映射关系保存在ARP缓存中,使得不必重复运行ARP协议。

但是ARP缓存不是一成不变的,我们可以伪造ARP应答帧纂改ARP映射表,这就是ARP 欺骗。

这样的后果会使主机发送信息到错误的MAC地址,导致数据被窃听;要么由于MAC 地址不存在,导致数据发送不成功。

2.ICMP重定向攻击ICMP重定向信息是路由器向主机提供实时的路由信息,当一个主机收到ICMP重定向信息时,它就会根据这个信息来更新自己的路由表。

因此,我们可以发送ICMP重定向信息给被攻击的主机,让该主机按照黑客的要求来修改路由表。

3.SYN洪流攻击SYN攻击是一种DoS(Denial of Service)攻击,在这种攻击中黑客向被攻击者的TCP端口发送很多SYN请求,但是黑客并不是想完成三次握手协议,而是使用伪造的IP地址或者只进行三次握手协议中的第一次握手。

因为SYN数据包用来打开一个TCP链接,所以受害者的机器会向伪造的地址发送一个SYN/ACK数据包作为回应,并等待预期的ACK响应。

每个处于等待状态,半开的链接队列都讲进入空间有限的待处理队列。

由于伪造的源地址实际上并不存在,所以将那些等待队列中的记录删除并完成建立TCP连接所需的ACK响应用于不会到来,相反每个半开的连接一定会超时,这将花费一段比较长的时间。

只要攻击者使用伪造的SYN数据包继续泛洪受害者的系统,受害者的待处理队列将一直处于满员,这使得真正的SYN数据包几乎不可能到达系统并打开有效的TCP连接。

4.对Telnet和SSH的TCP RST攻击TCP RST攻击可以终止两个被攻击主机之间的TCP连接。

TCPIP实验

TCPIP实验

实验一:静态路由协议配置实验目的:1.掌握静态路由协议的相关原理和应用; 2.熟悉对网络设备的配置和使用3.利用抓包工具抓取数据包,分析IP 字段的具体含义 实验原理:在同步串行连接中均采用PPP 封装,在保证单个链路正常通讯的前提下,在三台设备中配置静态路由,以实现通讯。

实验设备:3台路由器,2台PC 机 实验组网图:R3R2R1PC1网关:192.168.1.1网关:172.16.1.1实验步骤:1. 如同所示,所有的链路地址如下:(包括网络地址和子网地址): 192.168.1.0/24 10.0.0.0/30 20.0.0.0/30 172.16.1.0/242. 为每个路由器标识非直连的链路地址,以R1为例—— R1: 20.0.0.0/30 172.16.1.0/24仿照R1写出R2、R3的非直连的链路地址——R2:192.168.1.0/24172.16.1.0/24R3:192.168.1.0/2410.0.0.0/303. 为每个路由器写出非直连的地址的路由语句,以R1为例——R1:ip route-static 20.0.0.0 30 10.0.0.2ip route-static 172.16.1.0 24 10.0.0.2仿造R1写出R2、R3的非直连的地址的路由语句——R2:ip route-static 192.168.1.0 24 10.0.0.1ip route-static 172.16.1.0 24 20.0.0.2R3:ip route-static 192.168.1.0 24 20.0.0.1ip route-static 10.0.0.0 30 20.0.0.14. 选择设备,按照实验组网图进行物理连接。

注意各接口的正确连接。

5.确保物理连接正确后,通过管理控制系统登陆要配置的路由器,在每个路由器上配置静态路由,具体配置如下:R1:<H3C>system-view[H3C]sysname R1[R1]interface s1/0[R1-Serial1/0]ip addr 10.0.0.1 30[R1-Serial1/0]int e8/0[R1-Ethernet8/0]ip addr 192.168.1.1 24[R1-Ethernet8/0]quit[R1]ip route-static 20.0.0.0 30 10.0.0.2[R1]ip route-static 172.16.1.0 24 10.0.0.2R2:<H3C>system-view[H3C]sysname R2[R2]interface s1/0[R2-Serial1/0]ip addr 10.0.0.2 30[R2-Serial1/0]interface s2/0[R2-Serial2/0]ip addr 20.0.0.1 30[R2-Serial2/0]quit[R2]ip route-static 192.168.1.0 24 10.0.0.1[R2]ip route-static 172.16.1.0 24 20.0.0.2R3:<H3C>system-view[H3C]sysname R3[R3]interface s2/0[R3-Serial2/0]ip addr 20.0.0.2 30[R3-Serial2/0]int e8/0[R3-Ethernet8/0]ip addr 172.16.1.1 24[R3-Ethernet8/0]quit[R3]ip route-static 10.0.0.0 30 20.0.0.1[R3]ip route-static 192.168.1.0 24 20.0.0.16.分析验证:(1)按图示为pc1和pc2配置ip地址和网关,然后pc1 ping 路由器各端口地址和pc2是否为通? ping之前打开pc上的抓包工具,ping后从抓取到的数据中选取一条ICMP request 包,分析其中的IP层字段。

《TCPIP协议分析》课程实验指导书

《TCPIP协议分析》课程实验指导书

《TCP/IP协议分析》实验指导书目录《TCP/IP原理及网络编程技术》实验指导书 (1)实验一ARP协议分析 (2)一、实验目的 (2)二、实验学时 (2)三、实验类型 (2)四、实验步骤 (2)实验二IP协议分析 (4)一、实验目的 (4)二、实验学时 (4)三、实验类型 (4)四、实验步骤 (4)实验三TCP协议验证 (7)一、实验目的 (7)二、实验学时 (7)三、实验类型 (7)四、实验步骤 (7)实验四HTTP协议验证 (11)一、实验目的 (11)二、实验学时 (11)三、实验类型 (11)四、实验步骤 (11)实验五TCP网络编程 (14)一、实验目的 (14)二、实验学时 (14)三、实验类型 (14)四、实验要求 (14)实验六HTTP网络编程 (15)一、实验目的 (15)二、实验学时 (15)三、实验类型 (15)四、实验要求 (15)实验一ARP协议分析一、实验目的1. 熟悉ARP的工作过程;2. 熟悉ARP的数据包结构。

二、实验学时2学时三、实验类型验证型实验四、实验步骤实验分组进行,每组6人,采用网络结构二。

其中主机B、主机E运行协议仿真编辑器,主机A、主机C、主机D、主机F 运行协议分析器;主机B启用路由服务做路由器使用。

说明:主机A、C、D的默认网关是172.16.1.1;主机E、F的默认网关是172.16.0.1。

主机B启动静态路由服务(方法:在命令行方式下,输入“staticroute_config”)。

按照拓扑结构图连接网络,使用拓扑验证检查连接的正确性。

练习一:领略真实的ARP(同一子网)1.主机A、B、C、D、E、F在命令行下运行“arp -a”命令,察看ARP高速缓存表。

【问题】●ARP高速缓存表由哪几项组成?2.主机A、B、C、D启动协议分析器,打开捕获窗口进行数据捕获并设置过滤条件(提取ARP、ICMP)。

3.主机A、B、C、D在命令行下运行“arp -d”命令,清空ARP高速缓存。

TCPIP协议分析与编程实验报告

TCPIP协议分析与编程实验报告

至诚学院实验报告课程名称:TCP/IP协议编程实践姓名:XXX学号:211xxxxxx系别:计算机工程系专业:软件工程年级:2012级年月日实验一系统时间同步程序【设计目的】设计简单的客户/服务器程序实现客户系统时间和服务器系统时间同步【设计要求】TCP :客户:(1)客户创建流套接字,向服务器发起TCP连接。

(2)连接创建成功后,接收服务器返回的时间,更新客户系统时间。

(3)断开与服务器的连接。

服务器:(1)服务器创建监听套接字,监听客户TCP连接请求。

(2)当收到一个客户TCP连接请求,创建连接套接字同意与其创建连接。

(3)获取系统时间,通过连接套接字返回给客户。

UDP :客户:(1)客户创建数据报套接字,通过该套接字向服务器发出”time”命令获取服务器系统时间。

(2)接收服务器返回的时间,更新客户系统时间。

(3)断开与服务器的连接。

服务器:(1)服务器创建数据报套接字,等待接收客户数据。

(2)接收客户发来的“time”命令,获取系统时间,通过套接字返回给客户。

【开发环境】1、操作系统: Windows 7 操作系统2、Winpcap开放代码函数库3、语言:C++4、整个程序的核心就是利用Windows Socket 进行网络设计实现,使用C/S结构【背景知识】时间协议(TIME protocol)是一个在RFC 868内定义的网络协议。

它用作提供机器可读的日期时间资讯。

时间协议可以在TCP或UDP上使用。

在TCP上,主机会连接支援时间协议的服务器的TCP埠 37。

服务器会传送32位二进制数字然后断开连接,数字表示由格林威治时间1900年1月1日午夜0时0分0秒至当时的总秒数。

主机在接收到时间后断开连接。

在UDP上,客户端会每送一个(通常为空的)数据包到UDP埠 37。

服务器会把包含时间的数据包传回。

在过程中没有进行连线。

TCP 协议为终端设备提供了面向连接的、可靠的网络服务,UDP 协议为终端设备提供了无连接的、不可靠的数据报服务。

TCP实验报告

TCP实验报告

TCP实验报告“TCP/IP技术与应⽤”实验报告实验⼀HTTP报⽂分析⼀、实验⽬的◆熟悉HTTP的报⽂格式◆熟练Ethereal的使⽤⽅法⼆、实验环境◆Windows操作系统◆Ethereal协议分析仪三、试验要求1. Basic HTTP GET/response interactionOpen and examine the Ethereal captured packet file http-ethereal-trace-1, and then a nswer the following questions.1)Is your browser running HTTP version 1.0 or 1.1? What version of HTTP is the server running? HTTP/1.1,HTTP/1.12)What languages (if any) does your browser indicate that it can accept to the server?Answer:3)What is the IP address of your computer? Of the /doc/db718f6a25c52cc58bd6be0a.html server? Answer:192.168.1.102 63.240.76.194)What is the status code returned from the server to your browser?Answer:200 HTTP/1.1 200 OK(text/html)404 HTTP/1.1 404 Not Found(text/html)5)When was the HTML file that you are retrieving last modified at the server?Answer:6)How many bytes of content are being returned to your browser?Answer:7)By inspecting the raw data in the packet content window, do you see any headers within the datathat are not displayed in the packet-listing window? If so, name one.Answer:Yes2. The HTTP CONDITIONAL GET/response interactionOpen and examine the Ethereal captured packet file http-ethereal-trace-2, and then a nswer the following questions. 8)Inspect the contents of the first HTTP GET request from your browser to the server. Do you see an“IF-MODIFIED-SINCE” line in the HTTP GET?Answer:No9)Inspect the contents of the server response. Did the server explicitly return the contents of the file?How can you tell?Answer:Yes,10)10. Now inspect the contents of the second HTTP GET request from your browser to the server.Do you see an “IF-MODIFIED-SINCE:” line in the HTTP GET? If so, what information follows the “IF-MODIFIED-SINCE:”header?Answer:Yes. Date after Tue,23 Sep 2003 05:35:00 GMT11)What is the HTTP status code and phrase returned from the server in response to this second HTTPGET? Did the server explicitly return the contents of the file? Explain.Answer:NO,因为第⼀次访问后已经返回,第⼆次申请时未变3. Retrieving Long DocumentsOpen and examine the Ethereal captured packet file http-ethereal-trace-3, and then a nswer the following questions. 12)How many HTTP GET request messages were sent by your browser?Answer:113)How many data-containing TCP segments were needed to carry the single HTTP response?Answer:414)What is the status code and phrase associated with the response to the HTTP GET request?Answer:15)Are there any HTTP status lines in the transmitted data associated with a TCP induced“Continuation”?Answer:NO4. HTML Documents with Embedded ObjectsOpen and examine the Ethereal captured packet file http-ethereal-trace-4, and then a nswer the following questions.16)How many HTTP GET request messages were sent by your browser? To which Internetaddresses were these GET requests sent?Answer:3,17)Can you tell whether your browser downloaded the two images serially, or whether they weredownloaded from the two web sites in parallel? Explain.Answer:Parallel,因为第⼀次请求图⽚,未等到回复就继续第⼆次申请试验⼆TCP 报⽂分析⼀、实验⽬的◆熟悉TCP的报⽂格式◆熟练Ethereal的使⽤⽅法⼆、实验环境◆Windows操作系统◆Ethereal协议分析仪三、试验要求Open and examine the Ethereal captured packet file tcp-ethereal-trace-1, and then a nswer the following questions.1. What is the IP address and TCP port number used by the client computer (source) that is transferring the file to/doc/db718f6a25c52cc58bd6be0a.html ?Answer:2. What is the IP address of /doc/db718f6a25c52cc58bd6be0a.html ? On what port number is it sending and receiving TCP segments for this connection?Answer:3. What is the sequence number of the TCP SYN segment that is used to initiate the TCP connection between the client computer and /doc/db718f6a25c52cc58bd6be0a.html ? What is it in the segment that identifies the segment as a SYN segment?Answer:0,Flags中SYN为14. What is the sequence number of the SYNACK segment sent by/doc/db718f6a25c52cc58bd6be0a.html to the clientcomputer in reply to the SYN? What is the value of the ACKnowledgement field in the SYNACK segment?How did/doc/db718f6a25c52cc58bd6be0a.html determine that value? What is it in the segment that identifies the segment as a SYNACK segment?Answer:因为上⼀次seq=0 由Flags中SYN与ACK位为15. What is the sequence number of the TCP segment containing the HTTP POST command?Answer:6. Consider the TCP segment containing the HTTP POST as the first segment in the TCP connection. What are the sequence numbers of the first six segments in the TCP connection (including the segment containing the HTTP POST)? At what time was each segment sent? When was the ACK for each segment received?Answer:编号(相对)序列号发送时间确认时间TCP报⽂长度1 1 0.026477 5852 566 14803 2026 14804 3486 14805 4946 14806 6406 14807. What is the length of each of the first six TCP segments?Answer:585 1480 1480 1480 1480 14808. What is the minimum amount of available buffer space advertised at the received for the entire trace?Answer:58409. How much data does the receiver typically acknowledge in an ACK? Can you identify cases where the receiver is ACKing every other received segmentAnswer:2个.能10. What is the throughput (bytes transferred per unit time) for the TCP connection? Explain how you calculated this value?Answer:163411/(5.297341-0.041737)实验三TCP/IP报⽂综合分析⼀、实验⽬的◆熟悉TCP的报⽂格式◆熟练Ethereal的使⽤⽅法⼆、实验环境◆Windows操作系统◆Ethereal协议分析仪三、实验内容及要求⽤Ethereal打开⽂件http-ethereal-trace-1,分析12号分组的原始数据,并回答以下问题:(注:有X栏不⽤填写)1、Ethernet报⽂字段名起⽌字节地址内容(⼗六进制)意义Ethernet报头00-0d X XSource MAC 06-0b 源物理地址Dest. MAC 00-05 ⽬标物理地址Type0c-0d 0800 协议为IP2、IP报⽂字段名起⽌字节地址内容(⼗六进制)意义IP报头0e-21 X XProtocol 17-17 06 协议为TCP3、TCP报⽂字段名起⽌字节地址内容(⼗六进制)意义TCP报头22-35 X XWindows size 30-31 1920 接收窗⼝6432字节4、HTTP报⽂字段名起⽌字节地址内容(⼗六进制)意义Status line 36-46 版本http/1.1状态吗200短语ok Head lines 47-16b X XEntity body 16e-1b6 X X5、该分组到达⽬标机后,执⾏什么操作?产⽣的效果是什么?Answer:实验四Socket编程及应⽤⼀、试验⽬的●了解Socket编程⽅法。

TCPIP原理实验指导书2010

TCPIP原理实验指导书2010

《TCP/IP原理与技术》实验指导书计算机工程学院二O一O年一月目录实验一以太网络资料的观察与传送 (1)实验二地址解析协议(ARP) (5)实验三局域网络的IP路由 (12)实验一以太网络资料的观察与传送目的:用已了解的以太网基本信息交换并观察其结果。

内容:本实验利用使用者自定的规则传送及响应以太网络封包(帧),让学生观察以太封包的运动。

时数: 2学时。

一、了解网络的拓扑结构:按图连接即可。

图1.1二、软件状态:开启监听模式。

三、技术背景:众所周知,以太网络已是现今最普遍的网络技术,并被视为网络学术之基础。

Ethernet frames 的最大长度为1500 Bytes,图1.1 中记录Ethernet frame 格式其中包含6 Bytes(48 Bits) 的source Mac address 及destination Mac address. 及16-bit封包型态(例如: 0x0800 为IP 封包、0x0806 为ARP 封包及0x0835 为RARP 封包)。

表 1.1 Ethernet encapsulation (RFC 894)四、实验步骤:1. 了解网络拓扑Hubox 接线图(将所有ITS-101的Lan1 接通)图1.22. 监听以太网络封包:开启ITS-101 软件的监听功能如图 1.2且开启封包监听窗口如图1.3。

3. 以太网封包的发送:(1)开启以太网的监听功能:图1.3(2)将所有的ITS-101依次编号(如可自定义为ITS-0,ITS-1…ITS-5),并将其中一台设为教师机(ITS-0),其它为学生机。

(3)教师机(ITS-0)可以向所有的学生机发送一个全广播式以太网封包。

打开以太网封包发送界面:其中interface选择interface 1(因为在HUBBOX连线时,是将LAN1口接入子网),DST:表示目标端的MAC地址(全广播为FF:FF:FF:FF:FF:FF),Src:表示发送端的MAC,TYPE:表示封包的类型(可以自定义),Length:表示封包数据段长度,DATA:数据段内容。

TCP_IP实验报告1[网络0812008121028]:任国帅

TCP_IP实验报告1[网络0812008121028]:任国帅

TCP/IP原理及应用实验报告班级:网络081姓名:任国帅学号: 20081210282011年4月12号实验一:常用协议包头封装验证实验(2课时)实验步骤阅读英文使用手册,回答如下问题,并实际操作截图和说明。

1) 如何进行抓包,请简述操作步骤,即点击那里,能获得什么结果,截图说明:说明格式:操作前截图操作后截图2) 抓包过滤器的使用,如果只想看IP,ICMP报文该怎样设置,请操作截图说明?对比课本说明抓到的数据对应的封包的哪个部分。

功能抓包过滤器,过滤出需要的数据包操作步骤 1.在filter输入需要看的协议名操作前截图(特别是过滤设置截图)操作后截图功能仅仅抓取IP数据包操作步骤在filter输入需要看的协议名ip操作前截图(特别是过滤设置截图)操作后截图截图结果说明说明截图中那部分对应课本所讲IP封式的哪部分,注意说明包括以太网封包格式说明IP封式:协议版本号是4首部长度是20bytes服务类型 0x00总长度字段,整个I P数据报的长度 40byte标识位15952标志位:0X02 不分段片段偏移:0生存时间:128协议:TCP(6)首部检验和:0X0000源地址:222.18.158.196目的地址:123.125.114.98太网封包格式:MAC目的地址:00:0F:E2:13:7A:43MAC源地址:00:1E:90:42:D6:5E功能仅仅抓取ICMP数据包(提示:一般要有错误才能产生ICMP包。

但用ping命令可以很简单的产生echo类型的ICMP包)操作步骤在filter输入需要看的协议名icmp操作前截图操作后截图截图结果说明说明截图中那部分对应课本所讲ICMP封包格式的哪部分ICMP封包格式:类型为0代码为0检验和:0X540C标识符:0X0400序列号:653513) 结果的保存(即抓包数据输出到文件),请操作截图说明。

功能抓包结果保存操作命令在file点击save操作前截图操作后截图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一链路层帧格式分析实验1、实验目的1)熟悉Packet Tracer和Wireshark的用法。

2)掌握EthernetV2 标准规定的MAC 帧结构,初步了解TCP/IP 的主要协议和协议的层次结构。

3)了解IEEE802.1Q 标准规定的帧结构。

2、实验设备和连接实验设备和连接图如图1 所示,一台交换机连接了2 台PC 机,分别命名为PC1、PC2,交换机命名为Switch。

图1 Ethernet 链路层帧结构实验连接图3、实验分组每两人一小组,每小组各自独立完成实验。

4、实验步骤步骤1:按照如图1 所示连接好设备,配置PC1 和PC2 的IP 地址;步骤2:在:PC1 和PC2 上运行Wireshark 截获报文,为了只截获和实验内容有关的报文,将Wireshark 的Captrue Filter 设置为“No Broadcast and no Multicast ”;步骤3:在: PC1 的“运行”对话框中输入命令“Ping 172.16.1.102”,单击“确定”按钮;步骤4:停止截获报文:将结果保存为MAC-学号,并对截获的报文进行分析:1)列出截获的报文中的协议类型,观察这些协议之间的关系。

___________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________2)在网络课程学习中,EthernetV2 规定以太网的MAC 层的报文格式分为7 字节的前导符、1 字节的帧首定界、6 字节的目的 MAC 地址、6 字节的源 MAC 地址、2 字节的类型、46~1500 字节的数据字段和4 字节的帧尾校验字段。

分析一个Ethernet V2 帧,查看这个帧由几部分组成,缺少了哪几部分?为什么?___________________________________________________________________________ _____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________步骤 5:在: PC1 和 PC2 上运行 Wireshark 截获报文,然后进入PC1 的Windows 命令行窗口,执行如下命令:net send 172.16.1.102 Hello这是PC1 向PC2 发送消息的命令,等到PC2 显示器上显示收到消息后,终止截获报文。

注意PC1 和PC2 的信使服务应启动。

找到发送消息的报文并进行分析,查看主窗口中数据报文列表窗口和协议树窗口信息。

3)设法获得IEEE802.1Q 标准规定的帧,分析其基本结构。

实验二ARP协议分析实验1、实验目的分析ARP 协议的报文格式,理解ARP 协议的解析过程;掌握ARP代理的工作特点。

2、实验设备和连接实验设备和连接图如图2 所示,一台交换机连接了2 台PC 机,分别命名为PC1、PC2,交换机命名为Switch。

图2 ARP 协议分析实验连接图3、实验分组每两人一小组,每小组各自独立完成实验。

4.实验步骤步骤1:按照如图27 所示连接好设备,配置PC1 和PC2 的IP 地址;步骤2:在: PC1、PC2 两台计算机上执行如下命令,清除ARP 缓存:ARP –d步骤3:在PC1、PC2 两台计算机上执行如下命令,查看高速缓存中的ARP 地址映射表的内容:ARP –a步骤 4:在PC1 和 PC2 上运行 Wireshark 截获报文,为了截获和实验内容有关的报文, Wireshark 的Captrue Filter 设置为默认方式;步骤5:在主机PC1 上执行Ping 命令向PC2 发送数据报;步骤6:执行完毕,保存截获的报文并命名为arp-1-学号;步骤7:在PC1、PC2 两台计算机上再次执行ARP –a 命令,查看高速缓存中的ARP 地址映射表的内容:1)这次看到的内容和步骤3 的内容相同吗?结合两次看到的结果,理解ARP 高速缓存的作用。

__________________________________________________________________________________________________________________________________________________________2)把这次看到到的高速缓存中的ARP 地址映射表写出来。

__________________________________________________________________________________________________________________________________________________________步骤8:重复步骤: 4—5,将此结果保存为arp-2-学号;步骤9:打开arp-1-学号,完成以下各题:1)在截获的报文中由几个ARP 报文?在以太帧中,ARP 协议类型的代码值是什么?__________________________________________________________________________________________________________________________________________________________2)打开arp-2-学号,比较两次截获的报文有何区别?分析其原因。

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________3)分析arp-1 中ARP 报文的结构,完成表11。

表1 ARP 报文分析ARP 请求报文ARP 应答报文字段报文信息及参数字段报文信息及参数硬件类型硬件类型协议类型协议类型硬件地址长度硬件地址长度协议地址长度协议地址长度操作操作源站物理地址源站物理地址源站IP 地址源站IP 地址目的站物理地址目的站物理地址目的站IP 地址目的站IP 地址步骤10、设计一个实验来完成ARP代理工作过程的分析。

实验三ICMP协议分析实验1、实验目的掌握ping 和tracert 命令的使用方法,了解ICMP 协议报文类型及其作用。

执行ping 和tracert 命令,分别截获报文,分析截获的ICMP 报文类型和ICMP 报文格式,理解ICMP 协议的作用。

2、实验设备和连接实验设备和连接图如图3 所示,一台锐捷R1760 路由器连接2 台PC 机,分别命名为PC1、PC2。

图3 ICMP 协议分析实验连接图3、实验分组每两人一小组,每小组各自独立完成实验。

4、实验步骤步骤1:按照如图3 所示连接好设备;步骤2:完成路由器和PC1、PC2 的相关配置;(注:学校校园网中连接各个实验室的网关可以作为路由器,任何一台PC都可以作为模型中的PC1。

PC2用202.202.43.125等另一网段机器代理即可。

)PC1 和PC2 的IP 地址、子网掩码、网关按照图中有关参数配置。

步骤3:分别在PC1 和PC2 上运行 Wireshark,开始截获报文,为了只截获和实验内容有关的报文,将Wireshark 的Captrue Filter 设置为“No Broadcast and noMulticast ”;步骤4:在PC1上以PC2 为目标主机,在命令行窗口执行Ping 命令;请写出执行的命令:_____________________________________________________ 步骤 5:停止截获报文,将截获的结果保存为 ICMP-1-学号,分析截获的结果,回答下列问题:1)您截获几个ICMP 报文?分别属于那种类型?___________________________________________________________________________ _______________________________________________________________________________ 2)分析截获的ICMP 报文,查看表2 中要求的字段值,填入表中。

表2 ICMP 报文分析报文号源IP 目标IPICMP 报文格式类型代码标识序列号3)分析在上表中哪个字段保证了回送请求报文和回送应答报文的一一对应,仔细体会Ping 命令的作用。

___________________________________________________________________________ ______________________________________________________________________________________________________________________________________________________________ 步骤6:在PC1 上运行Wireshark 开始截获报文;步骤7:在PC1 上执行Tracert 命令,向一个本网络中不存在的主机发送数据报,如:Tracert 172.16.20.200;步骤 8:停止截获报文,将截获的结果保存为 ICMP-2-学号,分析截获的报文,回答下列问题:1)截获了报文中哪几种ICMP 报文?其类型码和代码各为多少?___________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________2)在截获的报文中,超时报告报文的源地址是多少?这个源地址指定设备和PC1 有何关系?___________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ 3)通过对两次截获的ICMP 报文进行综合分析,仔细体会ICMP 协议在网络中的作用。

相关文档
最新文档