实验二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解析器缓存中的内容。

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

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

实验二TCP_IP实用程序的使用实验报告资料《TCP/IP实用程序的使用》实验报告计科12112171105景元合2015.5.19TCP/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。

合肥学院TCPIP协议分析及应用实验报告 (2)

合肥学院TCPIP协议分析及应用实验报告 (2)

计算机科学与技术系实验报告专业名称网络工程课程名称 TCP/IP协议项目名称 DNS班级学号姓名同组人员实验日期 2014.12一、实验目的与要求:1.实验目的(1)掌握DNS的报文格式(2)掌握DNS的工作原理(3)掌握DNS域名空间的分类(4) 理解DNS高速缓存的作用2.实验环境拓扑结构源主机: F的IP地址:172.16.0.26 目的主机:A的IP地址:172.16.0.21 B的IP地址:172.16.0.22 C的IP地址:172.16.0.23 D的IP地址:172.16.0.24 E的IP地址:172.16.0.25 默认网关和DNS:172.16.0.254二、实验内容1.实验原理(1)DNS报文格式标识标志问题数资源记录数授权资源记录数额外资源记录数查询问题回答(资源记录数可变)授权(资源记录数可变)额外信息(资源记录数可变)(2)Internet域名空间的分类在Internet中,域名空间划分为三个部分:类属域、国家域和反向域。

1)类属域:按照主机的类属行为定义注册的主机。

类属域的顶级符号包括com、edu、gov、int、mil、net、org等。

2)国家域:按照国家定义注册的主机。

国家域的顶级符号包括cn、us、zw等。

3)反向域:把一个地址映射为名字。

(3)DNS高速缓存当服务器向另一个服务器请求映射并收到它的响应时,它会在把结果发送给客户之前,把这个信息存储在它的DNS高速缓存中。

若同一客户或另一个客户请求同样的映射,它就检查高速缓存并解析这个问题。

高速缓存减少了查询时间,提高了效率。

2.实验流程概述1)在机房调试好需做的拓扑结构2)根据拓扑结构,配置小组成员各自电脑的IP地址,子网掩码和网管3)根据课件中的具体实验要求和实验步骤进行操作3.实验具体步骤与实验结果本实验将主机A和B作为一组,主机C和D作为一组,主机E和F作为一组。

现仅以主机A和B为例,说明实验步骤。

TCPIP实验报告

TCPIP实验报告

tcp/ip实验报告一.实验目的二.实验内容2.1实验原理如图1所示。

计算机(ie )服务器(web 服务器: apache, microsoft iis) 计算机(netscape)三、实验步骤(1)清空高速缓存中的网页(图2):在ie浏览器中,选择“工具”——“internet选项”——“常规”标签——“删除文件”按钮图2 清除ie缓存(2)清空dns高速缓存(图3):在桌面上选择“开始”——“程序”——“附件”——“命令提示符”;——输入命令行“ipconfig/flushdns”——按“回车键”执行命令。

图3 清除dns域名解析缓存(5)从analyze菜单中选择“ follow tcp stream”,显示整个数据流。

其中,web浏览器发送的数据显示为一种颜色;所有由web服务器发送的数据显示为另一种颜色。

实验报告小组成员:组长:田廷魁组员:周霄晗周深立周斌杰田力陈童张鼎撰写人:田廷魁学号:201227920316 班级:网工1201班一、实验目的二、实验学时2 学时三、实验类型验证型实验四、实验步骤该实验采用网络结构一说明:ip 地址分配规则为主机使用原有 ip,保证所有主机在同一网段内。

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

本试验将主机 a 和 b 作为一组,主机 c 和d 作为一组,主机e 和f 作为一组。

现仅以主机 a 和 b 为例,说明实验步骤。

练习一:页面访问1. 主机 a 清空 ie 缓存。

------------------------------------------------------------------------------------------------------- *概要* 源主机: ip地址: 192.168.0.29 目的主机: ip地址: 192.168.0.251------------------------------------------------------------------------------------------------------- *命令交互过程*------------------------------------------------------------------------------------------------------- 端口: 80 端口: 1418 【问题】b) 根据本练习的报文内容,填写下表。

TCPIP实用程序的使用

TCPIP实用程序的使用

实验报告实验一:TCP/IP实用程序的使用一、实验目的通过WINDOWS操作系统中自带的实用程序,测试计算机上的TCP/IP配置及测试本计算机与计算机的连接性能、获取计算机名称、验证计算机上的TCP/IP的配置及选项。

