引言

本篇博文内容主要由计算机网络课程前两次课程的课堂笔记和课下阅读教材后的重点归纳与其他资料综合整理而来,重点聚焦了互联网的基本概念、分类与计算机网络体系结构等相关知识。本章重点内容在于计算机网络协议的五层协议体系结构

互联网概述

计算机网络是由若干结点和连接这些节点的链路组成的。其中网络中的结点可以时计算机、集线器、交换机和路由器等。网络之间可以通过路由器互联成为互联网,因此,互联网是网络的网络。互联网从工作方式上看可以划分为两部分——边缘部分(由所有连接在互联网上的主机组成,这部分是用户直接使用的,用来进行通信和资源共享)与核心部分(有大量网络和连接这些网络的路由器组成,为边缘部分提供连通性和交换服务)。

互联网的边缘部分

处在互联网边缘的部分是连接在互联网上所有的主机,被称为端系统。需要指出,主机A与主机B进行通信,实质上是指主机A的某个进程和主机B上的另一个进程进行通信,通常简称计算机之间的通信。这种通信有两类:客户—服务器方式(C/S方式)和对等方式(P2P方式)。

客户-服务器方式(C/S)

客户服务器都是通信中涉及的两个应用程序。客户-服务器方式描述的是进程之间的服务与被服务的关系。客户是服务的请求房,服务器是服务的提供方,服务的请求方和服务提供方使用网络的核心部分提供服务。例如在浏览网站时网站服务器保存网页源代码,你的电脑浏览器将接收到的源代码渲染成最终可视化的页面。这样的明确分工可以使服务器变得更加强大。在这个过程中,客户和服务器还具有下面的特点:

  • 客户程序:被用户调用后运行,在通信时主动向服务器请求服务,因此客户必须知道服务器程序的地址;且客户端不需要特殊的硬件和复杂的操作系统
  • 服务器程序:专门提供某种服务,可同时处理多个远地或本地客户请求;系统启动后自动调用并不断运行,被动等待并接受来自各地客户的通信请求,服务器不需要知道客户程序地址;服务器一般需要强大的硬件和高级操作系统支持。

对等连接模式(P2P)

指两台主机通信时并不区分哪个时服务请求方哪个是服务提供方。只要两台主机都运行了P2P对等连接软件,二者就可以进行平等、对等的连接通信。对等连接方式本质上仍然是客户-服务器方式,只是对等连接中每一台主机即是客户又是服务器。P2P方式可以支持大量对等用户同时工作。

互联网的核心部分

网络的核心部分起特殊作用的是路由器,是一种专用计算机。路由器是实现分组交换的关键构件,任务是转发收到的分组(分组交换),这是网络核心部分最重要的功能。

分组交换采用存储转发技术,通常我们把要发送的整块数据称为一个报文。发送报文之前,先把较长的报文划分为一个个更小的等长数据段。在每一个数据段前面加上一些由必要的控制信息组成的头部(header)后,就构成了一个分组(packet)。分组又称为,分组的首部也称包头。需要强调,分组的首部十分重要,正是因为分组的首部包含了诸如目的地址和源地址等控制信息,每个分组才能在互联网中独立的选择传输路径,并被正确的传输的分组传输的预期终点。

总结一下:位于计算机网络边缘的主机和网络核心部分的路由器其实都是计算机,但是两者的作用却大有不同。主机是为用户进行信息处理的,并且可以和其他主机通过网络交换信息,路由器则是用来进行分组交换的。当路由器收到了一个分组,它将在暂时存储后(注意:路由器暂时存储的是一个个短分组而非整个长报文,且出于保证交换速率的考虑,短分组是暂存在路由器的内存中而非存储在硬盘上)检查包头并查找转发表,按照包头的目的地址找到合适的接口向外转发以实现将包发送到目的主机。分组在传输时就这样一段一段断续占用通信资源,而且省去了建立连接和释放连接的开销,因而数据传输效率更高。也就是说,采用存储转发的分组交换,实质上是采用了在数据通信过程中断续分配带宽的策略,这对传输突发式计算机数据十分合适,使得通信线路利用率大大提高了。

特别指出:分组交换在传输数据之前不必先占用一条端到端的链路通信资源。分组在哪段链路上传送才占用这段链路的通信资源。此外,为了提高分组交换网的可靠性,互联网核心部分常常采用网状拓扑结构。但分组交换时分组在路由器存储转发需要排队,因此会产生时延,此外各分组必须携带包头产生了额外的开销。

计算机网络的类别与性能

计算机网络的类别

  • 按照作用范围,可以分为广域网(WAN)、城域网(MAN)、局域网(LAN)、个人区域网(PAN)等
  • 按照网络使用者,可以分为公用网、专用网等
  • 用来把用户接入互联网的网络,称为接入网(AN)

