深入理解计算机网络(一):网络的基本概念

本文主要是为了让大家了解计算机网络,介绍了网络的基本概念,没有涉及具体的网络协议和网络通信的细节。计算机网络概念和专有名词非常多,为了便于理解,我会尽量用一些简单的语言去描述和解释它们。

什么是因特网


因特网的定义

因特网(Internet)是当今世界广泛使用的计算机网络,也称为互联网。它由一系列硬件和软件组成。它为世界各地的网络应用提供服务。

计算机网络(Computer Network)是一个抽象的概念,它定义了网络的逻辑结构。而因特网是一个具体的网络,是一个客观存在的事物。计算机网络,因特网,互联网等词经常相互使用,容易混淆,本文介绍的网络概念统一使用因特网。

因特网的结构

因特网是一个连接着分布在世界各地的亿万个计算设备的计算机网络。这些计算设备有个人电脑,智能手机,平板电脑,电视,手表,汽车等等。在因特网中这些设备称为主机(Host)或者终端(End Systems)。因特网的基本结构如下图所示

从上图可以看出因特网的构成十分复杂,它连接着许许多多的设备。我们可以简单将因特网划分为两种类型,一个是网络的核心,一个是网络的边缘。

网络的核心主要是由许多互相连接的路由器(Router)组成,它构成了网络的骨架,用于网络信息的传输。而网络的边缘主要是由一个调制解调器(Modem)俗称为猫、一个或多个路由器、交换机(Link-layer switch)和许多终端设备连接在一起,它们构成了一个局域网。其中调制解调器负责连接上因特网,路由器和交换机是用来组建和扩展局域网。局域网中连接着调制解调器的路由器连上了网络,其它连接到这个路由器的设备都可以上网。网络的边缘主要是组建局域网,让局域网内的终端设备可以连接网络。

网络按规模大小可以进行如下分类:

  • 局域网 (Local Area Networks, LAN),如一个家庭,一个公司,一个学校的网络都可以看作是一个局域网。
  • 城域网(Metropolitan Area Network, MAN),一个城市范围内所建立的网络。
  • 广域网(Wide Area Network, WAN),一个国家或一个洲范围内所建立的网络。

通过本小节,你已经大致了解了什么是因特网,为了更加深入的了解因特网的组成结构和它是如何工作的,我们接下来会进一步地讲诉这些内容,以及常见的网络安全问题。

因特网组成

上面已经提到因特网是由一些列硬件和软件组件构成。硬件部分主要有:连接网络的物理媒介、网络设备、和终端设备。软件部分表示的就是网络协议。网络协议规定了网络信息的格式和信息传播的规则。

网路硬件

网络设备:路由器,交换机,调制解调器,手机信号塔等。

终端设备:个人电脑,智能手机,平板电脑,服务器等。

网络连接的物理媒介:

  • 有线传输
    • 双绞线 (Twisted-Pair Copper Wire)。最早用在固定电话网络。 现在常用于局域网的网络接入。它可提供高达10G比特每秒的网络传播速度。
    • 同轴电缆(Coaxial Cable)。常用于有线电视系统,最近有线电视系统也可以提供数十M比特每秒的网络接入。
    • 光纤(Fiber Optics)。它具有很高的传播速度,高达数100G比特每秒。也有很低的信号衰减和抗干扰能力,适合长距离信号传播。如今的因特网的骨架一般都是用光纤去组建。
  • 无线传输
    • 地面无线电波(Terrestrial Radio Channels)
    • 卫星无线电波(Satellite Radio Channels)

网络协议

为了理解网络协议,我们先要知道网络协议是什么?以及它的结构是怎样的?

网络协议是一个网络系统的规则,允许两个或多个终端去交流信息,无论它们采用什么物理媒介进行通信。它定义了传播的信息的数据格式,以及信息传播的规则。因特网有中应用了很多协议,一个协议可能由软件实现,硬件实现,或者软件硬件结合实现。

因特网是一个十分庞大和复杂的系统,一个复杂的系统要高效有序的工作,需要合理的组织它的结构。因特网的协议使用分层结构,每一层执行具体的任务,提供相应的服务,上一层可以使用下一层提供的功能服务。分层的好处就是可以轻松的改变某一个协议的实现,只要它提供相同的服务给上一层,和使用下一层提供相同的服务,当一个协议的实现发生改变,整个系统其它的部分不需要改变。对于大型的复杂的系统,它是需要持续不断的更新的,而分层结构有利与系统的持续更新,所以分层十分有必要的。

OSI 参考模型