二、实验原理1、使用Ping程序测试计算机的TCP/IP配置及测试本计算机与计算机的连接性能,确保可以在网络上通信;2、使用Hostname程序来获得计算机的名称;3、使用Ipconfig程序来验证计算机上的TCP/IP配置选项,包括MAC地址、IP地址、子网掩码和缺省网关等配置信息;4、考察实验用的计算机的TCP/IP配置。

三、实验步骤与结果分析1、使用Ping实用程序来测试计算机上的TCP/IP配置(1)登陆到Windows XP中。

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

快捷键WIN+R(3)在命令提示窗口键入ping 127.0.0.1。

Ping 127.0.0.1 发送4个数据包,接收4个数据包,丢失0个数据包,TCP/IP工作正常2、使用Hostname实用程序来获得计算机的名称(1)在命令提示窗口键入hostname。

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

计算机名为513stu14,IP地址为172.31.62.883、使用Ping实用程序测试本计算机与其它计算机的连接性能。

(1)在命令窗口输入net view,得到其他主机的主机名。

(2)用ping命令验证与其它主机的连通性。

“其他计算机”的主机名称是513stu18、513stu20,我从513stu18、513stu20接收到了数据包,所以我和这两台可以通信4、考察TCP/IP配置(1)单击开始,然后将鼠标指针移到设置上,再移到网络和拨号连接上,然后右击本地连接;(2)单击属性;(3)单击Internet协议(TCP/IP);(4)单击属性,考察TCP/IP配置。

tcp ip实验报告

tcp ip实验报告

tcp ip实验报告《TCP/IP实验报告》TCP/IP协议是互联网上使用最广泛的协议之一,它是一种可靠的、面向连接的协议,用于在不同计算机之间进行数据通信。

在本次实验中,我们对TCP/IP协议进行了深入的研究和实验,以期更好地理解其工作原理和应用。

实验一:TCP连接建立过程我们首先对TCP连接建立过程进行了实验。

通过Wireshark抓包工具,我们观察到在建立TCP连接时,客户端和服务器端之间进行了三次握手的过程。

这三次握手分别是客户端向服务器端发送SYN包,服务器端收到后回复SYN+ACK 包,最后客户端再回复ACK包,完成连接的建立。

通过实验,我们深入了解了TCP连接建立的过程和原理。

实验二:TCP数据传输过程在第二个实验中,我们对TCP数据传输过程进行了实验。

我们使用了一个简单的客户端和服务器端程序,通过TCP协议进行数据传输。

通过抓包工具我们观察到,在数据传输过程中,TCP协议会对数据进行分段、封装、传输和重组等操作,确保数据的可靠传输和顺序交付。

这个实验让我们更加深入地了解了TCP协议在数据传输过程中的工作原理。

实验三:TCP连接的释放过程最后,我们进行了TCP连接的释放过程实验。

我们观察到在TCP连接释放时,客户端和服务器端进行了四次挥手的过程。

这四次挥手分别是客户端向服务器端发送FIN包,服务器端收到后回复ACK包,然后服务器端再向客户端发送FIN包,最后客户端回复ACK包,完成连接的释放。

通过这个实验,我们更加深入地了解了TCP连接释放的过程和原理。

通过本次实验,我们对TCP/IP协议有了更深入的理解,我们了解了TCP连接建立、数据传输和连接释放的过程和原理,这对我们今后的网络编程和网络管理工作具有重要的指导意义。

希望通过今后的实践和学习,我们能够更好地掌握和应用TCP/IP协议,为网络通信的可靠性和稳定性做出更大的贡献。

实验二 TCPIP网络协议的设置与常用工具的应用

实验二 TCPIP网络协议的设置与常用工具的应用

实验二 TCP/IP协议及常用网络工具的使用一、实验目的:了解TCP/IP协议的配置,了解常用的网络命令二、实验内容1. 配置TCP/IP协议步骤1:在桌面上右击“网上邻居”,然后选择“属性”或从“开始”菜单的“设置”中选择“网络连接”,进入网络连接窗口。

步骤2:在“本地连接”上右击然后选择“属性”,打开本地连接属性对话框。

步骤3:如果想提高局域网资源共享的速度,可以添加“IPX(Internetwork Packet Exchange,网间数据包交换)、SPX(Sequences Packet Exchange,顺序包交换)或NetBIOS(NETwork Basic Input/OutputSystem,网络基本输入输出系统)”协议,步骤为点击“安装”按钮,在弹出的对话框中选择“协议”,然后按“添加”,在弹出的对话框中选择IPX相关协议后按确定即可。

步骤4:一般情况下只要设置“TCP/IP”协议就行了。

