網(wǎng)絡(luò)協(xié)議及網(wǎng)絡(luò)軟件框架設(shè)計_第1頁
網(wǎng)絡(luò)協(xié)議及網(wǎng)絡(luò)軟件框架設(shè)計_第2頁
網(wǎng)絡(luò)協(xié)議及網(wǎng)絡(luò)軟件框架設(shè)計_第3頁
網(wǎng)絡(luò)協(xié)議及網(wǎng)絡(luò)軟件框架設(shè)計_第4頁
網(wǎng)絡(luò)協(xié)議及網(wǎng)絡(luò)軟件框架設(shè)計_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、網(wǎng)絡(luò)協(xié)議及網(wǎng)絡(luò)軟件框架設(shè)計網(wǎng)絡(luò)協(xié)議 · TCP/IP (網(wǎng)絡(luò)控制協(xié)議和網(wǎng)際協(xié)議) OSI 與 UNIX系統(tǒng)中協(xié)議的對應關(guān)系圖,及不同網(wǎng)絡(luò)在OSI中的位置  OSI 開放式系統(tǒng)互聯(lián)參考模型 UNIX系統(tǒng)應用層(Application)-> ->->         ->->Network 網(wǎng)絡(luò)文件系統(tǒng)(NFS)表示層(Presentation)會話層 (Session)SNMPFTPSMTPTelnet.傳輸層(Transport)TCP  UDP

2、網(wǎng)絡(luò)層(Network)ICMP,IGMP,RIPIPARP數(shù)據(jù)鏈路層(Data Link)LAN驅(qū)動器 LLC            -介質(zhì)訪問控制 MAC CSMA/CD(載波偵聽/多路訪問)在多個網(wǎng)卡驅(qū)動程序間交換WinNT(NDIS)IEEE802.3 Ethernet MACIEEE802.5 Token ring MACFDDI DMAC網(wǎng)絡(luò)接口卡驅(qū)動器物理層(Physical)物理層 鏈接  TCP/IP基礎(chǔ) · 普通網(wǎng)卡的MAC層接口 網(wǎng)卡內(nèi)部總線<=&

3、gt;802.3 MAC引擎(Engine)<=>譯碼器/解碼器(Encoder/decoder) & PLL<=>10/100 Base-T網(wǎng)絡(luò) & AUI  |   LED邏輯顯示 收包過程  MAC從譯碼/解碼器接收到來的數(shù)據(jù)包,首先檢查SFD,檢查完畢后,MAC認為SFD后面所有的位為幀數(shù)據(jù)位.讀目的地址DA,把它和已變成的地址過濾中地址比較,如果DA通過了地址過濾層,這個幀會被放入網(wǎng)卡的存儲空間.在整個整接收完成后,MAC檢查FCS的有效性. · 以太幀格式(Eth

4、ernet Frame Format) 101010.SFD目的地址DA源地址SALength FieldLLC DataPadFCS可多達7字節(jié)1字節(jié)6字節(jié)6字節(jié)2字節(jié)4字節(jié)幀引導頭(preamble)幀的長度約64字節(jié)-1500字節(jié)<=傳輸方向SFD=Start of Frame DelimiteDA=Destination AddressSA=Source AddressLLC=Logical Link ControlFCS=Frame Check Sequence or Cyclic Redundancy Check(CRC)· SNMP (簡單網(wǎng)絡(luò)管理協(xié)議 Simpl

5、e Network Management Protocol) SNMP 用來管理網(wǎng)絡(luò)設(shè)備和獲得外圍設(shè)備信息,屬于TCP/IP的一部分,具有協(xié)議獨立性.利用SNMP, 一個管理工作站可以遠程管理所有支持這種協(xié)議的網(wǎng)絡(luò)設(shè)備,包括監(jiān)視網(wǎng)絡(luò)狀態(tài)、修改網(wǎng)絡(luò)設(shè)備配置、接收網(wǎng)絡(luò)事件警告等。管理信息庫(MIB): 兩種類型 MIB-1, MIB-2.MIB是一個樹形結(jié)構(gòu),SNMP協(xié)議消息通過遍歷MIB樹形目錄中的節(jié)點(OID)來訪問網(wǎng)絡(luò)中的設(shè)備.MIB 樹的每個節(jié)點被指定為一個數(shù)字(非負數(shù)),同一層的節(jié)點用不同的數(shù)字區(qū)分.這些節(jié)點數(shù)字由標準組織指定.MIB樹中的任何一個節(jié)點由其所處的位置來命名.因為同一層的節(jié)

