精华内容
下载资源
问答
  • 网络协议软件

    2014-03-05 11:00:43
    网络协议软件 网络协议是网络通信的数据传输规范,网络协议软件是用于实现网络协议功能的软件。 目前, 典型的网络协议软件有TCP/IP协议、IPX/SPX协议、IEEE802标准协议系列等。其中, TCP/IP是当前异种网络互连...

    网络协议软件

    网络协议是网络通信的数据传输规范,网络协议软件是用于实现网络协议功能的软件。

    目前, 典型的网络协议软件有TCP/IP协议、IPX/SPX协议、IEEE802标准协议系列等。其中, TCP/IP是当前异种网络互连应用最为广泛的网络协议软件。

    3、网络管理软件

    网络管理软件是用来对网络资源进行管理以及对网络进行维护的软件,如性能管理、配置管理、故障管理、记费管理、安全管理、网络运行状态监视与统计等。

    展开全文
  • 本文目的是为了学习如何编译安装开源软件Quagga,并修改下OSPF模块的vty登录端口号,借此熟悉下,它是一款网络协议软件,支持OSPF、BGP、RIP等路由协议,我工作中主要接触到的是OSPF模块。 1、下载Quagga  我...
    本文目的是为了学习如何编译安装开源软件Quagga,并修改下OSPF模块的vty登录端口号,借此熟悉下,它是一款网络协议软件,支持OSPF、BGP、RIP等路由协议,我工作中主要接触到的是OSPF模块。
    

    1、下载Quagga
        我使用的版本是0.99.20,下载地址http://download.savannah.gnu.org/releases/quagga/quagga-0.99.20.tar.gz
       
    wget http://download.savannah.gnu.org/releases/quagga/quagga-0.99.20.tar.gz

    2、修改ospfd vty端口号
        a)解压源码到/usc/local/src/
    tar -xvzf quagga-0.99.20.tar.gz -C /usr/local/src/
        b)进入ospfd目前,修改ospfd.h文件的宏“OSPF_VTY_PORT”,默认是2604,改成自己喜欢的数字,比如2609好了
           
    cd /usr/local/src/quagga-0.99.20/ospfd
    [root@siwen ospfd]# pwd
    /usr/local/src/quagga-0.99.20/ospfd
    [root@siwen ospfd]# ls -lh ospfd.h
    -rw-rw-r-- 1 jian.du devops 21K Jul 13 22:42 ospfd.h
        修改完后应该是这样子:
    [root@siwen ospfd]# cat ospfd.h |grep "OSPF_VTY_PORT"
    #define OSPF_VTY_PORT          2609

    3、编译安装
        我们在configure的时候可以配置各种参数,来修改一些属性和安装路径,参数可以在源代码根目录通过“./configure -h”查看;

        比如“prefix”可以修改程序安装路径,配置文件默认是安装在程序安装目录“prefix”下的etc目录,当然你想放到"/etc/quagga"下也可以,通过“sysconfdir”来实现;

        这次我就只修改"prefix",将程序安装到"/usr/local/quagga"下:
    ./configure --prefix=/usr/local/quagga
    make -j 16 && make install
        TIP:make -j 16,表示使用16个进程来工作,编译是非常耗CPU的,自然就耗时了,笔者的Server是16核的,所以用16个进程一起来工作会编译的快一些;

    4、查看安装成功的程序
        如果你足够幸运,那么编译一次就通过了,如果报错请自己检查错误内容,将需要的依赖安装上;
       
        下面看下安装成功的目录结构:
    [root@siwen quagga-0.99.20]# cd /usr/local/quagga
    [root@siwen quagga]# ls
    etc  include  lib  sbin  share
        可以看到有5个目录:
            etc:        配置文件存放路径,假如你在configure的时候没改变配置文件路径的话;
            include:quagga定义的一些头文件;
            lib:        quagga的库函数存放目录;
            sbin:     执行程序所在;
            share:   一些文档和帮助信息;
        其中我们最关心的也就是“etc”和"sbin"

    5、设置配置文件,并以root身份启动zebra和ospfd
       TIP:zebra是Quagga用于和其他路由协议传递路由信息,并修改内核路由的模块;

        默认程序etc目录下有配置参考,我们只需要将其拷贝一份到该目录下即可运行程序:
    cd /usr/local/quagga/etc
    cp ospfd.conf.sample ospfd.conf
    cp zebra.conf.sample zebra.conf
    ./zebra -d -uroot
    ./ospfd -d -uroot

    6、查看ospfd进程和zebra进程,并验证ospfd vty接口是否被改为2609:
    [root@siwen etc]# netstat -ntpa| grep -E "zebra|ospfd"
    tcp        0      0 0.0.0.0:2601                0.0.0.0:*                   LISTEN      26953/./zebra      
    tcp        0      0 0.0.0.0:2609                0.0.0.0:*                   LISTEN      26955/./ospfd
       
        可以看到,osfpd进程的端口号已经是2609,telnet上去试试,密码zebra:
    [root@siwen etc]# telnet 127.0.0.1 2609
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.

    Hello, this is Quagga (version 0.99.20).
    Copyright 1996-2005 Kunihiro Ishiguro, et al.


    User Access Verification

    Password:
    ospfd> en
    ospfd> enable
    ospfd# show ip rou
    ospfd# show ip os
    ospfd# show ip ospf rou
    ospfd# show ip ospf route
    OSPF Routing Process not enabled
    ospfd# exit
    Connection closed by foreign host.
    You have new mail in /var/spool/mail/root
    展开全文
  • >>Drew的主页--->网络协议 主页 VxWorks ARM ...网络协议 ...网络协议及网络软件框架设计   网络协议   TCP/IP (网络控制协议和网际协议) OSI 与 UNIX系统中协

    >>Drew的主页--->网络协议

     

    网络协议及网络软件框架设计

     

    网络协议

     

    • TCP/IP (网络控制协议和网际协议)

    OSIUNIX系统中协议的对应关系图,及不同网络在OSI中的位置

      OSI 开放式系统互联参考模型   UNIX系统
    应用层(Application) ------>

    ------>

    ------>

            

     

    ------>

     

    ------>

    Network 网络文件系统(NFS)

     
    表示层(Presentation)
    会话层 (Session) SNMP FTP SMTP Telnet..
    传输层(Transport)

    TCP 

    UDP

    网络层(Network)
    ICMP,IGMP,RIP

    IP

    ARP

    数据链路层(Data Link)

    LAN驱动器 LLC            -----------------------介质访问控制 MAC CSMA/CD(载波侦听/多路访问)

    在多个网卡驱动程序间交换
    WinNT(NDIS) IEEE802.3 Ethernet MAC IEEE802.5 Token ring MAC FDDI DMAC 网络接口卡驱动器
    物理层(Physical) 物理层  

     

    链接  TCP/IP基础

     

    • 普通网卡的MAC层接口
    网卡内部总线
    <========>

    802.3 MAC引擎(Engine)

    <====>

    译码器/解码器(Encoder/decoder) & PLL

    <========>

    10/100 Base-T网络 & AUI

       

    ||

         

    LED逻辑显示

     

    收包过程

      MAC从译码/解码器接收到来的数据包,首先检查SFD,检查完毕后,MAC认为SFD后面所有的位为帧数据位.读目的地址DA,把它和已变成的地址过滤中地址比较,如果DA通过了地址过滤层,这个帧会被放入网卡的存储空间.在整个整接收完成后,MAC检查FCS的有效性.

     

    • 以太帧格式(Ethernet Frame Format)

     

    101010... SFD 目的地址DA 源地址SA Length Field LLC Data Pad FCS
    可多达7字节 1字节 6字节 6字节 2字节     4字节
    帧引导头(preamble) 帧的长度约64字节-----1500字节

    <========传输方向

    SFD=Start of Frame Delimite
    DA=Destination Address
    SA=Source Address
    LLC=Logical Link Control
    FCS=Frame Check Sequence or Cyclic Redundancy Check(CRC)

     

    • SNMP (简单网络管理协议 Simple Network Management Protocol)

    SNMP

    用来管理网络设备和获得外围设备信息,属于TCP/IP的一部分,具有协议独立性.利用SNMP, 一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。

    管理信息库(MIB):

    两种类型 MIB-1, MIB-2.MIB是一个树形结构,SNMP协议消息通过遍历MIB树形目录中的节点(OID)来访问网络中的设备.

    MIB 树的每个节点被指定为一个数字(非负数),同一层的节点用不同的数字区分.这些节点数字由标准组织指定.MIB树中的任何一个节点由其所处的位置来命名.因为同一层的节点数字皆不同,到达某个节点的路由可以由从树根到此节点所经过的节点的数字串来表示.这个数字串称为相应MIB对象的对象标识符(OID).

    例如, ODI,1.3.6.1.2.1.1 代表的对象是从 命名为“1”的根节点开始,后续的下级节点“3”,再下一级是“6”,依此类推.

    管理信息结构标识(SMI): 定义MIB中行的技术规范.

    SNMP目前有两种版本 SNMP v1 和 SNMP v2.

     

    SNMP协议单元(PDU)实现代理和管理站间的通信,及Server 和 Target的通信.

    通信类型

    类型

    PDU类型

    传输方向

    说明

    0 GetRequest Server--->Target 用来从Target上获得一个或多个SNMP的对象(OID)值
    1 GetNextRequest Server--->Target 在Target上的MIB中获得下一个SNMP的对象(OID)值
    2 GetResponse Target---->Server Target响应ServerSNMP对象请求
    3 SetRequest Server--->Target Server上程序为TargetMIB中的OID赋值
    4 Trap Target---->Server Target用它来通知Server有一个特定时间发生

    目前好的SNMP网络管理软件是惠普公司的 OpenView.

     

    • BSD套接字(BSD Sockets)

     

    BSD Sockets 使用的最广泛的网络程序编程方法,主要用于应用程序的编写,用于网络上主机与主机之间的相互通信.

    UNIX,Linux,VxWorks均支持BSD Sockets,Windows的Winsock基本上是来自BSD Sockets

    Socket分为Stream Sockets和Data Sockets.

    Stream Sockets是可靠性的双向数据传输用TCP,如HTTP,FTP等

    Data Sockets是不可靠连接用UDP,如多点广播,DHCP,SNMP,RIP等.

     

    • TCP服务器端和一个TCP客户端通信的程序过程

      服务器

     

    客户机

     
    创建一个Socket

    sFd =socket (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 *) &clientRequest, 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, sockAddrSize)

    服务器接受连接请求后,读服务器发过来的信息

    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)

    不需要创建等待队列

     

    这里循环等待,如有客户连接则接受,并读取客户发来的信息

    recvfrom (sFd, (char *) &clientRequest, sizeof (clientRequest), 0, (struct sockaddr *) &clientAddr, &sockAddrSize)

    关闭Socket,通信终止

    close (sFd)

     

     

     

     

     

     

    这里不建立连接,只是数据收发

    <----------

     

    创建一个Socket

    sFd =socket (AF_INET, SOCK_DGRAM, 0)

    注意:客户端不需要绑定,因为UCP口是动态的.
    向服务器端发送连接请求和信息,这里不等待服务器的响应

    sendto (sFd, (caddr_t) &myRequest, sizeof (myRequest), 0, (struct sockaddr *) &serverAddr, sockAddrSize)

    关闭Sockets

    close (sFd)

    UDP广播包程序示例


    发送UDP广播包,查找本地网络中所有运行SNMP服务设备的IP信息。
    winsock, win32控制台程序。

    #define SNMP_PORT 161
    void SearchIP_In_LAN() 

    WSADATA wsaData; 
    SOCKET sockListener;
    SOCKADDR_IN saUdpCli,saUdpServ;
    BOOL fBroadcast = TRUE;

    char sendBuff[40]= //SNMP查询包内容

    '\x30','\x26','\x02','\x01','\x00', 
    '\x04','\x06','\x70','\x75','\x62', 
    '\x6c','\x69','\x63','\xa0','\x19', 
    '\x02','\x01','\x03','\x02','\x01', 
    '\x00','\x02','\x01','\x00','\x30', 
    '\x0e','\x30','\x0c','\x06','\x08', 
    '\x2b','\x06','\x01','\x02','\x01', 
    '\x01','\x01','\x00','\x05','\x00' 
    }; 
    char recvBuff[600]; 
    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; 
    }

    sockListener=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 (TimeOut)
    );
    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!Program 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(saUdpServ.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("Send error!\n");
    closesocket(*((SOCKET*)sockListener)); 
    return; 

    printf("Send successful!\n");
    do // waiting to receive
    {
    if((rv=recvfrom ( sockListener,
    recvBuff,sizeof(recvBuff),0,
    (SOCKADDR *) &saUdpCli,&nSize))==SOCKET_ERROR) 

    if(WSAGetLastError()==WSAETIMEDOUT)
    {
    if (timeoutnum > 6 ) //Wait for 1 minute.
    break;
    else
    timeoutnum++;
    }
    }
    else
    {
    CString 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客户

    <=============>
    Internet(HTTP,..协议)

    如用户PC缺少相应驱动,服务器会动态为用户PC加载安装

     

     

     
     
     
     

     

     

     

     
     

    Internet
    (SNMP协议)

    <=============>

     

    终端PC用户
    (IE浏览器...)

     

     

     

     

     

     

     

     

    网络设备
    (嵌入式操作系统)

    SNMP服务器

     

     

    • 信息家电(IA)的架构

     

     

    网络设备(嵌入式操作系统平台)

    嵌入式服务器(Embedded Web Server, HTTP, FTP... )

     

    服务器程序

    程序接收用户请求,向下发送

    从下接收处理结果,发送给用户

    |
    |
    |
    v

    ^
    |
    |
    |

    通信方式: Socket, Namedpipe等

    ||
    ||
    ||

    后台核心程序

    处理请求,接收发送数据

    ||

    嵌入式系统SNMP接口

    ||

    设备SNMP(MIB)

    <===========>
    Internet(HTTP,..协议)

     

     

     

     

     

     

     
     
     
     

     

     

     

     
     
     
     

     

    终端PC用户
    (IE浏览器...)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    • 无线移动通信的架构

     

     

    基站无线发送接收装置(无线通信协议)

    接收端处理软件

    程序接收处理数据包头,实质符合Internet传输的某种协议(如X.25),放到Internet上 从下接收数据包,加上自自己无线通信协议的包头,无线发出给用户终端

    ||
    ||

    通信方式:Internet(双向)

    X.25,ATM....等协议

    ||
    ||

    网关(GATEWAY)

    处理数据包的内容,相关内容读取存放数据库

    ||
    ||

    数据库

    ||
    ||

    HTTP协议

    对数据库操作,添加,删除,打印...
    终端PC(IE浏览器)

    <============>
    无线通信协议
    (Mobitex或DataTAC,..协议)

     

     

     

     

     

     

     

     

     

     
     
     
     

     

     

     

     
     
     
     

     

    移动通信设备
    (嵌入式操作系统)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 网络协议及网络软件框架设计   网络协议   TCP/IP (网络控制协议和网际协议) OSI 与 UNIX系统中协议的对应关系图,及不同网络在OSI中的位置  OSI 开放式系统互联参考模型   UNIX系统
     
    

    网络协议及网络软件框架设计

     

    网络协议

     

    • TCP/IP (网络控制协议和网际协议)

    OSIUNIX系统中协议的对应关系图,及不同网络在OSI中的位置

      OSI 开放式系统互联参考模型   UNIX系统
    应用层(Application) ------>

    ------>

    ------>

            

     

    ------>

     

    ------>

    Network 网络文件系统(NFS)

     
    表示层(Presentation)
    会话层 (Session) SNMP FTP SMTP Telnet..
    传输层(Transport)

    TCP 

    UDP

    网络层(Network)
    ICMP,IGMP,RIP

    IP

    ARP

    数据链路层(Data Link)

    LAN驱动器 LLC            -----------------------介质访问控制 MAC CSMA/CD(载波侦听/多路访问)

    在多个网卡驱动程序间交换
    WinNT(NDIS) IEEE802.3 Ethernet MAC IEEE802.5 Token ring MAC FDDI DMAC 网络接口卡驱动器
    物理层(Physical) 物理层  

     

    链接  TCP/IP基础

     

    • 普通网卡的MAC层接口
    网卡内部总线
    <========>

    802.3 MAC引擎(Engine)

    <====>

    译码器/解码器(Encoder/decoder) & PLL

    <========>

    10/100 Base-T网络 & AUI

       

    ||

         

    LED逻辑显示

     

    收包过程

      MAC从译码/解码器接收到来的数据包,首先检查SFD,检查完毕后,MAC认为SFD后面所有的位为帧数据位.读目的地址DA,把它和已变成的地址过滤中地址比较,如果DA通过了地址过滤层,这个帧会被放入网卡的存储空间.在整个整接收完成后,MAC检查FCS的有效性.

     

    • 以太帧格式(Ethernet Frame Format)

     

    101010... SFD 目的地址DA 源地址SA Length Field LLC Data Pad FCS
    可多达7字节 1字节 6字节 6字节 2字节     4字节
    帧引导头(preamble) 帧的长度约64字节-----1500字节

    <========传输方向

    SFD=Start of Frame Delimite
    DA=Destination Address
    SA=Source Address
    LLC=Logical Link Control
    FCS=Frame Check Sequence or Cyclic Redundancy Check(CRC)

     

    • SNMP (简单网络管理协议 Simple Network Management Protocol)

    SNMP

    用来管理网络设备和获得外围设备信息,属于TCP/IP的一部分,具有协议独立性.利用SNMP, 一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。

    管理信息库(MIB):

    两种类型 MIB-1, MIB-2.MIB是一个树形结构,SNMP协议消息通过遍历MIB树形目录中的节点(OID)来访问网络中的设备.

    MIB 树的每个节点被指定为一个数字(非负数),同一层的节点用不同的数字区分.这些节点数字由标准组织指定.MIB树中的任何一个节点由其所处的位置来命名.因为同一层的节点数字皆不同,到达某个节点的路由可以由从树根到此节点所经过的节点的数字串来表示.这个数字串称为相应MIB对象的对象标识符(OID).

    例如, ODI,1.3.6.1.2.1.1 代表的对象是从 命名为“1”的根节点开始,后续的下级节点“3”,再下一级是“6”,依此类推.

    管理信息结构标识(SMI): 定义MIB中行的技术规范.

    SNMP目前有两种版本 SNMP v1 和 SNMP v2.

     

    SNMP协议单元(PDU)实现代理和管理站间的通信,及Server 和 Target的通信.

    通信类型

    类型

    PDU类型

    传输方向

    说明

    0 GetRequest Server--->Target 用来从Target上获得一个或多个SNMP的对象(OID)值
    1 GetNextRequest Server--->Target 在Target上的MIB中获得下一个SNMP的对象(OID)值
    2 GetResponse Target---->Server Target响应ServerSNMP对象请求
    3 SetRequest Server--->Target Server上程序为TargetMIB中的OID赋值
    4 Trap Target---->Server Target用它来通知Server有一个特定时间发生

    目前好的SNMP网络管理软件是惠普公司的 OpenView.

     

    • BSD套接字(BSD Sockets)

     

    BSD Sockets 使用的最广泛的网络程序编程方法,主要用于应用程序的编写,用于网络上主机与主机之间的相互通信.

    UNIX,Linux,VxWorks均支持BSD Sockets,Windows的Winsock基本上是来自BSD Sockets

    Socket分为Stream Sockets和Data Sockets.

    Stream Sockets是可靠性的双向数据传输用TCP,如HTTP,FTP等

    Data Sockets是不可靠连接用UDP,如多点广播,DHCP,SNMP,RIP等.

     

    • TCP服务器端和一个TCP客户端通信的程序过程

      服务器

     

    客户机

     
    创建一个Socket

    sFd =socket (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 *) &clientRequest, 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, sockAddrSize)

    服务器接受连接请求后,读服务器发过来的信息

    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)

    不需要创建等待队列

     

    这里循环等待,如有客户连接则接受,并读取客户发来的信息

    recvfrom (sFd, (char *) &clientRequest, sizeof (clientRequest), 0, (struct sockaddr *) &clientAddr, &sockAddrSize)

    关闭Socket,通信终止

    close (sFd)

     

     

     

     

     

     

    这里不建立连接,只是数据收发

    <----------

     

    创建一个Socket

    sFd =socket (AF_INET, SOCK_DGRAM, 0)

    注意:客户端不需要绑定,因为UCP口是动态的.
    向服务器端发送连接请求和信息,这里不等待服务器的响应

    sendto (sFd, (caddr_t) &myRequest, sizeof (myRequest), 0, (struct sockaddr *) &serverAddr, sockAddrSize)

    关闭Sockets

    close (sFd)

    UDP广播包程序示例


    发送UDP广播包,查找本地网络中所有运行SNMP服务设备的IP信息。
    winsock, win32控制台程序。

    #define SNMP_PORT 161
    void SearchIP_In_LAN() 

    WSADATA wsaData; 
    SOCKET sockListener;
    SOCKADDR_IN saUdpCli,saUdpServ;
    BOOL fBroadcast = TRUE;

    char sendBuff[40]= //SNMP查询包内容

    '\x30','\x26','\x02','\x01','\x00', 
    '\x04','\x06','\x70','\x75','\x62', 
    '\x6c','\x69','\x63','\xa0','\x19', 
    '\x02','\x01','\x03','\x02','\x01', 
    '\x00','\x02','\x01','\x00','\x30', 
    '\x0e','\x30','\x0c','\x06','\x08', 
    '\x2b','\x06','\x01','\x02','\x01', 
    '\x01','\x01','\x00','\x05','\x00' 
    }; 
    char recvBuff[600]; 
    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; 
    }

    sockListener=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 (TimeOut)
    );
    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!Program 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(saUdpServ.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("Send error!\n");
    closesocket(*((SOCKET*)sockListener)); 
    return; 

    printf("Send successful!\n");
    do // waiting to receive
    {
    if((rv=recvfrom ( sockListener,
    recvBuff,sizeof(recvBuff),0,
    (SOCKADDR *) &saUdpCli,&nSize))==SOCKET_ERROR) 

    if(WSAGetLastError()==WSAETIMEDOUT)
    {
    if (timeoutnum > 6 ) //Wait for 1 minute.
    break;
    else
    timeoutnum++;
    }
    }
    else
    {
    CString 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客户

    <=============>
    Internet(HTTP,..协议)

    如用户PC缺少相应驱动,服务器会动态为用户PC加载安装

     

     

     
     
     
     

     

     

     

     
     

    Internet
    (SNMP协议)

    <=============>

     

    终端PC用户
    (IE浏览器...)

     

     

     

     

     

     

     

     

    网络设备
    (嵌入式操作系统)

    SNMP服务器

     

     

    • 信息家电(IA)的架构

     

     

    网络设备(嵌入式操作系统平台)

    嵌入式服务器(Embedded Web Server, HTTP, FTP... )

     

    服务器程序

    程序接收用户请求,向下发送

    从下接收处理结果,发送给用户

    |
    |
    |
    v

    ^
    |
    |
    |

    通信方式: Socket, Namedpipe等

    ||
    ||
    ||

    后台核心程序

    处理请求,接收发送数据

    ||

    嵌入式系统SNMP接口

    ||

    设备SNMP(MIB)

    <===========>
    Internet(HTTP,..协议)

     

     

     

     

     

     

     
     
     
     

     

     

     

     
     
     
     

     

    终端PC用户
    (IE浏览器...)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    • 无线移动通信的架构

     

     

    基站无线发送接收装置(无线通信协议)

    接收端处理软件

    程序接收处理数据包头,实质符合Internet传输的某种协议(如X.25),放到Internet上 从下接收数据包,加上自自己无线通信协议的包头,无线发出给用户终端

    ||
    ||

    通信方式:Internet(双向)

    X.25,ATM....等协议

    ||
    ||

    网关(GATEWAY)

    处理数据包的内容,相关内容读取存放数据库

    ||
    ||

    数据库

    ||
    ||

    HTTP协议

    对数据库操作,添加,删除,打印...
    终端PC(IE浏览器)

    <============>
    无线通信协议
    (Mobitex或DataTAC,..协议)

     

     

     

     

     

     

     

     

     

     
     
     
     

     

     

     

     
     
     
     

     

    移动通信设备
    (嵌入式操作系统)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    http://www.embhelp.com/drew/mypage/network.htm

    展开全文
  • 软件结构以及 网络通讯协议 软件结构 C/S结构 全称为Client/Server结构。是指客户端和服务器结构,常见程序有QQ,迅雷等软件。 B/S结构 全称为Browser/Server结构,是指浏览器和服务器结构,常见浏览器有谷歌、...
  • 网络协议分析软件 Wireshark

    千次阅读 2008-08-07 22:40:00
    导读: Wireshark(原名Ethereal)是目前世界上最受欢迎的协议分析软件,利用它可将捕获到的各种各样协议网络二进制数据流翻译为人们容易读懂和理解的文字和图表等形式,极大地方便了对网络活动的监测分析和教学...
  • 我会在此账号上持续更新,软件测试的文章,包括网络,前端,数据库
  • 软件测试之网络–数据传输过程和ip协议
  • 网络协议

    2019-04-02 19:38:01
    1.网络协议(TCP/IP协议族) 网络协议就是为了能让计算机网络进行数据交换而建立的规则。标准; 例如下载软件然后如果不同意协议就不能继续下一步,同样的道理在互联网中,如果不遵守互联网协议就不能访问到资源。...
  • 网络协议OSI模型TCP/IP模型TCP协议UDP协议 OSI模型 TCP/IP模型 TCP协议 Transmission Control Protocol传输控制协议: 全双工通信:通信双方都在活动; 保证传输过程的可靠性:三次握手建立连接,四次...
  • 网络协议之《网络七层协议》

    千次阅读 热门讨论 2015-12-27 14:30:31
    网络协议之《网络七层协议》  网络七层协议第一次接触是在软考中,网络用户协议是每次注册或是安装软件都会 用,这次是项目中遇到, 在这里详细的总结一下用户协议和网络七层协议,请大牛们多 多指点:  疑问...
  • 网络协议分析软件安装部署简介! 经常遇到有些朋友在问,为什么我只能看到我自己的通讯?为什么我没有看到XX的通讯情况?是软件的局限性吗?。。。。。。其实这类问题,不是软件的局限,而是由于软件的安装部署不当...
  •  网络协议及网络软件框架设计 网络协议   TCP/IP (网络控制协议和网际协议) OSI 与 UNIX 系统中协议的对应关系图,及不同网络在OSI中的位置  OSI 开放式...
  • wireshark snifferpro network moniter
  • 网络协议及网络软件框架设计 网络协议 TCP/IP (网络控制协议和网际协议) OSI 与 UNIX系统中协议的对应关系图,及不同网络在OSI中的位置 OSI 开放式系统互联参考模型 UNIX系统应用层(Application)------> ------>-...
  • [下载地址] http://www.dipingx.com/soft/html/172.html 网络协议分析软件Sniffer Pro 2p2p终结者4.01 最高权限绿色版 3网络执法官 V2.88 企业完美『 4局域网助手(LanHelper) v1.83 5Network Magic Pro 思科网络管 ...
  • 一、网络协议模型1、ISO/OSI 网络协议模型什么是计算机网路?...网络协议是一种特殊的软件,是计算机网络实现其功能的最基本的机制。网络协议的本质就是规则,即各种硬件和软件必须遵循的共同守则。网络协议
  • 从本章开始,我们将正式进入到网络协议的学习当中,如果只是单纯地讲解理论知识,这将非常抽象,因此,学习网络协议最好的方式就是借助工具,而在网络协议抓包领域最好的工具就是Wireshark。在正式接触网络协议之前...
  • 网络基础之网络协议

    2019-09-21 23:01:19
    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行...2.1 互联网的本质就是一系列的网络协议 一台硬设有了操作系统,然后装上软件你就可以正常使用...
  • 计算机网络协议层次

    千次阅读 2018-08-18 10:44:55
    计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。计算机网络协议同我们的语言一样,多种多样。 为了给网络协议的设计提供一个结构,网络...
  • 网络协议

    万次阅读 2019-05-11 14:20:51
    网络层有四个协议:ARP协议,IP协议,ICMP协议,IGMP协议。 ARP协议为IP协议提供服务,IP协议为ICMP协议提供服务,ICMP协议为IGMP协 ...网络执法官软件通过动态更改主机Mac地址,实现arp欺骗,使两台主机不能通讯 ...
  • 网络协议分层

    2016-05-08 16:55:04
    一个协议层能够用软件、硬件或两者的结合来实现。诸如HTTP和SMTP这样的应用层协议几乎总是在端系统中用软件实现的,运输层协议也是如此。因为物理层和数据链路层负责处理跨越特定链路的通信,它们通常是实现在与给定...
  • 4.1.1 网络协议

    2009-12-18 14:55:00
    网络协议是一种特殊的软件,是计算机网络实现其功能的最基本机制。网络协议的本质是规则,即各种硬件和软件必须遵循的共同守则。网络协议并不是一套单独的软件,它融合于其他所有的软件系统中,因此可以说,协议在...
  • 各种软件网络端口的分类:   即时通讯类:  1、腾讯QQ通讯协议及端口范围  QQ 默认采用UDP 通讯方式,端口8000,8001。如果UDP 的两个端口不通,会自动转换到TCP 80端口或者TCP 443端口进行通讯。QQ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,158
精华内容 7,263
关键字:

网络协议软件