计算机网络和因特网

什么是因特网

  • 什么是因特网?回答这个问题有两种方式:
    1. 能够描述因特网的具体构成,即构成因特网的基本硬件和软件组件
    2. 能够根据为分布式应用提供服务的联网基础设施来描述因特网

具体构成描述

  • 因特网是一个世界范围的计算机网络,即它是一个互联了遍及全世界数十亿计算设备的网络。用因特网术语来说,所有这些设别都称为主机或端系统。
  • 端系统通过通信链路和分组交换机连接到一起。
    • 通信链路:由不同类型的物理媒体组成。这些物理媒体包括同轴电缆、铜线、光纤和无线电频谱。不同的链路能够以不同的速率传输数据,链路的传输速率以比特/秒度量。当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节。由此形成的信息包用计算机网络的术语来说称为分组。
    • 分组交换机从它得的一条入通信链路接收到达的分组,并从它的一条出通信链路转发该分组。
  • 端系统通过因特网服务提供商(ISP)接入因特网。每个ISP自身就是一个由多台分组交换机和多段通信链路组成的网络。
  • 端系统、分组交换机和其他因特网部件都要运行一系列协议,这些协议控制因特网中信息的接收和发送。TCP和IP是因特网中两个最为重要的协议。IP协议定义了在路由器和端系统之间发送和接手的分组格式。因特网的主要协议称为TCP/IP。

服务描述

  • 从另一个完全不同的角度,即从为应用程序提供服务的基础设施的角度来描述因特网。
    • 即时通讯、与实施道路信息的映射、来自云的音乐流、电影和电视流、在线社交网络、视频会议等。因为这些应用系统涉及多个相互交换数据的端系统,故它们被称为分布式应用程序。重要的是,因特网应用应用程序运行在端系统上,即它们并不运行在网络核心中的分组交换机中。
    • 与因特网相连的端系统提供了一个套接字接口,该接口规定了运行在一个端系统上的程序请求因特网基础设施向运行在另一个端系统上的特定目的地程序交付数据的方式。因特网套接字接口是一套发送程序必须遵守的规则集合,因此因特网能够将数据交付给目的地。

什么是协议

  • 在因特网中,涉及两个或多个远程通信实体的所有活动都受协议的制约。例如,在两台物理上连接的计算机中,硬件实现的协议控制了在两块网络接口卡间的线上的比特流;在端系统中,拥塞控制协议控制了在发送方和接收方之间传输的分组发送的速率;路由器中的协议决定了分组从源到目的地的路径。
  • 协议定义了在两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送或接收一条报文或其他事件所采取的动作。

网络边缘

  • 通常把与因特网相连的计算机和其他设备称为端系统。因为它们位于因特网的边缘,故而被称为端系统。因特网的端系统包括了桌面i算机、服务器和移动计算机。此外,越来越多的非传统物品正被作为端系统与因特网相连
  • 端系统也称为主机,因为它们容纳应用程序,如Web浏览器程序、Web服务器程序、电子邮件客户程序或电子邮件服务器等。主机=端系统。主机有时又被进一步划分为两类:客户和服务器。客户通常是桌面PC、移动PC和智能手机等,而服务器通常是更为强大的机器,用于存储和发布Web页面、流视频、中继电子邮件等。

接入网

  • 接入网:指将端系统物理连接到其边缘路由器的网络。边缘路由器是端系统到任何其他远程端系统的路径上的第一台路由器。

网络核心

  • 网络核心:即由互联因特网端系统的分组交换机和链路构成的网络现状

分组交换

  • 在各种网络应用中,端系统彼此交换报文。报文能够包含协议设计者需要的任何东西。报文可以执行一种控制功能,也可以包含数据,例如电子邮件数据,JPEG图像或MP3音频文件。
  • 为了从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据块,称之为分组。
  • 在源和目的地之间,每个分组都通过通信链路和分组交换机传送。(交换机主要有两类:路由器和链路层交换机)
  • 分组以等于该链路最大传输速率的速度传输通过通信链路。因此,如果某源端系统或分组交换机经过一条链路发送一个L比特的分组,链路的传输速率为R比特/秒,则传输该分组的时间为L/R秒。

存储转发输送

  • 多数分组交换机在链路的输入端使用存储转发传输机制。存储转发传输是指在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收整个分组。
  • 通过由N条速率均为R的链路组成的路径,从源到目的地发送一个分组。可以看到端到端时延是:$d_{端到端}=N{\frac L R}$

