计算机网络笔记--Part3 - 雨中的博客

这系列记录翀翀🤠学习计算机网络时的核心笔记以及自己的思考,作为408组成学科之一,一定要认真学习。赠一言与君共勉:一个人的一生总会遇到这样的时刻,一个人的战争。在这种时候,你的心被颠倒了,但在别人眼里,你只是比平时安静一点,没有人会觉得奇怪。这种战争注定是单枪匹马的。

协议、接口和服务

协议

协议是一些规则的集合。在网络中要做到有条不紊的交换数据,就必须遵循一些实现约定好的规则,这些规则明确规定了所交换的数据的格式和一些其他问题。这些为进行网络中的数据交换而建立的规则、标准和约定称为网络协议,他是控制两个或多个对等实体进行通信的规则的集合,是水平的。不定等实体之间是没有协议的,比如用TCP/IP协议栈通信的两个节点,节点A的传输层和节点B的传输层之间存在协议,但是节点A的传输层和节点B的网络层之间就不存在协议,网络协议也称为协议。

一个协议由语法、语义和同步三部分组成。语法规定了传输数据的格式,语义规定了所要完成的功能,即需要发出何种控制信息、完成何种动作以及做出何种应答,同步规定了执行各操作的条件、时序关系等,即事件实现顺序的详细说明。一个完整的协议通常应该具有线路管理(建立、释放连接)、差错控制。数据转转换等功能。

接口

接口是同一节点内相邻两层之间交换信息的连接点,是一个系统内部的规定。每层只能相邻的两层之间定义接口,不能跨层定义接口,在典型的接口上,同一节点的相邻两层的实体通过服务访问点(SAP)进行交互。服务是通过SAP提供给上层使用的,第n层的SAP就是第n+1层可以访问第n层的地方。每一个SAP都有一个能够标识他的地址。SAP是一个抽象概念,他实际上是一个逻辑接口(类似于信箱),与通常所说的两个设备之间的接口是不同的,即使一个区域为接口,并不是实体上的“接口”。

服务

服务是指下层为紧邻的上层提供的功能调用,他是垂直的,对等实体在协议的控制下,使得本层能为上一层提供服务,但要实现本层协议还需要下一层所提供的的服务。

上层使用下层所提供的服务时必须与下层交换一些指令,这些命令在OSI中称为服务原语,OSI服务原语可以分为下面四种:

  • 请求(Request):由服务用户发往服务提供者,请求完成某项工作。
  • 指示(Indication):由服务提供者发往服务用户,指示用户做某件事情。
  • 响应(Response):由服务用户发往服务提供者,作为对指示的响应。
  • 证实(Confirmation):由服务提供者发往服务用户,作为对请求的证实。

这四类原语用于不同的功能,如建立连接、传输数据和断开连接等,有应答服务包括全部4类原语,而无应答服务则只有请求和指示两类原语。我们用一个图来说明:

假设现在端系统A的n+1层向端系统Bn+1层进行了一个交换信息行为,那么n+1层需要先向n层发送请求,然后n层也一直向下发送请求直至物理层,然后物理层传输信号到达系统B的物理层再逐层向上传递指示。当端系统B的n+1层处理完信号以后,如果不需要响应,那么这次操作就完成了,否则B中的n+1层向n层发送响应,然后n层及以下层也是逐层向下发送响应,最后到达物理层通过传输到达系统A,再逐层向上传递证实。

我们一定要注意服务是上下相邻层之间才能进行的,即n+1层只能使用第n的服务,他不能跨层使用。当原语传递到n层后,继续再向上或向下传递就是通过第n层使用n-1层的服务了。此时就和n+1层没有直接关系了。

思考:协议、服务的区别?

注意协议和服务概念上不同。首先,只有本层协议的实现才能保证向上一层提供服务,本层的服务用户只能看见服务而无法看见下面的协议,即下面的协议对上层的服务是透明的而协议不透明。其次协议是水平的,协议是控制对等实体之间通信的规则,而服务时垂直的,服务是由下层通过层间接口向上层提供的。另外,并非在一层内完成的全部功能都称为服务,只有能够被高层实体”看得见“的功能才是服务。

协议、接口、服务的关系如下图:

接口就是实体n+1和实体n之间能够交换原语的通道。

计算机网络提供的服务

面向连接服务与无连接服务

面向连接服务中,通信前双方必须先建立连接,分配相应的资源(如缓冲区等),以保证通信能够正常进行,传输结束以后释放连接和占用的资源。这种服务可以分为连接建立,数据传输和连接释放三个阶段,比如TCP就是一种面向连接服务的协议。

在无连接服务中,通信前双方不需要先建立连接,需要发送数据时可以直接发送,把每个带有目的地址的包(报文分组)传送到线路上,有系统选定路线进行传输,这是一种不可靠的服务。这种服务被描述为“尽最大努力交付”,他并不保证通信的可靠性。例如IP、UDP等就是一种无连接服务的协议。