步骤为:在“本地连接属性”对话框中选中“Internet协议(TCP/IP)”,然后按“属性”,在打开的对话框中就可以进行相应的设置了。

在使用路由器且路由器DHCP开启的情况下,一般选自动获取IP地址的设置即可。

2.常用网络工具的使用(1)PingPing的目的是为了测试另一台主机是否可达,通过发送一份ICMP(Internet Control Message Protocol,Internet控制报文协议)回显请求报文给主机,并等待返回ICMP回显回答。

因此它的作用有:作用一,探测本地的计算机是否通过网络和指定 IP 地址的计算机相连接;作用二,根据域名获得 IP 地址。

示例见下图,图中表明,新浪网服务器IP为121.194.0.209;time为速率,以毫秒计,越小越好;TTL(是生存时间(Time To Live) 简单点说就是数据包的生命周期),TTL=50,就是该数据只能在通讯线路里存活50秒;sent为发送数据包,received为接收的数据包,lost为丢失的包,整个过程所花费的时间最大、最小、平均都是21ms。

TCPIP实验二

TCPIP实验二

淮海工学院计算机工程学院实验报告书
课程名:《TCP/IP与网络互联》
题目:实验二网络层传输层数据报分析
班级:D软件091
学号:510940418
姓名:董佳宾
一、实验目的
通过本次实验,熟悉sniffer的使用,并能通过sniffer设定过滤规则,对指定的网络行为所产生的数据包进行抓取,并分析所抓取的数据包。

二、实验内容
设置过滤条件捕获网络层、传输层的数据包,并各选取其中一条记录解释其构造。

要求:将条件设置、包捕获、数据包分析的整个过程截图,并在实验报告中给出相应说明与解释。

三、实验步骤
1、首先打开sniffer软件,对所要监听的网卡进行选择。

2、选择网卡按确定后,进入sniffer工作主界面。

3、设置捕获条件进行抓包。

4、查看捕获的报文,并进行分析。

四、测试数据与实验结果(可以抓图粘贴)
目的地址
源地址
网卡
版本号为4,首部长度为20字节
服务类型
总长度60字节
标识符
片偏移为0
偏移为0字节
生存时间127秒
ICMP数据包的大小为1字节
首部校验和
IP源地址
IP目的地址
ICMP校验和
五、结果分析与实验体会
通过本次实验,了解sniffer的基本作用,并能通过sniffer对指定的网络行为所产生的数据包进行抓取,并了解sniffer视功能。

基本了解了16位进制所代表的意思,通过本次实验,我可以大致理解从数据报格式。

但那个乱码的形成不知道如何祛除。

tcp ip协议实验报告

tcp ip协议实验报告

tcp ip协议实验报告TCP/IP协议实验报告一、引言TCP/IP协议是互联网的基础协议,它负责实现数据在网络中的传输。

本实验旨在通过实际操作和观察,深入了解TCP/IP协议的工作原理和相关概念。

二、实验目的1. 了解TCP/IP协议的分层结构和每一层的功能;2. 掌握TCP/IP协议的基本工作原理;3. 实践使用TCP/IP协议进行网络通信。

三、实验环境和工具1. 操作系统:Windows 10;2. 实验工具:Wireshark、Telnet、Ping。

四、实验过程和结果1. 实验一:抓包分析通过Wireshark工具抓取网络数据包,观察数据包的结构和内容。

我们发现数据包包含源IP地址、目标IP地址、端口号等信息,这些信息是实现数据传输的关键。

2. 实验二:Telnet实验使用Telnet工具模拟客户端与服务器进行通信。

我们通过输入命令和查看服务器返回的结果,了解了Telnet协议的基本工作原理。

Telnet协议使用TCP协议作为传输层协议,通过建立连接和传输数据实现远程登录和控制。

3. 实验三:Ping实验使用Ping命令测试网络连接的可达性。

Ping命令使用ICMP协议,通过向目标主机发送探测包并等待回复包,判断网络是否通畅。

我们通过Ping命令测试了本地主机和远程主机之间的网络连接情况。

五、实验总结通过本次实验,我们深入了解了TCP/IP协议的工作原理和相关概念。

TCP/IP协议采用分层结构,每一层都有特定的功能,实现了数据在网络中的可靠传输。

我们通过抓包分析、Telnet实验和Ping实验,实践了TCP/IP协议的使用,并掌握了一些常用的网络工具和命令。

六、实验心得通过本次实验,我对TCP/IP协议有了更深入的理解。

我认识到TCP/IP协议的重要性和广泛应用,它是互联网通信的基础。