计算机网络的性能评价指标

  • 速率(比特率):单位为bit/s(也作bps,当网络速率较大时也用kbps、Mbps、Gbps等,注意在计算机网络中不同单位之间是1000进制,不是1024进制,在单位中小写的b为bit,大写的B为byte=8bits),特别指出:提到网络速率时,往往指额定速率标称速率,而非网络实际速率。

  • 带宽:表示网络中某个通道传输数据的能力,因此网络带宽表示单位时间内某个信道通过的最高数据率。单位为bit/s。一条通信链路带宽越宽,所能传输的最高数据率也就越高。

  • 吞吐量:单位时间内通过某个网络的实际数据量。相当于现实生活中实际的网速

  • 时延:数据从网络一端传递到另一端所需要的时间。分为下面几部分:

    • 发送时延:主机或路由器发送数据帧所需要的时间
    • 传播时延:电磁波在信道中传播一定距离花费的时间
    • 处理时延:主机或路由器收到分组后用于处理数据花费的时间
    • 排队时延:分组进入路由器后排队等待转发产生的时延
  • 时延带宽积:传播时延与带宽的乘积,又称为以比特为单位的链路长度

  • 往返时间:两个实体交互数据时双向交互一次所需要的时间

  • 利用率:

    • 信道利用率:某信道有百分之多少的时间是被利用的

    • 网络利用率:全网络信道利用率的加权平均值

      (特别注意:利用率并非越大越好,因为利用率越大,时延越大

计算机网络体系结构

在计算机网络中要有条不紊的交换数据,就必须遵守一些规则,这些规则规定了所交换的数据格式及有关的同步问题(这里的同步应该进行广义的理解,也就是在一定条件下应发生什么事件,因而含有时序的含义),这些所谓的规则称为网络协议。它由三部分构成——语法(数据与控制信息的结构和格式)、语义(需要发出何种控制信息)、同步(事件实现顺序的详细说明)。网络协议是分层实现的。
分层使协议的各层之间独立开来,某一层仅仅需要知道该层通过层间接口(interface)所提供的服务,这样整个问题的复杂程度就下降了;协议的分层还提高了其灵活性,虽然某一层可能发生变化,但是只要层间接口不变,其他层就不受影响(类比于面向对象中的封装)等。
OSI七层协议体系结构概念清楚,更广泛使用的TCP/IP协议则是一个四层的结构(包含应用层、运输层、网络层和网络接口层)。下面结合两种协议的优点,采用一种只有五层协议(应用层、运输层、网络层、数据链路层、物理层)的体系结构。
1568707996059

  • 应用层:体系结构最高层,通过应用进程之间的交互来完成特定网络应用。应用层协议定义的是应用进程之间的通信和交互规则,这里的进程指主机中正在运行的程序。对于不同的网络应用需要不同的应用层协议,如域名DNS、万维网HTTP、电子邮件SMTP等,我们把应用层交互的数据单元称为报文

  • 运输层:任务是负责向两台主机中进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文,所谓“通用的”是指并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务。运输层分为下面两种协议:

    • 传输控制协议TCP:面向连接、可靠的数据传输服务,数据传输单位是报文段
    • 用户数据报协议UDP:无连接、尽最大努力(best-effort)的、不可靠的数据传输服务,数据传输的单位是用户数据报
  • 网络层(也称网际层、IP层):负责为分组交换网上的不同主机提供通信服务。发送数据时,网络层把运输层产生的报文段或用户数据封装成分组或包进行传送。在TCP/IP协议中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称数据报。网络层另一个任务是选择合适的路由,使源主机运输层传下来的分组,能够通过网络中的路由器照到目的主机。
    互联网是由大量异构网络通过路由器相互连接起来的。互联网所使用的网络层协议是无连接的网际协议IP和许多路由选择协议

    注意事项:需要注意区分运输层的用户数据报UDP和网络层的IP数据报。此外,无论在哪一层传送的数据单元,都可以笼统的用“分组”表示。网络层中的网络二字,不是我们通常谈到的具体网络,而是在计算机网络体系结构模型中第三层的名称。

  • 数据链路层(简称链路层):链路层协议用来实现两台主机之间一段一段链路上的数据传输。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据组装成帧,在两个相邻的结点之间的链路上传送帧(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息和差错控制等)。
    接收数据时,控制信息使接收端能够知道某一帧的始末信息,这样,数据链路层就可以在收到一个帧后从中提取出数据部分并上交给网络层。此外,接收端还可以根据控制信息检测收到的帧有无差错,如果出现差错,链路层就丢弃这个出差错的帧,以避免继续浪费网络资源。

  • 物理层:物理层上传输的数据单位是比特。物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别发送方发出的比特信息。物理层还应该确定电缆插头应该有多少根引脚与引脚的连接问题。需要注意:传递信息所利用的物理媒体如双绞线、光缆、无线信道等不属于物理层协议,而是在物理层协议之下,因此物理媒体也被称为第0层。
    需要指出的是,现在我们经常提到的TCP/IP协议往往是整个TCP/IP协议族

  • 数据在网络各层之间的传递过程描述

    1568708014666

    假定主机1的进程AP1向主机2的进程AP2传送数据,AP1现将其数据交给本主机的第五层(应用层),第五层加入了必要的控制信息就变成了下一层数据单元,第四层(运输层)收到这个数据单元后加入本层控制信息交给了网络层,成为第三层的数据单元,以此类推。不过到了第二层(数据链路层)后,控制信息被分为两部分,分别加到本层数据单元的首部和尾部,而第一层(物理层)由于是比特流的传送,所以不再加入控制信息(特别指出:传送比特流应该从首部开始传送)当这一串比特流离开主机1经过网络的物理媒体传送到路由器后,从路由器的第一层逐渐上升到第三层,每一层都是根据控制信息进行操作,随后将控制信息剥离出去并将该层剩下的数据单元上交给更高的一层。当分组上升到了第三层时,根据包头中的目的地址查找路由器中的转发表,随后寻找合适的转发分组接口,随后向下传送到第二层,加上新的首部和尾部后,再到最下面的第一层,随后在物理媒体上把每一个比特发送出去。这一串比特流到达目的站主机2后,就从主机2的第一层仿效之前的方式逐渐上升到第五层(备注:这样的垂直方向上的上升过程正是借助接口实现的),就实现了将进程AP1的数据交给进程AP2的任务。(而这样的数据传输过程正如信件的寄送过程一样)

    在OSI参考模型中,对等层次之间的数据单位称为该层的协议数据单元PDU.在对等层之间的数据传输过程虽然复杂,但是对于用户来说却都被屏蔽掉了,仿佛进程AP1直接把数据交给了进程AP2,就好像通过上图的水平虚线所示的那样,把数据通过水平虚线之间传递给了对方。这就是所谓的对等层之间的通信(备注:这样的水平方向上的数据传输过程正是借助协议实现的)。在一些文献中有协议栈的说法,因为这几个层次画在一起很像一个的结构。

  • 其它一组概念的引入

    • 实体:表示任何可以发送或接收信息的硬件或软件进程

    • 协议:控制两个对等实体(或多个实体)进行通信的规则的集合

      • 动态协议:强调动态交互的过程,例如A做出一个动作,如果B收到了,那么B也需要通过一个动作反馈信息
      • 静态协议:不强调动态的交互,例如A传输一个符号给B,B只需要清晰地了解A传来的符号的含义
    • 面向连接与面向无连接的通信过程(例如TCP是面向连接的,而IP、UDP是面向无连接的)

      • 面向连接:是指通信双方在通信时,要事先建立一条通信线路,其有三个过程:建立连接、使用连接和释放连接。电话系统是一个面向连接的模式,拨号、通话、挂机
      • 面向无连接:是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线进行传输。邮政系统是一个无连接的模式,天罗地网式的选择路线,天女散花式的传播形式
    • 在协议的控制下,两个对等实体之间的通信使得本层能够向上一层提供服务,要实现本层协议,还需要使用下面一层提供的服务。(值得指出:协议与服务的概念不同,需要区分)

      协议与服务的区别:

      其一:协议的实现保证了能够向上一层提供服务,使用本层服务的实体只能看见服务而不能看见下面的协议,也就是说下面的协议对上面的实体是透明的

      其二:协议是“水平的”,服务是“垂直的”。协议是控制对等实体之间的通信规则,但服务是由下层向上层通过层间接口提供的。

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

      1568709813015

Wireshark实验的知识预备

  • 同一个网络内的两个计算机可以直接发送信息,不需要借助第三台计算机。
    例如在255.255.0.0的子网掩码下,10.15.* . * 和10.16.* . *就不再一个网络内,但是依然可以正常直接通信,因为其实都在10. *. *. *的网络下。依然可以直接进行通信
  • 一组命令
    nslookup:域名查询
    例如下面的ping会报错,但是当ping一个地址而非IP地址时,需要先经过域名查询系统
    1
    2
    ping wwww.zju.edu.cn
    nslookup wwww.zju.edu.cn

ipconfig命令:可以查询我们的域名服务器地址。可以使用ipconfig/all命令查询,使用ipconfig/flushdns命令可以刷新缓存,否则刚刚查询到的内容不会再次发包
telnet命令:telnet www.zju.edu.cn
tracert命令:可以查看与某个IP地址通信过程中经历的每一个网络节点

要点总结

  • 互联网现在采取存储转发的分组交换技术,以及三层ISP结构
  • 互联网按照工作方式分为边缘部分与核心部分,主机在网络边缘部分,作用是进行信息处理。路由器在网络核心部分,作用是按照存储转发方式进行分组交换
  • 计算机通信是计算机中进程之间的通信,计算机网络通信方式有C/S和P2P
  • 客户和服务器都是通信中所涉及的应用进程,客户是服务请求方,服务器是服务提供方
  • 根据作用范围不同,计算机分为广域网、城域网、局域网和个人区域网
  • 五层协议体系结构由应用层、运输层、网络层、数据链路层和物理层组成,运输层最重要的是TCP与UDP协议,网络层最重要的是IP协议。