计算机网络 第一章
概述
认识
物理层
我们的电脑要与外界互联网通信,需要先把电脑连接网络,我们可以用双绞线、光纤、无线电波等方式。这就叫做”实物理层”,它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送 0 和 1 的电信号。
数据链路层
单纯的 0 和 1 没有任何意义,所以我们使用者会为其赋予一些特定的含义,规定解读电信号的方式:例如:多少个电信号算一组?每个信号位有何意义?这就是”数据链接层”的功能,它在”物理层”的上方,**确定了物理层传输的 0 和 1 的分组方式及代表的意义。**早期的时候,每家公司都有自己的电信号分组方式。逐渐地,一种叫做”以太网”(Ethernet)的协议,占据了主导地位。
以太网规定,一组电信号构成一个数据包,叫做”帧”(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。其中”标头”包含数据包的一些说明项,比如发送者、接受者、数据类型等等;”数据”则是数据包的具体内容。”标头”的长度,固定为 18 字节。”数据”的长度,最短为 46 字节,最长为 1500 字节。因此,整个”帧”最短为 64 字节,最长为 1518 字节。如果数据很长,就必须分割成多个帧进行发送。
那么,发送者和接受者是如何标识呢?以太网规定,连入网络的所有设备都必须具有”网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做 MAC 地址。每块网卡出厂的时候,都有一个全世界独一无二的 MAC 地址,长度是 48 个二进制位,通常用 12 个十六进制数表示。前 6 个十六进制数是厂商编号,后 6 个是该厂商的网卡流水号。有了 MAC 地址,就可以定位网卡和数据包的路径了。
我们会通过 ARP 协议来获取接受方的 MAC 地址,有了 MAC 地址之后,如何把数据准确的发送给接收方呢?其实这里以太网采用了一种很”原始”的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机都发送,让每台计算机读取这个包的”标头”,找到接收方的 MAC 地址,然后与自身的 MAC 地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做”广播”(broadcasting)。
网络层
按照以太网协议的规则我们可以依靠 MAC 地址来向外发送数据。理论上依靠 MAC 地址,你电脑的网卡就可以找到身在世界另一个角落的某台电脑的网卡了,但是这种做法有一个重大缺陷就是以太网采用广播方式发送数据包,所有成员人手一”包”,不仅效率低,而且发送的数据只能局限在发送者所在的子网络。也就是说如果两台计算机不在同一个子网络,广播是传不过去的。这种设计是合理且必要的,因为如果互联网上每一台计算机都会收到互联网上收发的所有数据包,那是不现实的。
因此,必须找到一种方法区分哪些 MAC 地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用”路由”方式发送。这就导致了”网络层”的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做”网络地址”,简称”网址”。
**“网络层”出现以后,每台计算机有了两种地址,一种是 MAC 地址,另一种是网络地址。**两种地址之间没有任何联系,MAC 地址是绑定在网卡上的,网络地址则是网络管理员分配的。**网络地址帮助我们确定计算机所在的子网络,MAC 地址则将数据包送到该子网络中的目标网卡。**因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理 MAC 地址。
**规定网络地址的协议,叫做 IP 协议。**它所定义的地址,就被称为 IP 地址。目前,广泛采用的是 IP 协议第四版,简称 IPv4。IPv4 这个版本规定,网络地址由 32 个二进制位组成,我们通常习惯用分成四段的十进制数表示 IP 地址,从 0.0.0.0 一直到 255.255.255.255。
根据 IP 协议发送的数据,就叫做 IP 数据包。IP 数据包也分为”标头”和”数据”两个部分:”标头”部分主要包括版本、长度、IP 地址等信息,”数据”部分则是 IP 数据包的具体内容。IP 数据包的”标头”部分的长度为 20 到 60 字节,整个数据包的总长度最大为 65535 字节。
传输层
有了 MAC 地址和 IP 地址,我们已经可以在互联网上任意两台主机上建立通信。但问题是同一台主机上会有许多程序都需要用网络收发数据,比如 QQ 和浏览器这两个程序都需要连接互联网并收发数据,我们如何区分某个数据包到底是归哪个程序的呢?也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做”端口”(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。
“端口”是 0 到 65535 之间的一个整数,正好 16 个二进制位。0 到 1023 的端口被系统占用,用户只能选用大于 1023 的端口。有了 IP 和端口我们就能实现唯一确定互联网上一个程序,进而实现网络间的程序通信。
我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫做 UDP 协议,它的格式几乎就是在数据前面,加上端口号。UDP 数据包,也是由”标头”和”数据”两部分组成:”标头”部分主要定义了发出端口和接收端口,”数据”部分就是具体的内容。UDP 数据包非常简单,”标头”部分一共只有 8 个字节,总长度不超过 65,535 字节,正好放进一个 IP 数据包。
UDP 协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。为了解决这个问题,提高网络可靠性,TCP 协议就诞生了。TCP 协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。TCP 数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常 TCP 数据包的长度不会超过 IP 数据包的长度,以确保单个 TCP 数据包不必再分割。
应用层
应用程序收到”传输层”的数据,接下来就要对数据进行解包。由于互联网是开放架构,数据来源五花八门,必须事先规定好通信的数据格式,否则接收方根本无法获得真正发送的数据内容。”应用层”的作用就是规定应用程序使用的数据格式,例如我们 TCP 协议之上常见的 Email、HTTP、FTP 等协议,这些协议就组成了互联网协议的应用层。
如下图所示,发送方的 HTTP 数据经过互联网的传输过程中会依次添加各层协议的标头信息,接收方收到数据包之后再依次根据协议解包得到数据。
互联网:专有名词
互连网:通用网络
互联网的组成
边缘部分
由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
端系统之间的两种通信方式
客户-服务器方式(C/S)
客户是服务的请求方,服务器是服务的提供方
- 客户软件的特点
- 被用户调用后运行,在打算通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址
- 不需要特殊的硬件和很复杂的操作系统
- 服务器软件的特点
- 一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求
- 系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址
- 一般需要强大的硬件和高级的操作系统支持
- 客户软件的特点
对等方式(P2P)
不区分客户和服务器。
核心部分
由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)
在网络核心部分起特殊作用的是路由器 (router)。
路由器是实现分组交换 (packet switching) 的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
分组交换是网络核心部分最重要的功能
电路交换
$N$ 部电话机两两直接相连,需 $N(N – 1)/2$ 对电线。这种直接连接方法所需要的电线对的数量与电话机数量的平方( $N^2$ )成正比。
当电话机的数量增多时,就要使用交换机来完成全网的分组任务,这就是电路交换
- 特点
- 电路交换必定是面向连接的
- 电路交换分为三个阶段:
- 建立连接:建立一条专用的物理通路,以保证双方通话时所需的通信资源在通信时不会被其他用户占用;
- 通话:主叫和被叫双方一直占用通信资源;
- 释放连接:释放刚才使用的这条专用的物理通路(释放刚才占用的所有通信资源)
- 总结
电路交换用于电话通信系统,两个用户要通信之前需要建立一条专用的物理链路,并且在整个通信过程中始终占用该链路。由于通信的过程中不可能一直在使用传输线路,因此电路交换对线路的利用率很低,往往不到 10%
分组交换
分组交换采用存储转发技术
- 步骤
- 在发送端,先把较长的报文划分成较短的、固定长度的数据段
- 每一个数据段前面添加上首部构成分组 (packet)
- 分组交换网以“分组”(也称为“包”,首部也可称为“包头”)作为数据传输单元,依次把各分组发送到接收端(假定接收端在左边)
- 接收端收到分组后剥去首部还原成报文
- 最后,在接收端把收到的数据恢复成为原来的报文。
- 首部的重要性
- 每一个分组的首部都含有地址(诸如目的地址和源地址)等控制信息。
- 分组交换网中的结点交换机根据收到的分组首部中的地址信息,把分组转发到下一个结点交换机。
- 每个分组在互联网中独立地选择传输路径。(通过路由器)
- 用这样的存储转发方式,最后分组就能到达最终目的地。
- 路由器的作用
- 在路由器中的输入和输出端口之间没有直接连线。
- 路由器处理分组的过程是:
- 把收到的分组先放入缓存(暂时存储);
- 查找转发表,找出到某个目的地址应从哪个端口转发;
- 把分组送到适当的端口转发出去。
- 优点
- 高效:在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用
- 灵活:为每一个分组独立地选择最合适的转发路由
- 迅速:以分组作为传送单位,可以不先建立连接就能向其他主机发送分组。
- 可靠:保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性
- 缺点
- 分组在各结点存储转发时需要排队,这就会造成一定的时延。
- 分组必须携带的首部(里面有必不可少的控制信息)也造成了一定的开销
- 总结
每个分组都有首部和尾部,包含了源地址和目的地址等控制信息,在同一个传输线路上同时传输多个分组互相不会影响,因此在同一条传输线路上允许同时传输多个分组,也就是说分组交换不需要占用传输线路。
在一个邮局通信系统中,邮局收到一份邮件之后,先存储下来,然后把相同目的地的邮件一起转发到下一个目的地,这个过程就是存储转发过程,分组交换也使用了存储转发过程。
报文交换
在 20 世纪 40 年代,电报通信也采用了基于存储转发原理的报文交换 (message switching)。
报文交换的时延较长,从几分钟到几小时不等。现在报文交换已经很少有人使用了。
三种交换的比较
核心与边缘
- 互联网的核心部分是由许多网络和把它们互连起来的路由器组成,而主机处在互联网的边缘部分。
- 互联网核心部分中的路由器之间一般都用高速链路相连接,而在网络边缘的主机接入到核心部分则通常以相对较低速率的链路相连接。
- 主机的用途是为用户进行信息处理的,并且可以和其他主机通过网络交换信息。路由器的用途则是用来转发分组的,即进行分组交换的。
计算机网络的分类
按照网络的作用范围进行分类
- 广域网 WAN (Wide Area Network):作用范围通常为几十到几千公里(跨越国家),是互联网的核心部分。
- 城域网 MAN (Metropolitan Area Network):作用距离约为 5 ~ 50 公里(几个街区甚至整个城市)。
- 局域网 LAN (Local Area Network) :局限在较小的范围(如 1 公里左右),校园网或企业网。
- 个人区域网 PAN (Personal Area Network) :范围很小,大约在 10 米左右,通过无线技术连接。
按照网络的使用者进行分类
公用网 (public network)
电信公司建造的大型网络。按 规定交纳费用的人都 可以 使用的 网络。因此也可称为公众网。
专用网 (private network)
某个单位 为特殊业务工作的需要而建造的网络 ,例 如军队、铁路、银行、电力等系统。
用来把用户接入到互联网的网络
接入网 AN (Access Network)
又称为本地接入网或居民接入网。
接入网是一类比较特殊的计算机网络 ,用于将用户接入互联网。 只是起到让用户能够与互联网连接的“桥梁”作用。
使用不同接入网技术,如电话线拨号、宽带
接入网本身既不属于互联网的核心部分,也不属于互联网的边缘部分。
接入网是从某个用户端系统到互联网中的第一个路由器(也称为边缘路由器)之间的一种网络。
从覆盖的范围看,很多接入网还是属于局域网。
计算机网络的性能
性能指标
速率
连接在计算机网络上的主机在数字信道上传送数据位数的速率,也称为数据率 (data rate) 或比特率 (bit)
速率的单位是 bit/s ,或 kbit /s 、 Mbit/s 、 Gbit /s 等。例如 $4 \times 10^{10} bit/s$ 的数据率就记为 40 Gbit /s 。
带宽
带宽 (bandwidth) 用来表示网络中某通道传送数据的能力 。 表示在单位时间内网络中的某信道所能通过的“ 最高数据率 ”。
更常用的带宽单位是
- 千比特每秒 ,即 kb/s (10^3^ b/s )
- 兆比特每秒 ,即 Mb/s (10 ^6^ b/s )
- 吉比特每秒 ,即 Gb/s (10^9^ b/s )
- 太比特每秒 ,即 Tb/s (10^12^ b/s )
吞吐量
吞吐量 (throughput) 表示在单位时间内通过某个网络(或信道、接口)的数据量,包括进和出
时延
时延 (delay 或 latency) 是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间
有时也称为延迟或迟延
网络中的时延由以下几个不同的部分组成
发送时延
发送数据时,数据帧从结点进入到传输媒体所需要的时间。
也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。
发送时延 = 数据帧长度 (bit) / 发送速率(bit/s)
传播时延
电磁波在信道中需要传播一定的距离而花费的时间。
传播时延 = 信道长度(米) / 信号在信道上的传播速率 (米/秒)
处理时延
主机或路由器在收到分组时,为处理分组(例如分析首部、提取数据、差错检验或查找路由 )所花费的时间
排队时延
分组在路由器输入、输出队列中排队等待处理所经历的时延。
排队时延的长短往往取决于网络中当时的通信量。
队列溢出时,相当于排队时延无限大。
时延带宽积
链路的时延带宽积又称为以比特为单位的链路长度。
时延带宽积 = 传播时延 × 带宽
往返时间 RTT
(Round Trip Time)
往返时间 表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。
利用率
信道利用率
指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。
网络利用率
全网络的信道利用率的加权平均值。
信道利用率并非越高越好。 当某信道的利用率增大时,该信道引起的时延也就迅速增加 。
非性能特征
(nonperformance characteristics)
费用 (cost)
质量 (quality of service) (QoS)
标准化
可靠性 (reliability)
可扩展性 (scalability)和可升级性 (upgradability)
易于管理和维护
计算机网络的体系结构
(协议分层)TCP/IP、OSI、五层
计算机网络体系结构的形成
开放系统互连基本参考模型 OSI/RM (Open Systems Interconnection Reference Model) Model),简称为 OSI 。
法律上的 (de jure) 国际标准 OSI 并没有得到市场的认可,非国际标准 TCP/IP 却获得了最广泛的应用。TCP/IP 常被称为 事实上的 (de facto) 国际标准
协议与划分层次
网络协议 (network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。
网络协议的三个组成要素
- 语法: 数据与控制信息的结构或格式 。
- 语义: 需要发出何种控制信息,完成何种动作以及做出何种响应。
- 同步: 事件实现顺序的详细说明。
层次式协议结构
划分层次的概念举例:主机 1 向主机 2 通过网络发送文件。
分层的优劣
优点
- 各层之间是独立的。
- 灵活性好。
- 结构上可分割开。
- 易于实现和维护。
- 能促进标准化工作。
缺点
- 降低效率
- 有些功能会在不同的层次中重复出现,因而产生了额外开销 。
层数控制
层数太少,就会使每一层的协议太复杂。
层数太多,又会在描述和综合各层功能的系统工程任务时遇到较多的困难。
各层完成的主要功能
- 差错控制:使相应层次对等方的通信更加可靠。
- 流量控制:发送端的发送速率必须使接收端来得及接收,不要太快。
- 分段和重装:发送端将要发送的数据块划分为更小的单位,在接收端将其还原。
- 复用和分用:发送端几个高层会话复用一条低层的连接,在接收端再进行分用。
- 连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接。
计算机网络的体系结构
计算机网络的体系结构 (architecture) 是计算机网络的各层及其协议的集合。
体系结构就是这个计算机网络及其部件 所应完成的功能的精确定义。
实现 (implementation) 是遵循这种体系结构的前提下用何种硬件或软件完成这些功能的问题。
体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。
具有五层协议的体系结构
采取折中的办法,即综合 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构
应用层 (application layer)
通过应用进程间的交互来完成特定网络应用
域名系统 DNS ,万维网 HTTP 协议,电子邮件 SMTP 协议
运输层 (transport layer)
向两台主机中进程之间的通信提供通用的数据传输服务
传输控制协议 TCP 、用户数据报协议 UDP
网络层 (network layer)
为分组交换网上的不同主机提供通信服务;选择合适的路由
网际协议 IP 和路由选择协议
数据链路层 (data link layer)
两个相邻节点之间传送数据
物理层 (physical layer)
传输数据单位为比特,要考虑多大的电压代表 1 或 0
不包含物理媒介
实体、协议、服务和服务访问点
实体 (entity) 表示任何可发送或接收信息的硬件或软件进程。
协议是控制两个对等实体进行通信的规则的集合。
语法规则定义了信息的格式,语义规则定义了发送者或接收者所要完成的操作
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。
要实现本层协议,还需要使用下层所提供的服务
协议和服务的关系
协议的实现保证了能够向上一层提供服务 。
本层的服务用户只能看见服务而无法看见下面的协议。即下面的协议对上面的服务用户是透明的。
协议 是 “水平的 ”,即协议是控制对等实体之间通信的规则。
服务 是 “垂直的 ”,即服务是由下层向上层通过层间接口提供的。
上层使用下层提供的服务必须通过服务原语。
服务访问点
同一系统相邻两层的实体进行交互的地方,称为服务访问点 SAP (Service Access Point) 。
服务访问点 SAP 是一个抽象的概念,它实际上就是一个逻辑接口 。
OSI 把层与层之间交换的数据的单位称为服务数据单元 SDU (Service Data)。
TCP/IP 的体系结构
它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。
TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层
沙漏型协议族
IP over everything