我们可以总结出面向连接服务是一种可靠传输,而无连接服务是一种不可靠连接。

可靠服务和不可靠服务

可靠服务就是指网络具有纠错、检错、应答进制,能够保证数据正确、可靠地传送到目的地。

不可靠服务是指网络只是尽量正确、可靠地传送,而不能保证数据正确、可靠地传输到目的地,是一种尽力而为的服务。

对于提供不可靠服务的网络,网络的正确性、可靠性应该由应用或者用户来保证。例如:用户收到信息后要判断信息是否正确,如果不正确,那么用户要把出错信息报告给信息的发送者,以便发送者进行纠正措施。通过用户的这些措施,可以把不可靠的服务变成可靠的服务。

在一层内完成的全部功能并非都称为服务,只有那些能够被高一层实体“看得见”的功能才能成为服务。

有应答服务和无应答服务

有应答服务是指接收方收到数据以后向发送方给出相应的应答,该应答有传输系统内部自动实现,而不由用户实现。所发送的应答既可以是肯定的应答也可以是否定应答,通常在接收到的数据有错误时发送否定应答。例如:文件传输服务就是一种有应答服务。

无应答服务是指接收方收到数据后不自动给出应答。若需要应答,则由高层实现,例如:对于www服务,客户端收到服务器发送的页面文件后不给出应答。

ISO/OSI参考模型

我们在上一章中讲到计算机网络中会进行结构分层,这里就将以下网络体系的分层结构模型。第一种就是OSI参考模型。

OSI参考模型是由国际标准化组织(ISO)提出的网络体系结构模型,称为开放系统互联参考模型(OSI/RM),通常简称为OSI参考模型。OSI一共分为了7层,从下到上依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。第三层统称为通信子网,他是为了联网而附加的通信设备,完成数据的传输功能,高三层统称为资源子网,它相当于计算机系统,完成数据的处理功能。而传输层承上启下。OSI参考模型如下图:

我们前面还讲过打包的过程和拆包的过程以及PDU和SDU的关系:

我们通过上图可以看到在传输时实际上只是一直在通信子网传输,只有发送端和接收端会涉及到资源子网的上三层。并且上四层之间貌似是通过协议直接进行的数据交换,但是实际上都是通过通信子网的下三层呈现一个U型方向传送实现的。

只有源端和目的端的主机是7层,中继系统是3层或者3层以下。每一层之间通过OSAP接口实现连接。

思考:为什么中继系统最高位3层?

我们在了解了一个分组信息的传输过程后就不难理解了,一个数据信息最终会分成分组在网络层进行转发,选择合适的路径进行通信网络间的传输,而转发需要在网络层实现(通过IP地址实现跨网),因此中继系统最高位3层。但是有些数据并不需要跨网传输,而仅仅需要在一个以太网下进行传输,因此不会用到网络层的服务,仅仅需要数据链路层即可,因此有些中继系统是2层。第二层的转发设备是交换机,第三层的转发设备是路由器。

思考:协议和服务的区别?通信子网(下三层)与资源子网(上三层)的区别?

协议是水平的,服务是纵向的。对于上三层的协议是端到端的,点都点的或者C/S模型。而对于下三层的通信子网是跳到跳的,一般一个转发过程需要经过5-6跳经过许许多多个中继设备。

下面我们详细学习一下各个层的功能:

物理层(Physical Layer)

物理层的传输单位是比特,任务是透明的传输比特流,功能是在物理媒体上为数据端设备透明地传输原始比特流。

思考:什么是透明传输

透明传输是指不管是什么数据,都可以以一定的比特组合,在物理层链路上进行传送:

也就是说物理层可以承担传输所有数据的功能。

物理层主要是定义数据端设备(DTE)和数据通信设备(DCE)的物理与逻辑连接方法,所以物理层协议也称为物理层接口标准。由于在通信技术的早期阶段,通信规则称为规程,因此物理层协议也称为物理层规程。

物理层接口标准很多,如:EIA-232C、EIA/TIA RS-449、CCITT的X2.1等。下图表示了两个通信节点及它们间的一段通信链路,物理层主要研究以下内容:

  1. 通信链路与通信节点的链接需要一些电路接口,物理层规定了这些接口的一些参数,如机械形状和尺寸、交换电路的数量和排列等,例如:笔记本电脑上的网线接口,就是物理层规定的内容之一
  2. 物理层也规定了通信链路上传输的信号的意义和电气特征。例如物理层规定信号A代表数字0,那么当节点要传输数字0时,就会发送信号A,当节点接收到A信号以后,就知道在自己接收到的实际上是数字0.

