实验二TCP_IP实用程序的使用实验报告资料

合集下载

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 客户/服务器程序的设计与实现。

TCP IP配置与网络实用程序实验

TCP IP配置与网络实用程序实验

TCP/IP配置与网络实用程序实验一、实验目的:1、掌握Windows操作系统中网络协议的具体配置。

2、掌握Windows操作系统中常用的网络命令。

二、实验内容:1、Windows操作系统中协议的配置2、掌握Windows操作系统中常用的网络命令3、综合使用常用网络命令检测网络可能的故障三、实验步骤:(一)Windows操作系统中网络协议的具体配置1、鼠标右键点击桌面上的“网上邻居”,选择“属性”。

2、选择“本地连接”,鼠标右键点击,然后选择“属性菜单”。

3、此时,可以安装、卸载各种协议并查看及其属性。

4、选择”Internet协议(TCP/IP)”,然后点击“属性”菜单。

5、根据网络具体情况进行配置,如果网络使用DHCP服务的话,则选择“自动获得IP地址与自动获得DNS服务器地址”,否则,手工配置IP地址,子网掩码、网关或者DNS服务器地址。

6、点击“高级”选择然后分别选择“IP设置、DNS、WINS、选项等”进行其他配置。

7、协议配置好之后,可在命令行中使用ipconfig命令查看配置情况,该命令尤其在采用DHCP分配地址的时候十分有用。

点击”开始 运行”,输入“cmd”然后回车,进入命令行。

c:\>ipconfig 命令显示每个已经配置且处于活动状态的网络接口的IP地址、子网掩码和默认网关。

c:\>ipconfig/all 除了上述信息外,还能显示DNS和WINS服务器信息,网卡的MAC地址,如果是DHCP获得IP配置,还可显示IP地址及租用地址的预计失效日期。

c:\>ipconfig /release 。

在采用DHCP自动配置的情况下,该命令将所租用的IP 地址返还给DHCP服务器。

C:\>ipconfig/renew 表示本地计算机设法与DHCP服务器取得联系,且重新租用一个IP地址。

C:\>ipconfig/flushdns 清除本机DNS解析器缓存中的内容。

贵州大学计算机网络实验报告-实验二-TCPIP 协议常用网络工具的使用

贵州大学计算机网络实验报告-实验二-TCPIP 协议常用网络工具的使用

实验课程名称计算机网络实验报告实验项目名称TCP/IP 协议常用网络工具的使用专业班级电子信息科学与技术08级1班学生姓名学号指导教师理学院实验时间:2010年4月22日实验名称:实验二TCP/IP协议常用网络工具的使用实验目的:●了解系统网络命令及其所代表的含义,以及所能对网络进行的操作。

●通过网络命令了解运行系统网络状态,并利用网络命令对网络进行简单的操作。

实验器材:连接到因特网的计算机,个人电脑Windows XP sp3系统。

实验内容(步骤):学习使用windows环境下常用的网络命令:1)Ipconfig:IP地址与以太网卡硬件地址查看命令2)Ping:网络连接测试命令3)ARP:地址解析命令4)FTP:文件传输命令5)Netstat:显示协议及其端口信息和当前的TCP/IP 网络连接6)Route:控制网络路由表7)TFTP:简单文件传输命令8)Tracert:该诊断实用程序将包含不同生存时间(TTL) 值的Internet 控制消息协议(ICMP) 回显数据包发送到目标,以决定到达目标采用的路由。

9)Net:网络服务等1. ipconfigIpconfig命令应该是最最基础的命令了,主要功能就是显示用户所在主机内部的IP协议的配置信息等资料。

它的主要参数有:all:显示与TCP/IP协议相关的所有细节信息,其中包括测试的主机名、IP地址、子网掩码、节点类型、是否启用IP路由、网卡的物理地址、默认网关等。

renew all:更新全部适配器的通信配置情况,所有测试重新开始。

release all:释放全部适配器的通信配置情况。

renew n:更新第n号适配器的通信配置情况,所有测试重新开始。

