网络工程案例教学及综合实践.docx

上传人:b****6 文档编号:12984959 上传时间:2023-06-09 格式:DOCX 页数:16 大小:136.20KB
下载 相关 举报
网络工程案例教学及综合实践.docx_第1页
第1页 / 共16页
网络工程案例教学及综合实践.docx_第2页
第2页 / 共16页
网络工程案例教学及综合实践.docx_第3页
第3页 / 共16页
网络工程案例教学及综合实践.docx_第4页
第4页 / 共16页
网络工程案例教学及综合实践.docx_第5页
第5页 / 共16页
网络工程案例教学及综合实践.docx_第6页
第6页 / 共16页
网络工程案例教学及综合实践.docx_第7页
第7页 / 共16页
网络工程案例教学及综合实践.docx_第8页
第8页 / 共16页
网络工程案例教学及综合实践.docx_第9页
第9页 / 共16页
网络工程案例教学及综合实践.docx_第10页
第10页 / 共16页
网络工程案例教学及综合实践.docx_第11页
第11页 / 共16页
网络工程案例教学及综合实践.docx_第12页
第12页 / 共16页
网络工程案例教学及综合实践.docx_第13页
第13页 / 共16页
网络工程案例教学及综合实践.docx_第14页
第14页 / 共16页
网络工程案例教学及综合实践.docx_第15页
第15页 / 共16页
网络工程案例教学及综合实践.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

网络工程案例教学及综合实践.docx

《网络工程案例教学及综合实践.docx》由会员分享,可在线阅读,更多相关《网络工程案例教学及综合实践.docx(16页珍藏版)》请在冰点文库上搜索。

网络工程案例教学及综合实践.docx

网络工程案例教学及综合实践

计算机学院计算机科学与技术专业

《网络工程案例教学及综合实践》报告

(2012/2013学年第一学期)

 

学生姓名:

学生班级:

计算机092002

学生学号:

200920010220

指导教师:

赵俊忠

2013年1月3日

 

第一章计算机网络

1.1计算机网络的定义

计算机网络技术是通信技术与计算机技术相结合的产物。

计算机网络是按照网络协议,将地球上分散的、独立的计算机相互连接的集合。

连接介质可以是电缆、双绞线、光纤、微波、载波或通信卫星。

计算机网络具有共享硬件、软件和数据资源的功能,具有对共享数据资源集中处理及管理和维护的能力。

关于计算机网络的最简单定义是:

一些相互连接的、以共享资源为目的的、自治的计算机的集合。

  

另外,从逻辑功能上看,计算机网络是以传输信息为基础目的,用通信线路将多个计算机连接起来的计算机系统的集合。

一个计算机网络组成包括传输介质和通信设备。

从用户角度看,计算机网络是这样定义的:

存在着一个能为用户自动管理的网络操作系统。

有它调用完成用户所调用的资源,而整个网络像一个大的计算机系统一样,对用户是透明的。

  

一个比较通用的定义是:

利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件及协议实现资源共享和信息传递的系统。

从整体上来说计算机网络就是把分布在不同地理区域的计算机与专门的外部设备用通信线路互联成一个规模大、功能强的系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。

简单来说,计算机网络就是由通信线路互相连接的许多自主工作的计算机构成的集合体。

计算机网络由一组结点和链络组成。

网络中的结点有两类:

转接结点和访问结点。

通信处理机、集中器和终端控制器等属于转接结点,它们在网络中转接和交换传送信息。

主计算机和终端等是访问结点,它们是信息传送的源结点和目标结点。

计算机网络技术实现了资源共享。

人们可以在办公室、家里或其他任何地方,访问查询网上的任何资源,极大地提高了工作效率,促进了办公自动化、工厂自动化、家庭自动化的发展。

第二章计算机网络体系机构

2.1网络层次模型

层次结构的要点:

1)除了在物理媒体上进行的是实通信之外,其余各对等实体间进行的都是虚通信。

2)对等层的虚通信必须遵循该层的协议。

3)n层的虚通信是通过n/n-1层间接口处n-1层提供的服务以及n-1层的通信(通常也是虚通信)来实现的。

层次结构划分的原则:

1)每层的功能应是明确的,并且是相互独立的。

当某一层的具体实现方法更新时,只要保持上、下层的接口不变,便不会对邻居产生影响。

2)层间接口必须清晰,跨越接口的信息量应尽可能少。

3)层数应适中。

若层数太少,则造成每一层的协议太复杂;若层数太多,则体系结构过于复杂,使描述和实现各层功能变得困难。

网络的体系结构的特点是:

1)以功能作为划分层次的基础。

2)第n层的实体在实现自身定义的功能时,只能使用第n-1层提供的服务。

3)第n层在向第n+1层提供的服务时,此服务不仅包含第n层本身的功能,还包含由下层服务提供的功能。

4)仅在相邻层间有接口,且所提供服务的具体实现细节对上一层完全屏蔽。

2.2数据的封装

