引言
什么是计算机网络
通过同一种技术相互连接的计算机就构成一种计算机网络。
容易被混淆的概念:
通信\计算机
通信处理数据从一个实体到另外一个实体的传输
计算机负责帮助人类处理信息
通信网络\计算机网络
通信网络就是一个负责传输信息的链接和节点
计算机网络是一组相互链接的互联网
分布式系统\计算机网络
分布式系统:将一系列独立的计算机组成一个逻辑上的计算机
系统内部是对用户透明的
计算机网络不是:
- Internet:全球唯一的巨大互联网
- internet:多个计算机网络链接构成的计算机网络
- www:一种基于计算机网络提供的服务\应用
计算机网络的硬件组成
- 计算机\主机
host
\终端系统End System
- 通信链接:有线\无线
- 交换机
switch
\路由器router
拓扑结构
通过图的形式表示网络中节点,包括交换机和路由器,之间的连接关系。
计算机网络的组成
- 硬件
- 软件:操作系统以及一些应用软件
- 计算机的标识:IP地址、域名
- 通信规则
计算机网络的应用
商业应用
- 资源共享
- 同用户的交流通信
移动网络用户
计算机网络的分类
按照使用的范围进行分类
-
个域网
通常采用蓝牙等技术进行链接
-
局域网
LAN
将主机同边缘路由器连接起来
共有一个链接链路,一般是星型组网
-
城域网
MAN
通常是广电网络
通常是树形组网
-
广域网
WAN
存储转发、分组交换、通过路由算法决定路由路径
为了保证可靠性通常采用网孔型组网
按照传输技术分类
-
广播网络
将数据包发送给所有的目标主机,每个主机再来检查数据包的目标地址,如果这个数据包就是发给这台主机的就接受这个数据包,反之忽略这个数据包
在局域网中广泛应用
同时发送数据包可能存在冲突
-
点对点网络
数据包直接从源地址发送到目的地址
在广域网中应用广泛。
按照在互联网络中的位置
-
接入网
Access Networks
在网络的边缘,主要辅助用户来接入互联网
-
核心网
Core Networks
将接入网和其他核心网连接在一起
网络架构和网络协议
分层的网络体系结构
网络是按照一个层栈的方式组成起来的。这样做可以:
-
这样设计简化了设计的复杂性
-
每一层向更高层提供来具体的服务,同时屏蔽了具体实现的细节
-
每一层都会和相邻的层之间进行交互(不是通信),每一层都和对方的对等层
Peers
之间有着通信,协议就规定来对等层之间通信的协议 -
相邻的两层直接通过接口定义了允许的操作和服务
-
数据的流向实际上是U型的,发送系统自顶向下,最底层实际传输数据,接受系统自底向上
-
每层可能在上一层交付数据的基础上进行封装,加上本层的控制信息,构成本层的数据包,控制信息和添加的方式是由协议规定的。每次构成的数据包称作协议数据包
PDU
层次设计过程中需要注意的问题
-
可靠性
- 差错检测和回复
- 路由选择
-
网络演进
- 协议的分层设计:将问题细分,隐藏每层实现的细节
- 地址:标识不同的发送者和接受者
- 网络的互通性
- 协议的可扩展性
-
资源定位
- 统计复用
Statistical Multiplexing
- 流量控制:防止过快的发送倒是数据在接受方丢失
- 统计复用
-
服务质量
QoS
-
安全
层需要指定的标准
同层之间通信的协议:
- 语法
Syntax
:协议的消息格式 - 语义
Semantics
:消息的字段区某个值的含义
向上一层提供的服务接口
服务接口可以分成两种类型:
-
面向连接的
Connection-oriented
在连接的过程中连接就被建立起来,需要的资源就已经被分配好了,后续的数据将按照这条已经建立的道路前进
连接将会使可靠的
在建立连接的时候需要完整的地址,在之后只需要指定连接的就可以完全发送
-
无连接的
Connectionless
资源将会是动态分配的
但是连接是不可靠的,数据包可以会丢失、放弃和乱序
每次连接都需要完整的地址来建立连接
连接类型 | 服务 | 例子 |
---|---|---|
面向连接的 | 可靠的消息流 | 页面序列 |
面向连接的 | 可靠的字节流 | 远程登录 |
面向连接的 | 不可靠的连接 | 数字通话 |
无连接的 | 不可靠的数据报 | 电子垃圾邮件 |
无连接的 | 订阅数据报 | 注册邮件 |
无连接的 | 查询-回复 | 数据库查询 |
服务原语Service Primitives
:描述层与层之间提供服务的方法。一个服务就是有一组服务原语来定义的。
在计算机中实现服务原语:
如果协议栈是由操作系统实现的:服务原语通过是通过系统调用的方式提供的。
如果需要定义一个简单的面向连接的服务,一般需要5个服务原语:
- 监听:阻塞直到收到一个连接请求
- 连接:同对应层建立一个连接
- 接收:阻塞直到收到数据
- 发送:发送数据
- 断开连接:终止一个连接
服务和协议的关系
服务定义了本层对外提供的操作,而协议定义了同层之间通信的方式。
服务是通过协议实现的,在服务不变的情况下,层可以自由改变协议。
参考模型
OSI参考模型
模型将设备分为两类:主机和节点。
主机不负责数据的转发,但是需要负责数据的处理,主机具有完整的七层。
节点负责数据的转发,不具有处理数据的能力,节点只具有三层。
参看模型的七层具体为:
-
物理层
Physical
直接通过通信设备处理字节流。
定义了
1
位和0
位的电压范围和位的数据率,定义了传输是全双工还是半双工的,定义了初始连接如何建立和终止,定义了接口的物理规格。 -
数据链路层
Data Link
通过逻辑通道进行原始数据的传输。
发送者会将数据封装为帧发送,接受者会在收到数据之后发送确认帧给发送者以确保服务的可靠性。数据链路层还会提供流量控制的功能,避免过快的发送阻塞了接受者。广播网络和单点网络的区分也是在数据链路层产生的。
-
网络层
Network
控制子网上的操作。
网络层主要的功能就是转发数据,路由的功能就主要在网络层实现。除此之外,网络层还提供拥塞控制,服务质量的控制等功能。
-
传输层
Transport
端到端层。从上层接受数据,将数据分成较小的数据包并且通过网络层正确的传输到对方。
同一计算机上不同进程的区分也是在传输层完成的。
-
会话层
Session
提供会话控制、令牌管理和同步的功能。
-
表示层
Presentation
获得传输信息的语法和语义。
在这层可以提供数据加密和数据压缩等的功能。
-
应用层
Application
直接被用户使用的各种应用协议。
TCP/IP参考模型
该模型一般只有四层:
- 链路层
Link
- 网络层/网际层
Internet
- 传输层
Transport
- 应用层
Application
链路层
协议并未强制规定,具体的实现由其他的机构规定,比如Ethernet
,WiFi
和SDH
。
只负责传输IP
数据包。
网络层
主要协议是IP
协议,是一个不可靠的传输协议。
传输层
TCP
传输协议:面向连接的可靠传输协议,传输字节流。
UDP
传输协议:无连接的不可靠传输协议,传输字节流。
应用层
由用户使用的各种应用协议。
OSI和TCP/IP参考模型的对比
OSI模型的特点、优缺点
特点:
- 服务:某层实体对于上一层实体的支持
- 结构:定义某层实体对于上一层提供的原语操作
- 协议:两个系统同层之间同喜需要遵守的规范
OSI模型没有能够取得主导地位的问题:
- 生不逢时
- 技术设计上有缺陷,比如会话层和展示层比较简单而且和应用关系密切,不算是很合适的抽象
TCP/IP模型的特点、优缺点
- 服务、接口和协议没有很清晰的划分
- 不算是很通用的模型
- 链路层实际上不算层,并没有严格的规定
- 物理层和数据链路层上没有区分
- 部分老旧协议
混合模型
注意:这个模型并不是实际标准化的模型,只是学习的过程中便于学习而提出的。
两个模型都存在缺陷,因此为了较好的描述整个体系,我们将两个模型混合在一起:
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层