命令格式是:C:\>ipconfig/(参数)分析:Windows IP 配置主机名:b5469b44b6904d3主DNS后缀:节点类型:混合IP路由已启用:否WINS代理已启用:否以太网适配器本地连接:媒体类型:媒体未连接描述:Intel(R) 82566MM Gigabit Network Connection 物理地址:00-21-85-4E-30-42以太网适配器无线网络连接:连接特定的DNS后缀:描述:802.11g Mini Card Wireless Adapter物理地址:00-1D-92-CF-AA-57DHCP已启用:是自动配置已启动:是IP地址:192.168.1.7子网掩码:255.255.255.0缺省路径:192.168.1.1DHCP服务器:192.168.1.1DNS服务器:221.13.30.242 221.13.28.234租赁通行:2010年4月26日23:19:54租赁期满:2010年4月27日23:19:542. ping命令PING命令是一个在网络中非常重要的并且常用的命令,主要是用来测试网络是否连通。

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命令使用

实验二、TCP/IP命令使用一、实验内容1.掌握常用的 TCP/IP命令使用的格式;2.掌握TCP/IP命令的各种用法。

二、实验设备1.Windows 2000 Server 软件2.P4计算机三、实验过程在Windows 2000操作系统中集成了大量的诊断程序。

这些程序对合理、有效地使用TCP/IP协议很有帮助。

1.ARP显示和修改“地址解析协议”(ARP) 所使用的到以太网的IP 或令牌环物理地址翻译表。

该命令只有在安装了TCP/IP 协议之后才可用。