数据从源主机传输到目标主机之前,原始数据首先在源主机方对数据进行封装后再进行传输,被封装的数据在到达目标主机后,解除封装恢复原始数据信息。

数据封装是将OSI模型中不同层次的协议信息附加到被传输的数据上,因此当数据在OSI模型中从高层向底层传递时,会在所传输的数据上添加数据报头、数据报尾和其它信息。

也就是数据从应用层箱屋里层的传输过程中,在数据经过的每一层添加上该层信息后再向下层传输。

数据在源主机被封装并传输到目标主机后,需要执行解封装才能将数据恢复成原始信息。

解封装是从源主机来的被封装数据在目标主机的OSI模型的对等层将添加的信息剥离,然后向上一层传输的过程。

数据按层次模型被传输的过程中,每层不断添加本层的控制信息,在传输层添加本层的控制信息后形成的数据格式被称为“数据报文”(Message);在网络层添加本层的控制信息后形成的数据格式被称为“数据分组”(Packet);在数据链路层添加本层的报头和报尾后形成的数据格式被称为“数据帧”(Frame)。

 

第三章网络通信协议

下面将简单介绍下这次设计我们主要应用到的通信协议。

TCP/IP的体系结构

TCP/IP(TransmissionControlProtocol/InternetProtocol)指传输控制协议/网际协议。

TCP/IP体系共有4个层次:

应用层、传输层、互联层、主机-网络接口层。

TCP/IP的最高层是应用层。

在这层中有许多著名协议,如远程登陆协议Telnet,文件传输协议FTP,简单邮件传送协议SMTP等。

在往下的一层是TCP/IP的传输层,也叫主机到主机层。

这一层可使用两种不同的协议:

一种是面向连接的传输控制协议(TCP,TransmissionControlProtocol),另一种是无连接的用户数据报协议(UDP,UserDataProtocol)。

传输层传送的数据单位是报文(message)或数据流(stream)。

报文也常称为报文段(segment)。

传输层下面的是TCP/IP的互联层,其主要的协议就是无连接的网络互联协议(IP,InternetProtocol)。

该层传送的数据单位是分组(packet)。

与IP协议配合使用的还有三个协议,那就是Internet控制报文协议(ICMP,InternetControlMessageProtocol)、地址解析协议(ARP,AddressResolutionProtocol)和逆地址解析协议(RARP,ReverseAddressResolutionProtocol)。

3.1IP协议

该层定义了正式的IP数据报格式和协议,即IP协议(InternetProtocol)。

网际层发送数据报、处理路由选择、拥塞控制等问题。

IP协议是互联层的主要协议。

它的主要功能是:

无连接数据报传送、数据报路由选择和差错控制。

IP将报文传送到目的主机后,不管传送正确与否都不进行检验,不回送确认,也不保证分组的正确顺序,这些功能都由TCP完成。

3.2TCP协议

TCP位于IP之上的传输层,提供面向连接的可靠的服务。

有确认、超时重发、流量控制和拥塞控制等各种可靠性技术。

TCP实现数据可靠传输。

自动检测丢失的数据报,TCP软件在发送数据的同时,启动一个定时器,当接收端的在定时的时间内未发回‘确认’信号,TCP认为其丢失而重发一次.且超时值随目的主机与源主机的距离而自动的调整;TCP对每个数据报的数据加以标记.接收方可用已收到的数据报标记与到来的进行比较,有重复可丢弃。

图3-1TCP编程流程

3.3UDP协议

是一种无连接的协议。

在OSI模型中,在第四层——传输层,处于IP协议的上一层。

UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

UDP用来支持那些需要在计算机之间传输数据的网络应用。

包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。

UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

图3-2UDP编程流程

 

第四章程序设计

基于以上对计算机网络通信的了解,我们将应用这些协议在编程工具中的库函数,来对本次程序进行实现设计。

在设计之前,我对实现功能进行分析,需要两方面技术来完成消息通信,首先我要实现对本机IP及端口的监听,这样就能知道有哪台主机要和本机进行通信连接;其次,要实现另一端主机对本机的通信连接,以及消息的传递。

当然,最主要的是要应用到SOCKET技术,通过这个接口调用TCP/IP协议的各功能函数才得以实现消息之间的通信。

本次程序设计的环境:

编程语言:

C语言

编程环境:

Linux系统

确定我们本次程序设计要实现的功能:

本次程序设计主要实现的功能是两台计算机之间进行数据通信,对此我将要开始设计模拟在同一台计算机中两个进程直接进行数据消息通信(以终端模式)。

下面是本次程序设计的主要代码:

如下是服务器端:

#include"/home/jia/jia/head.h"

#include"list.h"

#defineBOCKLOG20

#definePORT8010

#defineIP"192.168.54.54"

#defineMAXSIZE128

intLEN=sizeof(structsockaddr_in);

void*run(void*d);

intsfd,cfd;

structsockaddr_insaddr,caddr;

chardata[MAXSIZE];

pthread_ttid;

//套接字的初始化