注意传输信息所使用的一些物理媒介,如双绞线、光缆、无线信道等,并不在物理层协议之内而在物理层协议下面。因此物理媒体也常被称为第0层。

下面我们总结一下物理层的功能:

  • 定义接口特性
  • 定义传输模式(单工、半双工、双工)
  • 定义传输速率
  • 比特同步
  • 比特编码

数据链路层的传输单位是帧,任务是将网络层传来的IP数据报组装成帧。数据链路层的功能可以概括为成帧、差错控制、流量控制和传输管理等。

由于外界噪声的干扰,原始的物理连接在传输比特流时可能发生错误:左边节点想向右边节点传输数字0,于是发送了信号A,但是由于传输过程中受到了干扰,信号A变成了限号B,而信号B又刚好代表1,右边节点接收到信号B时,就会误以为左边节点传送了数字1,从而发生差错。这种差错我们称之为信号翻转,即0变成了1,1变成了0,其实我们在学习了数字逻辑以后就知道导致这种现象的原因是电平电压受噪音干扰发生了波动导致的。此时我们需要通过适当的办法避免这种错误的干扰,于是两个节点之间如果规定了数据链路层协议,那么就可以检测出这些数据翻转的差错,然后把收到的错误信息丢弃,这就是差错控制功能。因此差错控制功能是通过数据链路层完成的。

同时,在两个相邻接点之间传送数据时,由于两个节点的性能不同,可能节点A发送数据速率会快于节点B接受数据的速率,如果不加以控制,那么节点B就会丢弃很多来不及接受的正确数据,造成传输线路效率的下降。流量控制可以协调两个节点的速率,使节点A发送数据的速率刚好是节点B可以接受到的速率。总之就是A节点发送数据的速率要小于等于节点B接受数据的速率。

广播式网络在数据链路层还要处理新的问题(快速跳转->《广播式网络》),即如何控制对共享信道的访问,数据链路层的一个特殊的子层—介质访问子层,就是专门处理这个问题的以保证公共信道不会出现信息传输冲突。

典型的数据链路层协议有SDLC,HDLC,PPP,STP和帧中继等。

下面我们总结一下数据链路层的功能:

  • 成帧(定义帧的开始和结束)
  • 差错控制
  • 流量控制
  • 访问(介入)控制
网络层(Network Layer)

网络层的传输数据单位是数据报,它主要是实现通信子网间的数据传输运行控制,主要任务就是把网络层的协议数据单元(分组)从源端传送到目的端,为分组在交换网上的不同主机提供通信服务。我们一定要注意在网络层上端指的是服务端和客户端,即是主机,而不是端口,因此不区分是哪一个程序。网络层为了实现分组的传输的最短路径以及速率稳定,提供了以下功能:流量控制,拥塞控制,差错控制和网际互联等功能。

其中流量控制和数据链路层的流量控制类似,就是保证了发送端的速率和接收端的速率保持在一个合理的范围,使得两端的缓冲区不会出现溢出过多从而造成大量丢弃分组造成的浪费现象。而拥塞控制是网络层专属的功能,他主要是用来保证在子网传输的过程中不会出现子网间分组过多而造成的通信体系整体瘫痪通信功能下降的问题。差错控制还是进行错误的检测,当检测有错误后选择重传即可,常用的差错检测方法有奇偶校验,海明码,CRC循环冗余等,接收方根据这个规则保证向上传递的数据时无误的。

因特网是一个很大的互联网,他由大量的异构网络通过路由器(Router)相互连接起来。因特网的主要网络层协议是无连接的网际协议(Internet,IP)和许多路由选择协议,因此网络层也称为网际层或者IP层。

网络是许许多多多个子网构成的包含了路由器,主机等概念,因此他和我们生活中所理解的网络有一定的区别,是在计算机网络体系结构中使用的专属名词。在网络层常见的协议有IP、IPX、ICMP、IGMP、ARP、RARP和OSPF等。

我们总结一下网络层的功能:

  • 数据报
  • 流量控制,差错控制
  • 特有的拥塞控制
传输层(Transport Layer)

传输层又称为运输层,传输数据单元是报文段(TCP)或者用户数据报(UDP),传输层是层负责主机中两个进程间的通信,功能是为端到端连接提供可靠的传输服务,为端到端提供流量控制、差错控制、服务质量、数据传输管理等服务。

数据链路层、网络层提供的是点到点的服务,即一个主机到另一个主机的数据通信,但是我们知道实际使用时许多个进程应用需要同时进行数据的传输,因此点到点需要进一步分化,也就是端到端,即每一个进程对应着同一个主机IP不同的端口号,实现不同的进程使用相同的IP+不同的端口号同时独立的进行数据的传输,彼此之间互不影响。而传输层和应用层就是实现端到端的服务。