arp -a [inet_addr] [-N [if_addr]arp -d inet_addr [if_addr]arp -s inet_addr ether_addr [if_addr]参数:inet_addr:以加点的十进制标记指定IP 地址。

ether_addr:指定物理地址。

-a:通过询问TCP/IP 显示当前ARP 项。

如果指定了inet_addr,则只显示指定计算机的IP 和物理地址。

-g:与-a 相同。

-N if_addr:指定需要修改其地址转换表接口的IP 地址(如果有的话)。

如果不存在,将使用第一个可适用的接口。

-d删除由inet_addr 指定的项。

无inet_addr,则删除所有项。

-s:在ARP 缓存中添加项,将IP 地址inet_addr 和物理地址ether_addr 关联。

物理地址由以连字符分隔的 6 个十六进制字节给定。

使用带点的十进制标记指定IP 地址。

项是永久性的、静态的,即超时终止后不从缓冲中自动删除。

以上有关ARP诊断程序参数的详细说明可以在Windows命令行中键入“arp/?”查得结果如图1所示。

操作:大家可先ping 211.86.193.14(或任何一个可用IP地址),然后运行Arp –a,则会显示该IP 地址202.206.249.94的ARP缓存信息。

2.hostnamehostname诊断程序逻辑用于显示当前的主机动名。

TCP__IP实验报告

TCP__IP实验报告

电子科技大学实验报告学生姓名:学号:指导教师:许都日期:2014 年月日实验项目名称:IP分组交付和ARP协议报告评分:教师签字:IP子网中使用一个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地址对应的物理地址。

IP网络是一个逻辑网络,一个物理网络可以被逻辑划分成若干个IP网络。

tcp ip协议实验报告

tcp ip协议实验报告

tcp ip协议实验报告《TCP/IP协议实验报告》一、实验目的本次实验旨在通过实际操作,加深对TCP/IP协议的理解,掌握其基本原理和工作机制。

二、实验环境1. 操作系统:Windows 102. 软件工具:Wireshark、Putty三、实验内容1. 使用Wireshark监测网络数据包利用Wireshark工具,实时监测网络数据包的传输过程,观察数据包的结构和传输规则,以及TCP/IP协议的工作流程。

2. 使用Putty进行远程连接通过Putty工具,进行远程连接实验,模拟TCP/IP协议在网络通信中的应用场景,了解TCP/IP协议在远程通信中的工作原理。

3. 分析网络数据包结合Wireshark抓包结果和Putty远程连接实验,分析网络数据包的传输过程,探讨TCP/IP协议的数据传输机制,包括数据封装、传输流程和错误处理等方面的内容。

四、实验结果1. 通过Wireshark监测数据包,了解了TCP/IP协议的数据包格式和传输规则,包括TCP头部、IP头部等内容。

2. 利用Putty进行远程连接,实际体验了TCP/IP协议在远程通信中的应用,加深了对TCP/IP协议工作原理的理解。

3. 分析网络数据包,深入探讨了TCP/IP协议的数据传输机制,包括数据封装、传输流程和错误处理等方面的内容。

五、实验总结通过本次实验,我们对TCP/IP协议有了更深入的了解,掌握了其基本原理和工作机制,加强了对网络通信协议的理解和应用能力。

同时,通过实际操作,我们也发现了一些问题和不足之处,为今后的学习和实践提供了一定的参考和指导。

六、参考文献1. 《TCP/IP协议详解》2. 《计算机网络》通过本次实验,我们对TCP/IP协议有了更深入的了解,掌握了其基本原理和工作机制,加强了对网络通信协议的理解和应用能力。

同时,通过实际操作,我们也发现了一些问题和不足之处,为今后的学习和实践提供了一定的参考和指导。

希望通过不断的实践和学习,能够进一步提高对TCP/IP协议的理解和运用能力,为今后的网络通信工作打下坚实的基础。

TCP IP配置与网络实用程序实验

TCP IP配置与网络实用程序实验

TCP/IP配置与网络实用程序实验一、实验目的:1、掌握Windows/Linux操作系统中网络协议的具体配置。

2、掌握Windows/Linux操作系统中常用的网络命令。

二、实验内容:1、Windows/Linux操作系统中协议的配置2、掌握Windows/Linux操作系统中常用的网络命令3、综合使用常用网络命令检测网络可能的故障三、实验步骤:(一)Windows操作系统中网络协议的具体配置1、鼠标右键点击桌面上的“网上邻居”,选择“属性”。

2、选择“本地连接”,鼠标右键点击,然后选择“属性菜单”。

3、此时,可以安装、卸载各种协议并查看及其属性。

4、选择”Internet协议(TCP/IP)”,然后点击“属性”菜单。

5、根据网络具体情况进行配置,如果网络使用DHCP服务的话,则选择“自动获得IP地址与自动获得DNS服务器地址”,否则,手工配置IP地址,子网掩码、网关或者DNS服务器地址。

6、点击“高级”选择然后分别选择“IP设置、DNS、WINS、选项等”进行其他配置。

7、协议配置好之后,可在命令行中使用ipconfig命令查看配置情况,该命令尤其在采用DHCP分配地址的时候十分有用。

点击”开始 运行”,输入“cmd”然后回车,进入命令行。

c:\>ipconfig 命令显示每个已经配置且处于活动状态的网络接口的IP地址、子网掩码和默认网关。

c:\>ipconfig/all 除了上述信息外,还能显示DNS和WINS服务器信息,网卡的MAC地址,如果是DHCP获得IP配置,还可显示IP地址及租用地址的预计失效日期。

c:\>ipconfig /release 。

在采用DHCP自动配置的情况下,该命令将所租用的IP 地址返还给DHCP服务器。

C:\>ipconfig/renew 表示本地计算机设法与DHCP服务器取得联系,且重新租用一个IP地址。

C:\>ipconfig/flushdns 清除本机DNS解析器缓存中的内容。

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

《TCP/IP实用程序的使用》




计科121
12171105景元合
2015.5.19
TCP/IP实用程序的使用
一、实验目的
1.使用Ping实用程序来测试计算机上的TCP/IP配置及测试本计算机与计算机的连接性能,确保可以在网络上通信;
2.使用Hostname实用程序来标识计算机的名称;
3.使用Ipconfig实用程序来验证计算机上的TCP/IP配置选项,包括MAC地址、IP地址、子网掩码和缺省网关等多项配置信息;
4.考察操作系统为Windows2000的计算机的TCP/IP配置。

二、实验设备及仪器
联网计算机一台
三、TCP/IP实用程序原理
TCP/IP协议组包括许多实用程序,它们允许用户访问网络上的信息。

Microsoft的TCP/IP协议组提供了基本的TCP/IP实用程序,允许运行windows2000的计算机访问网络上广泛的信息。

Windows2000包括三种类型的基于TCP/IP的实用程序:诊断工具、连接工具和基于服务器的软件。

诊断实用程序包括Arp,Hostname,Ipcogfig,Ping,Tracfert等。

1. 诊断实用程序:诊断实用程序允许用户检测和解决网络中的问题。

一些通用的诊断实用程序包括:
Arp:该实用程序显示和修改地址解析协议(ARP)缓存。

Hostname:该实用程序显示计算机的名称。

Ipconfig:该实用程序显示和更新当前TCP/IP配置,包括IP地址。

Ping:该实用程序验证配置、测试两台计算机之间的IP连接。

Ping从源计算机上发送ICMP 请求,目的计算机用一个ICMP回答作为回应。

Tracert:该实用程序跟踪数据包到达目的地的路径。

2. 通用实用程序示例:Hostname、Ipconfig和Ping是三个通用的TCP/IP实用程序。

因为经常使用它们,因此应掌握它们的使用。

Hostname:使用该实用程序的语法为hostname。

要访问该实用程序,在命令提示符下键入hostname,系统将显示出你的计算机的名称。

Ipconfig:使用该实用程序来验证而不是设置主机上的TCP/IP配置选项,包括IP地址、子网掩码和缺少网关。

要开始Ipconfig实用程序,在命令行提示下键入Ipconfig。

此时显示三个主要的配置参数的值。

但使用这个实用程序,不能确定分配该IP地址使用的是静态的还是动态的方法。

Ipconfig/all:通过指定开关all,可以使用Ipconfig实用程序来获得更多的详细信息。

要使用带有这个开关的Ipconfig实用程序,在命令行提示下键入Ipconfig/all。

屏幕显示所有关于配置选项的信息。

此时可以确定是否启用了DHCP。

如果DHCP启用参数为是,并显示了DHCP 服务器的IP地址,则隐含该IP地址是使用DHCP获得的。

DHCP服务器租借一条IP地址给一台客户机一段时间。

标签Lease Obtained和Lease Expires分别显示何时获得租借及何时到期的信息。

Ping:测试连接的语法是Ping。

要用IP地址或计算机名称来测试连接,键入Ping[IP地址或计算机名称]。

要测试你的计算机的TCP/IP配置,可以使用本地回路。

本地回路是IP地址为127.0.0.1。

键Ping 127.0.0.1可使用本地回路测试系统配置。

四、实验任务、实验步骤及思考题
1. 使用Ping实用程序来测试计算机上的TCP/IP配置
登陆到Windows2000中。

单击开始,然后将鼠标指针移到程序上,再移到附件上,然后单击命令提示符。

在命令提示窗口键入ping 127.0.0.1。

问题1:发送了多少数据包?接受了多少数据包?丢失了多少数据包?
问题2:TCP/IP工作正常吗?
正常
2. 使用Hostname实用程序来获得计算机的名称
在命令提示窗口键入hostname。

在命令提示窗口键入ping计算机(其中计算机是在步骤4中获得的主机名称)。

问题3:你的计算机的主机名称是什么?
问题4:你的计算机的IP地址是什么?
3. 使用Ping实用程序测试本计算机与其它计算机的连接性能
在命令提示窗口键入ping其他计算机(其中其他计算机代表其他同学的计算机主机名称)。

问题5:你所键入的“其他计算机”的主机名称是什么?
问题6:你如何知道你和此“其他计算机”可以通讯?
4. 考察计算机上的TCP/IP配置
最小化命令提示窗口。

单击开始,然后将鼠标指针移到设置上,再移到网络和拨号连接上,然后右击本地连接。

单击属性。

单击Internet协议(TCP/IP)。

单击属性。

问题7:你能说出你的计算机是否分配了IP地址?是如何分配的?

问题8:配置IP地址的2种方法是什么?
静态配置和动态获取,静态配置是自己配置IP地址,动态获取是从服务器获取IP地址5. 使用Ipconfig实用程序验证计算机上的TCP/IP配置选项
关闭所有打开的窗口。

重新打开命令提示窗口。

在命令提示窗口键入ipconfig。

问题9:能察看你的计算机的IP地址吗?如果能,是多少?
问题10:显示了什么额外的配置信息?
问题11:能用ipconfig人工设置IP地址吗?如果能,如何设置?
在命令提示窗口键入ipconfig/all。

问题12:与步骤14的结果相比较,ipconfig/all显示了什么额外的配置信息?
问题13:你的网卡的MAC地址(physical Address)是多少?
问题14:你的计算机拥有的是哪一类地址?你的网络ID是多少?
A 网络ID:192.168.155
问题15:缺省网关(Default Gateway)与你的计算机拥有相同的网络ID吗?相同
实验二、在packettracer上使用ping命令
画出如下拓扑结构图:
1.进入路由器的连接接口(如f0/0)的接口配置模式:
2.在接口配置模式使用no shut down 打开接口
3.使用ip address 命令给接口设置ip地址和子网掩码:
如:ip address 192.168.1.1 255.255.255.255
注意:两台路由器相连接口的ip地址应在同一网络内。

4.任选一台路由器使用ping命令测试两台路由器的连通性。

写出收包率及最大、最小和平均时延。

相关文档
最新文档