voidinit_socket(void)

{

if((sfd=socket(AF_INET,SOCK_STREAM,0))==-1)

{

perror("Createsocketerror!

\n");

exit(0);

}

saddr.sin_family=AF_INET;

saddr.sin_port=htons(PORT);

saddr.sin_addr.s_addr=inet_addr(IP);

if(bind(sfd,(structsockaddr*)&saddr,LEN)==-1)

{

perror("binderror!

\n");

exit(0);

}

if(listen(sfd,BOCKLOG)==-1)

{

perror("listenporterror!

\n");

exit(0);

}

}

//接受客户端连接

voidaccept_socket()

{

fflush(stdout);

printf("ServerisOK,waitingforconnection......\n");

while

(1)

{

if((cfd=accept(sfd,(structsockaddr*)&caddr,&LEN))==-1)

{

perror("Accepterror!

\n");

exit(0);

}

recv(cfd,data,MAXSIZE,0);

Node*p=(Node*)malloc(sizeof(Node));

p->fd=cfd;

p->name=(char*)malloc(MAXSIZE);

strcpy(p->name,data);

strcat(p->name,"发送消息:

");

p->next=NULL;

add_list(p);

memset(data,0,MAXSIZE);

pthread_create(&tid,0,run,&cfd);

}

}

//处理每个客户端的数据的收发

void*run(void*d)

{

intclient_fd=*((int*)d);

send(client_fd,"Welcometochat!

",MAXSIZE,0);

intflag=1;

intr;

Node*p;

while(flag)

{

memset(data,0,MAXSIZE);

if((r=recv(client_fd,data,MAXSIZE,0))==-1)

{

perror("recverror!

\n");

exit(0);

}

elseif(r==0)

{

strcpy(data,"XXXquitthechat");

del_list(client_fd);

flag=0;

}

//printf("%d",r);

p=head;

while(p->next)

{

p=p->next;

char*t1=malloc(100);

time_tt;

t=time(NULL);

t1=ctime(&t);

strcat(p->name,t1);

if(p->fd!

=client_fd)

{

char*name1=malloc(MAXSIZE);

strcpy(name1,p->name);

strcat(p->name,t1);

send(p->fd,p->name,MAXSIZE,0);

send(p->fd,data,MAXSIZE,0);

strcpy(p->name,name1);

}

}

}

pthread_exit(0);

}

 

//服务端程序的主函数

intmain()

{

init_list();

init_socket();

accept_socket();

close(sfd);

destroy_list();

return0;

}

如下是客户端程序:

#include"/home/jia/jia/head.h"

#include"list.h"

#defineIP"192.168.54.54"

#definePORT8010

#defineMAXSIZE1024

charNAME[]="王佳宾";

intfd;

intlen=sizeof(structsockaddr_in);

pthread_ttid;

chardata[MAXSIZE];

structsockaddr_inaddr;

void*run(void*arg);

voidinit_socket()//创建套接字

{

if((fd=socket(AF_INET,SOCK_STREAM,0))==-1)

{

perror("createsocketerror");

exit(0);

}

}

voidconn_socket()

{

addr.sin_family=AF_INET;

addr.sin_port=htons(PORT);

addr.sin_addr.s_addr=inet_addr(IP);

memset(addr.sin_zero,0,8);

if(connect(fd,(structsockaddr*)&addr,len)==-1)

{

perror("connectservererror");

exit(0);

}

send(fd,NAME,MAXSIZE,0);

}

voidrecv_socket()

{

pthread_create(&tid,NULL,run,NULL);

}

voidsend_socket()//发送数据

{

charinput[MAXSIZE];

while

(1)

{

intsum;

memset(input,0,MAXSIZE);

read(0,input,MAXSIZE);

sum=strlen(input)-1;

//system("date");

fflush(stdout);

send(fd,input,sum,0);

}

}

void*run(void*arg)//接受连接

{

while

(1)

{

memset(data,0,MAXSIZE);

if(recv(fd,data,MAXSIZE,0)<=0)

{

pthread_exit(0);

}

printf("%s\n",data);

}

}

 

intmain()

{

init_socket();

conn_socket();

recv_socket();

send_socket();

//return0;

}

实验截图:

经过不断的调试测试,最终得到以上功能实现,基本完成此次程序功能实现。

设计小结

这次课程设计很具有挑战性,涉及了计算机网络通信方面的很多知识,使我更多的接触到了关于通信方面的实践设计,加强了自己掌握和理解计算机网络通信原理的能力,培养了自己的实际动手能力与综合设计能力,并提高了自己的技术素质。

基本达到了了解计算机网络通信和实现的一般任务,明确了计算机网络通信设计与组建的基本原则,掌握了计算机网络通信编程的通用方法,加深了对网络协议体系、局域网技术、网络互联技术与网络应用服务等理论知识的理解。

在本次设计的过程中,不断的发现问题,通过查阅书本资料以及网上的一些资源,一步步实现了想要实现的功能,收获很多。

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2