计算机网络、互连网、互联网
计算机网络
一个将众多分散的、自治的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统,称为“计算机网络”。
集线器:
- 可以把多个节点连接起来,组成一个计算机网络
- 存在数据冲突问题,造成卡顿情况
交换机:
- 可以把多个节点连接起来,组成一个计算机网络
- 不存在数据冲突问题
- 家庭、公司、学校通常用交换机组建内部网络
互连网
把两个或者多个计算机网络相互连接起来,形成规模更大的计算机网络,称为“互连网”。
路由器:
- 可以把两个或多个计算机网络连接起来,组成一个互连网
家庭内部网络:
注意:计算机网络中的“路由器”与“家用路由器”有区别,家用路由器 = 路由器 + 交换机 + 其他功能
互联网(因特网)
由各大ISP和国际机构自建的,覆盖全球范围的互连网,称为“互联网”。
注意:互联网必须使用 TCP/IP 协议通信,互连网可使用任意协议通信
计算机网络的组成
(1)从组成部分来看
(2)从工作方式来看
(3)从逻辑功能来看
计算机网络的功能
电路交换、报文交换、分组交换
优缺点分析
1、电路交换
优点:
- 通信前从主叫端到被叫端建立一条专用的物理通路,在通信的全部时间内,两个用户始终占用端到端的线路资源。数据直达,传播速率高。因此,电路交换适用于低频次、大量的传输数据。
缺点:
- 建立/释放连接,需要额外的时间开销
- 线路被通信双方独占,利用率低
- 线路分配的灵活性差
- 交换节点不支持“差错控制”(无法发现传输过程中发生的数据错误)
2、报文交换
优点:
- 通信前无需建立连接
- 数据以报文为单位被交换节点间进行存储转发,通信线路可以灵活分配
- 在通信时间内,两个用户无需独占一整条物理路线
- 相比于电路交换,线路利用率高
- 交换节点支持“差错控制” (可以检验报文数据是否存在错误)
缺点:
- 报文不定长,不方便存储转发管理
- 长报文的存储转发时间开销大,缓存开销大
- 报文容易出错,重传代价高
3、分组交换
在报文交换的基础上进行改进,将不定长报文拆分成定长的分组,数据传输后需要对分组进行排序合并。因此,需要记录源地址(始发位置)、目的地址(接收位置)、分组号(用于排序合并)。这些内容被记录在首部,每个分组数据都会包含一个首部。
优点:
- 通信前无需建立连接
- 数据以报文为单位被交换节点间进行存储转发,通信线路可以灵活分配
- 在通信时间内,两个用户无需独占一整条物理路线
- 相比于电路交换,线路利用率高
- 交换节点支持“差错控制” (可以检验报文数据是否存在错误)
相比于报文交换,分组交换进行了如下改进:
- 分组定长,方便存储转发管理
- 分组的存储转发时间开销小,缓存开销小
- 分组不易出错,重传代价低
缺点:
- 相比于报文交换,控制信息占比增加
- 相比于电路交换,依然存在存储转发时延
- 报文被拆分为多个分组,传输过程中可能出现失序、丢失等问题,增加处理的复杂度
4、虚电路交换
性能分析
1、电路交换
2、报文交换
3、分组交换
电路交换 | 报文交换 | 分组交换 | |
完成传输所需时间 | 最少(排除建立/释放连接耗时) | 最多 | 较少 |
存储转发时延 | 无 | 较高 | 较低 |
通信前是否需要建立连接 | 是 | 否 | 否 |
缓存开销 | 无 | 高 | 低 |
是否支持差错控制 | 不支持 | 支持 | 支持 |
报文数据有序到达 | 是 | 是 | 否 |
是否需要额外的控制信息 | 否 | 是 | 是(控制信息占比最大) |
线路分配灵活性 | 不灵活 | 灵活 | 非常灵活 |
线路利用率 | 低 | 高 | 非常高 |
计算机网络的分类
(1)按分布范围分类
广域网(WAN)
也称远程网。关于网提供长距离通信,通常是几十千米到几千千米的区域,比如跨国通信。连接关于网的各结点交换机的链路一般都是高速链路,具有较大的通信容量
城域网(MAN)
覆盖范围跨越几个街区甚至整个城市,覆盖范围约 5~50km,城域网大多采用以太网技术,因此有时也常并入局域网的范围进行讨论
局域网(LAN)
范围几十米到几千米的区域。一般用微机或工作站通过高速线路相连。传统上,局域网使用广播技术,而广域网使用交换技术
个人局域网(PAN)
覆盖范围大约十米左右。指在个人工作的地方将消费电子设备(如平板电脑、智能手机等)用无线技术连接起来的网络,也常称为无线个人区域网(WPAN)
记忆口诀:丸(wan)子大侠太野蛮(man),拦(lan)住厨子要菜盘(pan),说是此盘有神力,能让他把功夫传
(2)按传输技术分类
广播式网络
所有联网计算机都共享一个公共通信信道。当一台计算机利用共享通信信道发送报文分组时,所有其他计算机都会收听到这个分组。接受到该分组的计算机将通过检查目的地之来决定是否接受该分组。所有无线网络都是“广播式”
点对点网络
数据只会从发送方“点对点”发到接收方,精准送达
例如:路由器转发的数据分组
(3)按拓扑结构分类
网络拓扑结构是指网络总的结点(路由器、主机等)于通信线路(网线)之间的几何关系(如总线形、环形)表示的网路结构,主要指通信子网的拓扑结构。
总线形
数据“广播式”传输,存在“总线争用”的问题
典型代表:集线器连接的设备
环形
数据“广播式”传输,通过“令牌”解决总线争用问题,令牌顺环形依次传递,拿到令牌者可使用总线
典型代表:令牌环网
星形
由中央设备实现数据的“点对点”传输,不存在“总线争用”问题
典型代表:以太网交换机连接的设备
网状
数据通过各中间节点逐一存储转发,属于“点到点”传输
典型代表:由众多路由器构建的广域网
(4)按使用者分类
公用网
向公众开放的网络
例如:办宽带、交手机话费即可使用的互联网
专用网
仅供某个组织内部使用的网络
例如:政府、军队、电力、银行的内部网络
(5)按传输介质分类
有线网络
例如:光纤、网线等
无线网络
例如:蓝牙、5G、WIFI等
计算机网络的性能指标
速率
表示数据传输(数据以二进制进行传输,即 0 和 1)的速率
速率单位:bit/s,或 b/s,或 bps (有时也会用 B/s)(1B = 8b,B = Byte 字节,b = bit 比特)
带宽
表示在单位时间(一般指的是 1 秒钟)内能传输的数据量,即最大的数据传输量
吞吐量
表示在单位时间内通过某个网络(或信道、接口)的数据量,即某时刻的数据传输量
时延
总时延 = 发送时延(传输时延) + 传播时延 + 处理时延 + 排队时延
发送时延:又名传输时延,节点将数据推向信道所花费的时间
发送时延 = 数据长度(bit) / 发送速率(bit/s)
传播时延:电磁波在信道中传播一定的距离需要花费的时间
传播时延 = 信道长度(m) / 电磁波在信道中的传播速率(m/s)
处理时延:被路由器处理所花的时间(如:分析首部、查找存储转发表)
排队时延:数据排队进入、排队发出路由器所花的时间
受网络负载、路由器性能等诸多因素影响
信道:表示向某一方向传送信息的通道(信道≠通信线路),一条通信线路在逻辑上往往对应一条发送信道和一条接收信道
例题:
1、假设主机 A 和 B 之间的链路带宽为 100Mbps,主机 A 的网卡速率为 1Gbps,主机 B 的网卡速率为 10Mbps,主机 A 给主机 B 发送数据的最高理论速率为( )
A. 1Mbps B.10Mbps C.100Mbps D. 1Gbps
结论:节点间通信实际能达到的最高速率,由带宽节点性能共同限制。
2、H1 给 H2 发送一个数据分组。分组大小=1000B,H1 往链路 A 发送数据的速率为 100Mbps,路由器往链路 B 发送数据的速率为 80Mbps。链路 A 传播时延为 0.01ms,链路 B 传播时延为0.05ms。不考虑路由器的处理时延、排队时延,求传输整个分组的总时延。
总时延=传播时延+发送时延
发送时延A=1000B/100Mbps=1000×8bit/100×1000000bps=0.00008s=0.08ms;
发送时延 B=1000B/80Mbps=0.1ms
总时延=0.01ms+0.05ms+0.08ms+0.1ms=0.24ms
时延带宽积
一条链路中,已从发送端发出,但尚未到达接收端的最大比特数
时延带宽积 = 传播时延 × 信道带宽
例题:
1、在下图所示的分组交换网络中,主机 H1 和 H2 通过路由器互连,2段链路的带宽均为100Mbps、时延带宽积(即单向传播时延×带宽)均为 1000bit。若 H1 向 H2 发送 1 个大小为 1MB 的文件,分组长度为 1000B,则从 H1 开始发送时刻起到 H2 收到文件全部数据时刻止,所需的时间至少是( )。
A. 80.02ms B. 80.08ms C.80.09ms D. 80.10ms
总共有多少个分组=1MB/1000B=1000
传播时延=时延带宽积/带宽=0.01ms
一个分组发送时延=1000B/100Mbps=0.08ms总时间=0.08ms×1000+0.08ms+0.01ms+0.01ms=80.10ms
2、在下图所示的采用“存储-转发”方式的分组交换网络中,所有链路的数据传输速率为 100Mb/s,分组大小为 1000B,其中分组头大小为 20B。若主机 H1 向主机 H2 发送一个大小为 980000B 的文件,则在不考虑分组拆装时间和传播延迟的情况下,从 H1 发送开始到 H2 接收完为止,需要的时间至少是( )
A.80ms B.80.08ms C. 80.16ms D. 80.24ms
总共有多少个分组=980000B/(1000B-20B)=1000
一个分组发送时延=1000B/100Mbps=0.08ms总时间=0.08ms×1000+0.08ms+0.08ms=80.16ms
往返时延(RTT)
表示从发送方发送完数据,到发送方收到来自接收方的确认总共经历的时间
往返时延 RTT = t2 + t3 + t4 + t5
t2:“数据”的单向传播时延
t3:接收方收到数据后的处理时延
t4:“确认”的发送时延
t5:“确认”的传播时延(通常 t5 与 t2 相等)
t1:发送方发送数据的发送时延(不计入 RTT)
信道利用率
某个信道有百分之多少的时间是有数据通过的
信道利用率 = 有数据通过的时间 / (有数据通过的时间 + 没有数据通过的时间)
利用率低会浪费带宽资源
利用率太高可能导致网络拥塞
计算机网络体系结构与参考模型
OSI 七层模型,是一种用于描述计算机网络通信过程的标准化体系结构。这个模型由国际标准化组织(ISO)在20世纪80年代制定,旨在指导网络协议的设计、实现和互操作性,以便不同厂商的设备能够相互通信。
TCP/IP 协议是我们程序员接触最多的协议,实际上,TCP/IP 又被称为 TCP/IP 协议簇,它并不特指单纯的 TCP 和 IP 协议,而是容纳了许许多多的网络协议。
OSI 七层模型只是一种参考标准,而 TCP/IP 四层模型是在 OSI 模型之后,根据互联网的需求而发展起来的。
网络的体系结构(Network Architecture)是计算机网络的各层及其协议的集合,就是这个计算机网络及其构件所应完成的功能的精确定义(不涉及实现)。实现(implementation)是遵循这种体系结构的前提下,用何种硬件或软件完成这些功能的问题。
体系结构是抽象的,而实现则是具体的。
实体:在计算机网络的分层结构中,第 n 层中的活动元素(软件+硬件)通常称为第 n 层实体。
不同机器上的同一层称为对等层,同一层的实体称为对等实体。
协议:即网络协议(Network Protocol),是控制对等实体之间进行通信的规则的集合,是水平的。
接口:即同一节点内相邻两层的实体交换信息的逻辑接口,又称为服务访问点。
服务:服务是指下层为紧邻的上层提供的功能调用,它是垂直的。
协议数据单元(PDU):对等层次之间传送的数据单位。第 n 层的 PDU 记为 n-PDU
服务数据单元(SDU):为完成上一层实体所要求的功能而传送的数据。第 n 层的 SDU 记为 n-SDU
协议控制信息(PCI):控制协议操作的信息。第 n 层的 PCI 记为 n-PCI
三者的关系为 n-SDU + n-PCl = n-PDU = (n-1)-SDU
协议由语法、语义和同步三部分组成(协议的三要素):
语法(需要什么样的数据):数据与控制信息的格式。例如,协议控制信息(首部)部分占几个字节、每个字节是什么含义;协议的数据部分最多有多少字节。
语义(进行什么操作):即需要发出何种控制信息、完成何种动作及做出何种应答。例如,协议中需要明确规定:发送方发完数据后,接收方是否需要“应答”,以及“应答”的种类有哪些(如:传输成功、传输失败)
同步(或时序)(按照什么顺序):执行各种操作的条件、时序关系等,即事件实现顺序的详细说明。例如,发送方发完数据后,接收方需要立即应答。如果发送方在10秒内未收到“传输成功”应答,则发送方会再次发送数据。
OSI 参考模型
OSI模型的低三层可以看成是通信子网,主要负责的功能是数据通信
OSI模型的高三层可以看成是资源子网,主要负责处理传输来的数据
而中间的传输层,起到的是承上启下的作用。
像我们常用的网络设备,集线器、交换机、路由器都是通过物理传输媒体(网线、光纤)来实现和主机设备的链接的。而他们也是具备功能和层次的。
物理层任务:实现相邻节点之间比特(0或1)的传输
- 需定义电路接口参数(如:形状、尺寸、引脚数等)
- 需定义传输信号的含义、电气特征(如:5v表示1,1v表示0;每比特电信号持续时间0.1ms)
链路层任务:确保相邻节点之间的链路逻辑上无差错
- 差错控制:检错+纠错;或检错+丢弃+重传
- 流量控制:协调两个结点的速率
网络层任务:把“分组”从源结点转发到目的结点
- 路由选择:构造并维护路由表,决定分组到达目的节点的最佳路径
- 分组转发:将“分组”从合适的端口转发出去
- 拥塞控制:发现网络拥塞,并采取措施缓解拥塞
- 网际互联:实现异构网络互联
- 其他功能:差错控制、流量控制、连接建立与释放、可靠传输管理
传输层任务:实现端到端通信即实现进程到进程的通信,“端”指“端口”
- 复用和分用:发送端几个高层实体复用一条低层的连接,在接收端再进行分用
- 其他功能:差错控制、流量控制、连接建立与释放、可靠传输管理
在网络中,重点关注的就是网络层和传输层
网络层典型的协议就是 IP 协议,传输层典型的协议就是 TCP 协议
应用层任务:实现特定的网络应用
- 功能繁多,根据应用需求设计
表示层任务:解决不同主机上信息表示不一致的问题
- 主要功能:数据格式转换(如编码转换、压缩/解压、加密/解密)
会话层任务:管理进程间会话
- 主要功能:会话管理(采用检查点机制,当通信失效时从检查点继续恢复通信)
OSI 参考模型 | 任务 | 功能 | 各层传输单位 |
7 应用层 | 实现特定网络应用 | 报文 | |
6 表示层 | 解决不同主机上信息表示不一致的问题 | 数据格式转换 | |
5 会话层 | 管理进程间会话 | 会话管理 | |
4 传输层 | 实现端到端(进程到进程)通信 | 复用和分用、差错控制、流量控制、连接管理、可靠传输管理 | 报文段 |
3 网络层 | 把分组从源结点转发到目的结点 | 路由选择、分组转发、拥塞控制、网际互联、差错控制、流量控制、连接管理、可靠传输管理 | 数据报 (分组) |
2 数据链路层 | 确保相邻节点之间的链路逻辑上无差错 | 差错控制、流量控制 | 帧 |
1 物理层 | 实现相邻节点之间比特的传输 | 需定义电路接口参数、信号的含义/电气特性等 | 比特 |
TCP/IP 模型
TCP/IP的理念:并不是所有网络应用都需要数据格式转换、会话管理功能,如果某些应用需要数据格式转换、会话管理功能,就交给应用层的特定协议去实现。网络硬件种类聚多,不应该有过多限制,这样会影响网络硬件的更新和发展,因此在 TCP/IP 模型当中对应了网络接口层。
网络接口层的主要任务:实现相邻结点间的数据传输(为网络层传输“分组”)。但具体怎么传输不作规定,这使得 TCP/IP 网络体系结构具有更强的灵活性、适应性。
TCP/IP 参考 模型 | 任务 | 功能 |
4 应用层 | 实现特定网络应用 | 如果某些应用需要数据格式转换、会话管理功能,就交给应用层去实现 |
3 传输层 | 实现端到端(进程到进程)通信 | 复用和分用、差错控制、流量控制、连接管理、可靠传输管理 |
2 网际层 | 把分组从源结点转发到目的结点 | 路由选择、分组转发、拥塞控制、网际互联 |
1 网络接口层 | 实现相邻节点之间传输(为网络层传输“分组”) | 无具体以规定 |
TCP/IP模型与OSI模型最大的区别
TCP 协议的特点和可靠性
TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它在数据传输过程中提供了多种机制以保证数据的可靠性和有序性。以下是TCP协议的特点和可靠性方面的说明:
特点:
- 面向连接:TCP 在数据传输前需要建立连接,通过三次握手确保发送方和接收方都准备好进行通信。连接的建立和关闭通过握手和挥手过程来完成。
- 可靠性:TCP 通过多种机制确保数据的可靠传输,包括确认、重传、流量控制和拥塞控制等。
- 全双工通信:TCP 允许双方同时进行发送和接收,实现全双工通信。
- 头部开销:TCP 的头部较大,包含序列号、确认号、窗口大小等信息,可能增加网络传输开销。
可靠性:
TCP协议通过以下机制保证数据的可靠性:
- 确认和重传:接收方收到数据后会发送确认(ACK)给发送方,如果发送方在一定时间内未收到确认,会进行数据重传。
- 流量控制:接收方使用滑动窗口机制来告诉发送方可接收的数据量,避免过多的数据拥塞接收方的缓冲区。
- 拥塞控制:发送方根据网络的拥塞情况来动态调整发送速率,避免造成网络拥塞。
- 有序性:接收方根据序列号重新组装数据,保证数据在接收端按照正确的顺序呈现。
- 超时重传:如果发送方在一定时间内未收到确认,会认为数据可能丢失,触发数据的重传。
总的来说,TCP 协议的可靠性使其适用于需要保证数据完整性和有序性的应用,如文件传输、电子邮件等。然而,由于提供了这些可靠性和控制机制,TCP 的开销相对较大,可能在一些实时性要求较高的应用中不太适用。
UDP 协议的特点和不可靠性
UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,常用于需要快速传输数据但对数据传输的可靠性要求不高的场景。UDP协议具有以下特点和不可靠性:
特点:
- 无连接性:UDP 是无连接的协议,意味着在数据传输之前不需要建立连接。每个 UDP 数据包(也称为数据报)都是独立的,没有先后关系。
- 简单和轻量:UDP 相对于 TCP 来说更加简单,没有 TCP 的握手、确认、重传等机制。这使得UDP的头部开销较小,适合在网络带宽受限的情况下使用。
- 高性能:由于缺乏 TCP 的复杂机制,UDP 具有更低的延迟,适用于实时性要求较高的应用,如实时音视频传输、在线游戏等。
- 广播和多播支持:UDP 支持广播和多播,允许向多个主机发送数据。
不可靠性:
UDP协议的不可靠性主要表现在以下几个方面:
- 丢包风险:UDP 在数据传输过程中不会检测丢失的数据包或重新发送丢失的数据包,因此数据包可能会丢失。
- 不保证数据顺序:数据包可能以不同的顺序到达目的地,因此需要在应用层处理数据的顺序。
- 无确认和重传:UDP 不会对数据包的接收进行确认,也不会重新发送丢失的数据包。如果数据包丢失,应用程序需要自行处理。
- 不提供流量控制和拥塞控制:UDP 不会自动限制发送速率,这可能导致数据过载和网络拥塞。
虽然 UDP 在某些情况下具有优势,但由于其不可靠性,它不适用于所有类型的应用。在需要数据可靠传输的情况下,如文件传输、重要数据传输等,更适合选择 TCP 协议。