zoukankan      html  css  js  c++  java
  • 网络编程入门基础知识(1)

    一、概述

    网络应用随处可见,但是有趣的现象是所有的网络应用都是基于相同的基本编程模型,有着相似的整体

    逻辑结构,并且依赖相同的编程接口.

    二、客户端-服务器模型

    1.每个网络应用都是基于客户端-服务器模型的.采用这个模型,一个应用是由一个服务器进程和一个或者多个

       客户端进程组成.服务器管理某种资源,并且通过操作这种资源来为它的客户端提供某种服务. 

    2.事务:客户端-服务器模型中的基本操作是事务(transaction).事务由四部分组成:

       a.当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务.

       b.服务器收到请求后,解释它,并以适当的方式操作它的资源.

       c.服务器给客户端发送一个响应,并等待下一个请求.

       d.客户端收到相应并处理它.

       注意:客户端和服务器指的是进程,而不是主机.一台主机可以同时运行许多不同的客户端和服务器,

               而且一个客户端和服务器的事务可以在同一台或是不同的主机上运行.

    三、网络

    1.概述:

       对于一个主机而言,网络只是一种I/O设备,作为数据源和数据接收方,一个插到I/O总线扩展槽的适配器提供

       了到网络的物理接口.从网络上接收到的数据从适配器经过I/O和存储器总线拷贝到存储器,典型的是通过

       DMA(直接存储器存取方式)传送.同样,数据也能从存储器拷贝到网络.

    物理上而言,网络是一个按照地理远近组成的层次系统.最底层是LAN(Local Area Network,局域网),在一个建筑

     或者校园范围内.最流行的局域网技术是以太网(Ethernet).

    2.以太网段(Ethernet segment)包括一些电缆(通常是双绞线)和一个叫做集线器的小盒子.一段连接到主机

       的适配器,而另一端则连接到集线器的一个端口上.集线器不加分辨地将从一个端口上收到的每个位复制

       到其他所有的端口上.

       每个以往网适配器都有一个全球唯一的48位地址,它存储在这个适配器的非易失性存储器上.一台主机可以

       发送一段位,称为帧(frame),到这个网段内其他任何的主机.每个帧包括一些固定数量的头部(header)位,用来

       标识此帧的源和目的地址以及次帧的长度,此后紧随的就是数据位的有效荷载.每个主机适配器都能看到这

       个帧,但是只有目的主机实际读取它.

    3.使用一些电缆和叫做网桥的小盒子,多个以太网段可以连接成较大的局域网,称为桥接以太网.

    一些电缆连接网桥与网桥,而另外一些连接网桥和集线器.在层次更高级别中,多个不兼容的局域网可以

    通过路由器(router)的特殊计算机连接起来,组成一个internet(互联网络).

    4.互联网至关重要的特性是,它能由采用完全不同和不兼容技术的各种局域网和广域网组成.每台助记和

       其他每台主机都是物理相连的,但是如何能够让某台源主机跨过所有这些不兼容的网络发送数据位到

       另一台目的主机呢?

       解决的方法是一层运行在每台主机和路由器上的协议软件,它消除了不同网络之间的差异.这种协议控制

       主机和路由器如何协同工作来实现数据传输.这种协议必须提供两种基本能力:

       命名机制:每台主机会被分配至少一个这种互联网络地址,这个地址唯一的标识了这个主机.

       传送机制:在电缆上编码位和将这些位封装成帧方面,不同的联网技术有不同的和不兼容的方式.互联网

                       协议通过定义一种把数据位捆扎成不连续的片(称为包)的统一方式,从而消除了这些差异.

                       一个包是由包头和有效荷载组成的,其中包头包括的大小以及源主机和目的主机的地址,有效

                      荷载包括源主机发送的数据位.

    下图展示了一个主机和路由器如何使用互联网

    四、OSI(open system interconnection)开发系统交互模型:

            下图非常的详细的描述了7层的详细构成.

    OSI把网络协议从逻辑上分为7层.每一层都有相关,向对应物理设备,比如常规的路由器是网络层交换设备,

    常用的交换机是二层交换设备.

    建立OSI七层模型的目的:为了解决异种网络互联时所遇到的兼容性问题,其最主要的功能就是帮助不同类型

                                              的主机实现数据传输.它的最大的优点就是将服务,接口和协议这三个概念明确的区

                                              分开来,通过七个层次的结构模型使不同的系统不同的网络之间实现可靠通信.

    OSI模型的优点:  建立七层模式型最大的优点就是将服务,接口,和协议这三个概念明确的区分开来;

                                服务说明某一层为上一层提供什么功能,接口说明上一层如何使用下层的服务,而协议涉及

                                如何实现本层的服务;这样各层之间具有很强的独立性,使网络的不同的功能模块分担不同

                                的责任,从而带来如下的好处:a.减轻问题的复杂程度,一旦网络发生故障,可迅速定位故障所处的层次,便于查找和纠错.

    b.在各层分别定义标准接口,使具备相同对等层的不同网络设备能实现相互操作,各层之间相互独立,一种

       高层协议可以在多种低层协议上运行.

    c.能有效的刺激网络技术革新,因为每次更新都可以在小范围内进行,不需要对整个网络动大手术.

    1.物理层(Phsical Layer)

       该层包括物理联网媒介,如电缆连线连接器.利用传输介质为数据链路层提供物理连接,实现比特流的透明

        传输。物理层的作用就是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传送介质和物理

        设备的差异,使得上面的数据链路层不必考虑网络的具体传送介质是什么.这一层的传输单位是bit

    2.数据链路层(Data Link Layer)

       功能:负责建立物理层和网络层之间的通信.通过各种协议,将有差错的物理信息变为无差错的,能可靠传输

                数据帧的数据链路.计算机网络中由于各种干扰的存在,物理链路是不可靠的,数据链路层是在物理

                层提供的比特流的基础上,通过差错控制,流量控制方法,使得有差错的物理线路变为无差错的数据链路

                即提供可靠的通过物理介质传输数据的方法.

       该层又分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层.

        MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;

        LLC子层的主要任务是建立和维护网络连接,执行差错校验,流量控制和链路控制.

        数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自

        上一层的数据帧,拆装为位流形式的数据转发到物理层;还负责处理接收端发回的确认的信息,以便提供

         可靠的数据传输.

    3.网络层(Network Layer)

       它是OSI模型中最复杂的一层,也是通信子网的最高的一层.它在下两层的基础上向资源子网提供服务.

       主要任务:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径.该层控制数据链路层与传输

                       层之间的信息转发,建立,维持和终止网络的连接.

                       将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收放.

       网络层负责在源机器和目标机器之间建立它们锁使用的路由.网络层用于本地LAN网段之上的计算机系统

       建立通信,它之所以可以这么做,因为它有自己的路由地址结构,这种结构和第二层机器地址是分开的,独立的.

       这种协议称为路由协议:包括IP,IPX ,Apple Talk

       网络层是可选的,它只用于当两个计算机系统处于不同的路由器分割开的网段这种情况,或者当通信应用

       要求某种网络层或传输层提供的服务,特性或者能力的时候.

    4.传输层(Transport Layer)

       OSI下3层的主要任务是数据通信,上三层的任务是数据处理.

       主要任务:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输.传输层的作用是向高层屏蔽

                       下层数据通信的细节,即向用户透明地传送报文.

                        传输层提供会话层和网络层之间的传输服务,传输层负责提供两个节点之间数据的可靠传送,当

                        两个节点的联系确定之后,传输层则负责监督工作.

      主要功能:传输连接管理:提供建立,维护和拆除传输连接的功能.传输层在网络层的基础上为高层提供

                      面向连接和面向无连接的两种服务.

                      处理传输差错:提供可靠的面向连接和不太可靠的面向无连接的数据传输服务,差错控制和流量控制

                      监控服务质量.

    5.会话层(Session Layer)

      是用户应用程序和网络之间的接口,主要任务是:

       向两个实体的表示层提供建立和使用连接的方法.任务是组织和协调两个会话进程之间的通信,并对数据交换

      进行管理.

      会话管理,会话流量控制,寻址,出错控制.

    6.表示层(Presentation Layer)

       它对来自应用层的命令和数据进行解释,对各种语法赋予型应的含义,并按照一定的额格式传送给会话层.

       数据格式处理:协商和建立数据交互的格式,解决各应用程序之间在数据格式表示上的差异.

        数据编码:处理字符集和数字之间的转换.

        压缩和解压缩:

        数据的加密和解密:

    7.应用层

      他是计算机用户,以各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完车用户希望在网络上

       完成的各种工作.

     三、Linux下网络编程基础(各中协议的含义和所在的层数)

     1.tcp协议和udp协议之间的区别?

         a.TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,

            在收发数据前,必须和对方建立可靠的连接.一个TCP连接必须要经过三次"对话"

            才能建立起来,其中过程非常的复杂.简单的描述一下就是这样的:

             位码即tcp标志位,有6中标志:SYN(synchronous建立联机)ACK(acknowledgement确认)

             PSH(push传送)FIN(finish结束)RST(重置)URG(urgent紧急)

              Sequence number(顺序号码) Acknowledge number(确认号码)

              第一次握手:主机A发送syn=1,随机产生seq number = 1234567的有序数据包

              到服务器,B由SYN=1知道,A要求建立联机.

              第二次握手:主机B收到请求之后确认联机信息,想A发送ack number = (主机A

              的seq + 1),syn = 1,ack = 1,随机产生一个seq = 7654321的包.

              地三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number

              +1,以及ack是否是1,若正确,主机会再发送ack number = (主机B的seq +1),ack

             =1,主机B收到seq的值与ack=1则连接建立成功.完成三次握手之后,主机A和主机

             B开始传送数据.

             简述:

             第一次握手:建立连接时,客户端发送syn包,syn=j到服务器,并进入SYN_SEND状态.

             等待服务器的确认;

             第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送

             一个syn=k,即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户

             端收到用户的SYN+ACK包,想服务器确认包ACK(ack=k+1),此包发送完毕,客户端

             和服务器进入ESTABLISHED状态,完成三次握手.完成三次握手.完成三次握手,客户

             端服务器开始传送数据.

            

      TCP和UDP之间的区别?

      1.tcp 是一个面向连接的协议,收发数据之前,必须和对方建立可靠地连接.连接非常

         的复杂,使用的是三次握手.而UDP是一个面向非连接的协议,传输数据之间源端

         和终端之间不建立连接,当它想传送数据的时候就简单地去抓取来自应用程序的

         数据,并尽可能地快的把它扔到网络上.在发送端,UDP传送数据的速度仅仅是受

         应用程序生成数据的速度,计算机的能力和传输宽带的限制;在接受端,UDP把每

         个消息段放在队列中,应用程序每次从队列中读一个消息段.

      2.TCP建立了连接,要维护连接的状态,因此其对系统的资源要求较高.而UDP传输

        数据则不需要维护连接状态,一台服务机可同时向多个客户机传输相同的消息.

        并且对资源的开销相对较少.

      3.TCP信息包的标题很长,有20个字节;而UDP信息包的标题很短,只有8个字节.

      4.TCP保证了数据的正确性,而UDP只管发,不确认你是否收到.TCP保证数据顺序,

         UDP不保证.它们一个字节流模式,一个是数据报模式.

      5.TCP适用于可靠性要求高,有大量的数据要连续传送的时候.

         UDP适用于可靠性要求一般,但要求高效传输数据,或应用于传输量小以及

         要求广播发送的时候的情况.

  • 相关阅读:
    wampserver服务器离线,无法访问此网站 找不到 项目 的服务器 DNS 地址。
    node.js(一)介绍与安装
    js全局函數
    类和对象的定义
    iframe框架学习
    while和do-while的区别
    html5视频音频
    列表
    html表格的学习
    云课堂数组1
  • 原文地址:https://www.cnblogs.com/yasanlun/p/3842905.html
Copyright © 2011-2022 走看看