排队时延和分组丢失

  • 每台分组交换机有多条链路与之相连。对于每条相连的链路,该分组交换机具有一个输出缓存,也成为输出队列,它用于存储路由器准备发往那条链路的分组。该输出缓存在分组交换有着重要的作用。如果到达的分组需要传输到某条链路,但发现该链路正忙于传输其他分组,该到达分组必须在输出缓存中等待。
  • 因此,除了存储转发时延以外,分组还要承受输出缓存的排队时延。这些时延是变化的,变化的程度取决于网络的拥塞成都。因为缓存空间的大小是有限的,一个到达的分组可能发现该缓存已被其他等待传输的分组完全充满了。在此情况下,将出现分组丢失(丢包),到达的分组或已经排队的分组之一将被丢弃。

转发表和路由选择协议

  • 路由器从与他相连的一条通信链路得到分组,然后向与它相连的另一条通信链路转发该分组。不同的计算机网络实际上以不同的方式完成分组转发的。这里,简要介绍在因特网中所采用的方法。
  • 在因特网中,每个端系统具有一个称为IP地址的地址。当源主机要向目的端系统发送一个分组时,源在该分组的首部包含了目的地IP地址。如同邮件地址那样,该地址具有一种等级结构。当一个分组到达网络中的路由器时,路由器检查该分组的目的地址的一部分,并向一台相邻路由器转发该分组。更特别的是,每台路由器具有一个转发表,用于将目的地址映射成为输出链路。当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索其转发表,以发现适当的出链路。路由器将分组导向该出链路。
  • 因特网具有一些特殊的路由选择协议,用于自动地设置这些转发表。例如,一个路由选择协议可以决定从每台路由器到每个目的地的最短路径,并使用这些最短路径结果来配置路由器的转发表。

电路交换

  • 通过网络链路和交换机移动数据有两种基本方法:电路交换和分组交换。
  • 在电路交换网络中,在端系统间通信会话期间,预留了端系统间沿路径通信所需要的资源。在分组交换网络中,这些资源则不是预留的;会话的报文按需使用这些资源,其后果可能是不得不等待接入通信线路。

分组交换与电路交换的对比

  1. 分组交换提供了比电路交换更好的带宽共享
  2. 它比电路交换更简单、更有效、实现成本更低。

分组交换网中的时延、丢包和吞吐量

  • 因特网能够看成是一种基础设施,该基础设施为运行在端系统上的分布式应用提供服务。在理想情况下,我们希望因特网服务能够在任意两个端系统之间随心所欲地瞬间移动数据而没有任何数据丢失。然而,这是一个极高的目标,实践中难以达到。与之相反,计算机网络必定要限制在端系统之间的吞吐量,在端系统之间引入时延,而且实际上也会丢失分组。

分组交换网中的时延概述

  • 分组从一台主机出发,通过一系列路由器传输,在另一台主机中结束它的进程。当分组从一个节点沿着这条路径到后继节点,该分组在沿途的每个节点经受了几种不同类型的时延。这些时延最为重要的是节点处理时延、排队时延、传输时延和传播时延,这些时延总体累加起来是节点总时延。

处理时延

  • 检查分组首部和决定将分组导向何处所需要的时间是处理时延的一部分。

排队时延

  • 在队列中,当分组在链路上等待传输时,它经受排队时延。一个特定分组的排队时延长度将取决于先期到达的正在排队等待向链路传输的分组数量。如果该队列是空的,并且当前没有其他分组正在传输,则该分组的排队时延为0。另一方面,如果流量很大,并且许多其他分组也在等待传输,该排队时延将很长。

传输时延

  • 假定分组以先到先服务方式传输——这在分组交换网中是常见的方式,仅当所有已经到达的分组被传输后,才能传输刚到达的分组。用L比特表示该分组的长度,用R bps 表示从路由器A到路由器B的链路传输速率。传播时延是 L/R。

传播时延

  • 一旦一个比特被推向链路,该比特需要向路由器B传播。从该链路的起点到路由器的传播所需要的时间是传播时延。该比特以该链路的传播速率传播。该传播速率取决于该链路的物理媒体。

总结

  • 如果令$d_{prpc}$、$d_{queue}$、$d_{trains}$和$d_{prop}$分别表示处理时延、排队时延、传输时延和传播时延,则节点的总时延由下式给定:
    • $d_{nodal}=d_{proc}+d_{queue}+d_{trans}+d_{prop}$

排队时延和丢包

  • 节点时延的最为复杂和有趣的成分是排队时延$d_{queue}$。
  • 令$a$表示分组到达队列的平均速率(a的单位是分组/秒,即pkt/s)。前面讲过R是传输速率,即从队列中推出比特的速率(以 bps 即 b/s 为单位)。为了简单起见,也假定所有分组都是由L比特组成的。则比特到达队列的平均速率是 La bps。最后,假定该队列非常大,因此它基本能容纳无限数量的比特。比率La/R被称为流量强度,它在估计排队时延的范围当面经常起着重要的作用。如果 $La/R>1$,则比特到达队列的平均速率超过从该队列传输出去的速率。在这种不幸的情况下,该队列趋向于无限增加,并且排队时延将趋向无穷大。因此,流量工程中的一条金科玉律是:设计系统时流量强度不能大于1。

