计算机网络
基于谢希仁老师的《计算机网络 第七版》的学习,了解后能够对于网络之间的交换有更加深入的理解,学习前后端必修之课
第一章 概述
互联网的历史和组成
互联网的两个基本特点:
- 连通性:互联网上的用户之间不管相隔多远,都可以非常方便的交换信息。
- 共享:主要指资源共享。包括文件共享,软件共享以及硬件共享。
计算机网络是由若干结点(计算机、集线器、交换机或路由器)和连接这些结点的链路组成的。
互联网发展的三个阶段:
- 第一阶段:从单个网络 ARPANET 向互连网发展。1969 年美国国防部创建了第一个分组交换网 ARPANET,刚开始只是简单的分组交换网。20 世纪 70 年代,单一的网络已经无法满足所有的通信问题,于是开始研究多种网络。1983 年 TCP/IP 协议成为 ARPANET 的标准协议,于是 1983 年作为互联网的诞生时间。
- 第二阶段:建成了三级结构的互联网。1985 年起,NSF 围绕六个大型计算机中心建设计算机网络,即 NSFNET。三级计算机网络分为
主干网
、地区网
、校园网
。这种三级结构覆盖了全美国主要的大学和研究所。 - 第三阶段:逐渐形成了多层次的 ISP 结构的互联网。
互联网的标准
所有的互联网表标准都是以 RFC 的形式在互联网上发表的。但并非所有的 RFC 都是互联网标准。互联网正式标准需要经历三个阶段:
- 互联网草案:有效期只有六个月,此时还不能算 RFC 文档
- 建议标准:从这阶段开始成为 RFC 文档
- 互联网标准:达到正式标准后,每个标准就分配到一个编号。
互联网的组成
边缘部分:由所有连在互联网上的主机组成。
C/S 方式:客户端/服务器方式
P2P 方式:对等连接方式(两台主机在通信时并不区分哪一个是服务请求方和服务提供方)
核心部分:由大量网络和连接这些网络的路由器组成,主要为边缘部分提供服务。
- 路由器:实现分组交换的关键构件,任务是转发收到的分组。
分组交换的特点
分组交换采用存储转发技术。将一个报文(要发送的整块数据)划分为几个分组后再进行交换。分组又称为”包”,分组的首部又称为”包头”(包含了目的地址和源地址控制信息)。
分组交换的过程:路由器收到一个分组,先暂存一下(暂存的是短分组),检查其首部,查找转发表,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。
分组交换的优点
- 高效:在分组传输过程中动态分配传输带宽,对通信链路是逐段占用
- 灵活:为每一个分组独立地选择合适的转发路由
- 迅速:以分组作为传送单位,可以先不建立连接就能向其他主机发送分组
- 可靠:保证可靠性的网络协议,分布式多路由分组交换网
计算机网络的类别
按照网络作用范围分类
- 广域网:作用范围大,任务是通过长距离运送主机所发送的数据。
- 城域网:一般是城市,可以是一个或几个单位,也可是一种公用设施
- 局域网:一般用于微型计算机或工作站通过高速链路相连
- 个人局域网:也称为无线个人局域网
按照网络的使用者进行分类
- 公用网
- 专用网
计算机网络的性能指标
速率
速率指数据的传送速率,也称为数据率或比特率。单位 bit/s(或 b/s,bps),提到速率时往往指的是额定速率或标称速率,并非实际运行的速率。
带宽
计算机中带宽指的是某通道传送数据的能力,即单位时间内网络中某信道所能通过的最高数据率。
吞吐量
吞吐量指单位时间内通过某个网络的实际数据量,受网络的带宽或网络的额定速率的限制。
时延
时延指数据从网络的一端传送到另一端所需时间。也被称为延迟。
时延的组成
发送时延:主机或路由器发送数据帧所需要的时间,又叫传输时延。
传播时延:传播时延是电磁波在信道传播一定距离需要花费的时间。与传输信道长度无关。信号传送距离越远,传播时延就越大。
处理时延:主机或路由器在收到分组需要花费一定时间进行处理。
排队时延:分组在传输过程中要经过许多路由器,进入路由器后要先在输入队列中排队等待处理。
总时延=发送时延+传播时延+处理时延+排队时延
时延带宽积
时延带宽积表示这个链路可以容纳的比特数
时延带宽积=传播时延 x 带宽
往返时间 RTT
RTT 表示双向交互一次所需要的时间。
利用率
信道利用率指出某信道有百分之几的时间是被利用的。网络利用率则是全网络的加权平均值。信道或网络利用率过高会产生非常大的时延。
计算机网络体系结构
OSI 七层参考模型
1983 年正式形成了 OSI 模型,OSI 试图达到理想境界,因而全球计算机可以很方便的进行互连和数据交换。
OSI 失败原因:
- OSI 专家缺乏实际经验,缺乏商业驱动力
- OSI 协议过于复杂,运行效率低
- OSI 制定的周期太长
- OSI 层次划分不太合理
五层参考模型
- 应用层:任务是通过应用进程间的交互来完成特定的网络应用。交互的数据单元称为报文。
- 运输层:任务是负责向两台主机中进程之间的通信提供通用的数据传输服务。包括 TCP,UDP 协议,传输数据的单位分别是报文段和用户数据报。
- 网络层:负责为分组交换网上的不同主机提供通信服务。数据传输单位是 IP 数据报。
- 数据链路层:数据传输单位是帧。
- 物理层:数据传输单位是 bit。
第二章 物理层
基本概念
物理层考虑的是怎么才能在连接各种计算机的传输媒介上传输数据比特流。物理层的作用是要尽可能的屏蔽掉这些传输媒体和通信手段的差异。
数据通信模型
一个数据通信系统可以划分为三大部分:即源系统(发送端)、传输系统和目的系统(接收端)
通信的三种方式
- 单向通信(单工通信):只能有一个方向的通信而没有反方向的交互。
- 双向交替通信(半双工通信):即通信双方都可以发送消息,但不能双方同时发送。也就是说一方发送一方接收,过一段时间后可以再反过来。
- 双向同时通信(全双工通信):即通信双方可以同时发送和接收消息。
传输媒介
导引型
- 双绞线
- 同轴电缆
- 光纤
非导引型
无线电波
信道复用技术
频分复用
用户在分配到一定的频带后,在通信过程中始终占用着这个频带。即所有用户在同样的时间段内占用着不同的带宽资源。
时分复用
时分复用是指所有用户在不同时间段内占用着相同的频带宽度。
统计时分复用
统计时分复用是一种改进的时分复用,他能明显的提高信道的利用率。
波分复用
波分复用就是光的频分复用。
码分复用
码分复用是另一种共享信道的方法。由于各用户使用经过特殊挑选的码型,因此各用户之间不会构成干扰。最初用于军事通讯。
第三章 数据链路层
数据链路层使用的信道主要是:点对点信道和广播信道
点对点信道
链路:指从一个结点到相邻结点的一端物理线路,而中间没有其他任何交换结点。
数据链路:除了需要一条物理线路外,还必须要有一些必要的通信协议来控制这些数据的传输。
点对点信道的协议数据单元是帧,数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出上交给网络层。
点对点信道的数据链路层进行通信的步骤:
- 结点 A 的数据链路层把网络层交下来的 IP 数据报添加首部和尾部封装成帧。
- 结点 A 把封装好的帧发送给结点 B 的数据链路层
- 若结点 B 的数据链路层收到的帧无差错,则从收到的帧中提取出 IP 数据报交给上面的网络层,否则丢弃这个帧。
封装成帧
封装成帧就是在一端数据的前后分别添加首部和尾部,这样就够成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
透明传输
由于帧的开始和结束的标记使用专门指明的控制字符,因此所传输的数据中任何 8 比特的组合一定不允许和用作帧定界的控制符的比特编码一样,否则会导致帧定界的错误。
当传输的帧是用文本文件组成的帧时,其数据部分显然不会出现 SOH 和 EOT 这样的帧定界符,这样的传输就叫做透明传输。但是当数据部分是 ASCII 码的文本文件时,就有可能会找到错误的帧界。为了解决这样的问题,可以在出现控制字符的地方加一个转义字符,即使用字节填充法
。
差错检测
比特在传输过程中可能会产生差错:1 可以变成 0,0 可以变成 1。即出现比特差错
。在一段时间内传输错误的比特所占传输比特总数的比率称为误码率 BER。
目前主要使用的是循环冗余检验 CRC 进行差错检测。
循环冗余 CRC 的原理:在数据(k 位数据)后面添加供差错检测用的 n 位冗余码,然后构成一个帧发送出去,一共发送 k+n 位。经过 CRC 检验后得出的余数 R 为 0,则说明传输过程无差错,否则认为出现了差错。
n 位冗余码:用二进制的模 2 运算,相当于在数据后面添加 n 个 0。得到的 k+n 位数除以收发双方事先商定的 n+1 位除数 P,得出商是 Q 而余数是 R。R 就是冗余码,又称为帧检验序列 FCS。
PPP 协议
定义:PPP 协议就是用户计算机和 ISP 进行通信时所使用的数据链路层协议。
PPP 协议要满足的要求
- 简单
- 封装成帧
- 透明性
- 多种网络层协议
- 多种类型链路
- 差错检测
- 检测连接状态
- 最大传送单元
- 网络层地址协商
- 数据压缩协商
PPP 协议的组成
- 一个将 IP 数据报封装到串行链路的方法。
- 一个用来建立、配置和测试数据链路连接的链路控制协议 LCP。
- 一套网络控制协议 NCP。
PPP 协议的帧格式
各字段信息
首尾两个 F 表示标志位,用来表示一个帧的开始和结束;A,C 两个字段至今还未有定义;协议如果地址是 0xC021 则表示 LCP 的数据;如果是 0x0021 则表示携带的是 IP 数据报;如果是 0x8021 则表示携带的是网络层的控制数据;FCS 表示帧检测序列。
字节填充
当信息字段中出现和标志字段一样的比特组合时,就要采取一些措施来解决这个问题。
当 PPP 协议使用异步传输时,转义符定义为 0x7D,并使用字节填充。
零比特填充
只要出现连续的 5 个 1 就在后面填充 1 个 0;这样就可以保证不会出现连续的 6 个 1。接收端在收到帧后,先找到标志字段 F 确定边界,当出现 5 个连续 1 时就将后面的 0 删除,将数据还原为原来的比特流。
PPP 协议的工作状态
广播信道
局域网:网络为一个单位所有,且地理范围和站点数目有限。
局域网按网络拓扑分类:星形网;环形网;总线网。
CSMA/CD 协议(载波监听多点接入、碰撞检测)
因为在同一时间只能允许一台计算机发送数据。于是 CSMA/CD 协议就诞生了。
“多点接入”说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。
“载波监听”就是指用电子技术检测总线上有无其他计算机也在发送。
“碰撞检测”就是边发送边监听。
第四章 网络层
IP 协议
分类的 IP 地址
IP 地址及其表示方法
整个互联网是一个单一的、抽象的网络。IP 地址就是给互联网上的每一台主机的每一个接口分配一个在全世界范围内的唯一的 32 位的标识符。IP 地址现在由互联网名字和数字分配机构进行分配。
IP 地址的编址方法的历史过程
分类的 IP 地址
定义:分类的 IP 地址就是将 IP 地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成。第一个字段是网络号
,表示主机所连接到的网络。第二个字段是主机号
,表示该主机或路由器。一台主机号在他前面的网络号所指明的网络范围内必须唯一。
记为:IP 地址::={<网络号>,<主机号>}
IP 地址共分为 5 大类:
为了提高可读性,常把 32 位 IP 地址中的每 8 位插入一个空格,采用点分十进制记法。
子网的划分
详情见第 135 页
IP 地址::={<网络号>,<子网号>,<主机号>}
子网掩码
使用子网掩码和 IP 地址进行与运算就可以得出网络地址
使用子网时的分组转发
路由表必须包括:目的网络地址、子网掩码、下一跳地址
构造超网(CIDR)
IP 地址::={<网络前缀>,<主机号>}
具体见书第 142 页
常用的三种类别的 IP 地址
A 类
A 类地址网络号只有 7 位可用。可以指派 2^7-2 个网络号,第一,IP 地址全 0 的是保留地址表示本网络,第二,网络号位 127 的保留作为本地软件的环回测试。A 类地址主机号占 3 个字节,A 类网络的最大主机数位 2^24-2,第一,全 0 的主机号字段表示 IP 地址是本主机所连接到的单个网络地址,第二,全 1 的表示网络上的所有主机。
B 类
B 类地址网络只有 14 位可用,因为 B 类地址不可能出现全 0 或全 1 的情况,所以网络号不存在少 2 的情况,实际上 128.0.0.0 是不指派的,所以可以指派的网络数为 2^14-1,即 16383 个;而 B 类最大主机数为 2^16-2 个,需要除去全 0 和全 1 的。B 类地址占整个 IP 空间的 25%。
C 类
C 类地址有 3 个字节的网络号字段,除去前面的类别位,还有 21 位可用,C 类网络地址 192.0.0.0 也不指派,可以指派的最小网络地址为 192.0.1.0,因此 C 类地址可指派的网络总数是 2^21-1,每一个 C 类地址的最大主机数为 2^8-2,占整个 IP 地址的 12.5%。
IP 地址的重要特点
- 每个 IP 地址都由网络号和主机号组成。IP 地址是一种分等级的地址结构。分等级后,第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。第二,路由器仅仅根据目的主机所连接的网络号来转发分组,可以使路由表的项目数大幅度减少,从而减少了路由表所占的内存以及查找路由表所需要的时间。
- 实际上 IP 地址时标志一台主机和一条链路的接口。
- 用转发器或网桥连接起来的若干局域网仍然为一个网络。
- IP 地址内所分配得到的地址都是平等的。
IP 数据报格式
IP 数据报格式能够说明 IP 协议具有什么功能
IP 数据报具体部分
见书籍 128 页
地址解析协议 ARP
IP 地址与硬件地址
从层次角度看,物理地址是数据链路层和物理层使用的地址,而 IP 地址是指网络层和以上各层使用的地址,是一种逻辑地址。
ARP 协议的概念及原理
地址解析协议 ARP 就是用来解决同一个局域网上,知道一个机器的 IP 地址,找到其对应的 MAC 地址。
具体实现原理:每一台主机都设有一个 ARP 高速缓存,里面有本局域网上的各个主机和路由器的 IP 地址到硬件地址的映射表。
网际控制报文协议 ICMP
为了更有效的转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP。ICMP 允许主机或路由器报告差错情况和提供有关异常的情况。
ICMP 报文种类
ICMP 差错报告报文
- 终点不可达
- 超时
- 参数问题
- 改变路由(重定向)
ICMP 询问报文
- 回送请求和回答
- 时间戳请求和回答
重要应用就是 PING,用来测试两台主机的连通性。