网络协议及网络软件框架设计_第1页
网络协议及网络软件框架设计_第2页
网络协议及网络软件框架设计_第3页
网络协议及网络软件框架设计_第4页
网络协议及网络软件框架设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、网络协议及网络软件框架设计网络协议 · TCP/IP (网络控制协议和网际协议) OSI 与 UNIX系统中协议的对应关系图,及不同网络在OSI中的位置  OSI 开放式系统互联参考模型 UNIX系统应用层(Application)-> ->->         ->->Network 网络文件系统(NFS)表示层(Presentation)会话层 (Session)SNMPFTPSMTPTelnet.传输层(Transport)TCP  UDP

2、网络层(Network)ICMP,IGMP,RIPIPARP数据链路层(Data Link)LAN驱动器 LLC            -介质访问控制 MAC CSMA/CD(载波侦听/多路访问)在多个网卡驱动程序间交换WinNT(NDIS)IEEE802.3 Ethernet MACIEEE802.5 Token ring MACFDDI DMAC网络接口卡驱动器物理层(Physical)物理层 链接  TCP/IP基础 · 普通网卡的MAC层接口 网卡内部总线<=&

3、gt;802.3 MAC引擎(Engine)<=>译码器/解码器(Encoder/decoder) & PLL<=>10/100 Base-T网络 & AUI  |   LED逻辑显示 收包过程  MAC从译码/解码器接收到来的数据包,首先检查SFD,检查完毕后,MAC认为SFD后面所有的位为帧数据位.读目的地址DA,把它和已变成的地址过滤中地址比较,如果DA通过了地址过滤层,这个帧会被放入网卡的存储空间.在整个整接收完成后,MAC检查FCS的有效性. · 以太帧格式(Eth

4、ernet Frame Format) 101010.SFD目的地址DA源地址SALength FieldLLC DataPadFCS可多达7字节1字节6字节6字节2字节4字节帧引导头(preamble)帧的长度约64字节-1500字节<=传输方向SFD=Start of Frame DelimiteDA=Destination AddressSA=Source AddressLLC=Logical Link ControlFCS=Frame Check Sequence or Cyclic Redundancy Check(CRC)· SNMP (简单网络管理协议 Simpl

5、e Network Management Protocol) SNMP 用来管理网络设备和获得外围设备信息,属于TCP/IP的一部分,具有协议独立性.利用SNMP, 一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。管理信息库(MIB): 两种类型 MIB-1, MIB-2.MIB是一个树形结构,SNMP协议消息通过遍历MIB树形目录中的节点(OID)来访问网络中的设备.MIB 树的每个节点被指定为一个数字(非负数),同一层的节点用不同的数字区分.这些节点数字由标准组织指定.MIB树中的任何一个节点由其所处的位置来命名.因为同一层的节

6、点数字皆不同,到达某个节点的路由可以由从树根到此节点所经过的节点的数字串来表示.这个数字串称为相应MIB对象的对象标识符(OID).例如, ODI,.2.1.1 代表的对象是从 命名为“1”的根节点开始,后续的下级节点“3”,再下一级是“6”,依此类推.管理信息结构标识(SMI): 定义MIB中行的技术规范.SNMP目前有两种版本 SNMP v1 和 SNMP v2.SNMP协议单元(PDU)实现代理和管理站间的通信,及Server 和 Target的通信.通信类型类型PDU类型传输方向说明0GetRequestServer->Target用来从Target上获得一个或多个

7、SNMP的对象(OID)值1GetNextRequestServer->Target在Target上的MIB中获得下一个SNMP的对象(OID)值2GetResponseTarget->ServerTarget响应ServerSNMP对象请求3SetRequestServer->TargetServer上程序为TargetMIB中的OID赋值4TrapTarget->ServerTarget用它来通知Server有一个特定时间发生目前好的SNMP网络管理软件是惠普公司的 OpenView. · BSD套接字(BSD Sockets) BSD Sockets 使

8、用的最广泛的网络程序编程方法,主要用于应用程序的编写,用于网络上主机与主机之间的相互通信.UNIX,Linux,VxWorks均支持BSD Sockets,Windows的Winsock基本上是来自BSD SocketsSocket分为Stream Sockets和Data Sockets.Stream Sockets是可靠性的双向数据传输用TCP,如HTTP,FTP等Data Sockets是不可靠连接用UDP,如多点广播,DHCP,SNMP,RIP等.· TCP服务器端和一个TCP客户端通信的程序过程   服务器 客户机 创建一个Socket sFd =soc

