zoukankan      html  css  js  c++  java
  • UNIX标准C

    一、计算机网络

        1.计算机网络的功能

           a.数据通信

           b.资源共享

           c.提高系统的可靠性

           d.分布式网络处理和负载均匀。

        2.计算机网络的组成

            1.通信子网:由网卡、线缆、集线器、中继器、交换器、路由器等。

            2.资源子网:网络中的计算机、打印机等一些可以提供服务的一些设备。

            3.计算机网络软件:

                        协议软件:它规定了计算机之间通信的准则,TCP/IP协议簇

                        网络通信软件:网络中实现计算机与设备之间通信的软件

                        网络操作系统:可以提供网络服务的计算机操作服务

                               windows  server2008  UNIX   Linux

                        网络管理软件和网络应用软件:

                                防火墙、SElinux

                                浏览器、迅雷、ftp客户端

                                

         3.计算机网络的分类

            1.按网络的作用范围划分

                局域网  城域网  广域网                          

            2.按网络的传播技术来划分

                广播式网络

                点到点网络

            3.传输介质来划分

                有线网、无线网、微波通信、卫星通信

         4.计算机网络的拓朴结构

            1.星型拓扑结构

            2.树型拓扑结构

            3.总线型拓扑结构

            4.环形拓扑结构

            5.网状型拓扑结构        

              

         5.计算机网络的发展过程

            1.以计算机为中心的联机系统

            2.分组交换网络的诞生

            3.网络体系结构与协议标准化。

                20世纪80年代 ISO组织提出  开放式系统互联参考模型OSI,

                    由于这个模型照顾到了各方的利益所以太过盘大,所以至今没有推出成熟的产品,

                        TCP/IP协议一套符合OSI标准的协议。   

              异构:操作系统(windows) ->socket ->TCP/IP ->TCP/IP ->socket ->Linux

            4.高速计算机网络

           

         6.网卡:网络借口卡或网络适配器、它负责将数据发送网络中心去,也负责从网络中获取数据,每个网卡上会有一个独一无二MAC地址

         7.OSI模型与TCP/IP模型

            OSI/RM结构七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

            TCP/IP模型四层:

                物理层、        物理层

                物理层            数据链路层

                网络层、        网络层

                传输层、        传输层

                应用层。        会话层、表示层、应用层

            

                物理层:负责通信网络收发数据包

                网络层:选择、流量控制、与网络拥塞问题,IP协议是该层核心

                传输层:机器之间建立用于会话的端到端链接(用于数据的传输),该层的核心协议是TCP、UDP协议。

                应用层:主要为用户提供针对性的服务,该层代表的协议:HTTP、SMTO、FTP、TELNET

                

          8.ipv4地址

          在计算机网络中的每一台计算机都必须有一个唯一的标识符它就是ip地址。目前由4个不超过255的整数组成,

                一般用点分十进制      

                ip地址的分类:

                    A类:第一二进制位必须是0,

                        1.0.0.0

                        127.255.255.255

                    B类:前两位的二进制必须是10

                        128.0.0.0

                        191.255.255.255

                    C类:前三位的二进制必须是110

                        192.0.0.0

                        223.255.255.255

                    D类:前四位的二进制必须是1110

                        224.0.0.0

                        239.255.255.255

                    E类:前四位的二进制必须是1111

                        240.0.0.0

                        255.255.255.255

                        

          9.公网ip和私有ip

                 共有ip:在网络服务提供商登记过的ip地址叫公有ip。

                 私有ip:由一家公司或组织自己分配,不能在网络直接访问的ip

          

          10.子网掩码 :目前由不超过255的整数的组成,一般用点分十进制表示(255.255.255.0)

                 子网掩码&ip地址  =  网络地址

                 如果两个人ip地址的网络地址相同,那么说明她们在同一个子网内,就可以直接通信而不需要路由。

           

          11.网关地址:负责子网络出口的计算机,一般由路由器提供(路由器就是一台具有路由功能的计算机

          

          12.端口号:操作系统为需要通信的进程分配一个独一无二的编号,端口号可以确定与那个进程来通信。

          1~1024基本上已经被操作系统占用,一般编程要使用1024上的

            http:80

            htp:21

            telnet:23

            

    二、套接字(socket:插座)

        是一种可以进行网络通信的内核对象,它是一个唯一的标示符,一般称它为socket描述符,跟文件描述符类似,

            也可以用read/write/close操作

         int socket(int domain,int type,int protocol)

         功能:创建socket对象

         domain:通信地址类型

                AF_UNIX/AF_LOCAL:本地进程通信

                AF_INET:使用ipv4地址通信

                AF_INET6:使用ipv6通信

         type:

            SOCK_STREAM:数据流协议,TCP面向连接的通信协议

                优点:安全可靠,数据不丢失,但速度慢

                一般常用于安全性较高的场所。

            SOCK_DGRAM:数据报协议,UDP面向无连接的通信协议

                优点:速度快,数据可能丢失,安全性和可靠性与tcp相比不同

                一般用于安全性要求不高,但是对速度有要求的场所。     

          

          protocol:特殊协议,一般不用,一般为0;

         准备通信地址:

            基本的通信地址

            struct socketaddr

            {

              socketaddr;

            }

             本地通信地址

                struct sockaddr_un

                {

                    //通信地址类型

                    sun_family_t   sum_family;

                    //socket文件的路径

                    char sun_path[108];

                }

            网络通信地址

            struct socketaddr_in

                {

                    //通信地址类型

                    short int sin_family;

                    //端口号

                    int_port_t  sin_port;

                    //ip地址

                    struct in_addr sin_addr;    

                }

    三、本地socket进程间通信

            A(B的地址+消息内容) -> B

            B(A的地址+消息内容) -> A

            进程A:创建socket->准备地址->绑定->连接->接受/发送->关闭socket->删除socket

            进程B: 创建socket->准备地址->绑定->连接->接受/发送->关闭socket     

            进程B可以给进程A发送消息

            一个socket对象只能绑定一个地址。

            

            int bind(int sockfd,const struct sockaddr* addr,socklen_t addrlen);

            功能:把socket对象与通信地址建立联系

            

            int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

            功能:连接上通信目标

            addr:目标地址      

         

    四、网络通信(UDP)

            点到点

            网络通信地址

            struct socketaddr_in

                {

                    //通信地址类型

                    short int sin_family;

                    //端口号

                    int_port_t  sin_port;

                    //ip地址

                    struct in_addr sin_addr;    

                }

           个人计算机数据的存储方式可能是大端,也可能是小端     

           网络通信时需要的是大端数据,必须把数据转换成大端    

           生成端口号:

           uint32_t htonl(uint32_t hostlong);

            功能:把32位主机字节序转换成32位网络字节序

           uint16_t htons(uint16_t hostshort);

            功能:把16位的主机字节序转换成16为的网络字节序

           uint32_t ntohl(uint32_t netlong);

            功能:把32位网络字节序转换成32位主机字节序

           uint16_t ntohs(uint16_t netshort);

            功能:把16位的网络字节序转换成16为的主机字节序

             

            生成端口号:

                端口号就是一个16位的无符号整数:

                  

            生成ip地址:

                功能:把点分十进制的字符串ip地址转换成32位的无符号整数

                

                char* inet_ntoa(struct in_addr in)

                功能:把32位网络字节序的ip地址转换成点分十进制的字符串ip地址。

                

               ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,

                            struct sockaddr *src_addr, socklen_t *addrlen);

                功能:接受数据并获取发送端的地址

                

               ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,

                          const struct sockaddr *dest_addr, socklen_t addrlen);

                 功能:发送数据到指定的目标

                 

                 进程A:创建socket对象->准备地址->绑定->接受数据和来时的地址->原路返回数据->关闭socket

                 

                 进程B:创建socket对象->准备地址->连接->向目标发送数据->接受数据->关闭socket

              socket对象被全部关闭,会在内核中停留一段时间(会给重新连接的机会),如果再使用同样的ip地址和端口时就会失败(延时关闭)

           

     五、网络通信(TCP)

        一对多

        面向连接的网络通信,在通信过程中时刻保持连接,这种通信方式类似于打电话,能保证安全可靠、数据不丢失

                ,但与UDP相比,它的传输速度略低

                

          进程A:创建socket->准备地址->绑定->监听(设置队列长度)->等待接通->通信->关闭

          进程B:创建socket->准备地址->连接->通信->关闭。

          

          int listen(int sockfd,int backlog);

          功能:设置socket对象最大排队数量

          

          int accept(int sockfd,struct sockaddr * addr,socklen_t * addrlen)

          功能:等待其他主机与当前socket建立连接关系

          返回值:建立连接的描述符

          

          ssize_t recv(int sockfd,const void* buf,size_t len,int flags);

          功能:网络通信专用发送接受

          

          ssize_t send(int sockfd,const void* buf,size_t len,int flags);

          recv/send 返回值为-1时说明连接断开,此时应该结束循环

          功能:网络通信专用的数据发送

      

         什么是三次握手:

            什么是可靠的连接:(A要知道A->B&&B->A)              

                            (B要知道B->A&&A->B)

                                

  • 相关阅读:
    2015-3-27
    2015-3-26
    2015-3-25
    2015-3-24
    oracle数据字典表 系统表
    PowerDesigner教程系列(六)概念数据模型
    PowerDesigner教程系列(五)概念数据模型
    PowerDesigner教程系列(四)概念数据模型
    PowerDesigner教程系列(三)概念数据模型
    PowerDesigner教程系列(二)概念数据模型
  • 原文地址:https://www.cnblogs.com/goul/p/9432710.html
Copyright © 2011-2022 走看看