6、點數(shù)字皆不同,到達某個節(jié)點的路由可以由從樹根到此節(jié)點所經(jīng)過的節(jié)點的數(shù)字串來表示.這個數(shù)字串稱為相應MIB對象的對象標識符(OID).例如, ODI,.2.1.1 代表的對象是從 命名為“1”的根節(jié)點開始,后續(xù)的下級節(jié)點“3”,再下一級是“6”,依此類推.管理信息結(jié)構(gòu)標識(SMI): 定義MIB中行的技術(shù)規(guī)范.SNMP目前有兩種版本 SNMP v1 和 SNMP v2.SNMP協(xié)議單元(PDU)實現(xiàn)代理和管理站間的通信,及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有一個特定時間發(fā)生目前好的SNMP網(wǎng)絡(luò)管理軟件是惠普公司的 OpenView. · BSD套接字(BSD Sockets) BSD Sockets 使

8、用的最廣泛的網(wǎng)絡(luò)程序編程方法,主要用于應用程序的編寫,用于網(wǎng)絡(luò)上主機與主機之間的相互通信.UNIX,Linux,VxWorks均支持BSD Sockets,Windows的Winsock基本上是來自BSD SocketsSocket分為Stream Sockets和Data Sockets.Stream Sockets是可靠性的雙向數(shù)據(jù)傳輸用TCP,如HTTP,FTP等Data Sockets是不可靠連接用UDP,如多點廣播,DHCP,SNMP,RIP等.· TCP服務器端和一個TCP客戶端通信的程序過程   服務器 客戶機 創(chuàng)建一個Socket sFd =soc

9、ket (AF_INET, SOCK_STREAM, 0) 把Socket和本機的IP,TCP口綁定 bind (sFd, (struct sockaddr *) &serverAddr, sockAddrSize) 為客戶連接創(chuàng)建等待隊列 listen (sFd, SERVER_MAX_CONNECTIONS)這里循環(huán)等待,如有客戶連接請求,則接受客戶機連接要求 accept (sFd, (struct sockaddr *) &clientAddr, &sockAddrSize) 接受客戶機發(fā)來的信息 fioRead (sFd, (char *) &clie

10、ntRequest, sizeof (clientRequest) 給客戶機發(fā)信息 write (sFd, replyMsg, sizeof (replyMsg) 關(guān)閉Socket,通信終止 close (sFd)兩個淺藍色的函數(shù)是兩個Sockets的握手函數(shù),即在這里建立連接創(chuàng)建一個Socket sFd =socket (AF_INET, SOCK_STREAM, 0) 注意:客戶端不需要綁定,因為TCP口是動態(tài)的.向服務器端發(fā)送連接請求,并在這里等待回應,如收到回應則向下執(zhí)行 connect (sFd, (struct sockaddr *) &serverAddr, sockAd

11、drSize) 服務器接受連接請求后,讀服務器發(fā)過來的信息 read(sFd,buffer,20)向服務器發(fā)信息 write(sFd, buffer, 20);關(guān)閉Sockets close (sFd) · UDP服務器端和一個UDP客戶端通信的程序過程   服務器 客戶機 創(chuàng)建一個Socket sFd =socket (AF_INET, SOCK_DGRAM, 0) 把Socket和本機的IP,TCP口綁定 bind (sFd, (struct sockaddr *) &serverAddr, sockAddrSize) 不需要創(chuàng)建等待隊列 這里循環(huán)等待

12、,如有客戶連接則接受,并讀取客戶發(fā)來的信息 recvfrom (sFd, (char *) &clientRequest, sizeof (clientRequest), 0, (struct sockaddr *) &clientAddr, &sockAddrSize)關(guān)閉Socket,通信終止 close (sFd) 這里不建立連接,只是數(shù)據(jù)收發(fā)<-創(chuàng)建一個Socket sFd =socket (AF_INET, SOCK_DGRAM, 0) 注意:客戶端不需要綁定,因為UCP口是動態(tài)的.向服務器端發(fā)送連接請求和信息,這里不等待服務器的響應 sendto (s

13、Fd, (caddr_t) &myRequest, sizeof (myRequest), 0, (struct sockaddr *) &serverAddr, sockAddrSize) 關(guān)閉Sockets close (sFd)UDP廣播包程序示例發(fā)送UDP廣播包,查找本地網(wǎng)絡(luò)中所有運行SNMP服務設(shè)備的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查詢包內(nèi)容 '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 ;網(wǎng)絡(luò)軟件設(shè)計框圖(個人理解,僅供參考) · 設(shè)備管理服務軟件架構(gòu)   PC端(Windows NT,UNIX,Novell.平臺)管理服務器(HTTP,FTP.Server)服務器程序程序接收用戶請求,向下發(fā)送從下接收處理結(jié)果,發(fā)送給用戶|v|通信方式:Socket, Namedpipe等|后臺核心程序處理請求,接收發(fā)送數(shù)據(jù)SNMP客戶<=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論