9、ket (AF_INET, SOCK_STREAM, 0) 把Socket和本机的IP,TCP口绑定 bind (sFd, (struct sockaddr *) &serverAddr, sockAddrSize) 为客户连接创建等待队列 listen (sFd, SERVER_MAX_CONNECTIONS)这里循环等待,如有客户连接请求,则接受客户机连接要求 accept (sFd, (struct sockaddr *) &clientAddr, &sockAddrSize) 接受客户机发来的信息 fioRead (sFd, (char *) &clie

10、ntRequest, sizeof (clientRequest) 给客户机发信息 write (sFd, replyMsg, sizeof (replyMsg) 关闭Socket,通信终止 close (sFd)两个浅蓝色的函数是两个Sockets的握手函数,即在这里建立连接创建一个Socket sFd =socket (AF_INET, SOCK_STREAM, 0) 注意:客户端不需要绑定,因为TCP口是动态的.向服务器端发送连接请求,并在这里等待回应,如收到回应则向下执行 connect (sFd, (struct sockaddr *) &serverAddr, sockAd

11、drSize) 服务器接受连接请求后,读服务器发过来的信息 read(sFd,buffer,20)向服务器发信息 write(sFd, buffer, 20);关闭Sockets close (sFd) · UDP服务器端和一个UDP客户端通信的程序过程   服务器 客户机 创建一个Socket sFd =socket (AF_INET, SOCK_DGRAM, 0) 把Socket和本机的IP,TCP口绑定 bind (sFd, (struct sockaddr *) &serverAddr, sockAddrSize) 不需要创建等待队列 这里循环等待

12、,如有客户连接则接受,并读取客户发来的信息 recvfrom (sFd, (char *) &clientRequest, sizeof (clientRequest), 0, (struct sockaddr *) &clientAddr, &sockAddrSize)关闭Socket,通信终止 close (sFd) 这里不建立连接,只是数据收发<-创建一个Socket sFd =socket (AF_INET, SOCK_DGRAM, 0) 注意:客户端不需要绑定,因为UCP口是动态的.向服务器端发送连接请求和信息,这里不等待服务器的响应 sendto (s

13、Fd, (caddr_t) &myRequest, sizeof (myRequest), 0, (struct sockaddr *) &serverAddr, sockAddrSize) 关闭Sockets close (sFd)UDP广播包程序示例发送UDP广播包,查找本地网络中所有运行SNMP服务设备的IP信息。winsock, win32控制台程序。#define SNMP_PORT 161void SearchIP_In_LAN()  WSADATA wsaData; SOCKET sockListener;SOCKADDR_IN sa

14、UdpCli,saUdpServ;BOOL fBroadcast = TRUE;char sendBuff40= /SNMP查询包内容 'x30','x26','x02','x01','x00', 'x04','x06','x70','x75','x62', 'x6c','x69','x63','xa0','x19', 

15、;'x02','x01','x03','x02','x01', 'x00','x02','x01','x00','x30', 'x0e','x30','x0c','x06','x08', 'x2b','x06','x01','x02','x01',&

16、#160;'x01','x01','x00','x05','x00'  char recvBuff600; int nSize,err,timeoutnum = 1;ULONG HostIpAddr;int rv; int ncount=0; if(WSAStartup(MAKEWORD( 2, 2),&wsaData)!=0) printf("Winsocket start error!n");return; soc

17、kListener=socket(AF_INET,SOCK_DGRAM,0); err = setsockopt ( sockListener,SOL_SOCKET,SO_BROADCAST, (CHAR *)&fBroadcast,sizeof ( BOOL ); if ( SOCKET_ERROR = err ) return ;int TimeOut=10000;err = setsockopt ( sockListener, SOL_SOCKET,SO_RCVTIMEO,(CHAR *) &TimeOut,sizeof (Time

18、Out);if ( SOCKET_ERROR = err ) return ;saUdpCli.sin_family = AF_INET; saUdpCli.sin_port = htons(0); saUdpCli.sin_addr.s_addr = htonl(INADDR_ANY); if(bind( sockListener, (SOCKADDR *)&saUdpCli, sizeof(SOCKADDR_IN)!=0)  printf("Can't bind socket to local port!Progr

19、am stop.n");return;  err = gethostname(recvBuff,sizeof(recvBuff);if ( SOCKET_ERROR = err )return ;struct hostent *hp = gethostbyname(recvBuff);if (!hp) return ;saUdpServ.sin_family = AF_INET; memcpy(&(saUdpServ.sin_addr),hp->h_addr,hp->h_length);HostIpAddr=ntohl(saUdpSe

20、rv.sin_addr.s_addr);saUdpServ.sin_addr.s_addr = htonl ( INADDR_BROADCAST ); saUdpServ.sin_port = htons (SNMP_PORT);nSize = sizeof ( SOCKADDR_IN ); if(rv = sendto ( sockListener,sendBuff,sizeof(sendBuff),0,(SOCKADDR *) &saUdpServ,sizeof ( SOCKADDR_IN )=SOCKET_ERROR)  printf(&q

21、uot;Send error!n");closesocket(*(SOCKET*)sockListener); return;  printf("Send successful!n");do / waiting to receiveif(rv=recvfrom ( sockListener,recvBuff,sizeof(recvBuff),0,(SOCKADDR *) &saUdpCli,&nSize)=SOCKET_ERROR)  if(WSAGetLastError()=WSAETIMEDOU

22、T)if (timeoutnum > 6 ) /Wait for 1 minute.break;elsetimeoutnum+;elseCString Ip(inet_ntoa ( saUdpCli.sin_addr );printf("t IP Adress-> %s ",Ip); while(TRUE);closesocket(*(SOCKET*)sockListener); return ;网络软件设计框图(个人理解,仅供参考) · 设备管理服务软件架构   PC端(Windows NT,UNIX,Novell.平台)管理服务器(HTTP,FTP.Server)服务器程序程序接收用户请求,向下发送从下接收处理结果,发送给用户|v|通信方式:Socket, Namedpipe等|后台核心程序处理请求,接收发送数据SNMP客户<=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论