同时,我也意识到网络通信的复杂性和需要不断学习和实践的重要性。

我将继续深入学习网络技术,提升自己的能力。

TCP-IP课程实验报告

TCP-IP课程实验报告

图 2-1 ARP 将网络层的逻辑地址解析为本地的硬件地址
2.1 ARP 概述
ARP 是像以太网和令牌环这样的访问共享、基于广播的网络技术所使用的协议。该协 议将节点的转发 IP 地址解析成对应的 MAC (Media Access Control——媒介访问控制) 地址。 MAC 地址也称为物理地址、硬件地址或网卡地址。解析后的 MAC 地址成为以太网或令牌 环报头中的目标 MAC 地址,IP 数据报在媒介上发送时寻到该地址。 ARP 将因特网层地址 (IP 地址)解析成网络接口层地址(MAC 地址) 。 转发 IP 地址不必与 IP 数据报的目标 IP 地址相同,每个发出的 IP 数据报经路由处理后 都变成一个接口和转发 IP 地址。对于直接在同一子网上传送的目标节点,转发 IP 地址是数 据报的目标 IP 地址。对于间接传送到远程目标节点,转发 IP 地址是转发主机所在子网上的 路由器的 IP 地址。 IP 独立于任何特定的网络接口层技术。因此,从转发的 IP 地址判断不出目的地的网络 接口层地址。例如,以太网和令牌环 MAC 地址的长度是 6 字节,IP 地址的长度是 4 字节。 MAC 地址在网卡的制造过程中就已分配好了,而 IP 地址是由网络管理员分配的。对某个具 体的 IP 节点而言,这两种地址的指定方式之间没有任何关系,因此不可能从一个地址判断 出另一个地址。ARP 是一种基于广播的请求答复协议,提供了将正在转发的 IP 地址映射为 它们相应的 MAC 地址的动态解析能力。
TCP
UDP
图 1-3 数据结构
第二章
地址解析协议(ARP)——链路层
由于不同层和驻留于这些层上的地址的复杂性, 因此必须有一种解析不同的计算机编址 策略间差异的方法。 地址解析就起了这样的作用, 并且使得端设备可以动态地找到本地的硬 件地址以便向远端主机传输数据, 或者取得必要的逻辑 IP 地址和配置参数以便加入到网络。 如果没有某种类型的地址解析方法,远端主机间就不能通信。在 IP 界,地址解析指的是将 一个协议地址转换成一个相应的物理地址或反之,例如将一个 IP 地址转换成一个以太网地

TCPIP实验报告

TCPIP实验报告

TCP/IP技术实验报告书专业:[通信工程]学生姓名:[张世超]完成时间:2014年6月11日实验一网络应用程序基础实验目的:通过实验,使学生熟悉并掌握运用TCP/IP技术进行网络编程的基本知识,加深对课堂教学内容的理解,掌握套接字网络通信编程技术,能够运用VC++为开发工具编程解决网络通信中的实际问题,进行一些简单的网络应用程序设计。

实验内容:1,Winsock的启动与终止。

2,Winsock的创建及绑定和关闭。

3,建立通信连接listen及accept和connect。

4,数据的传输。

5,简单的客户机/服务器之间的通信。

要求:通过在SDK模式下完成数据通信的过程,掌握Windows Socket的常用函数的形式和使用方法,理解数据通信的过程。

实验步骤:1,打开VC环境1,使用向导为客户端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其他的选择默认设置2,在文件中添加代码3,编译调试4,使用向导为服务器端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其他的选择默认设置5,在文件中添加代码6,编译调试7,分别打开两个系统命令窗口中,并分别在其中运行客户端和服务器端程序。