端到端时延

  • 现在考虑从源到目的地总时延。假定在源主机和目的主机之间有N-1太路由器,还要假设该网络此时是无拥塞的,在每台路由器和源主机上的处理时延是$d_{proc}$,每台路由器和源主机的输出速率是 $R bps$,每条链路的传播时延是$d_{prop}$。节点时延累加起来,得到端到端时延:$d_{end-end}=N(d_{proc}+d_{trans}+d_{prop})$。

协议层次及其服务模型

协议分层

  • 为了给网络协议的设计提供一个结构,网络设计者以分层的方式组织协议以及实现这些协议的网络硬件和软件。每个协议属于这些层次之一。
  • 一个协议层能够用软件、硬件或两者的结合来实现。诸如HTTPSMTP这样的应用层协议几乎总是在端系统中用软件实现,运输层协议也是如此。因为物理层和数据链路层负责处理跨越特定链路的通信,它们通常在与给定链路相关联的网络接口卡中实现。
  • 协议分层具有概念化和结构化的优点。如我们看到的那样,分层提供了一种结构化方式来讨论系统组件。模块化使更新系统组件更为容易。
  • 将这些综合起来,各层的所有协议被称为协议栈。因特网的协议栈由5个层次组成:物理层、链路层、网络层、运输层和应用层

应用层

  • 应用层是网络应用程序及它们的应用层协议存留的地方。因特网的应用层包括许多协议,例如HTTPSMTPFTP、特定的应用层协议即域名系统(DNS)完成的。
  • 应用层协议分布在多个端系统上,而一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组。我们把这种位于应用层的信息分组称为报文(message)。

运输层

  • 因特网的运输层在应用程序端点之间传送应用层报文。在因特网中,有两种运输协议,即TCPUDP,利用其中的任一个都能运输应用层报文。TCP向它的应用程序提供了面向连接的服务。这种服务包括了应用层报文向目的地确保传递和流量控制。TCP也将长报文划分为短报文,并提供拥塞控制机制,因此当网络拥塞时,源抑制其传输速率。UDP协议向它的应用程序提供无连接服务。这是一种不提供不必要服务的服务,没有可靠性,没有流量控制,也没有拥塞控制。我们把运输层的分组称为报文段(segment)

网络层

  • 因特网的网络层负责将称为数据报(datagram)的网络层分组从一台主机移动到另一台主机。在一台源主机中的因特网运输层协议(TCPUDP)向网络层递交运输层报文段和目的地址。
  • 因特网的网络层包括著名的网际协议IP,该协议定义了在数据报中的各个字段以及端系统和路由器如何作用于这些字段。IP仅有一个,所有具有网络层的因特网组件必须允许IP。因特网具有许多路由选择协议。
  • 因特网是一个网络的网络,并且在一个网络中,其网络管理者能够运行所希望的任何路由选择协议。尽管网络层包括了网际协议和一些路由选择协议,但通常把它简单地称为IP层,这反映了IP是将因特网连接在一起地黏合剂这样的事实。

链路层

  • 因特网的网络层通过源和目的地之间的一系列路由器路由数据报。为了将分组从一个节点移动到路径上的下一个节点,网络层必须依靠该链路层的服务。特别是在每个节点,网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一个节点。在该下一个节点,链路层将数据报上传给网络层。
  • 有链路层提供的服务取决于应用于该链路的特定链路层协议。网络层将受到来自每个不同的链路层协议的不同服务。我们把链路层分组称为帧(frame)。

物理层

  • 虽然链路层的任务是将整个帧从一个网络元素移动到邻近的网络元素,而物理层的任务是将该帧中的一个个比特从一个节点移动到下一个节点。

OSI模型

  • 国际标准化组织(ISO)提出计算机网络围绕7层来组织,称为开放互联模型。
  • OSI参考模型的7层是:应用层、表示层、会话层、运输层、网络层、数据链路层和物理层。

封装

  • 在发送主机端,一个应用层报文被传送给运输层。在最简单的情况下,运输层收取到报文并附上附加信息,该首部将被接收端的运输层使用。应用层报文和运输层首部信息一道构成了运输层报文段。运输层报文段因此封装了应用层报文。附加的信息也许包括了下列信息:允许接收端运输层向上适当的应用程序交付报文的信息;差错检测位信息,该信息让接收方能够判断报文中的比特是否在途中已被改变。运输层则向网络层传递该报文段,生成了网络层数据报。该数据报接下来被传递给链路层,链路层增加它自己的链路层首部信息并生成链路层帧。所以我们看到,在每一层,一个分组具有两种类型的字段:首部字段和有效载荷字段。有效载荷字段通常是来自上一层的分组。