在 1970s,国际标准化组织(International Organization for Standardization,ISO)提出网络分为七层称为,开放系统互联模型(Open Systems Interconnection,OSI) 。这七层分别为:应用层、表现层、会话层、传输层、网络层、数据链路层、物理层。其中五层和五层协议名称和功能相同,其它两个表现层和会话层是五层协议没有的。这两层的含义如下:

  • 表现层(Presentation Layer)。提供翻译和转换应用层的数据的服务,它包括数据的压缩,加密,数据描述。这一层存在是因为考虑到不同的电脑的数据表示和存储的格式可能不同,需要进行格式转换。
  • 会话层(Session Layer)。提供对数据交换的限定和同步服务。它包括构建一个检查点和恢复策略。
五层网络协议

五层网络协议,从上到下分别为:应用层,传输层,网络层,链路层,物理层。

应用层(Application Layer)协议是指分布世界的终端设备,一个终端的应用程序使用协议去与另一个终端应用程序交换信息。常见的应用层协议有:HTTP,SMTP,FTP,DNS等。应用层传播的信息称为消息(Message)。

传输层(Transport Layer)协议负责在两个终端应用之间传输应用层的消息。常见的传输层协议有TCP,UDP等。传输层传播的信息称为报文段(Segment)。

网络层(Network Layer)协议负责将数据报从一个主机运送到另一个主机。常见的网络层协议有 IP 协议,以及路由协议。网络层传播的信息称为数据报(Datagram)。

链路层(Link Layer)协议负责将上一层的数据报封装帧格式,在一条链路上传播。链路层协议有:Ethernet,WiFi。链路层传播的信息称为帧(Frame)。

物理层(Physical Layer)负责将上一层的帧封装成比特流在两个节点之间传输。物理层传播的信息称为比特(Bit)。

五层协议的基本工作原理是,两个终端设备要进行数据交流,在一个终端发送应用层的请求,另一端接收到请求并做出相应的回应。应用层的交流是网络通信最终要达成的交流目标,但是仅靠应用层完成不了整个交流的任务。实际上,应用层做好了自己的任务,把剩余的任务交给运输层去完成;运输层完成了自己的任务,把剩余的任务交给网络层;依次类推到物理层,依靠每一层的努力,最终实现了两个终端交流的目的。网络分层的通信结构图如下

上图是一个简化的网络模型,其中一个堆栈表示一个网络设备,为什么在中间的部分只有三层结构,因为在网络的核心负责运送消息,不需要进行通信交流。而网络的边缘即两个终端是进行交流的目标主体。

为什么每一层都有不同的传播信息的名称?实际上,我们知道网络通信最终的目的是完成两个终端之间的通信,也可以说是最上层应用层的通信,而上一层的通信需要依靠下一层提供的服务。在网络通信中,每一层都都有自己的协议,定义了不同大小的传播数据单元,由于每一层传播信息单元的最大数据长度不同,每一层可能需要将上一层的数据切分成多个小段,每一个小段加上当前层的协议内容信息称为头部(Header),每一层的数据格式都是头部加数据域(Data)组成。所以,每一层根据自己协议的规定和职责,组装了自己的数据格式,不同的数据格式则需要不同的名称。

网络通信的过程

一个设备需要进行网络通信首先需要接入网络。谁可以提供网络接入呢?互联网服务提供商(Internet Service Provider, ISP)能够为我们提供网络接入。国内现有的网络运营商为:中国电信,中国移动,中国联通。最常见的网络接入服务有:拨号上网、ADSL、CDMA无线上网。

我们接入网络之后,就可以使用网络应用服务,最常见网络应用服务有:web服务(使用浏览器访问网页),发送电子邮件等。

完整的通信过程是,首先,你所在的区域(家庭或者公司)接入 ISP 提供的网络,客户端(手机,电脑)连上网络,设备上的应用程序使用网络协议发送请求,通过网络的数据传播,提供服务的终端(服务器)上的应用程序接受到请求,并使用网络协议响应请求。

网络安全

网络给我们的生活带来了很多便利,但在使用网络的同时,我们也可能收到网络的攻击。这些网络攻击可能会伤害我们的电脑,窃取我们的隐私信息,以及使服务器无法提供服务等。

常见的安全攻击有

  • 恶意软件(Malware)。通过网络将恶意软件安装到你的电脑中,感染你的电脑。从而删除你的文件,安装间谍软件收集你的隐私信息。常见的恶意软件有:病毒软件、蠕虫软件。
  • 拒绝服务攻击(Denial-of-service (DoS) Attack),大量的访问你的服务器,使服务器无法提供正常的服务。
  • 数据嗅探(Packet Sniffer),监听和保存你的设备发送的网络数据包,从中分析出你的敏感数据。如你的密码,你的交易信息,你的个人隐私信息等。
  • IP欺骗(IP Spoofing),冒充一个网址,从而获取你在该网站的登录用户名和密码等。

References

[1] Computer Networking: A Top-Down Approach, by Jim Kurose

[2] Internet - Wikipedia

[3] Communication Protocol - Wikipedia

[4] 五层因特网协议栈