我们可以这样理解点到点和端到端的区别,一个点就是指一个硬件地址或IP地址,同一个硬件上的应用显然IP地址相同,而一个端就是一个主机上的某一个软件进程的通信端口,因此同一个主机上的不用应用进程端口号不同。

使用传输层的服务,高层用户可以直接进行端到端的数据传输,从而忽略通信子网的存在。通过传输层的屏蔽,高层用户是看不到子网的交替和变化的。我们看下图就可以理解:

我们可以看到实际上传输层协议也是由下三层服务为基础实现的,但是在中继系统是不会涉及到传输层的协议的,就好像在传输过程中,传输层上面的协议服务是直接连接源端和目的端的,这就是所说的忽略通信子网的存在。

同时我们还要理解透明一词在计网这种的意思,它是指看不见的意思,就好像空气看不到的样子。而低层协议相对于高层协议就是透明的,即高层协议是通过低层协议提供的服务实现的更高层功能的,但是他只关心低层协议提供的服务,而不关心低层协议的服务具体是如何实现的。这就有点像OS中低层硬件层和高层软件层的关系,软件只关注如何使用硬件层提供的服务,而不关系硬件层如何实现这些功能的。因此高层协议是不知道低层协议的运行机制的。

因为传输层实现的是端到端服务,而一个主机可以有多个进程,因此传输层是具有复用和分用的功能。复用是指多个应用进程可同时使用下面传输层的服务,分用是指传输层把收到的信息分别交付给上面应用层中相应的进程。即复用是数据从上到下汇聚的过程,而分用是聚合的数据从下到上分开分别服务与对应进程的过程,两者是对立的概念、

传输层最主要的协议有TCP、UDP。

我们总结一下传输层的功能:

  • 用户数据报和数据报文段
  • 端到端传输
  • 流量控制、差错控制、服务质量、数据传输管理
  • 在不可靠传输基础上实现了可靠传输
  • 复用分用
会话层(Session Layer)

会话层允许不同主机上的各个进程之间进行会话,会话层利用传输层提供的端到端服务,向表示层提供它的增值服务。他为表示层实体或用户进程建立连接并在连接上有序地传输数据,这就是会话,也称为建立同步(SYN)。会话层负责管理主机间的会话进程,包括建立、管理及终止进程间的会话,会话层可以使用检验点是通信会话在通信失效时从校验点继续恢复通信,实现数据同步。常用的协议是ADSP、ASP,适用于传输大文件。

表示层(Presentation Layer)

表示层主要处理两个通信系统交换信息的方式,不同机器采用的编码和表示方法可能不同,使用的数据结构也是不同的。为了使不同表示方法的数据和信息之间能够相互交换,表示层采用抽象的标准方法定义数据结构,并且采用标准的编码形式。数据压缩、加密和解密也是在表示层提供的数据变换功能。主要的协议有JPEG、ASII等。

在计网的OSI结构中,我们通常把7层结构简化为5层结构,而会话层和表示层通常被简化掉,因为他们的功能较为简单且偏向理论,在实际传输中并不常见,因此OSI结构有时也称为5层结构。

应用层(Application Layer)

表示层是OSI模型的最高层,是用户与网络的界面。应用层为特定类型的网络应用提供访问OSI环境的手段。因为用户的实际应用多种多样,这就要求应用层采用不同的应用协议来解决不同类型的应用要求,因此应用层是最复杂的一层,使用的协议也是最多的。典型的协议有用于文件传输的FTP、用于电子邮件的SMTP、用于万维网的HTTP等。同时在应用层还涉及到了两个模型即P2P和C/S模型我们在后面也会详细学习。

总结

自此我们简单的了解了OSI各个层之间的主要功能,那么我们就来横向对比以下各个层的区别:

层服务 传输数据单元 是否属于中继系统的组成部分 协议
物理层 比特 EIA-232C、EIA/TIA RS-449
数据链路层 SDLC,HDLC,PPP,STP和帧中继,ALOHA,CSMA等
网络层 数据报 IP、IPX、ICMP、IGMP、ARP、RARP和OSPF
传输层 × TCP、UDP
会话层 / × ADSP、ASP
表示层 / × JPEG、ASII
应用层 最高层只接收数据 × RIP(特殊记忆),DNS,POP3,FTP,HTTP,SMTP
思考:为什么RIP是应用层协议?

我们简单了解一下RIP协议,他是基于路径向量算法实现的一种路径选择协议,谈到路径选择,因此它主要是在网络层实现的,但是为什么属于应用层呢? 我们要注意协议属于那一层不是由实现的层决定的,而是他针对于哪一层工作决定的,而RIP虽然由网络层实现的,但是他应用于应用层,因此RIP是应用层协议。




©2020 - 2021 By wenchong
津ICP备2021009044号

本站总访问量为 访客数为

本站使用 Volantis 作为主题|借助hexo强力驱动|由腾讯云提供云服务