8,在客户端侧输入字符,可以看到服务器收到字符串参考代码:课本156页--160页实验结果:Client:#include<Winsock2.h>#include<stdio.h>//服务器端口号为5050#define DEFAULT_PORT 5050#define DATA_BUFFER 1024void main(int argc,char *argv[]){WSADATA wsaData;SOCKET sClient;int iPort=DEFAULT_PORT;//从服务器端接收的数据长度int iLen;//接收数据的缓冲char buf[DATA_BUFFER];//服务器端地址struct sockaddr_in ser;//判断输入的参数是否正确if(argc<2){//提示在命令行中输入服务器IP地址printf("Usage:client [server IP address]\n");return;}//接收数据的缓冲区初始化memset(buf,0,sizeof(buf));if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0){printf("Failed to load Winsock.\n");return;}//填写要连接的服务器地址信息ser.sin_family=AF_INET;ser.sin_port=htons(iPort);//inet_addr()函数将命令行的点分IP地址转换为用二进制表示的网络字节顺序的IP地址ser.sin_addr.s_addr=inet_addr(argv[1]);//建立客户端流式套接口sClient=socket(AF_INET,SOCK_STREAM,0);if(sClient==INVALID_SOCKET){printf("socket() Failed:%d\n",WSAGetLastError());return;}//请求与服务器端建立TCP连接if(connect(sClient,(structsockaddr*)&ser,sizeof(ser))==INVALID_SOCKET){printf("connect() Failed:%d\n",WSAGetLastError());return;}else{//从服务器端接收数据iLen=recv(sClient,buf,sizeof(buf),0);if(iLen==0)return;else if(iLen==SOCKET_ERROR){printf("recv() Failed:%d",WSAGetLastError());return;}printf("recv() data from server:%s\n",buf);}closesocket(sClient);WSACleanup();}Server:#include<Winsock2.h>#include<stdio.h>#include<stdlib.h>#pragma comment(lib,"ws2_32.lib")//服务器使用的端口号为5050#define DEFAULT_PORT 5050void main(){int iPort=DEFAULT_PORT;WSADATA wsaData;SOCKET sListen,sAccept;//客户端地址长度int iLen;//发送的数据长度int iSend;//要发送给客户端的信息char buf[]="I am a server.";//服务器和客户端的IP地址struct sockaddr_in ser,cli;printf("---------------------------\n");printf("Server waiting\n");printf("---------------------------\n");if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0){printf("Failed to load Winsock.\n");return;}//创建服务器端套接口sListen=socket(AF_INET,SOCK_STREAM,0);if(sListen==INVALID_SOCKET){printf("socket() Failed:%d\n",WSAGetLastError());return;}//以下建立服务器端地址ser.sin_family=AF_INET;//htons()函数把一个双字节的主机直接顺序的数据转换为网络直接顺序的数ser.sin_port=htons(iPort);//htonl()函数把一个四字节的主机直接顺序的数据转换为网络直接顺序的数//使用系统制定的IP地址INADDR_ANYser.sin_addr.s_addr=htonl(INADDR_ANY);if(bind(sListen,(LPSOCKADDR)&ser,sizeof(ser))==SOCKET_ERROR){printf("bind() Failed: %d\n",WSAGetLastError());return;}//进入监听状态if(listen(sListen,5)==SOCKET_ERROR){printf("listen() Failed:%d\n",WSAGetLastError());return;}//初始化客户端地址长度参数iLen=sizeof(cli);//进入一个无限循环,等待客户的连接请求while(1){sAccept=accept(sListen,(struct sockaddr*)&cli,&iLen);if(sAccept==INVALID_SOCKET){printf("accept() Failed: %d\n",WSAGetLastError());break;}//输出客户IP地址和端口号printf("Accepted clientIP:[%s],port:[%d]\n",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port));//给建立连接的客户发送信息iSend=send(sAccept,buf,sizeof(buf),0);if(iSend==SOCKET_ERROR){printf("send() Failed: %d\n",WSAGetLastError());break;}else if(iSend==0)break;else{printf("send() byte:%d\n",iSend);printf("---------------------------\n");}closesocket(sAccept);}closesocket(sListen);WSACleanup();}实验截图:实验二基于TCP协议的客户/服务器通信程序实验目的:通过实验,使学生熟悉并掌握运用TCP/IP技术进行网络编程的基本知识,加深对课堂教学内容的理解,掌握套接字网络通信编程技术,能够运用VC++为开发工具编程解决网络通信中的实际问题,进行一些简单的网络应用程序设计。

TCP_IP实验报告

TCP_IP实验报告
| Internet Protocol & ICMP | Gateway Level
+-------------------------------+
|
+---------------------------+
| Local Network Protocol | Network Level
+---------------------------+
while(true){
printf("请输入要登陆的IP:");
scanf("%s",&servername);
to.sin_addr.s_addr = inet_addr(servername);
printf("正在连接...\n");
result = connect(client,(struct sockaddr *)&to,sizeof(to));
if(SOCKET_ERROR==result)
{
//连接失败
printf("对不起,无法连接到目标主机!\n");
WSACleanup();
return 0;
} else{
cansend=false;
recv(client,receive,sizeof(receive),0);
printf("*******欢迎消息消息*******\n");
server = socket(AF_INET,SOCK_STREAM,0);
if(server==INVALID_SOCKET )
{
printf("无法创建套接字!\n");
  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命令测试两台路由器的连通性。

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

相关文档
最新文档