网络协议 | 计算机网络基础学习笔记

  • 一、网络硬件

    • 关于计算机网络,没有一种被普遍接受的分类方法,但有两个因素非常重要:传输技术和距离尺度

    • 目前普遍使用的传输技术有两种:

      • (1)广播式连接

      • (2)点到点连接

      • 广播式网络(broadcast networks)只有一个通信信道,网络上所有的机器都共享该信道。机器间传递的是短消息(分组或包),任何一台机器发送的短消息可以被其他所有机器接收到。分组中有一个地址域,指明了该分组的目标接收者。一台机器接收到一个分组后,它检查地址域。如果该分组是发送给他的,那么它就处理,否则,忽略。此外,可以通过地址域实现让所有机器都就收处理,或者让一组机器接受处理。

      • 点到点网络是由许多连接构成,每一个连接对应一对机器。将一个分组传递到目的地可能要经过多台机器,所以最优路径对点到点网络很重要。

      • 一般原则:越小的,地理位置局部化的网络倾向于广播传播模式,而大的网络倾向于点到点传播模式。

      • 分类网络的另一个准则是网络的距离尺度。相应的可以划分为

        • 个人区域网(personal area network):例如一个无线网络将一台计算机与它的鼠标,键盘,打印机连接起来,这就是一个个人区域网。
        • 局域网络
        • 城域网络
        • 广域网络
    • 局域网(local area network,LAN)

      • 范围:一个建筑内到几千米的范围。
      • 通常将公司办公室或工厂中的个人计算机和工作站连接器来,以便共享资源和交换信息。
      • 不同于其他类型网络的特征:范围,传输技术,拓扑结构。
      • 可能的传输技术:所有机器连接到同一根电缆上,传输速度一般可达10Gbps。 Mbps(每秒百兆位,1Mbps=1000 000位/每秒),Gbps(1000 000 000位/每秒)。
      • 广播式LAN也可能有不同的拓扑结构。
        • 总线型网络中,任何一个时刻,至多有一台机器是主机器,并且只有它才可以传送数据。其他的机器都被禁止发送数据。如何解决冲突:需要一种仲裁机制解决冲突。例如,以太网(Ethernet,IEEE 802.3)中发生冲突时,每台计算机只是等待一段随机时间,然后再次尝试发送数据。
        • 环形网络。在环中,每一位都沿着自己的路径独立向前传播,而不需要等待它所属分组的其他位。例如IEEE802.5(IBM令牌环)
    • 城域网(metropolitan area network,MAN)

      • 范围:覆盖一个城市
      • 例如,有线电视网
    • 广域网(wide area network,WAN)

      • 范围:通常是一个国家或一个洲。
      • 广域网包括主机(用户所有。例如,个人计算机)及通信子网(简称子网,由电话公司或Internet服务提供商所有)
      • 子网由两个独立的部分组成:传输线和交换单元
      • 传输线用于在机器之间传送数据位,可以由铜线,光纤,无线电链路构成。
      • 交换单元:一种特殊的计算机,它们连接了三条或者更多条传输线。当数据在一条进线上到达的时候,交换单元必须选择一条出线,以便将数据转发出去。这些交换计算机过去被称为“路由器”
      • 每一台主机往往连接到一个LAN上,在LAN上会有一个路由器,某些情况下,主机也可以直接连到一个路由器上。通信线和路由器(不包括主机)的集合构成了子网。
      • 分组交换WAN的原则:“存储-转发”或“分组交换”。
    • 无线网络

      • 分为(1)系统互连(例如,蓝牙);(2)无线LAN(3)无线WAN
  • 二、网络软件

    • 为了降低网络设计的复杂性,绝大多数网络都组织成一队相互叠加的层,每一层都建立在其下一层的基础之上。

    • 数据不是从一台机器的第n层直接传递到另一台机器的第n层。相反,每一层都将数据和控制信息传递给它的下一层,这样一直传递到最低下的层。第一层最下面是物理介质。

    • 层和协议的集合称为网络体系结构。一个特定的系统所使用的的一组协议(每层一个协议)称为协议栈。

    • 各层的实际问题

      • 每一层,都需要一种机制来标识出发送方和接收方。一般网络上有好多计算机,计算机上又有许多进程,所以需要一种编址机制来指定一个特定的目标。
      • 协议需要确定每个连接对应多少逻辑信道,且确定他们的优先级别。许多网络至少提供两个逻辑信道,一个用于普通数据,一个用于紧急数据。
      • 错误控制。
      • 发送方发送速度很快时,如何避免接收方被数据淹没。有些是利用一种反馈机制,有些方案则限制发送方以商定的速率发送(流量控制)。
      • 为每一对通信进程建立一个单独的连接,很不方便,且代价高昂。因此,可以是多对进程使用同一连接。多路复用,多路解复用。
      • 路由选择。当源端和目标端之间存在多条路径的时候,必须进行路由选择。
    • 面向连接与无连接的服务

      • 面向连接的服务是基于电话系统模型的。
      • 无连接的服务是基于邮政系统模型的。
    • 服务原语:一个服务通常是由一组原语(primitive)操作来描述的,用户进程通过这些原语操作可以访问服务。

      • 例子:为了实现一个可靠的字节流,可以考虑原语如下
        • LISTEN:阻塞操作,等待一个进入的连接
        • CONNECT:与一个正在等待的对等体建立连接
        • RECEIVE:阻塞操作,等待一个进入的报文
        • SEND:给对等体发送一个报文
        • DISCONNECT:终止一个连接
      • 服务和协议的区别:服务好像是面向对象语言中的抽象数据类型或对象,它定义了在对象上可以执行的操作,但并没有具体实现。协议涉及到服务的具体实现。
    • OSI参考模型

      • OSI(Open System Interconnection)

      • 物理层(physical layer):涉及到在通信信道上传输的原始数据位。

      • 数据链路层(data link layer):主要将一个原始的传输设施转变成一条逻辑的传输线路,在这条传输线路上,所有检测出来的传输错误也会反应到网络层。数据链路层的做法是:让发送方将输入的数据拆分,分装到数据帧(data fram,通常几百或几千个字节),然后顺序的传送这些数据帧。如果是可靠的服务,接收方接收到后,给发送方送回一个确认帧(acknowledgement frame)。问题:快速发送方“淹没”掉慢速的接收方。解决:流量调节机制。

      • 网络层(network layer):控制子网的运行过程。网络层应当确定如何将分组从源端路由到目标端。问题:两个网络的编址方案不同,连接的问题。分组太大,另一个网络无法接受。

      • 传输层(transport layer):基本功能是接收来自上一层的数据,并且在必要的时候把这些数据分割成很小的单元,然后把数据单元传递给网络层,并确保这些数据片段都能够的到达另一端。

      • 会话层(session layer):允许不同机器上的用户之间建立回话。

        • 所谓会话,通常指各种服务,包括:
          • 对话控制(dialog control):记录下该谁来传递数据了
          • 令牌管理(token management):禁止双方同时执行同一个关键操作
          • 同步功能(synchronization):在一个长的传输过程中设置一些检查点,以便在系统奔溃之后还能够在奔溃前的点上继续执行。
      • 表示层(presentation layer):表示层下面各层中,关注的是如何传递数据位,而表示层关注的是所传递的信息的语法和语义。不同计算机可能会使用不同的数据表示法,为了让这些计算机能够进行通信,它们所交换的数据结构必须以一种抽象的方式来定义,同时,表示层还应该定义一种标准的编码方式,用来表达网络线路上所传递的数据。

      • 应用层(application layer):包含了各种各同样的协议,这些协议往往直接针对用户的需要,一个广泛使用的应用协议是HTTP(HyperText Transfer Protocol),它也是WWW(万维网)的基础。

    • TCP/IP参考模型

      • 包括四层:应用层,传输层,互联网层,主机至网络。

      • 互联网层(Internet layer):互联网层定义了正式的分组格式和协议,该协议称为IP(Internet Protocol)。互联网层的任务是将IP分组投递到它们该去的地方。分组路由和避免拥塞是最主要的问题。

      • 传输层:它的设计目标是容许源和目标主机上的对等体之间可以进行对话。包括TCP(Transport Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)。

      • 应用层:包括

        • 虚拟终端协议(TELNET):允许一台机器上的用户登录到远程的机器上,并且在远程的机器上进行工作。
        • 文件传输协议(FTP):提供了一种在两台机器之间高效地移动数据的途径。
        • 电子邮件协议(SMPT)
        • DNS(Domain Name System,域名系统):将主机名字映射到它们的网络地址。
        • HTTP用于获取www上的页面;等等。
      • 主机至网络层:TCP/IP参考模型并没有明确规定这里应该有哪些内容,它只是指出,主机必须通过某个协议连接到网络上,以便可以将分组发送到网络上。

  • 三、物理层(简单介绍)

    • 数据通信理论的基础:傅立叶分析

      • 任何一个正常的周期为T的函数,都可以展开成多个(可能无线个)正弦和余弦函数的和。
      • 正弦函数和余弦函数正交归一的关系
      • 有限带宽的信号。带宽:传输过程中振幅不会明显减弱的这一段频率范围称为带宽(bandwidth)
      • 信道的最大数据传输率。尼奎斯特采样定理和香农定理
    • 有导向的传输介质

      • 磁介质
      • 双绞线
      • 同轴电缆
      • 光纤
    • 无线传输

      • 电波传输

      • 红外线和毫米波

      • 光波传输

      • 各类通信卫星

    • 移动通信系统及有线电视

  • 四、数据链路层

    • 数据链路层的设计要点

      • 数据链路层要完成的特点的功能

        • 1.向网络层提供一个定义良好的服务接口;
        • 2.处理传输错误
        • 3.调节数据流,确保慢速的接收方不会被快速的发送方淹没
      • 为了实现这些目标,数据链路层从网络层获取到分组,然后将这些分组封装到帧中以便传输。每一帧包括一个帧头、一个有效载荷域(用于存放分组),以及一个帧尾。帧管理构成了数据链路层的工作核心。

    • 数据链路层的功能是为网络层提供服务。最主要的服务是将数据从源机器的网络层传输到目标机器的网络层。

    • 一般情况下,提供三种服务:

      • 无确认的无连接服务:源机器向目标机器发送独立的帧,目标机器并不对这些帧进行确认。
      • 有确认的无连接服务:虽然没有使用逻辑连接,但所发的每一帧都需要单独的确认。超时后,会重发该帧。
      • 有确认的面向连接服务:源机器和目标机器首先建立一个连接。该连接上发送的每一帧都被编号,数据链路层保证每一帧都会真正的被接收到。可以保证每一帧只被接收一次,且按照正确的顺序被接收。
    • 成帧:物理层的任务是接收一个原始的位流,并试图将它递交给目标机器,这个位流容易产生错误(位的数量改变,值发生变化等),检测错误和纠正错误的工作是由数据链路层来完成。

    • 由于依靠时间来标识每一帧的起始和结束位置风险太大,所以要设计其他方法。

      • 1.字符计数法:每利用头部中的一个域来指定该帧中的字符数。问题,计数值有可能因为传输错误而被弄乱。
      • 2.含字节填充的分界符法:它的做法是让每一帧都用一些特殊的字节做为开始和结束。缺点:它紧紧依赖8位字符的模式。
      • 3.含位填充的分界标志法:
      • 4.物理层编码违例法:
    • 错误控制:接收方送回一些特殊的控制帧用以确认信息。帧丢失的情况,可以采用定时器来解决(例如,超过定时器限制时间,则重发帧)。

    • 流控制:如果发送方发送的帧的速度超过了接收方能够接受的这些帧的速度,则发送方该如何处理呢?解决办法:

      • 1.基于反馈的流量控制(feedback-based flow control),接收方给发送方送回信息,允许它发送更多的数据,或者至少告诉发送它的情况怎么样。
      • 2.基于速率的流量控制(rate-based flow control),使用这种方法的协议有一种内置机制,它限制了发送方传输数据的速率,而无需利用接收方的反馈信息(数据链路层不使用)。
    • 错误检测和纠正

      • 纠错码(error-correcting code):在每一个被发送的数据块中包含足够的冗余信息,以便接收方可以推断出被发送的数据中肯定有哪些内容。
        • 包含m个数据位(报文)和r个冗余位(校验位)。我们把包含数据和校验位的n(n=m+r)位单元通常也称为n位码字(codeword)。
        • 两个码字中不相同的位的个数称为海明距离(Hamming distance)。意义:如果两个码字的海明距离为d,则需要d个1位错误才能将一个码字变成另一个码字。例子,奇偶校验。
          -检错码(error-detecting code):也包含一些冗余信息,但这些信息只能让接收者推断出发生了错误,但推断不出发生了哪个错误,然后接受方可以请求重传。
    • 基本的数据链路协议

      • 基本假设:1.多数情况下,物理层和数据链路层进程会在一个特殊的网络I/O电路中的一个处理器上运行;而网络层代码则在主CPU上运行(其他情况也是可能的)。2.机器A希望用一个可靠地、面向连接的服务,向机器B发送一个长的数据流。

      • 一个无限制的单工协议:该协议中,数据只能单向传输,传输方和接收方的网络层总是处于准备就绪的状态。处理的时间可以被忽略。假设缓存空间无限大。数据链路层之间的通信信道永远不会损坏或者丢失帧。

      • 一个单工的停-等协议:需要处理的问题是如何避免发送方用超过接收能力的大量数据来淹没接收方。一般解决方案为,让接收方提供反馈信息给发送方。发送方送出一帧,然后先等待一个确认,再继续发送,这样的协议称为停-等协议(stop-and-wait)。

      • 有噪声信道的单工协议:可能的情况就是有噪声的情况会导致帧信息损坏。确认帧完全丢失就会导致数据源机器不断地向目标机器发送相同的帧数据。解决办法:可以通过在每一帧的头部放上一个序列号用于判断是新帧还是重复帧。

      • 滑动窗口协议(sliding window protocol):

        • 上面的协议中,数据帧只在一个方向上传输。而大多数情况数据传输是双向的。解决办法:全双工数据传输(例如,使用两条独立的通信信道)。但这样会导致逆向信道带宽的浪费。

        • 更好的办法:使用一条线路来传输两个方向上的数据。该模型中,从机器A到机器B的数据帧可以与从机器A到机器B的确认帧混合在一起。接收方只要检查证的头部的kind域,就可以区别该帧是数据还是确认。

        • 更好的改进:当一个数据帧到达的时候,接收方并不是立即发送一个单独的控制帧,而是等待一会,直到网络层传递给它下一个分组,将确认信息(控制帧)和外发数据帧一起发送。这种将确认暂时延迟以便钩到下一个外发数据帧的技术称为捎带确认(piggybacking)。问题:数据链路层应该等待下一个分组多长时间?

        • 滑动窗口协议的本质是:在任何时刻,发送方总是维持着一组序列号,分别对应于允许它发送的帧。我们称这些帧落在发送窗口(sending window)之内。类似的,接收方也维持着一个接收窗口(receiving window),对应于一组允许它接收的帧。发送方的窗口和接收方的窗口不必有同样的上下界,甚至比必有同样的大小。有些协议中,窗口有固定的大小,另一些协议中窗口的大小变化。

          • 发送方必须在内存中保存好所有这些帧,以便可能进行重传。如果最大窗口尺寸为n,则发送方需要n个缓冲区来存放未被确认的帧。

          • 接收方数据链路层窗口对应于它可以接受的帧。任何落在窗口外面的帧都被丢弃,无需任何提示。

          • 1位滑动窗口协议:一个最大窗口尺寸为1的滑动窗口协议。由于发送方在送出一帧以后,在发送下一帧之前要等待前一帧的确认。因此这样的1位滑动窗口协议使用了停-等的办法。

          • 使用回退n帧技术的协议:目前为止,我们默认的假设是,一帧到达接收方所需要的传输时间加上确认帧回来的传输时间可以忽略不计。有时候这种假设是不正确的。

    • 协议的验证(了解)

      • 有限状态机模型(finite state machine)
      • Petri网模型
    • 数据链路层协议示例

      • SDLC(Synchronous Data Link Control,同步数据链路控制)协议(IBM提出))

        • ADCCP(Advanced Data Communication Control Procedure,高级数据通信控制规程)(ANSI在SDLC基础上修改得到)
        • HDLP(High-level Data Link Control,高级数据链路控制)。(ISO在SDLC基础上修改)
        • 这些协议基于相同的原理。所有协议是面向位的,并且为了确保数据的透明性,它们都使用了位填充
        • 面向位填充协议帧的基本结构。
          • 帧的分界,标志序列(01111110)。
          • 地址(address)域:对多个终端的线路显得很重要,因为在这样的环境中,该域被用于标识一个终端。
          • 控制(Control)域:被用作序列号、确认,以及其他用途。
          • 数据(Data)域:可以包含任何信息。它可以任意长,不过随着帧长度的增加,校验和的效率会降低,因为突发性错误的概率会加大。
          • 校验和域(Checksum):该域是一个循环冗余码。
      • Internet中的数据链路层

        • 在单个建筑物内,通常使用LAN来实现互连,但绝大多数的广域设施则通过点到点的租用线路构建起来的。
        • Internet中使用的数据链路协议称为PPP。PPP(Point-to-Point Protocol,点到点协议),它有多种用途,其中包括传送从路由器到路由器之间的流量,以及家庭用户到ISP之间的流量。PPP提供了三类功能:
          -(1)一种成帧方法。它可以毫无歧义地分隔出一帧的结束和下一帧的开始。并且帧的格式支持错误检测。
          • (2)一个链路控制协议,可用于启动线路、测试线路、协商参数,以及当线路不在需要的时候可以温和的关闭线路。该协议称为LCP(Link Control Protocol,链路控制协议)。
          • (3)一种协商网络层选项的方法,并且协商方法与所使用的网络层协议独立。所选择的方法对于每一种支持的网络层都有一个不同的NCP(Network Control Protocol,网络控制协议)。
    • 总结:数据链路层的任务是将物理层提供的原始位流转换成可供网络层使用的帧流。用到的成帧方法包括:字符计数法、字节填充法和位填充法。为了避免快速发送方淹没一个慢速的接收方,数据链路协议需要提供流量控制功能。滑动窗口机制,两个窗口大小都为1,滑动窗口机制变成了停-等协议,当发送窗口大于1,接收方可以除了下一个顺序帧外丢弃其他帧,或将所有乱序的帧缓存起来,一直到需要这些帧的时候。

  • 五、网络层

  • 六、传输层

  • 七、应用层

  • 八、网络安全##计算机网络基础学习笔记

  • 一、网络硬件

    • 关于计算机网络,没有一种被普遍接受的分类方法,但有两个因素非常重要:传输技术和距离尺度

    • 目前普遍使用的传输技术有两种:

      • (1)广播式连接

      • (2)点到点连接

      • 广播式网络(broadcast networks)只有一个通信信道,网络上所有的机器都共享该信道。机器间传递的是短消息(分组或包),任何一台机器发送的短消息可以被其他所有机器接收到。分组中有一个地址域,指明了该分组的目标接收者。一台机器接收到一个分组后,它检查地址域。如果该分组是发送给他的,那么它就处理,否则,忽略。此外,可以通过地址域实现让所有机器都就收处理,或者让一组机器接受处理。

      • 点到点网络是由许多连接构成,每一个连接对应一对机器。将一个分组传递到目的地可能要经过多台机器,所以最优路径对点到点网络很重要。

      • 一般原则:越小的,地理位置局部化的网络倾向于广播传播模式,而大的网络倾向于点到点传播模式。

      • 分类网络的另一个准则是网络的距离尺度。相应的可以划分为

        • 个人区域网(personal area network):例如一个无线网络将一台计算机与它的鼠标,键盘,打印机连接起来,这就是一个个人区域网。
        • 局域网络
        • 城域网络
        • 广域网络
    • 局域网(local area network,LAN)

      • 范围:一个建筑内到几千米的范围。
      • 通常将公司办公室或工厂中的个人计算机和工作站连接器来,以便共享资源和交换信息。
      • 不同于其他类型网络的特征:范围,传输技术,拓扑结构。
      • 可能的传输技术:所有机器连接到同一根电缆上,传输速度一般可达10Gbps。 Mbps(每秒百兆位,1Mbps=1000 000位/每秒),Gbps(1000 000 000位/每秒)。
      • 广播式LAN也可能有不同的拓扑结构。
        • 总线型网络中,任何一个时刻,至多有一台机器是主机器,并且只有它才可以传送数据。其他的机器都被禁止发送数据。如何解决冲突:需要一种仲裁机制解决冲突。例如,以太网(Ethernet,IEEE 802.3)中发生冲突时,每台计算机只是等待一段随机时间,然后再次尝试发送数据。
        • 环形网络。在环中,每一位都沿着自己的路径独立向前传播,而不需要等待它所属分组的其他位。例如IEEE802.5(IBM令牌环)
    • 城域网(metropolitan area network,MAN)

      • 范围:覆盖一个城市
      • 例如,有线电视网
    • 广域网(wide area network,WAN)

      • 范围:通常是一个国家或一个洲。
      • 广域网包括主机(用户所有。例如,个人计算机)及通信子网(简称子网,由电话公司或Internet服务提供商所有)
      • 子网由两个独立的部分组成:传输线和交换单元
      • 传输线用于在机器之间传送数据位,可以由铜线,光纤,无线电链路构成。
      • 交换单元:一种特殊的计算机,它们连接了三条或者更多条传输线。当数据在一条进线上到达的时候,交换单元必须选择一条出线,以便将数据转发出去。这些交换计算机过去被称为“路由器”
      • 每一台主机往往连接到一个LAN上,在LAN上会有一个路由器,某些情况下,主机也可以直接连到一个路由器上。通信线和路由器(不包括主机)的集合构成了子网。
      • 分组交换WAN的原则:“存储-转发”或“分组交换”。
    • 无线网络

      • 分为(1)系统互连(例如,蓝牙);(2)无线LAN(3)无线WAN
  • 二、网络软件

    • 为了降低网络设计的复杂性,绝大多数网络都组织成一队相互叠加的层,每一层都建立在其下一层的基础之上。

    • 数据不是从一台机器的第n层直接传递到另一台机器的第n层。相反,每一层都将数据和控制信息传递给它的下一层,这样一直传递到最低下的层。第一层最下面是物理介质。

    • 层和协议的集合称为网络体系结构。一个特定的系统所使用的的一组协议(每层一个协议)称为协议栈。

    • 各层的实际问题

      • 每一层,都需要一种机制来标识出发送方和接收方。一般网络上有好多计算机,计算机上又有许多进程,所以需要一种编址机制来指定一个特定的目标。
      • 协议需要确定每个连接对应多少逻辑信道,且确定他们的优先级别。许多网络至少提供两个逻辑信道,一个用于普通数据,一个用于紧急数据。
      • 错误控制。
      • 发送方发送速度很快时,如何避免接收方被数据淹没。有些是利用一种反馈机制,有些方案则限制发送方以商定的速率发送(流量控制)。
      • 为每一对通信进程建立一个单独的连接,很不方便,且代价高昂。因此,可以是多对进程使用同一连接。多路复用,多路解复用。
      • 路由选择。当源端和目标端之间存在多条路径的时候,必须进行路由选择。
    • 面向连接与无连接的服务

      • 面向连接的服务是基于电话系统模型的。
      • 无连接的服务是基于邮政系统模型的。
    • 服务原语:一个服务通常是由一组原语(primitive)操作来描述的,用户进程通过这些原语操作可以访问服务。

      • 例子:为了实现一个可靠的字节流,可以考虑原语如下
        • LISTEN:阻塞操作,等待一个进入的连接
        • CONNECT:与一个正在等待的对等体建立连接
        • RECEIVE:阻塞操作,等待一个进入的报文
        • SEND:给对等体发送一个报文
        • DISCONNECT:终止一个连接
      • 服务和协议的区别:服务好像是面向对象语言中的抽象数据类型或对象,它定义了在对象上可以执行的操作,但并没有具体实现。协议涉及到服务的具体实现。
    • OSI参考模型

      • OSI(Open System Interconnection)

      • 物理层(physical layer):涉及到在通信信道上传输的原始数据位。

      • 数据链路层(data link layer):主要将一个原始的传输设施转变成一条逻辑的传输线路,在这条传输线路上,所有检测出来的传输错误也会反应到网络层。数据链路层的做法是:让发送方将输入的数据拆分,分装到数据帧(data fram,通常几百或几千个字节),然后顺序的传送这些数据帧。如果是可靠的服务,接收方接收到后,给发送方送回一个确认帧(acknowledgement frame)。问题:快速发送方“淹没”掉慢速的接收方。解决:流量调节机制。

      • 网络层(network layer):控制子网的运行过程。网络层应当确定如何将分组从源端路由到目标端。问题:两个网络的编址方案不同,连接的问题。分组太大,另一个网络无法接受。

      • 传输层(transport layer):基本功能是接收来自上一层的数据,并且在必要的时候把这些数据分割成很小的单元,然后把数据单元传递给网络层,并确保这些数据片段都能够的到达另一端。

      • 会话层(session layer):允许不同机器上的用户之间建立回话。

        • 所谓会话,通常指各种服务,包括:
          • 对话控制(dialog control):记录下该谁来传递数据了
          • 令牌管理(token management):禁止双方同时执行同一个关键操作
          • 同步功能(synchronization):在一个长的传输过程中设置一些检查点,以便在系统奔溃之后还能够在奔溃前的点上继续执行。
      • 表示层(presentation layer):表示层下面各层中,关注的是如何传递数据位,而表示层关注的是所传递的信息的语法和语义。不同计算机可能会使用不同的数据表示法,为了让这些计算机能够进行通信,它们所交换的数据结构必须以一种抽象的方式来定义,同时,表示层还应该定义一种标准的编码方式,用来表达网络线路上所传递的数据。

      • 应用层(application layer):包含了各种各同样的协议,这些协议往往直接针对用户的需要,一个广泛使用的应用协议是HTTP(HyperText Transfer Protocol),它也是WWW(万维网)的基础。

    • TCP/IP参考模型

      • 包括四层:应用层,传输层,互联网层,主机至网络。

      • 互联网层(Internet layer):互联网层定义了正式的分组格式和协议,该协议称为IP(Internet Protocol)。互联网层的任务是将IP分组投递到它们该去的地方。分组路由和避免拥塞是最主要的问题。

      • 传输层:它的设计目标是容许源和目标主机上的对等体之间可以进行对话。包括TCP(Transport Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)。

      • 应用层:包括

        • 虚拟终端协议(TELNET):允许一台机器上的用户登录到远程的机器上,并且在远程的机器上进行工作。
        • 文件传输协议(FTP):提供了一种在两台机器之间高效地移动数据的途径。
        • 电子邮件协议(SMPT)
        • DNS(Domain Name System,域名系统):将主机名字映射到它们的网络地址。
        • HTTP用于获取www上的页面;等等。
      • 主机至网络层:TCP/IP参考模型并没有明确规定这里应该有哪些内容,它只是指出,主机必须通过某个协议连接到网络上,以便可以将分组发送到网络上。

  • 三、物理层(简单介绍)

    • 数据通信理论的基础:傅立叶分析

      • 任何一个正常的周期为T的函数,都可以展开成多个(可能无线个)正弦和余弦函数的和。
      • 正弦函数和余弦函数正交归一的关系
      • 有限带宽的信号。带宽:传输过程中振幅不会明显减弱的这一段频率范围称为带宽(bandwidth)
      • 信道的最大数据传输率。尼奎斯特采样定理和香农定理
    • 有导向的传输介质

      • 磁介质
      • 双绞线
      • 同轴电缆
      • 光纤
    • 无线传输

      • 电波传输

      • 红外线和毫米波

      • 光波传输

      • 各类通信卫星

    • 移动通信系统及有线电视

  • 四、数据链路层

    • 数据链路层的设计要点

      • 数据链路层要完成的特点的功能

        • 1.向网络层提供一个定义良好的服务接口;
        • 2.处理传输错误
        • 3.调节数据流,确保慢速的接收方不会被快速的发送方淹没
      • 为了实现这些目标,数据链路层从网络层获取到分组,然后将这些分组封装到帧中以便传输。每一帧包括一个帧头、一个有效载荷域(用于存放分组),以及一个帧尾。帧管理构成了数据链路层的工作核心。

    • 数据链路层的功能是为网络层提供服务。最主要的服务是将数据从源机器的网络层传输到目标机器的网络层。

    • 一般情况下,提供三种服务:

      • 无确认的无连接服务:源机器向目标机器发送独立的帧,目标机器并不对这些帧进行确认。
      • 有确认的无连接服务:虽然没有使用逻辑连接,但所发的每一帧都需要单独的确认。超时后,会重发该帧。
      • 有确认的面向连接服务:源机器和目标机器首先建立一个连接。该连接上发送的每一帧都被编号,数据链路层保证每一帧都会真正的被接收到。可以保证每一帧只被接收一次,且按照正确的顺序被接收。
    • 成帧:物理层的任务是接收一个原始的位流,并试图将它递交给目标机器,这个位流容易产生错误(位的数量改变,值发生变化等),检测错误和纠正错误的工作是由数据链路层来完成。

    • 由于依靠时间来标识每一帧的起始和结束位置风险太大,所以要设计其他方法。

      • 1.字符计数法:每利用头部中的一个域来指定该帧中的字符数。问题,计数值有可能因为传输错误而被弄乱。
      • 2.含字节填充的分界符法:它的做法是让每一帧都用一些特殊的字节做为开始和结束。缺点:它紧紧依赖8位字符的模式。
      • 3.含位填充的分界标志法:
      • 4.物理层编码违例法:
    • 错误控制:接收方送回一些特殊的控制帧用以确认信息。帧丢失的情况,可以采用定时器来解决(例如,超过定时器限制时间,则重发帧)。

    • 流控制:如果发送方发送的帧的速度超过了接收方能够接受的这些帧的速度,则发送方该如何处理呢?解决办法:

      • 1.基于反馈的流量控制(feedback-based flow control),接收方给发送方送回信息,允许它发送更多的数据,或者至少告诉发送它的情况怎么样。
      • 2.基于速率的流量控制(rate-based flow control),使用这种方法的协议有一种内置机制,它限制了发送方传输数据的速率,而无需利用接收方的反馈信息(数据链路层不使用)。
    • 错误检测和纠正

      • 纠错码(error-correcting code):在每一个被发送的数据块中包含足够的冗余信息,以便接收方可以推断出被发送的数据中肯定有哪些内容。
        • 包含m个数据位(报文)和r个冗余位(校验位)。我们把包含数据和校验位的n(n=m+r)位单元通常也称为n位码字(codeword)。
        • 两个码字中不相同的位的个数称为海明距离(Hamming distance)。意义:如果两个码字的海明距离为d,则需要d个1位错误才能将一个码字变成另一个码字。例子,奇偶校验。
          -检错码(error-detecting code):也包含一些冗余信息,但这些信息只能让接收者推断出发生了错误,但推断不出发生了哪个错误,然后接受方可以请求重传。
    • 基本的数据链路协议

      • 基本假设:1.多数情况下,物理层和数据链路层进程会在一个特殊的网络I/O电路中的一个处理器上运行;而网络层代码则在主CPU上运行(其他情况也是可能的)。2.机器A希望用一个可靠地、面向连接的服务,向机器B发送一个长的数据流。

      • 一个无限制的单工协议:该协议中,数据只能单向传输,传输方和接收方的网络层总是处于准备就绪的状态。处理的时间可以被忽略。假设缓存空间无限大。数据链路层之间的通信信道永远不会损坏或者丢失帧。

      • 一个单工的停-等协议:需要处理的问题是如何避免发送方用超过接收能力的大量数据来淹没接收方。一般解决方案为,让接收方提供反馈信息给发送方。发送方送出一帧,然后先等待一个确认,再继续发送,这样的协议称为停-等协议(stop-and-wait)。

      • 有噪声信道的单工协议:可能的情况就是有噪声的情况会导致帧信息损坏。确认帧完全丢失就会导致数据源机器不断地向目标机器发送相同的帧数据。解决办法:可以通过在每一帧的头部放上一个序列号用于判断是新帧还是重复帧。

      • 滑动窗口协议(sliding window protocol):

        • 上面的协议中,数据帧只在一个方向上传输。而大多数情况数据传输是双向的。解决办法:全双工数据传输(例如,使用两条独立的通信信道)。但这样会导致逆向信道带宽的浪费。

        • 更好的办法:使用一条线路来传输两个方向上的数据。该模型中,从机器A到机器B的数据帧可以与从机器A到机器B的确认帧混合在一起。接收方只要检查证的头部的kind域,就可以区别该帧是数据还是确认。

        • 更好的改进:当一个数据帧到达的时候,接收方并不是立即发送一个单独的控制帧,而是等待一会,直到网络层传递给它下一个分组,将确认信息(控制帧)和外发数据帧一起发送。这种将确认暂时延迟以便钩到下一个外发数据帧的技术称为捎带确认(piggybacking)。问题:数据链路层应该等待下一个分组多长时间?

        • 滑动窗口协议的本质是:在任何时刻,发送方总是维持着一组序列号,分别对应于允许它发送的帧。我们称这些帧落在发送窗口(sending window)之内。类似的,接收方也维持着一个接收窗口(receiving window),对应于一组允许它接收的帧。发送方的窗口和接收方的窗口不必有同样的上下界,甚至比必有同样的大小。有些协议中,窗口有固定的大小,另一些协议中窗口的大小变化。

          • 发送方必须在内存中保存好所有这些帧,以便可能进行重传。如果最大窗口尺寸为n,则发送方需要n个缓冲区来存放未被确认的帧。

          • 接收方数据链路层窗口对应于它可以接受的帧。任何落在窗口外面的帧都被丢弃,无需任何提示。

          • 1位滑动窗口协议:一个最大窗口尺寸为1的滑动窗口协议。由于发送方在送出一帧以后,在发送下一帧之前要等待前一帧的确认。因此这样的1位滑动窗口协议使用了停-等的办法。

          • 使用回退n帧技术的协议:目前为止,我们默认的假设是,一帧到达接收方所需要的传输时间加上确认帧回来的传输时间可以忽略不计。有时候这种假设是不正确的。

    • 协议的验证(了解)

      • 有限状态机模型(finite state machine)
      • Petri网模型
    • 数据链路层协议示例

      • SDLC(Synchronous Data Link Control,同步数据链路控制)协议(IBM提出))

        • ADCCP(Advanced Data Communication Control Procedure,高级数据通信控制规程)(ANSI在SDLC基础上修改得到)
        • HDLP(High-level Data Link Control,高级数据链路控制)。(ISO在SDLC基础上修改)
        • 这些协议基于相同的原理。所有协议是面向位的,并且为了确保数据的透明性,它们都使用了位填充
        • 面向位填充协议帧的基本结构。
          • 帧的分界,标志序列(01111110)。
          • 地址(address)域:对多个终端的线路显得很重要,因为在这样的环境中,该域被用于标识一个终端。
          • 控制(Control)域:被用作序列号、确认,以及其他用途。
          • 数据(Data)域:可以包含任何信息。它可以任意长,不过随着帧长度的增加,校验和的效率会降低,因为突发性错误的概率会加大。
          • 校验和域(Checksum):该域是一个循环冗余码。
      • Internet中的数据链路层

        • 在单个建筑物内,通常使用LAN来实现互连,但绝大多数的广域设施则通过点到点的租用线路构建起来的。
        • Internet中使用的数据链路协议称为PPP。PPP(Point-to-Point Protocol,点到点协议),它有多种用途,其中包括传送从路由器到路由器之间的流量,以及家庭用户到ISP之间的流量。PPP提供了三类功能:
          -(1)一种成帧方法。它可以毫无歧义地分隔出一帧的结束和下一帧的开始。并且帧的格式支持错误检测。
          • (2)一个链路控制协议,可用于启动线路、测试线路、协商参数,以及当线路不在需要的时候可以温和的关闭线路。该协议称为LCP(Link Control Protocol,链路控制协议)。
          • (3)一种协商网络层选项的方法,并且协商方法与所使用的网络层协议独立。所选择的方法对于每一种支持的网络层都有一个不同的NCP(Network Control Protocol,网络控制协议)。
    • 总结:数据链路层的任务是将物理层提供的原始位流转换成可供网络层使用的帧流。用到的成帧方法包括:字符计数法、字节填充法和位填充法。为了避免快速发送方淹没一个慢速的接收方,数据链路协议需要提供流量控制功能。滑动窗口机制,两个窗口大小都为1,滑动窗口机制变成了停-等协议,当发送窗口大于1,接收方可以除了下一个顺序帧外丢弃其他帧,或将所有乱序的帧缓存起来,一直到需要这些帧的时候。

  • 五、网络层

  • 六、传输层

  • 七、应用层

  • 八、网络安全

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/41637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深圳航空顶象验证码逆向,和百度验证码训练思路

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言(lianxi a…

encrypt decrypt CA

encrypt & decrypt & CA 加密解密证书

基于java+springboot+vue实现的大学生就业需求分析系统(文末源码+Lw)233

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自…

A股继续3000以下震荡,而国外股市屡创新高,人民币反弹能带动A股吗?

今天的A股,让人愤愤不已,你知道是为什么吗?盘面上出现3个耐人寻味的重要信号,一起来看看: 1、今天两市一度回踩2920点,让股民的心都开始悬起来了。而午后市场行情有了转变,下跌的股票开始明显变…

linux 安装 ImageMagick 及 php imagick扩展

安装imagick扩展前必须安装ImageMagick 一、安装ImageMagick wget http://www.imagemagick.org/download/ImageMagick.tar.gz 上面如果报错(cannot verify download.imagemagick.org’s certificate)执行 sudo yum install -y ca-certificates tar zxv…

RPM 包默认安装的服务

RPM 包默认安装的服务 chkconfig --list # 查看服务自启动状态,可以看到所有RPM包安装的服务 ps aux # 查看进程,包括服务的启动状态和系统程序 netstat -tlunp # 查询系统中开启的服务vim /etc/services # 查看端口作用查询系统中开启的服务 netstat …

在centos7上部署mysql8.0

1.安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB。查看是否安装mariadb rpm -qa | grep mariadb 2. 卸载mariadb rpm -e --nodeps 查看到的文件名 3.下载MySQL安装包 MySQL官网下载地址: MySQL :: Download MySQL Community Serverhttps://dev.mys…

c/c++ 程序运行的过程分析

c/c编译基础知识 GNU GNU(GNU’s Not Unix!)是一个由理查德斯托曼(Richard Stallman)在1983年发起的自由软件项目,旨在创建一个完全自由的操作系统,包括操作系统的内核、编译器、工具、库、文本编辑器、邮…

adb shell ps -T打印出来参数的含义,以及D,T,Z代表的状态含义是什么?

在Android系统中,使用adb shell ps命令可以查看当前系统中运行的进程信息。当你添加-T选项时(注意,标准的ps命令在Android的adb shell中可能不直接支持-T选项,这通常与Linux中的ps命令略有不同),你可能是想…

线性代数基础概念:矩阵

目录 线性代数基础概念:矩阵 1. 矩阵的定义 2. 矩阵的运算 3. 矩阵的特殊类型 4. 矩阵的秩 5. 矩阵的初等变换 6. 矩阵的特征值与特征向量 7. 矩阵的应用 8. 矩阵总结 总结 线性代数基础概念:矩阵 矩阵是线性代数中的另一个重要概念&#xff0…

学java的第3天 后端商城小程序工作

1.数据库的大坑 特殊字段名 ’我的图片表中有一个字段是描述我写成desc了,正好是mysql中的关键字 就不能使用了 2.后端编写 2.1可以把请求分开 在商品浏览页中 只显示商品的大致信息 当用户再点击其他按钮时在发出请求 2.2把请求合并 把数据整合到一起 利用ass…

Python爬虫教程第1篇-基础知识

文章目录 什么是爬虫爬虫的工作原理用途搜索引擎爬虫Robots协议HTTP的请求过程URL的含义HTTP常见请求头爬虫常用的技术 什么是爬虫 信息的交互是通过web网页、或者移动端等不同的客户端端形式进行交互,这个过程是一个人与网路正常的交互行为。而爬虫可以用来模拟人…

linux-5.10.110内核源码分析 - Freescale ls1012a pcie host驱动

1、dts pcie设备树 1.1、pcie设备树 pcie1: pcie3400000 {compatible "fsl,ls1012a-pcie";reg <0x00 0x03400000 0x0 0x00100000 /* controller registers */0x40 0x00000000 0x0 0x00002000>; /* configuration space */reg-names "regs", &…

JVM原理(十七):JVM虚拟机即时编译器详解

编译器无论在何时、在何种状态下把Class文件转换成与本地基础设施相关的二进制机器码&#xff0c;他都可以视为整个编译过程的后端。 后端编译器编译性能的好坏、代码优化质量的高低却是衡量一款商用虛拟机优秀与否的关键指标之一。 1. 即时编译器 即时编译器是一个把Java的…

Linux进程(1)(结构-操作系统-进程)

目录 1.体系结构 2.操作系统&#xff08;Operator System&#xff09; 1&#xff09;概念&#xff1a; 2&#xff09;结构 示意图&#xff08;不完整&#xff09; 3&#xff09;尝试理解操作系统 4&#xff09;系统调用和库函数概念 3.认识进程 1.启动 2.进程创建的代码…

Mojo 编程语言:AI 开发者的必备利器

目录 1. Mojo 的背景与发展 1.1 编程语言的演变 1.2 Mojo 的诞生 2. Mojo 的核心特点 2.1 高性能计算 2.2 易用性 2.3 灵活性 3. Mojo 的关键技术 3.1 静态类型系统 3.2 并行计算 3.3 高效的内存管理 3.4 GPU 加速 4. Mojo 的应用场景 4.1 数据处理与分析 4.2 机…

王道考研数据机构:中缀表达式转为后缀表达式

实现方法&#xff1a; 初始化一个栈&#xff0c;用于保存暂时还不能确定运算顺序的运算符。从左到右处理各个元素&#xff0c;直到末尾。可能遇到三种情况: 遇到操作数。直接加入后缀表达式遇到界限符。遇到“(”直接入栈;遇到“)”则依次弹出栈内运算符并加入后缀表达式&…

C#用反射机制调用dll文件的字段、属性和方法

1、创建dll文件 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace CLStudent {public class Student{//字段public string Name "Tom";//属性public double ChineseScore { get; s…

Nginx-http_auth_basic_module使用

文章目录 前言一、ngx_http_auth_basic_module二、指令1.auth_basic1.auth_basic_user_file 示例生成密码文件配置basic认证浏览器验证 总结 前言 nginx可以通过HTTP Basic Authutication协议进行用户名和密码的认证。 一、ngx_http_auth_basic_module 生效阶段&#xff1a; …

【linux/shell】linux如何去除字符串中空格

在Linux中&#xff0c;去除字符串中的空格可以使用多种方法&#xff0c;以下是一些常见的命令和技巧&#xff1a; 1. 使用 tr 命令&#xff1a; tr 命令可以用来替换或删除字符。要删除空格&#xff0c;可以使用&#xff1a; echo "字符串" | tr -d 2. 使用 se…