计算机网络 (1) 概述

154 阅读8分钟

本文引用图片均来自 高军: 计算机网络

定义及分类

计算机网络这个概念其实并没有一个精确的统一的定义

简单定义

计算机网络是一些互相连接的、自治的计算机的集合

复杂定义

计算机网络就是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用

当然,其实定义不重要,相信各位读者都清楚自己想了解的是计算机网络的什么内容

计算机网络大致可以从交换技术、使用者、传输介质、覆盖范围和拓扑结构进行分类

  1. 交换技术:电路交换网络、报文交换网络、分组交换网络
  2. 使用者:公用网、专用网
  3. 传输介质:有线网络、无线网络
  4. 覆盖范围:广域网WAN、城域网MAN、局域网LAN、个域网PAN
  5. 拓扑结构:总线型网络、星型网络、环形网络、网状型网络

一般我们讨论的网络属于分组交换网络、广域网和网状型网络——我们的数据以分组的形式经路由器转发在多个小网络组成的巨大网络上流动

image.png

网络体系结构

在计算机网络的体系结构中,OSI 7层结构是法律上的国际标准而TCP/IP 4层结构则是事实上的国际标准,没办法,在OSI制定好的时候TCP/IP标准早已占领了市场。一般地,我们在讲解网络体系结构时常采用最右边所示的5层结构

image.png

接下来自底向上简单介绍每层的作用

物理层

物理层解决如何传输数据的问题,比如采用什么介质(光纤、双绞线等),什么接口以及什么样的信号(电频等)来表示比特0和1

image.png

数据链路层

在解决物理层的问题后,数据已经可以在一个网络内流通,那么网络中的主机如何知道数据是传给自己的呢?这一串比特流里面哪些才是有用的数据内?

数据链路层解决主机编址以及数据分组的格式问题

image.png

网络层

解决数据链路层的问题后,数据已经可以在一个网络内有目的性的流动。但是,当数据需要跨网络流动时应该怎么办呢?

网络层解决网络和主机共同编址以及路由如何转发分组的问题

image.png

如上图中192.168.1192.168.0分别是两个网络号,网络号后边的蓝色字体则是主机号,网络号和主机号共同组成IP地址实现网络和主机的共同编址

运输层

解决网络层的问题后,数据已经可以在多个网络组成的大网络中流动。但是,如果某台主机有多个不同的进程需要和目的主机的同一个进程进行通信,如何确定目的主机返回的数据应该给哪个进程呢?如果进程之间的数据分组在流动过程中出现丢失、错误等情况要如何处理呢?

运输层解决进程之间基于网络的通信以及传输出现错误时如何处理的问题

image.png

网络层

在解决前面所有层的问题之后,只需在它们的基础上建立各种协议并按照协议编写程序,程序之间按照协议进行通信便可完成各种网络应用,例如

  1. 万维网的HTTP协议
  2. 电子邮件的SMTP协议
  3. 文件传输的FTP协议

分层思想实例

打开网页的例子来探究网络中各层到底做了什么,我们打开浏览器,输入网址,按下回车,然后可以看到一个个页面展示出来

这其中的过程其实是主机上的浏览器进程目的主机上的服务进程发送请求,请求数据被路由器转发在网络上流通最后到达目的主机被服务进程接收,服务进程返回响应数据,响应数据同样经过网络流通后被浏览器进程接收然后渲染出来

image.png

源主机

image.png

首先位于应用层的浏览器进程按照HTTP协议构造报文请求获取某个网页资源,报文格式如下

image.png

运输层HTTP报文增加TCP首部使之成为TCP报文TCP首部用于区分应用进程和实现可靠传输TCP首部格式如下:

image.png

网络层TCP报文增加IP首部使之成为IP报文IP首部使得IP数据报可以被路由器转发进而可以在网络上传输,IP首部格式如下:

image.png

数据链路层IP报文增加首部尾部使之成为,此例中是以太网帧,以太网帧首部使得帧可以在一个网络上传输,能被相应的主机接收,以太网帧尾部可以让目的主机检查接收的帧是否有误。以太网帧首部和尾部格式如下:

image.png

物理层以太网帧看作比特流并且增加前导码,增加前导码是为了让目的主机做好接收帧的准备,前导码格式如下:

image.png

然后将增加了前导码的比特流转换成相应的信号(如电信号)并发送出去

路由器

数据分组沿着传输介质流动到达路由器

image.png

路由器的物理层将信号转换为比特流并去掉前导码,然后把数据交给链路层,实际上是交付了以太网帧

链路层收到以太网帧后将首部和尾部去掉并将数据向上交付给网络层,实际上是交付了IP数据报

网络层提取IP首部中的目的地址并查询自身路由表确定转发端口,然后交付给链路层...

目的主机

目的主机各层做的事情和源主机正好相反,源主机中自顶向下数据每往下流经一层就添加上该层的标志数据,目的主机中自底向上数据每往上一层就除去该层的标志数据,最后在应用层中相应的服务进程解析HTTP报文

服务进程返回响应数据的过程其实和接受请求的过程是一样的,只是源主机和目的主机身份互换,不再赘述

专用术语

这节简单介绍实体、协议和服务三个术语

实体

实体指任何可发送或接收信息的硬件或软件进程,对等实体则是收发双方中相同层次的实体

image.png

如上图中浏览器进程和服务器进程属于对等实体,两张网卡也属于对等实体

协议

协议是指控制两个对等实体进行逻辑通信的规则的集合

image.png

如上图应用层的进程与进程间通过HTTP等协议通信,网络层使用IP协议进行通信,这些通信行为看上去是对等实体之间的直接通信,但是实际上它们的通信遵守第三节 分层思想实例 所述流程,所以称为逻辑通信

协议包含三要素:语法、语义、同步

语法定义所交换信息的格式

如下图是IP数据报的格式,其中的小格子称为字段或域,数字表示字段长度(位),语法就是定义了这些小格子的长度和顺序

image.png

语义定义收发双方所要完成的操作

浏览器发出HTTP请求,服务器就知道寻找所请求的资源并返回,这正是因为服务器通过HTTP协议的语义知道了浏览器想干什么,所以服务器知道应该怎么做

同步定义收发双方的时许关系

比如经典的三次握手

image.png

服务

在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务

例如物理层使用物理层协议进行通信,向链路层提供服务,链路层享受物理层提供的服务,实现链路层协议并进行通信。每一层协议的实现都依赖于底下的层提供的服务

协议是水平的,服务是垂直的,实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议,也就是说,下面的协议对上面的实体是透明的

image.png

服务访问点指同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型

例如数据链路层的服务访问点位帧的“类型”字段、网络层的访问点位IP数据报首部中“协议字段”

服务原语指上层为了使用下层所提供的服务而与下层交换的命令

对等层次之间传送的数据包称为该层的协议数据单元 PDU,层与层之间交换的数据包称为服务数据单元 SDU

最后,本节涉及的概念可总结为下图

image.png

参考文献